@cqa-lib/cqa-ui 1.1.117 → 1.1.118

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,7 +1,8 @@
1
1
  import { Component, EventEmitter, Input, Output } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/material/icon";
4
- import * as i2 from "@angular/common";
4
+ import * as i2 from "../badge/badge.component";
5
+ import * as i3 from "@angular/common";
5
6
  export class RunHistoryCardComponent {
6
7
  constructor() {
7
8
  this.size = 'normal';
@@ -143,15 +144,51 @@ export class RunHistoryCardComponent {
143
144
  get borderLeftWidth() {
144
145
  return this.isSmall ? '3px' : '4px';
145
146
  }
147
+ get platformIcon() {
148
+ if (!this.platform)
149
+ return '';
150
+ switch (this.platform) {
151
+ case 'ios':
152
+ return 'apple';
153
+ case 'android':
154
+ return 'android';
155
+ case 'web':
156
+ return 'language';
157
+ case 'chromium':
158
+ return 'web';
159
+ case 'desktop':
160
+ return 'desktop_windows';
161
+ default:
162
+ return '';
163
+ }
164
+ }
165
+ get platformLabel() {
166
+ if (!this.platform)
167
+ return '';
168
+ switch (this.platform) {
169
+ case 'ios':
170
+ return 'iOS';
171
+ case 'android':
172
+ return 'Android';
173
+ case 'web':
174
+ return 'Web';
175
+ case 'chromium':
176
+ return 'Chromium';
177
+ case 'desktop':
178
+ return 'Web';
179
+ default:
180
+ return '';
181
+ }
182
+ }
146
183
  linkClicked() {
147
184
  this.headingClicked.emit();
148
185
  }
149
186
  }
150
187
  RunHistoryCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: RunHistoryCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
151
- RunHistoryCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: RunHistoryCardComponent, selector: "cqa-run-history-card", inputs: { id: "id", status: "status", type: "type", timestamp: "timestamp", duration: "duration", runLabel: "runLabel", errorMessage: "errorMessage", size: "size", durationTooltip: "durationTooltip" }, outputs: { headingClicked: "headingClicked" }, ngImport: i0, template: "<div class=\"cqa-ui-root\" style=\"display: block; width: 100%; height: 100%; min-width: 180px;\">\n <div class=\"cqa-bg-white cqa-rounded-lg cqa-shadow-sm cqa-flex cqa-flex-col\" [ngStyle]=\"{\n padding: cardPadding,\n border: '1px solid #E4E4E4',\n 'border-left-color': statusColor,\n 'border-left-width': borderLeftWidth\n }\">\n\n <!-- Header: Run ID and Status Badge -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2 cqa-flex-wrap\" [ngClass]=\"{\n 'cqa-mb-[10px]': isSmall,\n 'cqa-mb-2': !isSmall\n }\">\n <div class=\"cqa-flex cqa-items-center\" [ngClass]=\"{ 'cqa-gap-[6px]': isSmall, 'cqa-gap-2': !isSmall }\">\n <span [ngStyle]=\"statusIconContainerStyles\">\n <mat-icon [ngStyle]=\"statusIconStyles\">\n {{ statusIcon }}\n </mat-icon>\n </span>\n <span class=\"cqa-font-semibold cqa-cursor-pointer cqa-underline cqa-text-[#3f43ee]\" [ngClass]=\"{\n 'cqa-text-xs': isSmall,\n 'cqa-text-sm': !isSmall\n }\" (click)=\"linkClicked()\">\n #{{ id }}\n </span>\n </div>\n\n <!-- Status Badge -->\n <span class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-rounded-md cqa-font-medium cqa-text-white cqa-px-2\"\n [ngClass]=\"{\n 'cqa-py-[2px] cqa-text-[10px]': isSmall,\n 'cqa-py-1 cqa-text-xs': !isSmall\n }\" [ngStyle]=\"statusBadgeStyles\">\n {{ statusLabel }}\n </span>\n </div>\n\n <!-- Type and Timestamp -->\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\">\n {{ typeIcon }}\n </mat-icon>\n <span [ngClass]=\"{ 'cqa-text-[10px]': isSmall, 'cqa-text-xs': !isSmall }\">\n {{ typeLabel }}\n </span>\n </div>\n\n <!-- Timestamp -->\n <div class=\"cqa-font-normal cqa-text-[#0B0B0B] cqa-leading-normal\" [ngClass]=\"{\n 'cqa-text-sm': !isSmall,\n 'cqa-text-[11px]': isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n {{ timestamp }}\n </div>\n\n <!-- Duration and Run Label -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall\n }\" [title]=\"durationTooltip\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\" style=\"flex-shrink: 0;\">\n schedule\n </mat-icon>\n <span [ngClass]=\"{\n 'cqa-text-[8px]': isSmall,\n 'cqa-text-[10px]': !isSmall\n }\">\n {{ duration }}\n </span>\n </div>\n\n <span *ngIf=\"runLabel\" class=\"cqa-text-[#3F43EE] cqa-rounded-md cqa-whitespace-nowrap\"\n [ngStyle]=\"runLabelStyles\"\n [ngClass]=\"{ 'cqa-font-medium': !isSmall }\">\n {{ runLabel }}\n </span>\n </div>\n\n <!-- Error Message (only for failed status and normal size) -->\n <div *ngIf=\"errorMessage && status === 'failed' && !isSmall\" class=\"cqa-mt-2 cqa-pt-2\"\n style=\"border-top: 1px solid #E4E4E4;\">\n <p class=\"cqa-text-[10px] cqa-text-[#E7000B]\">\n {{ errorMessage }}\n </p>\n </div>\n </div>\n</div>", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
188
+ RunHistoryCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: RunHistoryCardComponent, selector: "cqa-run-history-card", inputs: { id: "id", status: "status", type: "type", timestamp: "timestamp", duration: "duration", runLabel: "runLabel", errorMessage: "errorMessage", size: "size", durationTooltip: "durationTooltip", platform: "platform" }, outputs: { headingClicked: "headingClicked" }, ngImport: i0, template: "<div class=\"cqa-ui-root\" style=\"display: block; width: 100%; height: 100%; min-width: 180px;\">\n <div class=\"cqa-bg-white cqa-rounded-lg cqa-shadow-sm cqa-flex cqa-flex-col\" [ngStyle]=\"{\n padding: cardPadding,\n border: '1px solid #E4E4E4',\n 'border-left-color': statusColor,\n 'border-left-width': borderLeftWidth\n }\">\n\n <!-- Header: Run ID and Status Badge -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2 cqa-flex-wrap\" [ngClass]=\"{\n 'cqa-mb-[10px]': isSmall,\n 'cqa-mb-2': !isSmall\n }\">\n <div class=\"cqa-flex cqa-items-center\" [ngClass]=\"{ 'cqa-gap-[6px]': isSmall, 'cqa-gap-2': !isSmall }\">\n <span [ngStyle]=\"statusIconContainerStyles\">\n <mat-icon [ngStyle]=\"statusIconStyles\">\n {{ statusIcon }}\n </mat-icon>\n </span>\n <span class=\"cqa-font-semibold cqa-cursor-pointer cqa-underline cqa-text-[#3f43ee]\" [ngClass]=\"{\n 'cqa-text-xs': isSmall,\n 'cqa-text-sm': !isSmall\n }\" (click)=\"linkClicked()\">\n #{{ id }}\n </span>\n </div>\n\n <!-- Status Badge -->\n <span class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-rounded-md cqa-font-medium cqa-text-white cqa-px-2\"\n [ngClass]=\"{\n 'cqa-py-[2px] cqa-text-[10px]': isSmall,\n 'cqa-py-1 cqa-text-xs': !isSmall\n }\" [ngStyle]=\"statusBadgeStyles\">\n {{ statusLabel }}\n </span>\n </div>\n\n <!-- Type and Timestamp -->\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\">\n {{ typeIcon }}\n </mat-icon>\n <span [ngClass]=\"{ 'cqa-text-[10px]': isSmall, 'cqa-text-xs': !isSmall }\">\n {{ typeLabel }}\n </span>\n </div>\n\n <!-- Timestamp -->\n <div class=\"cqa-font-normal cqa-text-[#0B0B0B] cqa-leading-normal\" [ngClass]=\"{\n 'cqa-text-sm': !isSmall,\n 'cqa-text-[11px]': isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n {{ timestamp }}\n </div>\n\n <!-- Duration, Platform and Run Label -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-2': !isSmall\n }\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall\n }\" [title]=\"durationTooltip\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\" style=\"flex-shrink: 0;\">\n schedule\n </mat-icon>\n <span [ngClass]=\"{\n 'cqa-text-[8px]': isSmall,\n 'cqa-text-[10px]': !isSmall\n }\">\n {{ duration }}\n </span>\n </div>\n\n <cqa-badge \n *ngIf=\"platform\"\n [label]=\"platformLabel\"\n [icon]=\"platformIcon\"\n [size]=\"isSmall ? 'extra-small' : 'small'\"\n variant=\"default\"\n [iconSize]=\"isSmall ? 10 : 12\">\n </cqa-badge>\n </div>\n\n <span *ngIf=\"runLabel\" class=\"cqa-text-[#3F43EE] cqa-rounded-md cqa-whitespace-nowrap\"\n [ngStyle]=\"runLabelStyles\"\n [ngClass]=\"{ 'cqa-font-medium': !isSmall }\">\n {{ runLabel }}\n </span>\n </div>\n\n <!-- Error Message (only for failed status and normal size) -->\n <div *ngIf=\"errorMessage && status === 'failed' && !isSmall\" class=\"cqa-mt-2 cqa-pt-2\"\n style=\"border-top: 1px solid #E4E4E4;\">\n <p class=\"cqa-text-[10px] cqa-text-[#E7000B]\">\n {{ errorMessage }}\n </p>\n </div>\n </div>\n</div>", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.BadgeComponent, selector: "cqa-badge", inputs: ["type", "label", "icon", "iconLibrary", "variant", "size", "backgroundColor", "textColor", "borderColor", "iconBackgroundColor", "iconColor", "iconSize", "inlineStyles", "key", "value", "keyTextColor", "valueTextColor", "isLoading"] }], directives: [{ type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
152
189
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: RunHistoryCardComponent, decorators: [{
153
190
  type: Component,
154
- args: [{ selector: 'cqa-run-history-card', template: "<div class=\"cqa-ui-root\" style=\"display: block; width: 100%; height: 100%; min-width: 180px;\">\n <div class=\"cqa-bg-white cqa-rounded-lg cqa-shadow-sm cqa-flex cqa-flex-col\" [ngStyle]=\"{\n padding: cardPadding,\n border: '1px solid #E4E4E4',\n 'border-left-color': statusColor,\n 'border-left-width': borderLeftWidth\n }\">\n\n <!-- Header: Run ID and Status Badge -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2 cqa-flex-wrap\" [ngClass]=\"{\n 'cqa-mb-[10px]': isSmall,\n 'cqa-mb-2': !isSmall\n }\">\n <div class=\"cqa-flex cqa-items-center\" [ngClass]=\"{ 'cqa-gap-[6px]': isSmall, 'cqa-gap-2': !isSmall }\">\n <span [ngStyle]=\"statusIconContainerStyles\">\n <mat-icon [ngStyle]=\"statusIconStyles\">\n {{ statusIcon }}\n </mat-icon>\n </span>\n <span class=\"cqa-font-semibold cqa-cursor-pointer cqa-underline cqa-text-[#3f43ee]\" [ngClass]=\"{\n 'cqa-text-xs': isSmall,\n 'cqa-text-sm': !isSmall\n }\" (click)=\"linkClicked()\">\n #{{ id }}\n </span>\n </div>\n\n <!-- Status Badge -->\n <span class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-rounded-md cqa-font-medium cqa-text-white cqa-px-2\"\n [ngClass]=\"{\n 'cqa-py-[2px] cqa-text-[10px]': isSmall,\n 'cqa-py-1 cqa-text-xs': !isSmall\n }\" [ngStyle]=\"statusBadgeStyles\">\n {{ statusLabel }}\n </span>\n </div>\n\n <!-- Type and Timestamp -->\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\">\n {{ typeIcon }}\n </mat-icon>\n <span [ngClass]=\"{ 'cqa-text-[10px]': isSmall, 'cqa-text-xs': !isSmall }\">\n {{ typeLabel }}\n </span>\n </div>\n\n <!-- Timestamp -->\n <div class=\"cqa-font-normal cqa-text-[#0B0B0B] cqa-leading-normal\" [ngClass]=\"{\n 'cqa-text-sm': !isSmall,\n 'cqa-text-[11px]': isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n {{ timestamp }}\n </div>\n\n <!-- Duration and Run Label -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall\n }\" [title]=\"durationTooltip\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\" style=\"flex-shrink: 0;\">\n schedule\n </mat-icon>\n <span [ngClass]=\"{\n 'cqa-text-[8px]': isSmall,\n 'cqa-text-[10px]': !isSmall\n }\">\n {{ duration }}\n </span>\n </div>\n\n <span *ngIf=\"runLabel\" class=\"cqa-text-[#3F43EE] cqa-rounded-md cqa-whitespace-nowrap\"\n [ngStyle]=\"runLabelStyles\"\n [ngClass]=\"{ 'cqa-font-medium': !isSmall }\">\n {{ runLabel }}\n </span>\n </div>\n\n <!-- Error Message (only for failed status and normal size) -->\n <div *ngIf=\"errorMessage && status === 'failed' && !isSmall\" class=\"cqa-mt-2 cqa-pt-2\"\n style=\"border-top: 1px solid #E4E4E4;\">\n <p class=\"cqa-text-[10px] cqa-text-[#E7000B]\">\n {{ errorMessage }}\n </p>\n </div>\n </div>\n</div>", styles: [] }]
191
+ args: [{ selector: 'cqa-run-history-card', template: "<div class=\"cqa-ui-root\" style=\"display: block; width: 100%; height: 100%; min-width: 180px;\">\n <div class=\"cqa-bg-white cqa-rounded-lg cqa-shadow-sm cqa-flex cqa-flex-col\" [ngStyle]=\"{\n padding: cardPadding,\n border: '1px solid #E4E4E4',\n 'border-left-color': statusColor,\n 'border-left-width': borderLeftWidth\n }\">\n\n <!-- Header: Run ID and Status Badge -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2 cqa-flex-wrap\" [ngClass]=\"{\n 'cqa-mb-[10px]': isSmall,\n 'cqa-mb-2': !isSmall\n }\">\n <div class=\"cqa-flex cqa-items-center\" [ngClass]=\"{ 'cqa-gap-[6px]': isSmall, 'cqa-gap-2': !isSmall }\">\n <span [ngStyle]=\"statusIconContainerStyles\">\n <mat-icon [ngStyle]=\"statusIconStyles\">\n {{ statusIcon }}\n </mat-icon>\n </span>\n <span class=\"cqa-font-semibold cqa-cursor-pointer cqa-underline cqa-text-[#3f43ee]\" [ngClass]=\"{\n 'cqa-text-xs': isSmall,\n 'cqa-text-sm': !isSmall\n }\" (click)=\"linkClicked()\">\n #{{ id }}\n </span>\n </div>\n\n <!-- Status Badge -->\n <span class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-rounded-md cqa-font-medium cqa-text-white cqa-px-2\"\n [ngClass]=\"{\n 'cqa-py-[2px] cqa-text-[10px]': isSmall,\n 'cqa-py-1 cqa-text-xs': !isSmall\n }\" [ngStyle]=\"statusBadgeStyles\">\n {{ statusLabel }}\n </span>\n </div>\n\n <!-- Type and Timestamp -->\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\">\n {{ typeIcon }}\n </mat-icon>\n <span [ngClass]=\"{ 'cqa-text-[10px]': isSmall, 'cqa-text-xs': !isSmall }\">\n {{ typeLabel }}\n </span>\n </div>\n\n <!-- Timestamp -->\n <div class=\"cqa-font-normal cqa-text-[#0B0B0B] cqa-leading-normal\" [ngClass]=\"{\n 'cqa-text-sm': !isSmall,\n 'cqa-text-[11px]': isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n {{ timestamp }}\n </div>\n\n <!-- Duration, Platform and Run Label -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-2': !isSmall\n }\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall\n }\" [title]=\"durationTooltip\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\" style=\"flex-shrink: 0;\">\n schedule\n </mat-icon>\n <span [ngClass]=\"{\n 'cqa-text-[8px]': isSmall,\n 'cqa-text-[10px]': !isSmall\n }\">\n {{ duration }}\n </span>\n </div>\n\n <cqa-badge \n *ngIf=\"platform\"\n [label]=\"platformLabel\"\n [icon]=\"platformIcon\"\n [size]=\"isSmall ? 'extra-small' : 'small'\"\n variant=\"default\"\n [iconSize]=\"isSmall ? 10 : 12\">\n </cqa-badge>\n </div>\n\n <span *ngIf=\"runLabel\" class=\"cqa-text-[#3F43EE] cqa-rounded-md cqa-whitespace-nowrap\"\n [ngStyle]=\"runLabelStyles\"\n [ngClass]=\"{ 'cqa-font-medium': !isSmall }\">\n {{ runLabel }}\n </span>\n </div>\n\n <!-- Error Message (only for failed status and normal size) -->\n <div *ngIf=\"errorMessage && status === 'failed' && !isSmall\" class=\"cqa-mt-2 cqa-pt-2\"\n style=\"border-top: 1px solid #E4E4E4;\">\n <p class=\"cqa-text-[10px] cqa-text-[#E7000B]\">\n {{ errorMessage }}\n </p>\n </div>\n </div>\n</div>", styles: [] }]
155
192
  }], propDecorators: { id: [{
156
193
  type: Input
157
194
  }], status: [{
@@ -170,7 +207,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
170
207
  type: Input
171
208
  }], durationTooltip: [{
172
209
  type: Input
210
+ }], platform: [{
211
+ type: Input
173
212
  }], headingClicked: [{
174
213
  type: Output
175
214
  }] } });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWhpc3RvcnktY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3J1bi1oaXN0b3J5LWNhcmQvcnVuLWhpc3RvcnktY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3J1bi1oaXN0b3J5LWNhcmQvcnVuLWhpc3RvcnktY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBV3ZFLE1BQU0sT0FBTyx1QkFBdUI7SUFMcEM7UUFhVyxTQUFJLEdBQWEsUUFBUSxDQUFDO1FBRXpCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQTJKckQ7SUF6SkMsSUFBSSxXQUFXO1FBQ2IsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ25CLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQztZQUNsQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxRQUFRLENBQUM7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssU0FBUztnQkFDWixPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssY0FBYztnQkFDakIsT0FBTyxjQUFjLENBQUM7WUFDeEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CO2dCQUNFLE9BQU8sRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ25CLEtBQUssUUFBUTtnQkFDWCxPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssU0FBUztnQkFDWixPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssY0FBYztnQkFDakIsT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CO2dCQUNFLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNqQixLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxTQUFTLENBQUM7WUFDckIsS0FBSyxRQUFRO2dCQUNULE9BQU8sU0FBUyxDQUFDO1lBQ3JCLEtBQUssU0FBUztnQkFDVixPQUFPLFNBQVMsQ0FBQztZQUNyQixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxTQUFTLENBQUM7WUFDckIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sU0FBUyxDQUFDO1lBQ3JCLEtBQUssUUFBUTtnQkFDVCxPQUFPLFNBQVMsQ0FBQztZQUNyQixLQUFLLGNBQWM7Z0JBQ2YsT0FBTyxTQUFTLENBQUM7WUFDckIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sU0FBUyxDQUFDO1lBQ3JCO2dCQUNJLE9BQU8sU0FBUyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxPQUFPLENBQUM7WUFDakIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLEtBQUssU0FBUztnQkFDWixPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxVQUFVLENBQUM7WUFDcEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssUUFBUTtnQkFDWCxPQUFPLGlCQUFpQixDQUFDO1lBQzNCLEtBQUssY0FBYztnQkFDakIsT0FBTyx1QkFBdUIsQ0FBQztZQUNqQyxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxjQUFjLENBQUM7WUFDeEI7Z0JBQ0UsT0FBTyxjQUFjLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLHlCQUF5QjtRQUMzQixPQUFPO1lBQ0wsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUMxQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQ3ZDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU07WUFDeEMsZUFBZSxFQUFFLEtBQUs7WUFDdEIsU0FBUyxFQUFFLGFBQWE7WUFDeEIsYUFBYSxFQUFFLFFBQVE7WUFDdkIsaUJBQWlCLEVBQUUsUUFBUTtTQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU87WUFDTCxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTTtZQUMzQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQ3ZDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU07U0FDekMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPO1lBQ0wsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDckMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTztZQUNMLGtCQUFrQixFQUFFLFNBQVM7WUFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUMvQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLO1lBQzdDLFdBQVcsRUFBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU07WUFDM0MsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTTtTQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDOztvSEFuS1UsdUJBQXVCO3dHQUF2Qix1QkFBdUIscVRDWHBDLHlvSEFrR007MkZEdkZPLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxzQkFBc0I7OEJBS3ZCLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IHR5cGUgUnVuU3RhdHVzID0gJ3Bhc3NlZCcgfCAnZmFpbGVkJyB8ICdhYm9ydGVkJyB8ICdydW5uaW5nJyB8ICdzdG9wcGVkJyB8ICdxdWV1ZWQnIHwgJ25vdC1leGVjdXRlZCcgfCAndW5rbm93bic7XG5leHBvcnQgdHlwZSBSdW5UeXBlID0gJ2F1dG9tYXRlZCcgfCAnbWFudWFsJztcbmV4cG9ydCB0eXBlIENhcmRTaXplID0gJ25vcm1hbCcgfCAnc21hbGwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtcnVuLWhpc3RvcnktY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ydW4taGlzdG9yeS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBSdW5IaXN0b3J5Q2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGlkITogbnVtYmVyO1xuICBASW5wdXQoKSBzdGF0dXMhOiBSdW5TdGF0dXM7XG4gIEBJbnB1dCgpIHR5cGUhOiBSdW5UeXBlO1xuICBASW5wdXQoKSB0aW1lc3RhbXAhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGR1cmF0aW9uITogc3RyaW5nO1xuICBASW5wdXQoKSBydW5MYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplOiBDYXJkU2l6ZSA9ICdub3JtYWwnO1xuICBASW5wdXQoKSBkdXJhdGlvblRvb2x0aXA/OiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBoZWFkaW5nQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXQgc3RhdHVzTGFiZWwoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuc3RhdHVzKSB7XG4gICAgICBjYXNlICdwYXNzZWQnOlxuICAgICAgICByZXR1cm4gJ1Bhc3NlZCc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gJ0ZhaWxlZCc7XG4gICAgICBjYXNlICdhYm9ydGVkJzpcbiAgICAgICAgcmV0dXJuICdBYm9ydGVkJztcbiAgICAgIGNhc2UgJ3J1bm5pbmcnOlxuICAgICAgICByZXR1cm4gJ1J1bm5pbmcnO1xuICAgICAgY2FzZSAnc3RvcHBlZCc6XG4gICAgICAgIHJldHVybiAnU3RvcHBlZCc7XG4gICAgICBjYXNlICdxdWV1ZWQnOlxuICAgICAgICByZXR1cm4gJ1F1ZXVlZCc7XG4gICAgICBjYXNlICdub3QtZXhlY3V0ZWQnOlxuICAgICAgICByZXR1cm4gJ05vdCBFeGVjdXRlZCc7XG4gICAgICBjYXNlICd1bmtub3duJzpcbiAgICAgICAgcmV0dXJuICdVbmtub3duJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBnZXQgc3RhdHVzQ29sb3IoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuc3RhdHVzKSB7XG4gICAgICBjYXNlICdwYXNzZWQnOlxuICAgICAgICByZXR1cm4gJyMwMEM5NTAnO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuICcjRkIyQzM2JztcbiAgICAgIGNhc2UgJ2Fib3J0ZWQnOlxuICAgICAgICByZXR1cm4gJyNGOTczMTYnO1xuICAgICAgY2FzZSAncnVubmluZyc6XG4gICAgICAgIHJldHVybiAnIzNCODJGNic7XG4gICAgICBjYXNlICdzdG9wcGVkJzpcbiAgICAgICAgcmV0dXJuICcjRUY0NDQ0JztcbiAgICAgIGNhc2UgJ3F1ZXVlZCc6XG4gICAgICAgIHJldHVybiAnIzhCNUNGNic7XG4gICAgICBjYXNlICdub3QtZXhlY3V0ZWQnOlxuICAgICAgICByZXR1cm4gJyM2QjcyODAnO1xuICAgICAgY2FzZSAndW5rbm93bic6XG4gICAgICAgIHJldHVybiAnIzlDQTNBRic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyM2QjcyODAnO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzdGF0dXNJY29uQmdDb2xvcigpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5zdGF0dXMpIHtcbiAgICAgICAgY2FzZSAncGFzc2VkJzpcbiAgICAgICAgICAgIHJldHVybiAnI0RDRkNFNyc7XG4gICAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgICAgICByZXR1cm4gJyNmZmUyZTInO1xuICAgICAgICBjYXNlICdhYm9ydGVkJzpcbiAgICAgICAgICAgIHJldHVybiAnI0ZGRURENSc7IFxuICAgICAgICBjYXNlICdydW5uaW5nJzpcbiAgICAgICAgICAgIHJldHVybiAnI0RCRUFGRSc7XG4gICAgICAgIGNhc2UgJ3N0b3BwZWQnOlxuICAgICAgICAgICAgcmV0dXJuICcjRkVFMkUyJztcbiAgICAgICAgY2FzZSAncXVldWVkJzpcbiAgICAgICAgICAgIHJldHVybiAnI0VERTlGRSc7XG4gICAgICAgIGNhc2UgJ25vdC1leGVjdXRlZCc6XG4gICAgICAgICAgICByZXR1cm4gJyNGM0Y0RjYnO1xuICAgICAgICBjYXNlICd1bmtub3duJzpcbiAgICAgICAgICAgIHJldHVybiAnI0YzRjRGNic7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gJyNFNUU3RUInO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzdGF0dXNJY29uKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnN0YXR1cykge1xuICAgICAgY2FzZSAncGFzc2VkJzpcbiAgICAgICAgcmV0dXJuICdjaGVjayc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gJ2Nsb3NlJztcbiAgICAgIGNhc2UgJ2Fib3J0ZWQnOlxuICAgICAgICByZXR1cm4gJ3dhcm5pbmcnO1xuICAgICAgY2FzZSAncnVubmluZyc6XG4gICAgICAgIHJldHVybiAnc2NoZWR1bGUnO1xuICAgICAgY2FzZSAnc3RvcHBlZCc6XG4gICAgICAgIHJldHVybiAnc3RvcCc7XG4gICAgICBjYXNlICdxdWV1ZWQnOlxuICAgICAgICByZXR1cm4gJ2hvdXJnbGFzc19lbXB0eSc7XG4gICAgICBjYXNlICdub3QtZXhlY3V0ZWQnOlxuICAgICAgICByZXR1cm4gJ3JlbW92ZV9jaXJjbGVfb3V0bGluZSc7XG4gICAgICBjYXNlICd1bmtub3duJzpcbiAgICAgICAgcmV0dXJuICdoZWxwX291dGxpbmUnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdoZWxwX291dGxpbmUnO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0eXBlSWNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdhdXRvbWF0ZWQnID8gJ3NldHRpbmdzJyA6ICdwZXJzb24nO1xuICB9XG5cbiAgZ2V0IHR5cGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdhdXRvbWF0ZWQnID8gJ0F1dG9tYXRlZCcgOiAnTWFudWFsJztcbiAgfVxuXG4gIGdldCBpc1NtYWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNpemUgPT09ICdzbWFsbCc7XG4gIH1cblxuICBnZXQgc3RhdHVzSWNvbkNvbnRhaW5lclN0eWxlcygpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiB0aGlzLnN0YXR1c0ljb25CZ0NvbG9yLFxuICAgICAgJ3dpZHRoJzogdGhpcy5pc1NtYWxsID8gJzE2cHgnIDogJzIwcHgnLFxuICAgICAgJ2hlaWdodCc6IHRoaXMuaXNTbWFsbCA/ICcxNnB4JyA6ICcyMHB4JyxcbiAgICAgICdib3JkZXItcmFkaXVzJzogJzRweCcsXG4gICAgICAnZGlzcGxheSc6ICdpbmxpbmUtZmxleCcsXG4gICAgICAnYWxpZ24taXRlbXMnOiAnY2VudGVyJyxcbiAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiAnY2VudGVyJ1xuICAgIH07XG4gIH1cblxuICBnZXQgc3RhdHVzSWNvblN0eWxlcygpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2NvbG9yJzogdGhpcy5zdGF0dXNDb2xvcixcbiAgICAgICdmb250LXNpemUnOiB0aGlzLmlzU21hbGwgPyAnMTBweCcgOiAnMTJweCcsXG4gICAgICAnd2lkdGgnOiB0aGlzLmlzU21hbGwgPyAnMTBweCcgOiAnMTJweCcsXG4gICAgICAnaGVpZ2h0JzogdGhpcy5pc1NtYWxsID8gJzEwcHgnIDogJzEycHgnXG4gICAgfTtcbiAgfVxuXG4gIGdldCBzdGF0dXNCYWRnZVN0eWxlcygpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiB0aGlzLnN0YXR1c0NvbG9yXG4gICAgfTtcbiAgfVxuXG4gIGdldCBydW5MYWJlbFN0eWxlcygpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnI2VjZWRmZScsXG4gICAgICAncGFkZGluZyc6IHRoaXMuaXNTbWFsbCA/ICcycHggNnB4JyA6ICcycHggOHB4JyxcbiAgICAgICdib3JkZXItcmFkaXVzJzogdGhpcy5pc1NtYWxsID8gJzVweCcgOiAnNHB4JyxcbiAgICAgICdmb250LXNpemUnIDogdGhpcy5pc1NtYWxsID8gJzhweCcgOiAnMTBweCcsXG4gICAgICAnbGluZS1oZWlnaHQnOiB0aGlzLmlzU21hbGwgPyAnMTJweCcgOiAnMTVweCdcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGNhcmRQYWRkaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNTbWFsbCA/ICcxMHB4JyA6ICcxMnB4JztcbiAgfVxuXG4gIGdldCBib3JkZXJMZWZ0V2lkdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc1NtYWxsID8gJzNweCcgOiAnNHB4JztcbiAgfVxuXG4gIGxpbmtDbGlja2VkKCl7XG4gICAgdGhpcy5oZWFkaW5nQ2xpY2tlZC5lbWl0KCk7XG4gIH1cblxufSIsIjxkaXYgY2xhc3M9XCJjcWEtdWktcm9vdFwiIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IG1pbi13aWR0aDogMTgwcHg7XCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtYmctd2hpdGUgY3FhLXJvdW5kZWQtbGcgY3FhLXNoYWRvdy1zbSBjcWEtZmxleCBjcWEtZmxleC1jb2xcIiBbbmdTdHlsZV09XCJ7XG4gICAgICBwYWRkaW5nOiBjYXJkUGFkZGluZyxcbiAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAjRTRFNEU0JyxcbiAgICAgICdib3JkZXItbGVmdC1jb2xvcic6IHN0YXR1c0NvbG9yLFxuICAgICAgJ2JvcmRlci1sZWZ0LXdpZHRoJzogYm9yZGVyTGVmdFdpZHRoXG4gICAgfVwiPlxuXG4gICAgPCEtLSBIZWFkZXI6IFJ1biBJRCBhbmQgU3RhdHVzIEJhZGdlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RhcnQgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZ2FwLTIgY3FhLWZsZXgtd3JhcFwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2NxYS1tYi1bMTBweF0nOiBpc1NtYWxsLFxuICAgICAgICAnY3FhLW1iLTInOiAhaXNTbWFsbFxuICAgICAgfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXJcIiBbbmdDbGFzc109XCJ7ICdjcWEtZ2FwLVs2cHhdJzogaXNTbWFsbCwgJ2NxYS1nYXAtMic6ICFpc1NtYWxsIH1cIj5cbiAgICAgICAgPHNwYW4gW25nU3R5bGVdPVwic3RhdHVzSWNvbkNvbnRhaW5lclN0eWxlc1wiPlxuICAgICAgICAgIDxtYXQtaWNvbiBbbmdTdHlsZV09XCJzdGF0dXNJY29uU3R5bGVzXCI+XG4gICAgICAgICAgICB7eyBzdGF0dXNJY29uIH19XG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mb250LXNlbWlib2xkIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtdW5kZXJsaW5lIGNxYS10ZXh0LVsjM2Y0M2VlXVwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdjcWEtdGV4dC14cyc6IGlzU21hbGwsXG4gICAgICAgICAgICAnY3FhLXRleHQtc20nOiAhaXNTbWFsbFxuICAgICAgICAgIH1cIiAoY2xpY2spPVwibGlua0NsaWNrZWQoKVwiPlxuICAgICAgICAgICN7eyBpZCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBTdGF0dXMgQmFkZ2UgLS0+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1pbmxpbmUtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcm91bmRlZC1tZCBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtd2hpdGUgY3FhLXB4LTJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ2NxYS1weS1bMnB4XSBjcWEtdGV4dC1bMTBweF0nOiBpc1NtYWxsLFxuICAgICAgICAgICdjcWEtcHktMSBjcWEtdGV4dC14cyc6ICFpc1NtYWxsXG4gICAgICAgIH1cIiBbbmdTdHlsZV09XCJzdGF0dXNCYWRnZVN0eWxlc1wiPlxuICAgICAgICB7eyBzdGF0dXNMYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBUeXBlIGFuZCBUaW1lc3RhbXAgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLXRleHQtWyM2MzYzNjNdXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdjcWEtZ2FwLTEnOiBpc1NtYWxsLFxuICAgICAgICAgICdjcWEtZ2FwLVs2cHhdJzogIWlzU21hbGwsXG4gICAgICAgICAgJ2NxYS1tYi0yJzogaXNTbWFsbCxcbiAgICAgICAgICAnY3FhLW1iLVs2cHhdJzogIWlzU21hbGxcbiAgICAgICAgfVwiPlxuICAgICAgPG1hdC1pY29uIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2NxYS10ZXh0LVsxMnB4XSBjcWEtdy0zIGNxYS1oLTMnOiBpc1NtYWxsLFxuICAgICAgICAnY3FhLXRleHQtWzE0cHhdIGNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0nOiAhaXNTbWFsbCB9XCI+XG4gICAgICAgIHt7IHR5cGVJY29uIH19XG4gICAgICA8L21hdC1pY29uPlxuICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieyAnY3FhLXRleHQtWzEwcHhdJzogaXNTbWFsbCwgJ2NxYS10ZXh0LXhzJzogIWlzU21hbGwgfVwiPlxuICAgICAgICB7eyB0eXBlTGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVGltZXN0YW1wIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZm9udC1ub3JtYWwgY3FhLXRleHQtWyMwQjBCMEJdIGNxYS1sZWFkaW5nLW5vcm1hbFwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2NxYS10ZXh0LXNtJzogIWlzU21hbGwsXG4gICAgICAgICdjcWEtdGV4dC1bMTFweF0nOiBpc1NtYWxsLFxuICAgICAgICAnY3FhLW1iLTInOiBpc1NtYWxsLFxuICAgICAgICAnY3FhLW1iLVs2cHhdJzogIWlzU21hbGxcbiAgICAgIH1cIj5cbiAgICAgIHt7IHRpbWVzdGFtcCB9fVxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBEdXJhdGlvbiBhbmQgUnVuIExhYmVsIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWdhcC0yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtdGV4dC1bIzYzNjM2M11cIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICdjcWEtZ2FwLTEnOiBpc1NtYWxsLFxuICAgICAgICAnY3FhLWdhcC1bNnB4XSc6ICFpc1NtYWxsXG4gICAgICB9XCIgW3RpdGxlXT1cImR1cmF0aW9uVG9vbHRpcFwiPlxuICAgICAgICA8bWF0LWljb24gW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdjcWEtdGV4dC1bMTJweF0gY3FhLXctMyBjcWEtaC0zJzogaXNTbWFsbCxcbiAgICAgICAgICAnY3FhLXRleHQtWzE0cHhdIGNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0nOiAhaXNTbWFsbCB9XCIgc3R5bGU9XCJmbGV4LXNocmluazogMDtcIj5cbiAgICAgICAgICBzY2hlZHVsZVxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ2NxYS10ZXh0LVs4cHhdJzogaXNTbWFsbCxcbiAgICAgICAgICAnY3FhLXRleHQtWzEwcHhdJzogIWlzU21hbGxcbiAgICAgICAgfVwiPlxuICAgICAgICAgIHt7IGR1cmF0aW9uIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8c3BhbiAqbmdJZj1cInJ1bkxhYmVsXCIgY2xhc3M9XCJjcWEtdGV4dC1bIzNGNDNFRV0gY3FhLXJvdW5kZWQtbWQgY3FhLXdoaXRlc3BhY2Utbm93cmFwXCJcbiAgICAgICAgW25nU3R5bGVdPVwicnVuTGFiZWxTdHlsZXNcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdjcWEtZm9udC1tZWRpdW0nOiAhaXNTbWFsbCB9XCI+XG4gICAgICAgIHt7IHJ1bkxhYmVsIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEVycm9yIE1lc3NhZ2UgKG9ubHkgZm9yIGZhaWxlZCBzdGF0dXMgYW5kIG5vcm1hbCBzaXplKSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlICYmIHN0YXR1cyA9PT0gJ2ZhaWxlZCcgJiYgIWlzU21hbGxcIiBjbGFzcz1cImNxYS1tdC0yIGNxYS1wdC0yXCJcbiAgICAgIHN0eWxlPVwiYm9yZGVyLXRvcDogMXB4IHNvbGlkICNFNEU0RTQ7XCI+XG4gICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtdGV4dC1bI0U3MDAwQl1cIj5cbiAgICAgICAge3sgZXJyb3JNZXNzYWdlIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWhpc3RvcnktY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3J1bi1oaXN0b3J5LWNhcmQvcnVuLWhpc3RvcnktY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3J1bi1oaXN0b3J5LWNhcmQvcnVuLWhpc3RvcnktY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVl2RSxNQUFNLE9BQU8sdUJBQXVCO0lBTHBDO1FBYVcsU0FBSSxHQUFhLFFBQVEsQ0FBQztRQUd6QixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0ErTHJEO0lBN0xDLElBQUksV0FBVztRQUNiLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxRQUFRLENBQUM7WUFDbEIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssU0FBUztnQkFDWixPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQztZQUNsQixLQUFLLGNBQWM7Z0JBQ2pCLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLEtBQUssU0FBUztnQkFDWixPQUFPLFNBQVMsQ0FBQztZQUNuQjtnQkFDRSxPQUFPLEVBQUUsQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxR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O3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5leHBvcnQgdHlwZSBSdW5TdGF0dXMgPSAncGFzc2VkJyB8ICdmYWlsZWQnIHwgJ2Fib3J0ZWQnIHwgJ3J1bm5pbmcnIHwgJ3N0b3BwZWQnIHwgJ3F1ZXVlZCcgfCAnbm90LWV4ZWN1dGVkJyB8ICd1bmtub3duJztcbmV4cG9ydCB0eXBlIFJ1blR5cGUgPSAnYXV0b21hdGVkJyB8ICdtYW51YWwnO1xuZXhwb3J0IHR5cGUgQ2FyZFNpemUgPSAnbm9ybWFsJyB8ICdzbWFsbCc7XG5leHBvcnQgdHlwZSBQbGF0Zm9ybSA9ICdpb3MnIHwgJ2FuZHJvaWQnIHwgJ3dlYicgfCAnY2hyb21pdW0nIHwgJ2Rlc2t0b3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtcnVuLWhpc3RvcnktY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ydW4taGlzdG9yeS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBSdW5IaXN0b3J5Q2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGlkITogbnVtYmVyO1xuICBASW5wdXQoKSBzdGF0dXMhOiBSdW5TdGF0dXM7XG4gIEBJbnB1dCgpIHR5cGUhOiBSdW5UeXBlO1xuICBASW5wdXQoKSB0aW1lc3RhbXAhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGR1cmF0aW9uITogc3RyaW5nO1xuICBASW5wdXQoKSBydW5MYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplOiBDYXJkU2l6ZSA9ICdub3JtYWwnO1xuICBASW5wdXQoKSBkdXJhdGlvblRvb2x0aXA/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYXRmb3JtPzogUGxhdGZvcm07XG4gIEBPdXRwdXQoKSBoZWFkaW5nQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXQgc3RhdHVzTGFiZWwoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuc3RhdHVzKSB7XG4gICAgICBjYXNlICdwYXNzZWQnOlxuICAgICAgICByZXR1cm4gJ1Bhc3NlZCc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gJ0ZhaWxlZCc7XG4gICAgICBjYXNlICdhYm9ydGVkJzpcbiAgICAgICAgcmV0dXJuICdBYm9ydGVkJztcbiAgICAgIGNhc2UgJ3J1bm5pbmcnOlxuICAgICAgICByZXR1cm4gJ1J1bm5pbmcnO1xuICAgICAgY2FzZSAnc3RvcHBlZCc6XG4gICAgICAgIHJldHVybiAnU3RvcHBlZCc7XG4gICAgICBjYXNlICdxdWV1ZWQnOlxuICAgICAgICByZXR1cm4gJ1F1ZXVlZCc7XG4gICAgICBjYXNlICdub3QtZXhlY3V0ZWQnOlxuICAgICAgICByZXR1cm4gJ05vdCBFeGVjdXRlZCc7XG4gICAgICBjYXNlICd1bmtub3duJzpcbiAgICAgICAgcmV0dXJuICdVbmtub3duJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBnZXQgc3RhdHVzQ29sb3IoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuc3RhdHVzKSB7XG4gICAgICBjYXNlICdwYXNzZWQnOlxuICAgICAgICByZXR1cm4gJyMwMEM5NTAnO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuICcjRkIyQzM2JztcbiAgICAgIGNhc2UgJ2Fib3J0ZWQnOlxuICAgICAgICByZXR1cm4gJyNGOTczMTYnO1xuICAgICAgY2FzZSAncnVubmluZyc6XG4gICAgICAgIHJldHVybiAnIzNCODJGNic7XG4gICAgICBjYXNlICdzdG9wcGVkJzpcbiAgICAgICAgcmV0dXJuICcjRUY0NDQ0JztcbiAgICAgIGNhc2UgJ3F1ZXVlZCc6XG4gICAgICAgIHJldHVybiAnIzhCNUNGNic7XG4gICAgICBjYXNlICdub3QtZXhlY3V0ZWQnOlxuICAgICAgICByZXR1cm4gJyM2QjcyODAnO1xuICAgICAgY2FzZSAndW5rbm93bic6XG4gICAgICAgIHJldHVybiAnIzlDQTNBRic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyM2QjcyODAnO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzdGF0dXNJY29uQmdDb2xvcigpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5zdGF0dXMpIHtcbiAgICAgICAgY2FzZSAncGFzc2VkJzpcbiAgICAgICAgICAgIHJldHVybiAnI0RDRkNFNyc7XG4gICAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgICAgICByZXR1cm4gJyNmZmUyZTInO1xuICAgICAgICBjYXNlICdhYm9ydGVkJzpcbiAgICAgICAgICAgIHJldHVybiAnI0ZGRURENSc7IFxuICAgICAgICBjYXNlICdydW5uaW5nJzpcbiAgICAgICAgICAgIHJldHVybiAnI0RCRUFGRSc7XG4gICAgICAgIGNhc2UgJ3N0b3BwZWQnOlxuICAgICAgICAgICAgcmV0dXJuICcjRkVFMkUyJztcbiAgICAgICAgY2FzZSAncXVldWVkJzpcbiAgICAgICAgICAgIHJldHVybiAnI0VERTlGRSc7XG4gICAgICAgIGNhc2UgJ25vdC1leGVjdXRlZCc6XG4gICAgICAgICAgICByZXR1cm4gJyNGM0Y0RjYnO1xuICAgICAgICBjYXNlICd1bmtub3duJzpcbiAgICAgICAgICAgIHJldHVybiAnI0YzRjRGNic7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gJyNFNUU3RUInO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzdGF0dXNJY29uKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnN0YXR1cykge1xuICAgICAgY2FzZSAncGFzc2VkJzpcbiAgICAgICAgcmV0dXJuICdjaGVjayc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gJ2Nsb3NlJztcbiAgICAgIGNhc2UgJ2Fib3J0ZWQnOlxuICAgICAgICByZXR1cm4gJ3dhcm5pbmcnO1xuICAgICAgY2FzZSAncnVubmluZyc6XG4gICAgICAgIHJldHVybiAnc2NoZWR1bGUnO1xuICAgICAgY2FzZSAnc3RvcHBlZCc6XG4gICAgICAgIHJldHVybiAnc3RvcCc7XG4gICAgICBjYXNlICdxdWV1ZWQnOlxuICAgICAgICByZXR1cm4gJ2hvdXJnbGFzc19lbXB0eSc7XG4gICAgICBjYXNlICdub3QtZXhlY3V0ZWQnOlxuICAgICAgICByZXR1cm4gJ3JlbW92ZV9jaXJjbGVfb3V0bGluZSc7XG4gICAgICBjYXNlICd1bmtub3duJzpcbiAgICAgICAgcmV0dXJuICdoZWxwX291dGxpbmUnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdoZWxwX291dGxpbmUnO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0eXBlSWNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdhdXRvbWF0ZWQnID8gJ3NldHRpbmdzJyA6ICdwZXJzb24nO1xuICB9XG5cbiAgZ2V0IHR5cGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdhdXRvbWF0ZWQnID8gJ0F1dG9tYXRlZCcgOiAnTWFudWFsJztcbiAgfVxuXG4gIGdldCBpc1NtYWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNpemUgPT09ICdzbWFsbCc7XG4gIH1cblxuICBnZXQgc3RhdHVzSWNvbkNvbnRhaW5lclN0eWxlcygpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiB0aGlzLnN0YXR1c0ljb25CZ0NvbG9yLFxuICAgICAgJ3dpZHRoJzogdGhpcy5pc1NtYWxsID8gJzE2cHgnIDogJzIwcHgnLFxuICAgICAgJ2hlaWdodCc6IHRoaXMuaXNTbWFsbCA/ICcxNnB4JyA6ICcyMHB4JyxcbiAgICAgICdib3JkZXItcmFkaXVzJzogJzRweCcsXG4gICAgICAnZGlzcGxheSc6ICdpbmxpbmUtZmxleCcsXG4gICAgICAnYWxpZ24taXRlbXMnOiAnY2VudGVyJyxcbiAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiAnY2VudGVyJ1xuICAgIH07XG4gIH1cblxuICBnZXQgc3RhdHVzSWNvblN0eWxlcygpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2NvbG9yJzogdGhpcy5zdGF0dXNDb2xvcixcbiAgICAgICdmb250LXNpemUnOiB0aGlzLmlzU21hbGwgPyAnMTBweCcgOiAnMTJweCcsXG4gICAgICAnd2lkdGgnOiB0aGlzLmlzU21hbGwgPyAnMTBweCcgOiAnMTJweCcsXG4gICAgICAnaGVpZ2h0JzogdGhpcy5pc1NtYWxsID8gJzEwcHgnIDogJzEycHgnXG4gICAgfTtcbiAgfVxuXG4gIGdldCBzdGF0dXNCYWRnZVN0eWxlcygpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiB0aGlzLnN0YXR1c0NvbG9yXG4gICAgfTtcbiAgfVxuXG4gIGdldCBydW5MYWJlbFN0eWxlcygpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnI2VjZWRmZScsXG4gICAgICAncGFkZGluZyc6IHRoaXMuaXNTbWFsbCA/ICcycHggNnB4JyA6ICcycHggOHB4JyxcbiAgICAgICdib3JkZXItcmFkaXVzJzogdGhpcy5pc1NtYWxsID8gJzVweCcgOiAnNHB4JyxcbiAgICAgICdmb250LXNpemUnIDogdGhpcy5pc1NtYWxsID8gJzhweCcgOiAnMTBweCcsXG4gICAgICAnbGluZS1oZWlnaHQnOiB0aGlzLmlzU21hbGwgPyAnMTJweCcgOiAnMTVweCdcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGNhcmRQYWRkaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNTbWFsbCA/ICcxMHB4JyA6ICcxMnB4JztcbiAgfVxuXG4gIGdldCBib3JkZXJMZWZ0V2lkdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc1NtYWxsID8gJzNweCcgOiAnNHB4JztcbiAgfVxuXG4gIGdldCBwbGF0Zm9ybUljb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMucGxhdGZvcm0pIHJldHVybiAnJztcbiAgICBzd2l0Y2ggKHRoaXMucGxhdGZvcm0pIHtcbiAgICAgIGNhc2UgJ2lvcyc6XG4gICAgICAgIHJldHVybiAnYXBwbGUnO1xuICAgICAgY2FzZSAnYW5kcm9pZCc6XG4gICAgICAgIHJldHVybiAnYW5kcm9pZCc7XG4gICAgICBjYXNlICd3ZWInOlxuICAgICAgICByZXR1cm4gJ2xhbmd1YWdlJztcbiAgICAgIGNhc2UgJ2Nocm9taXVtJzpcbiAgICAgICAgcmV0dXJuICd3ZWInO1xuICAgICAgY2FzZSAnZGVza3RvcCc6XG4gICAgICAgIHJldHVybiAnZGVza3RvcF93aW5kb3dzJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBnZXQgcGxhdGZvcm1MYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5wbGF0Zm9ybSkgcmV0dXJuICcnO1xuICAgIHN3aXRjaCAodGhpcy5wbGF0Zm9ybSkge1xuICAgICAgY2FzZSAnaW9zJzpcbiAgICAgICAgcmV0dXJuICdpT1MnO1xuICAgICAgY2FzZSAnYW5kcm9pZCc6XG4gICAgICAgIHJldHVybiAnQW5kcm9pZCc7XG4gICAgICBjYXNlICd3ZWInOlxuICAgICAgICByZXR1cm4gJ1dlYic7XG4gICAgICBjYXNlICdjaHJvbWl1bSc6XG4gICAgICAgIHJldHVybiAnQ2hyb21pdW0nO1xuICAgICAgY2FzZSAnZGVza3RvcCc6XG4gICAgICAgIHJldHVybiAnV2ViJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBsaW5rQ2xpY2tlZCgpe1xuICAgIHRoaXMuaGVhZGluZ0NsaWNrZWQuZW1pdCgpO1xuICB9XG5cbn0iLCI8ZGl2IGNsYXNzPVwiY3FhLXVpLXJvb3RcIiBzdHlsZT1cImRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBtaW4td2lkdGg6IDE4MHB4O1wiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWJnLXdoaXRlIGNxYS1yb3VuZGVkLWxnIGNxYS1zaGFkb3ctc20gY3FhLWZsZXggY3FhLWZsZXgtY29sXCIgW25nU3R5bGVdPVwie1xuICAgICAgcGFkZGluZzogY2FyZFBhZGRpbmcsXG4gICAgICBib3JkZXI6ICcxcHggc29saWQgI0U0RTRFNCcsXG4gICAgICAnYm9yZGVyLWxlZnQtY29sb3InOiBzdGF0dXNDb2xvcixcbiAgICAgICdib3JkZXItbGVmdC13aWR0aCc6IGJvcmRlckxlZnRXaWR0aFxuICAgIH1cIj5cblxuICAgIDwhLS0gSGVhZGVyOiBSdW4gSUQgYW5kIFN0YXR1cyBCYWRnZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLXN0YXJ0IGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWdhcC0yIGNxYS1mbGV4LXdyYXBcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICdjcWEtbWItWzEwcHhdJzogaXNTbWFsbCxcbiAgICAgICAgJ2NxYS1tYi0yJzogIWlzU21hbGxcbiAgICAgIH1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyXCIgW25nQ2xhc3NdPVwieyAnY3FhLWdhcC1bNnB4XSc6IGlzU21hbGwsICdjcWEtZ2FwLTInOiAhaXNTbWFsbCB9XCI+XG4gICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInN0YXR1c0ljb25Db250YWluZXJTdHlsZXNcIj5cbiAgICAgICAgICA8bWF0LWljb24gW25nU3R5bGVdPVwic3RhdHVzSWNvblN0eWxlc1wiPlxuICAgICAgICAgICAge3sgc3RhdHVzSWNvbiB9fVxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZm9udC1zZW1pYm9sZCBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLXVuZGVybGluZSBjcWEtdGV4dC1bIzNmNDNlZV1cIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY3FhLXRleHQteHMnOiBpc1NtYWxsLFxuICAgICAgICAgICAgJ2NxYS10ZXh0LXNtJzogIWlzU21hbGxcbiAgICAgICAgICB9XCIgKGNsaWNrKT1cImxpbmtDbGlja2VkKClcIj5cbiAgICAgICAgICAje3sgaWQgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gU3RhdHVzIEJhZGdlIC0tPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtaW5saW5lLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXJvdW5kZWQtbWQgY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LXdoaXRlIGNxYS1weC0yXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdjcWEtcHktWzJweF0gY3FhLXRleHQtWzEwcHhdJzogaXNTbWFsbCxcbiAgICAgICAgICAnY3FhLXB5LTEgY3FhLXRleHQteHMnOiAhaXNTbWFsbFxuICAgICAgICB9XCIgW25nU3R5bGVdPVwic3RhdHVzQmFkZ2VTdHlsZXNcIj5cbiAgICAgICAge3sgc3RhdHVzTGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVHlwZSBhbmQgVGltZXN0YW1wIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS10ZXh0LVsjNjM2MzYzXVwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnY3FhLWdhcC0xJzogaXNTbWFsbCxcbiAgICAgICAgICAnY3FhLWdhcC1bNnB4XSc6ICFpc1NtYWxsLFxuICAgICAgICAgICdjcWEtbWItMic6IGlzU21hbGwsXG4gICAgICAgICAgJ2NxYS1tYi1bNnB4XSc6ICFpc1NtYWxsXG4gICAgICAgIH1cIj5cbiAgICAgIDxtYXQtaWNvbiBbbmdDbGFzc109XCJ7XG4gICAgICAgICdjcWEtdGV4dC1bMTJweF0gY3FhLXctMyBjcWEtaC0zJzogaXNTbWFsbCxcbiAgICAgICAgJ2NxYS10ZXh0LVsxNHB4XSBjcWEtdy1bMTRweF0gY3FhLWgtWzE0cHhdJzogIWlzU21hbGwgfVwiPlxuICAgICAgICB7eyB0eXBlSWNvbiB9fVxuICAgICAgPC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsgJ2NxYS10ZXh0LVsxMHB4XSc6IGlzU21hbGwsICdjcWEtdGV4dC14cyc6ICFpc1NtYWxsIH1cIj5cbiAgICAgICAge3sgdHlwZUxhYmVsIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFRpbWVzdGFtcCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtbm9ybWFsIGNxYS10ZXh0LVsjMEIwQjBCXSBjcWEtbGVhZGluZy1ub3JtYWxcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICdjcWEtdGV4dC1zbSc6ICFpc1NtYWxsLFxuICAgICAgICAnY3FhLXRleHQtWzExcHhdJzogaXNTbWFsbCxcbiAgICAgICAgJ2NxYS1tYi0yJzogaXNTbWFsbCxcbiAgICAgICAgJ2NxYS1tYi1bNnB4XSc6ICFpc1NtYWxsXG4gICAgICB9XCI+XG4gICAgICB7eyB0aW1lc3RhbXAgfX1cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRHVyYXRpb24sIFBsYXRmb3JtIGFuZCBSdW4gTGFiZWwgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZ2FwLTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2NxYS1nYXAtMSc6IGlzU21hbGwsXG4gICAgICAgICdjcWEtZ2FwLTInOiAhaXNTbWFsbFxuICAgICAgfVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtdGV4dC1bIzYzNjM2M11cIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ2NxYS1nYXAtMSc6IGlzU21hbGwsXG4gICAgICAgICAgJ2NxYS1nYXAtWzZweF0nOiAhaXNTbWFsbFxuICAgICAgICB9XCIgW3RpdGxlXT1cImR1cmF0aW9uVG9vbHRpcFwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY3FhLXRleHQtWzEycHhdIGNxYS13LTMgY3FhLWgtMyc6IGlzU21hbGwsXG4gICAgICAgICAgICAnY3FhLXRleHQtWzE0cHhdIGNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0nOiAhaXNTbWFsbCB9XCIgc3R5bGU9XCJmbGV4LXNocmluazogMDtcIj5cbiAgICAgICAgICAgIHNjaGVkdWxlXG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY3FhLXRleHQtWzhweF0nOiBpc1NtYWxsLFxuICAgICAgICAgICAgJ2NxYS10ZXh0LVsxMHB4XSc6ICFpc1NtYWxsXG4gICAgICAgICAgfVwiPlxuICAgICAgICAgICAge3sgZHVyYXRpb24gfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxjcWEtYmFkZ2UgXG4gICAgICAgICAgKm5nSWY9XCJwbGF0Zm9ybVwiXG4gICAgICAgICAgW2xhYmVsXT1cInBsYXRmb3JtTGFiZWxcIlxuICAgICAgICAgIFtpY29uXT1cInBsYXRmb3JtSWNvblwiXG4gICAgICAgICAgW3NpemVdPVwiaXNTbWFsbCA/ICdleHRyYS1zbWFsbCcgOiAnc21hbGwnXCJcbiAgICAgICAgICB2YXJpYW50PVwiZGVmYXVsdFwiXG4gICAgICAgICAgW2ljb25TaXplXT1cImlzU21hbGwgPyAxMCA6IDEyXCI+XG4gICAgICAgIDwvY3FhLWJhZGdlPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwicnVuTGFiZWxcIiBjbGFzcz1cImNxYS10ZXh0LVsjM0Y0M0VFXSBjcWEtcm91bmRlZC1tZCBjcWEtd2hpdGVzcGFjZS1ub3dyYXBcIlxuICAgICAgICBbbmdTdHlsZV09XCJydW5MYWJlbFN0eWxlc1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NxYS1mb250LW1lZGl1bSc6ICFpc1NtYWxsIH1cIj5cbiAgICAgICAge3sgcnVuTGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRXJyb3IgTWVzc2FnZSAob25seSBmb3IgZmFpbGVkIHN0YXR1cyBhbmQgbm9ybWFsIHNpemUpIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJlcnJvck1lc3NhZ2UgJiYgc3RhdHVzID09PSAnZmFpbGVkJyAmJiAhaXNTbWFsbFwiIGNsYXNzPVwiY3FhLW10LTIgY3FhLXB0LTJcIlxuICAgICAgc3R5bGU9XCJib3JkZXItdG9wOiAxcHggc29saWQgI0U0RTRFNDtcIj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS10ZXh0LVsjRTcwMDBCXVwiPlxuICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -10640,15 +10640,51 @@ class RunHistoryCardComponent {
10640
10640
  get borderLeftWidth() {
10641
10641
  return this.isSmall ? '3px' : '4px';
10642
10642
  }
10643
+ get platformIcon() {
10644
+ if (!this.platform)
10645
+ return '';
10646
+ switch (this.platform) {
10647
+ case 'ios':
10648
+ return 'apple';
10649
+ case 'android':
10650
+ return 'android';
10651
+ case 'web':
10652
+ return 'language';
10653
+ case 'chromium':
10654
+ return 'web';
10655
+ case 'desktop':
10656
+ return 'desktop_windows';
10657
+ default:
10658
+ return '';
10659
+ }
10660
+ }
10661
+ get platformLabel() {
10662
+ if (!this.platform)
10663
+ return '';
10664
+ switch (this.platform) {
10665
+ case 'ios':
10666
+ return 'iOS';
10667
+ case 'android':
10668
+ return 'Android';
10669
+ case 'web':
10670
+ return 'Web';
10671
+ case 'chromium':
10672
+ return 'Chromium';
10673
+ case 'desktop':
10674
+ return 'Web';
10675
+ default:
10676
+ return '';
10677
+ }
10678
+ }
10643
10679
  linkClicked() {
10644
10680
  this.headingClicked.emit();
10645
10681
  }
10646
10682
  }
10647
10683
  RunHistoryCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: RunHistoryCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10648
- RunHistoryCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: RunHistoryCardComponent, selector: "cqa-run-history-card", inputs: { id: "id", status: "status", type: "type", timestamp: "timestamp", duration: "duration", runLabel: "runLabel", errorMessage: "errorMessage", size: "size", durationTooltip: "durationTooltip" }, outputs: { headingClicked: "headingClicked" }, ngImport: i0, template: "<div class=\"cqa-ui-root\" style=\"display: block; width: 100%; height: 100%; min-width: 180px;\">\n <div class=\"cqa-bg-white cqa-rounded-lg cqa-shadow-sm cqa-flex cqa-flex-col\" [ngStyle]=\"{\n padding: cardPadding,\n border: '1px solid #E4E4E4',\n 'border-left-color': statusColor,\n 'border-left-width': borderLeftWidth\n }\">\n\n <!-- Header: Run ID and Status Badge -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2 cqa-flex-wrap\" [ngClass]=\"{\n 'cqa-mb-[10px]': isSmall,\n 'cqa-mb-2': !isSmall\n }\">\n <div class=\"cqa-flex cqa-items-center\" [ngClass]=\"{ 'cqa-gap-[6px]': isSmall, 'cqa-gap-2': !isSmall }\">\n <span [ngStyle]=\"statusIconContainerStyles\">\n <mat-icon [ngStyle]=\"statusIconStyles\">\n {{ statusIcon }}\n </mat-icon>\n </span>\n <span class=\"cqa-font-semibold cqa-cursor-pointer cqa-underline cqa-text-[#3f43ee]\" [ngClass]=\"{\n 'cqa-text-xs': isSmall,\n 'cqa-text-sm': !isSmall\n }\" (click)=\"linkClicked()\">\n #{{ id }}\n </span>\n </div>\n\n <!-- Status Badge -->\n <span class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-rounded-md cqa-font-medium cqa-text-white cqa-px-2\"\n [ngClass]=\"{\n 'cqa-py-[2px] cqa-text-[10px]': isSmall,\n 'cqa-py-1 cqa-text-xs': !isSmall\n }\" [ngStyle]=\"statusBadgeStyles\">\n {{ statusLabel }}\n </span>\n </div>\n\n <!-- Type and Timestamp -->\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\">\n {{ typeIcon }}\n </mat-icon>\n <span [ngClass]=\"{ 'cqa-text-[10px]': isSmall, 'cqa-text-xs': !isSmall }\">\n {{ typeLabel }}\n </span>\n </div>\n\n <!-- Timestamp -->\n <div class=\"cqa-font-normal cqa-text-[#0B0B0B] cqa-leading-normal\" [ngClass]=\"{\n 'cqa-text-sm': !isSmall,\n 'cqa-text-[11px]': isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n {{ timestamp }}\n </div>\n\n <!-- Duration and Run Label -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall\n }\" [title]=\"durationTooltip\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\" style=\"flex-shrink: 0;\">\n schedule\n </mat-icon>\n <span [ngClass]=\"{\n 'cqa-text-[8px]': isSmall,\n 'cqa-text-[10px]': !isSmall\n }\">\n {{ duration }}\n </span>\n </div>\n\n <span *ngIf=\"runLabel\" class=\"cqa-text-[#3F43EE] cqa-rounded-md cqa-whitespace-nowrap\"\n [ngStyle]=\"runLabelStyles\"\n [ngClass]=\"{ 'cqa-font-medium': !isSmall }\">\n {{ runLabel }}\n </span>\n </div>\n\n <!-- Error Message (only for failed status and normal size) -->\n <div *ngIf=\"errorMessage && status === 'failed' && !isSmall\" class=\"cqa-mt-2 cqa-pt-2\"\n style=\"border-top: 1px solid #E4E4E4;\">\n <p class=\"cqa-text-[10px] cqa-text-[#E7000B]\">\n {{ errorMessage }}\n </p>\n </div>\n </div>\n</div>", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
10684
+ RunHistoryCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: RunHistoryCardComponent, selector: "cqa-run-history-card", inputs: { id: "id", status: "status", type: "type", timestamp: "timestamp", duration: "duration", runLabel: "runLabel", errorMessage: "errorMessage", size: "size", durationTooltip: "durationTooltip", platform: "platform" }, outputs: { headingClicked: "headingClicked" }, ngImport: i0, template: "<div class=\"cqa-ui-root\" style=\"display: block; width: 100%; height: 100%; min-width: 180px;\">\n <div class=\"cqa-bg-white cqa-rounded-lg cqa-shadow-sm cqa-flex cqa-flex-col\" [ngStyle]=\"{\n padding: cardPadding,\n border: '1px solid #E4E4E4',\n 'border-left-color': statusColor,\n 'border-left-width': borderLeftWidth\n }\">\n\n <!-- Header: Run ID and Status Badge -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2 cqa-flex-wrap\" [ngClass]=\"{\n 'cqa-mb-[10px]': isSmall,\n 'cqa-mb-2': !isSmall\n }\">\n <div class=\"cqa-flex cqa-items-center\" [ngClass]=\"{ 'cqa-gap-[6px]': isSmall, 'cqa-gap-2': !isSmall }\">\n <span [ngStyle]=\"statusIconContainerStyles\">\n <mat-icon [ngStyle]=\"statusIconStyles\">\n {{ statusIcon }}\n </mat-icon>\n </span>\n <span class=\"cqa-font-semibold cqa-cursor-pointer cqa-underline cqa-text-[#3f43ee]\" [ngClass]=\"{\n 'cqa-text-xs': isSmall,\n 'cqa-text-sm': !isSmall\n }\" (click)=\"linkClicked()\">\n #{{ id }}\n </span>\n </div>\n\n <!-- Status Badge -->\n <span class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-rounded-md cqa-font-medium cqa-text-white cqa-px-2\"\n [ngClass]=\"{\n 'cqa-py-[2px] cqa-text-[10px]': isSmall,\n 'cqa-py-1 cqa-text-xs': !isSmall\n }\" [ngStyle]=\"statusBadgeStyles\">\n {{ statusLabel }}\n </span>\n </div>\n\n <!-- Type and Timestamp -->\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\">\n {{ typeIcon }}\n </mat-icon>\n <span [ngClass]=\"{ 'cqa-text-[10px]': isSmall, 'cqa-text-xs': !isSmall }\">\n {{ typeLabel }}\n </span>\n </div>\n\n <!-- Timestamp -->\n <div class=\"cqa-font-normal cqa-text-[#0B0B0B] cqa-leading-normal\" [ngClass]=\"{\n 'cqa-text-sm': !isSmall,\n 'cqa-text-[11px]': isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n {{ timestamp }}\n </div>\n\n <!-- Duration, Platform and Run Label -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-2': !isSmall\n }\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall\n }\" [title]=\"durationTooltip\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\" style=\"flex-shrink: 0;\">\n schedule\n </mat-icon>\n <span [ngClass]=\"{\n 'cqa-text-[8px]': isSmall,\n 'cqa-text-[10px]': !isSmall\n }\">\n {{ duration }}\n </span>\n </div>\n\n <cqa-badge \n *ngIf=\"platform\"\n [label]=\"platformLabel\"\n [icon]=\"platformIcon\"\n [size]=\"isSmall ? 'extra-small' : 'small'\"\n variant=\"default\"\n [iconSize]=\"isSmall ? 10 : 12\">\n </cqa-badge>\n </div>\n\n <span *ngIf=\"runLabel\" class=\"cqa-text-[#3F43EE] cqa-rounded-md cqa-whitespace-nowrap\"\n [ngStyle]=\"runLabelStyles\"\n [ngClass]=\"{ 'cqa-font-medium': !isSmall }\">\n {{ runLabel }}\n </span>\n </div>\n\n <!-- Error Message (only for failed status and normal size) -->\n <div *ngIf=\"errorMessage && status === 'failed' && !isSmall\" class=\"cqa-mt-2 cqa-pt-2\"\n style=\"border-top: 1px solid #E4E4E4;\">\n <p class=\"cqa-text-[10px] cqa-text-[#E7000B]\">\n {{ errorMessage }}\n </p>\n </div>\n </div>\n</div>", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: BadgeComponent, selector: "cqa-badge", inputs: ["type", "label", "icon", "iconLibrary", "variant", "size", "backgroundColor", "textColor", "borderColor", "iconBackgroundColor", "iconColor", "iconSize", "inlineStyles", "key", "value", "keyTextColor", "valueTextColor", "isLoading"] }], directives: [{ type: i2$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
10649
10685
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: RunHistoryCardComponent, decorators: [{
10650
10686
  type: Component,
10651
- args: [{ selector: 'cqa-run-history-card', template: "<div class=\"cqa-ui-root\" style=\"display: block; width: 100%; height: 100%; min-width: 180px;\">\n <div class=\"cqa-bg-white cqa-rounded-lg cqa-shadow-sm cqa-flex cqa-flex-col\" [ngStyle]=\"{\n padding: cardPadding,\n border: '1px solid #E4E4E4',\n 'border-left-color': statusColor,\n 'border-left-width': borderLeftWidth\n }\">\n\n <!-- Header: Run ID and Status Badge -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2 cqa-flex-wrap\" [ngClass]=\"{\n 'cqa-mb-[10px]': isSmall,\n 'cqa-mb-2': !isSmall\n }\">\n <div class=\"cqa-flex cqa-items-center\" [ngClass]=\"{ 'cqa-gap-[6px]': isSmall, 'cqa-gap-2': !isSmall }\">\n <span [ngStyle]=\"statusIconContainerStyles\">\n <mat-icon [ngStyle]=\"statusIconStyles\">\n {{ statusIcon }}\n </mat-icon>\n </span>\n <span class=\"cqa-font-semibold cqa-cursor-pointer cqa-underline cqa-text-[#3f43ee]\" [ngClass]=\"{\n 'cqa-text-xs': isSmall,\n 'cqa-text-sm': !isSmall\n }\" (click)=\"linkClicked()\">\n #{{ id }}\n </span>\n </div>\n\n <!-- Status Badge -->\n <span class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-rounded-md cqa-font-medium cqa-text-white cqa-px-2\"\n [ngClass]=\"{\n 'cqa-py-[2px] cqa-text-[10px]': isSmall,\n 'cqa-py-1 cqa-text-xs': !isSmall\n }\" [ngStyle]=\"statusBadgeStyles\">\n {{ statusLabel }}\n </span>\n </div>\n\n <!-- Type and Timestamp -->\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\">\n {{ typeIcon }}\n </mat-icon>\n <span [ngClass]=\"{ 'cqa-text-[10px]': isSmall, 'cqa-text-xs': !isSmall }\">\n {{ typeLabel }}\n </span>\n </div>\n\n <!-- Timestamp -->\n <div class=\"cqa-font-normal cqa-text-[#0B0B0B] cqa-leading-normal\" [ngClass]=\"{\n 'cqa-text-sm': !isSmall,\n 'cqa-text-[11px]': isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n {{ timestamp }}\n </div>\n\n <!-- Duration and Run Label -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall\n }\" [title]=\"durationTooltip\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\" style=\"flex-shrink: 0;\">\n schedule\n </mat-icon>\n <span [ngClass]=\"{\n 'cqa-text-[8px]': isSmall,\n 'cqa-text-[10px]': !isSmall\n }\">\n {{ duration }}\n </span>\n </div>\n\n <span *ngIf=\"runLabel\" class=\"cqa-text-[#3F43EE] cqa-rounded-md cqa-whitespace-nowrap\"\n [ngStyle]=\"runLabelStyles\"\n [ngClass]=\"{ 'cqa-font-medium': !isSmall }\">\n {{ runLabel }}\n </span>\n </div>\n\n <!-- Error Message (only for failed status and normal size) -->\n <div *ngIf=\"errorMessage && status === 'failed' && !isSmall\" class=\"cqa-mt-2 cqa-pt-2\"\n style=\"border-top: 1px solid #E4E4E4;\">\n <p class=\"cqa-text-[10px] cqa-text-[#E7000B]\">\n {{ errorMessage }}\n </p>\n </div>\n </div>\n</div>", styles: [] }]
10687
+ args: [{ selector: 'cqa-run-history-card', template: "<div class=\"cqa-ui-root\" style=\"display: block; width: 100%; height: 100%; min-width: 180px;\">\n <div class=\"cqa-bg-white cqa-rounded-lg cqa-shadow-sm cqa-flex cqa-flex-col\" [ngStyle]=\"{\n padding: cardPadding,\n border: '1px solid #E4E4E4',\n 'border-left-color': statusColor,\n 'border-left-width': borderLeftWidth\n }\">\n\n <!-- Header: Run ID and Status Badge -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2 cqa-flex-wrap\" [ngClass]=\"{\n 'cqa-mb-[10px]': isSmall,\n 'cqa-mb-2': !isSmall\n }\">\n <div class=\"cqa-flex cqa-items-center\" [ngClass]=\"{ 'cqa-gap-[6px]': isSmall, 'cqa-gap-2': !isSmall }\">\n <span [ngStyle]=\"statusIconContainerStyles\">\n <mat-icon [ngStyle]=\"statusIconStyles\">\n {{ statusIcon }}\n </mat-icon>\n </span>\n <span class=\"cqa-font-semibold cqa-cursor-pointer cqa-underline cqa-text-[#3f43ee]\" [ngClass]=\"{\n 'cqa-text-xs': isSmall,\n 'cqa-text-sm': !isSmall\n }\" (click)=\"linkClicked()\">\n #{{ id }}\n </span>\n </div>\n\n <!-- Status Badge -->\n <span class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-rounded-md cqa-font-medium cqa-text-white cqa-px-2\"\n [ngClass]=\"{\n 'cqa-py-[2px] cqa-text-[10px]': isSmall,\n 'cqa-py-1 cqa-text-xs': !isSmall\n }\" [ngStyle]=\"statusBadgeStyles\">\n {{ statusLabel }}\n </span>\n </div>\n\n <!-- Type and Timestamp -->\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\">\n {{ typeIcon }}\n </mat-icon>\n <span [ngClass]=\"{ 'cqa-text-[10px]': isSmall, 'cqa-text-xs': !isSmall }\">\n {{ typeLabel }}\n </span>\n </div>\n\n <!-- Timestamp -->\n <div class=\"cqa-font-normal cqa-text-[#0B0B0B] cqa-leading-normal\" [ngClass]=\"{\n 'cqa-text-sm': !isSmall,\n 'cqa-text-[11px]': isSmall,\n 'cqa-mb-2': isSmall,\n 'cqa-mb-[6px]': !isSmall\n }\">\n {{ timestamp }}\n </div>\n\n <!-- Duration, Platform and Run Label -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-2': !isSmall\n }\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[#636363]\" [ngClass]=\"{\n 'cqa-gap-1': isSmall,\n 'cqa-gap-[6px]': !isSmall\n }\" [title]=\"durationTooltip\">\n <mat-icon [ngClass]=\"{\n 'cqa-text-[12px] cqa-w-3 cqa-h-3': isSmall,\n 'cqa-text-[14px] cqa-w-[14px] cqa-h-[14px]': !isSmall }\" style=\"flex-shrink: 0;\">\n schedule\n </mat-icon>\n <span [ngClass]=\"{\n 'cqa-text-[8px]': isSmall,\n 'cqa-text-[10px]': !isSmall\n }\">\n {{ duration }}\n </span>\n </div>\n\n <cqa-badge \n *ngIf=\"platform\"\n [label]=\"platformLabel\"\n [icon]=\"platformIcon\"\n [size]=\"isSmall ? 'extra-small' : 'small'\"\n variant=\"default\"\n [iconSize]=\"isSmall ? 10 : 12\">\n </cqa-badge>\n </div>\n\n <span *ngIf=\"runLabel\" class=\"cqa-text-[#3F43EE] cqa-rounded-md cqa-whitespace-nowrap\"\n [ngStyle]=\"runLabelStyles\"\n [ngClass]=\"{ 'cqa-font-medium': !isSmall }\">\n {{ runLabel }}\n </span>\n </div>\n\n <!-- Error Message (only for failed status and normal size) -->\n <div *ngIf=\"errorMessage && status === 'failed' && !isSmall\" class=\"cqa-mt-2 cqa-pt-2\"\n style=\"border-top: 1px solid #E4E4E4;\">\n <p class=\"cqa-text-[10px] cqa-text-[#E7000B]\">\n {{ errorMessage }}\n </p>\n </div>\n </div>\n</div>", styles: [] }]
10652
10688
  }], propDecorators: { id: [{
10653
10689
  type: Input
10654
10690
  }], status: [{
@@ -10667,6 +10703,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
10667
10703
  type: Input
10668
10704
  }], durationTooltip: [{
10669
10705
  type: Input
10706
+ }], platform: [{
10707
+ type: Input
10670
10708
  }], headingClicked: [{
10671
10709
  type: Output
10672
10710
  }] } });