@cqa-lib/cqa-ui 1.1.446 → 1.1.447

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.
@@ -11,6 +11,38 @@ const EVENT_ICON_MAP = {
11
11
  questionnaire_generated: 'assignment',
12
12
  };
13
13
  const DEFAULT_ICON = 'description';
14
+ const CHANGE_HISTORY_STYLES = `
15
+ :host { display: block; width: 100%; }
16
+ .ch-wrapper { background: #ffffff; border: 1px solid #e8eaf0; border-radius: 8px; padding: 24px; box-shadow: 0 1px 4px rgba(0,0,0,.06); width: 100%; box-sizing: border-box; }
17
+ .ch-header { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 24px; }
18
+ .ch-header-icon { display: inline-flex; align-items: center; color: #6b7280; flex-shrink: 0; }
19
+ .ch-header-icon mat-icon { font-size: 20px; width: 20px; height: 20px; }
20
+ .ch-title { font-size: 15px; font-weight: 600; color: #1a1d23; margin: 0 0 2px 0; line-height: 1.4; }
21
+ .ch-subtitle { font-size: 13px; font-weight: 400; color: #6b7280; margin: 0; }
22
+ .ch-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 48px 24px; gap: 12px; }
23
+ .ch-empty p { font-size: 14px; color: #9ca3af; margin: 0; }
24
+ .ch-empty-icon { font-size: 32px; width: 32px; height: 32px; color: #d1d5db; }
25
+ .ch-timeline { list-style: none; margin: 0; padding: 0; }
26
+ .ch-event { display: flex; align-items: flex-start; }
27
+ .ch-track { width: 24px; display: flex; flex-direction: column; align-items: center; flex-shrink: 0; }
28
+ .ch-track::after { content: ''; width: 2px; flex: 1; background-color: #e5e7eb; margin-top: 4px; }
29
+ .ch-event--last .ch-track::after { display: none; }
30
+ .ch-dot { display: block; width: 10px; height: 10px; border-radius: 50%; background: #ffffff; border: 2px solid #d1d5db; margin-top: 4px; z-index: 1; flex-shrink: 0; }
31
+ .ch-card { display: flex; align-items: flex-start; gap: 12px; padding: 0 0 28px 12px; width: 100%; }
32
+ .ch-event-icon { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 6px; background: #f3f4f6; flex-shrink: 0; }
33
+ .ch-event-icon mat-icon { font-size: 16px; width: 16px; height: 16px; color: #6b7280; }
34
+ .ch-event-body { flex: 1; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
35
+ .ch-event-title { font-size: 14px; font-weight: 600; color: #1a1d23; }
36
+ .ch-event-meta { display: flex; align-items: center; gap: 6px; font-size: 12px; color: #6b7280; }
37
+ .ch-meta-icon { font-size: 12px; width: 12px; height: 12px; color: #9ca3af; }
38
+ .ch-meta-actor, .ch-meta-timestamp { font-size: 12px; color: #6b7280; }
39
+ .ch-badges { display: flex; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
40
+ .ch-badge { font-size: 12px; font-weight: 500; padding: 2px 8px; border-radius: 4px; }
41
+ .ch-badge--added { background: #dcfce7; color: #15803d; }
42
+ .ch-badge--modified { background: #fef9c3; color: #854d0e; }
43
+ .ch-badge--removed { background: #fee2e2; color: #b91c1c; }
44
+ .ch-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-shrink: 0; }
45
+ `;
14
46
  export class ChangeHistoryComponent {
15
47
  constructor() {
16
48
  this.items = [];
@@ -35,38 +67,7 @@ ChangeHistoryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", v
35
67
  ChangeHistoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ChangeHistoryComponent, selector: "cqa-change-history", inputs: { items: "items", title: "title" }, outputs: { viewDetails: "viewDetails", revert: "revert" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"ch-wrapper\" role=\"region\" [attr.aria-label]=\"title\">\n\n <!-- Header -->\n <div class=\"ch-header\">\n <span class=\"ch-header-icon\" aria-hidden=\"true\">\n <mat-icon>history</mat-icon>\n </span>\n <div>\n <h2 class=\"ch-title\">{{ title }}</h2>\n <p class=\"ch-subtitle\">{{ items.length }} events recorded</p>\n </div>\n </div>\n\n <!-- Empty state -->\n <div class=\"ch-empty\" *ngIf=\"!items.length\">\n <mat-icon class=\"ch-empty-icon\" aria-hidden=\"true\">history</mat-icon>\n <p>No history events recorded yet.</p>\n </div>\n\n <!-- Timeline -->\n <ol class=\"ch-timeline\" *ngIf=\"items.length\" aria-label=\"Change history events\">\n <li\n class=\"ch-event\"\n *ngFor=\"let item of items; last as isLast; trackBy: trackById\"\n [class.ch-event--last]=\"isLast\"\n >\n <!-- Track: dot + vertical line -->\n <div class=\"ch-track\">\n <span class=\"ch-dot\" aria-hidden=\"true\"></span>\n </div>\n\n <!-- Card -->\n <div class=\"ch-card\">\n\n <!-- Event icon -->\n <span class=\"ch-event-icon\" aria-hidden=\"true\">\n <mat-icon>{{ getEventIcon(item.eventType) }}</mat-icon>\n </span>\n\n <!-- Body -->\n <div class=\"ch-event-body\">\n <span class=\"ch-event-title\">{{ item.title }}</span>\n\n <div class=\"ch-event-meta\">\n <mat-icon class=\"ch-meta-icon\" aria-hidden=\"true\">person</mat-icon>\n <span class=\"ch-meta-actor\">{{ item.actor }}</span>\n <mat-icon class=\"ch-meta-icon\" aria-hidden=\"true\">schedule</mat-icon>\n <span class=\"ch-meta-timestamp\">{{ item.timestamp }}</span>\n </div>\n\n <div class=\"ch-badges\" *ngIf=\"item.badges?.length\">\n <span\n *ngFor=\"let badge of item.badges\"\n class=\"ch-badge\"\n [ngClass]=\"'ch-badge--' + badge.variant\"\n >{{ badge.label }}</span>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"ch-actions\">\n <cqa-button\n variant=\"text\"\n btnSize=\"sm\"\n icon=\"visibility\"\n [text]=\"'View Details'\"\n [attr.aria-label]=\"'View details for ' + item.title\"\n (clicked)=\"onViewDetails(item.id)\"\n ></cqa-button>\n\n <cqa-button\n *ngIf=\"item.canRevert\"\n variant=\"text\"\n btnSize=\"sm\"\n icon=\"history\"\n [text]=\"'Revert'\"\n [attr.aria-label]=\"'Revert ' + item.title\"\n (clicked)=\"onRevert(item.id)\"\n ></cqa-button>\n </div>\n\n </div>\n </li>\n </ol>\n\n</div>\n", styles: [":host{display:block;width:100%}.ch-wrapper{background:#ffffff;border:1px solid #e8eaf0;border-radius:8px;padding:24px;box-shadow:0 1px 4px #0000000f;width:100%;box-sizing:border-box}.ch-header{display:flex;align-items:flex-start;gap:10px;margin-bottom:24px}.ch-header-icon{display:inline-flex;align-items:center;color:#6b7280;flex-shrink:0}.ch-header-icon mat-icon{font-size:20px;width:20px;height:20px}.ch-title{font-size:15px;font-weight:600;color:#1a1d23;margin:0 0 2px;line-height:1.4}.ch-subtitle{font-size:13px;font-weight:400;color:#6b7280;margin:0}.ch-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;gap:12px}.ch-empty p{font-size:14px;color:#9ca3af;margin:0}.ch-empty-icon{font-size:32px;width:32px;height:32px;color:#d1d5db}.ch-timeline{list-style:none;margin:0;padding:0}.ch-event{display:flex;align-items:flex-start}.ch-track{width:24px;display:flex;flex-direction:column;align-items:center;flex-shrink:0}.ch-track:after{content:\"\";width:2px;flex:1;background-color:#e5e7eb;margin-top:4px}.ch-event--last .ch-track:after{display:none}.ch-dot{display:block;width:10px;height:10px;border-radius:50%;background:#ffffff;border:2px solid #d1d5db;margin-top:4px;z-index:1;flex-shrink:0}.ch-card{display:flex;align-items:flex-start;gap:12px;padding:0 0 28px 12px;width:100%}.ch-event-icon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;background:#f3f4f6;flex-shrink:0}.ch-event-icon mat-icon{font-size:16px;width:16px;height:16px;color:#6b7280}.ch-event-body{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.ch-event-title{font-size:14px;font-weight:600;color:#1a1d23}.ch-event-meta{display:flex;align-items:center;gap:6px;font-size:12px;color:#6b7280}.ch-meta-icon{font-size:12px;width:12px;height:12px;color:#9ca3af}.ch-meta-actor,.ch-meta-timestamp{font-size:12px;color:#6b7280}.ch-badges{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}.ch-badge{font-size:12px;font-weight:500;padding:2px 8px;border-radius:4px}.ch-badge--added{background:#dcfce7;color:#15803d}.ch-badge--modified{background:#fef9c3;color:#854d0e}.ch-badge--removed{background:#fee2e2;color:#b91c1c}.ch-actions{display:flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
36
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ChangeHistoryComponent, decorators: [{
37
69
  type: Component,
38
- args: [{ selector: 'cqa-change-history', styles: [`
39
- :host { display: block; width: 100%; }
40
- .ch-wrapper { background: #ffffff; border: 1px solid #e8eaf0; border-radius: 8px; padding: 24px; box-shadow: 0 1px 4px rgba(0,0,0,.06); width: 100%; box-sizing: border-box; }
41
- .ch-header { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 24px; }
42
- .ch-header-icon { display: inline-flex; align-items: center; color: #6b7280; flex-shrink: 0; }
43
- .ch-header-icon mat-icon { font-size: 20px; width: 20px; height: 20px; }
44
- .ch-title { font-size: 15px; font-weight: 600; color: #1a1d23; margin: 0 0 2px 0; line-height: 1.4; }
45
- .ch-subtitle { font-size: 13px; font-weight: 400; color: #6b7280; margin: 0; }
46
- .ch-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 48px 24px; gap: 12px; }
47
- .ch-empty p { font-size: 14px; color: #9ca3af; margin: 0; }
48
- .ch-empty-icon { font-size: 32px; width: 32px; height: 32px; color: #d1d5db; }
49
- .ch-timeline { list-style: none; margin: 0; padding: 0; }
50
- .ch-event { display: flex; align-items: flex-start; }
51
- .ch-track { width: 24px; display: flex; flex-direction: column; align-items: center; flex-shrink: 0; }
52
- .ch-track::after { content: ''; width: 2px; flex: 1; background-color: #e5e7eb; margin-top: 4px; }
53
- .ch-event--last .ch-track::after { display: none; }
54
- .ch-dot { display: block; width: 10px; height: 10px; border-radius: 50%; background: #ffffff; border: 2px solid #d1d5db; margin-top: 4px; z-index: 1; flex-shrink: 0; }
55
- .ch-card { display: flex; align-items: flex-start; gap: 12px; padding: 0 0 28px 12px; width: 100%; }
56
- .ch-event-icon { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 6px; background: #f3f4f6; flex-shrink: 0; }
57
- .ch-event-icon mat-icon { font-size: 16px; width: 16px; height: 16px; color: #6b7280; }
58
- .ch-event-body { flex: 1; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
59
- .ch-event-title { font-size: 14px; font-weight: 600; color: #1a1d23; }
60
- .ch-event-meta { display: flex; align-items: center; gap: 6px; font-size: 12px; color: #6b7280; }
61
- .ch-meta-icon { font-size: 12px; width: 12px; height: 12px; color: #9ca3af; }
62
- .ch-meta-actor, .ch-meta-timestamp { font-size: 12px; color: #6b7280; }
63
- .ch-badges { display: flex; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
64
- .ch-badge { font-size: 12px; font-weight: 500; padding: 2px 8px; border-radius: 4px; }
65
- .ch-badge--added { background: #dcfce7; color: #15803d; }
66
- .ch-badge--modified { background: #fef9c3; color: #854d0e; }
67
- .ch-badge--removed { background: #fee2e2; color: #b91c1c; }
68
- .ch-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-shrink: 0; }
69
- `], host: { class: 'cqa-ui-root' }, template: "<div class=\"ch-wrapper\" role=\"region\" [attr.aria-label]=\"title\">\n\n <!-- Header -->\n <div class=\"ch-header\">\n <span class=\"ch-header-icon\" aria-hidden=\"true\">\n <mat-icon>history</mat-icon>\n </span>\n <div>\n <h2 class=\"ch-title\">{{ title }}</h2>\n <p class=\"ch-subtitle\">{{ items.length }} events recorded</p>\n </div>\n </div>\n\n <!-- Empty state -->\n <div class=\"ch-empty\" *ngIf=\"!items.length\">\n <mat-icon class=\"ch-empty-icon\" aria-hidden=\"true\">history</mat-icon>\n <p>No history events recorded yet.</p>\n </div>\n\n <!-- Timeline -->\n <ol class=\"ch-timeline\" *ngIf=\"items.length\" aria-label=\"Change history events\">\n <li\n class=\"ch-event\"\n *ngFor=\"let item of items; last as isLast; trackBy: trackById\"\n [class.ch-event--last]=\"isLast\"\n >\n <!-- Track: dot + vertical line -->\n <div class=\"ch-track\">\n <span class=\"ch-dot\" aria-hidden=\"true\"></span>\n </div>\n\n <!-- Card -->\n <div class=\"ch-card\">\n\n <!-- Event icon -->\n <span class=\"ch-event-icon\" aria-hidden=\"true\">\n <mat-icon>{{ getEventIcon(item.eventType) }}</mat-icon>\n </span>\n\n <!-- Body -->\n <div class=\"ch-event-body\">\n <span class=\"ch-event-title\">{{ item.title }}</span>\n\n <div class=\"ch-event-meta\">\n <mat-icon class=\"ch-meta-icon\" aria-hidden=\"true\">person</mat-icon>\n <span class=\"ch-meta-actor\">{{ item.actor }}</span>\n <mat-icon class=\"ch-meta-icon\" aria-hidden=\"true\">schedule</mat-icon>\n <span class=\"ch-meta-timestamp\">{{ item.timestamp }}</span>\n </div>\n\n <div class=\"ch-badges\" *ngIf=\"item.badges?.length\">\n <span\n *ngFor=\"let badge of item.badges\"\n class=\"ch-badge\"\n [ngClass]=\"'ch-badge--' + badge.variant\"\n >{{ badge.label }}</span>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"ch-actions\">\n <cqa-button\n variant=\"text\"\n btnSize=\"sm\"\n icon=\"visibility\"\n [text]=\"'View Details'\"\n [attr.aria-label]=\"'View details for ' + item.title\"\n (clicked)=\"onViewDetails(item.id)\"\n ></cqa-button>\n\n <cqa-button\n *ngIf=\"item.canRevert\"\n variant=\"text\"\n btnSize=\"sm\"\n icon=\"history\"\n [text]=\"'Revert'\"\n [attr.aria-label]=\"'Revert ' + item.title\"\n (clicked)=\"onRevert(item.id)\"\n ></cqa-button>\n </div>\n\n </div>\n </li>\n </ol>\n\n</div>\n" }]
70
+ args: [{ selector: 'cqa-change-history', styles: [CHANGE_HISTORY_STYLES], host: { class: 'cqa-ui-root' }, template: "<div class=\"ch-wrapper\" role=\"region\" [attr.aria-label]=\"title\">\n\n <!-- Header -->\n <div class=\"ch-header\">\n <span class=\"ch-header-icon\" aria-hidden=\"true\">\n <mat-icon>history</mat-icon>\n </span>\n <div>\n <h2 class=\"ch-title\">{{ title }}</h2>\n <p class=\"ch-subtitle\">{{ items.length }} events recorded</p>\n </div>\n </div>\n\n <!-- Empty state -->\n <div class=\"ch-empty\" *ngIf=\"!items.length\">\n <mat-icon class=\"ch-empty-icon\" aria-hidden=\"true\">history</mat-icon>\n <p>No history events recorded yet.</p>\n </div>\n\n <!-- Timeline -->\n <ol class=\"ch-timeline\" *ngIf=\"items.length\" aria-label=\"Change history events\">\n <li\n class=\"ch-event\"\n *ngFor=\"let item of items; last as isLast; trackBy: trackById\"\n [class.ch-event--last]=\"isLast\"\n >\n <!-- Track: dot + vertical line -->\n <div class=\"ch-track\">\n <span class=\"ch-dot\" aria-hidden=\"true\"></span>\n </div>\n\n <!-- Card -->\n <div class=\"ch-card\">\n\n <!-- Event icon -->\n <span class=\"ch-event-icon\" aria-hidden=\"true\">\n <mat-icon>{{ getEventIcon(item.eventType) }}</mat-icon>\n </span>\n\n <!-- Body -->\n <div class=\"ch-event-body\">\n <span class=\"ch-event-title\">{{ item.title }}</span>\n\n <div class=\"ch-event-meta\">\n <mat-icon class=\"ch-meta-icon\" aria-hidden=\"true\">person</mat-icon>\n <span class=\"ch-meta-actor\">{{ item.actor }}</span>\n <mat-icon class=\"ch-meta-icon\" aria-hidden=\"true\">schedule</mat-icon>\n <span class=\"ch-meta-timestamp\">{{ item.timestamp }}</span>\n </div>\n\n <div class=\"ch-badges\" *ngIf=\"item.badges?.length\">\n <span\n *ngFor=\"let badge of item.badges\"\n class=\"ch-badge\"\n [ngClass]=\"'ch-badge--' + badge.variant\"\n >{{ badge.label }}</span>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"ch-actions\">\n <cqa-button\n variant=\"text\"\n btnSize=\"sm\"\n icon=\"visibility\"\n [text]=\"'View Details'\"\n [attr.aria-label]=\"'View details for ' + item.title\"\n (clicked)=\"onViewDetails(item.id)\"\n ></cqa-button>\n\n <cqa-button\n *ngIf=\"item.canRevert\"\n variant=\"text\"\n btnSize=\"sm\"\n icon=\"history\"\n [text]=\"'Revert'\"\n [attr.aria-label]=\"'Revert ' + item.title\"\n (clicked)=\"onRevert(item.id)\"\n ></cqa-button>\n </div>\n\n </div>\n </li>\n </ol>\n\n</div>\n" }]
70
71
  }], propDecorators: { items: [{
71
72
  type: Input
72
73
  }], title: [{
@@ -76,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
76
77
  }], revert: [{
77
78
  type: Output
78
79
  }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLWhpc3RvcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jaGFuZ2UtaGlzdG9yeS9jaGFuZ2UtaGlzdG9yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NoYW5nZS1oaXN0b3J5L2NoYW5nZS1oaXN0b3J5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBR3ZFLDJEQUEyRDtBQUMzRCxNQUFNLGNBQWMsR0FBMkI7SUFDN0MsY0FBYyxFQUFXLFFBQVE7SUFDakMscUJBQXFCLEVBQUksYUFBYTtJQUN0QyxvQkFBb0IsRUFBSyxNQUFNO0lBQy9CLHVCQUF1QixFQUFFLFlBQVk7Q0FDdEMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQztBQXVDbkMsTUFBTSxPQUFPLHNCQUFzQjtJQXJDbkM7UUFzQ1csVUFBSyxHQUF3QixFQUFFLENBQUM7UUFDaEMsVUFBSyxHQUFXLGdCQUFnQixDQUFDO1FBRWhDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDbEQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO0tBaUJ4RDtJQWZDLFlBQVksQ0FBQyxTQUFpQjtRQUM1QixPQUFPLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxZQUFZLENBQUM7SUFDbkQsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFtQjtRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQW1CO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYyxFQUFFLElBQXVCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNqQixDQUFDOzttSEFyQlUsc0JBQXNCO3VHQUF0QixzQkFBc0IsME1DbERuQyxrdUZBc0ZBOzJGRHBDYSxzQkFBc0I7a0JBckNsQyxTQUFTOytCQUNFLG9CQUFvQixVQUV0QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JSLENBQUMsUUFDSSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7OEJBR3JCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhbmdlSGlzdG9yeUl0ZW0gfSBmcm9tICcuL2NoYW5nZS1oaXN0b3J5LnR5cGVzJztcblxuLyoqIE1hcHMga25vd24gZXZlbnRUeXBlIHN0cmluZ3MgdG8gTWF0ZXJpYWwgaWNvbiBuYW1lcy4gKi9cbmNvbnN0IEVWRU5UX0lDT05fTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBpbml0aWFsX3VwbG9hZDogICAgICAgICAgJ3VwbG9hZCcsXG4gIGFpX2FuYWx5c2lzX2NvbXBsZXRlZDogICAnZGVzY3JpcHRpb24nLFxuICB0ZXN0X2Nhc2VzX2dlbmVyYXRlZDogICAgJ2VkaXQnLFxuICBxdWVzdGlvbm5haXJlX2dlbmVyYXRlZDogJ2Fzc2lnbm1lbnQnLFxufTtcblxuY29uc3QgREVGQVVMVF9JQ09OID0gJ2Rlc2NyaXB0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWNoYW5nZS1oaXN0b3J5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYW5nZS1oaXN0b3J5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbYFxuICAgIDpob3N0IHsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlOyB9XG4gICAgLmNoLXdyYXBwZXIgeyBiYWNrZ3JvdW5kOiAjZmZmZmZmOyBib3JkZXI6IDFweCBzb2xpZCAjZThlYWYwOyBib3JkZXItcmFkaXVzOiA4cHg7IHBhZGRpbmc6IDI0cHg7IGJveC1zaGFkb3c6IDAgMXB4IDRweCByZ2JhKDAsMCwwLC4wNik7IHdpZHRoOiAxMDAlOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4gICAgLmNoLWhlYWRlciB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDEwcHg7IG1hcmdpbi1ib3R0b206IDI0cHg7IH1cbiAgICAuY2gtaGVhZGVyLWljb24geyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgY29sb3I6ICM2YjcyODA7IGZsZXgtc2hyaW5rOiAwOyB9XG4gICAgLmNoLWhlYWRlci1pY29uIG1hdC1pY29uIHsgZm9udC1zaXplOiAyMHB4OyB3aWR0aDogMjBweDsgaGVpZ2h0OiAyMHB4OyB9XG4gICAgLmNoLXRpdGxlIHsgZm9udC1zaXplOiAxNXB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzFhMWQyMzsgbWFyZ2luOiAwIDAgMnB4IDA7IGxpbmUtaGVpZ2h0OiAxLjQ7IH1cbiAgICAuY2gtc3VidGl0bGUgeyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGNvbG9yOiAjNmI3MjgwOyBtYXJnaW46IDA7IH1cbiAgICAuY2gtZW1wdHkgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgcGFkZGluZzogNDhweCAyNHB4OyBnYXA6IDEycHg7IH1cbiAgICAuY2gtZW1wdHkgcCB7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6ICM5Y2EzYWY7IG1hcmdpbjogMDsgfVxuICAgIC5jaC1lbXB0eS1pY29uIHsgZm9udC1zaXplOiAzMnB4OyB3aWR0aDogMzJweDsgaGVpZ2h0OiAzMnB4OyBjb2xvcjogI2QxZDVkYjsgfVxuICAgIC5jaC10aW1lbGluZSB7IGxpc3Qtc3R5bGU6IG5vbmU7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfVxuICAgIC5jaC1ldmVudCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XG4gICAgLmNoLXRyYWNrIHsgd2lkdGg6IDI0cHg7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGZsZXgtc2hyaW5rOiAwOyB9XG4gICAgLmNoLXRyYWNrOjphZnRlciB7IGNvbnRlbnQ6ICcnOyB3aWR0aDogMnB4OyBmbGV4OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlN2ViOyBtYXJnaW4tdG9wOiA0cHg7IH1cbiAgICAuY2gtZXZlbnQtLWxhc3QgLmNoLXRyYWNrOjphZnRlciB7IGRpc3BsYXk6IG5vbmU7IH1cbiAgICAuY2gtZG90IHsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7IGJvcmRlci1yYWRpdXM6IDUwJTsgYmFja2dyb3VuZDogI2ZmZmZmZjsgYm9yZGVyOiAycHggc29saWQgI2QxZDVkYjsgbWFyZ2luLXRvcDogNHB4OyB6LWluZGV4OiAxOyBmbGV4LXNocmluazogMDsgfVxuICAgIC5jaC1jYXJkIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGdhcDogMTJweDsgcGFkZGluZzogMCAwIDI4cHggMTJweDsgd2lkdGg6IDEwMCU7IH1cbiAgICAuY2gtZXZlbnQtaWNvbiB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgd2lkdGg6IDMycHg7IGhlaWdodDogMzJweDsgYm9yZGVyLXJhZGl1czogNnB4OyBiYWNrZ3JvdW5kOiAjZjNmNGY2OyBmbGV4LXNocmluazogMDsgfVxuICAgIC5jaC1ldmVudC1pY29uIG1hdC1pY29uIHsgZm9udC1zaXplOiAxNnB4OyB3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyBjb2xvcjogIzZiNzI4MDsgfVxuICAgIC5jaC1ldmVudC1ib2R5IHsgZmxleDogMTsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA0cHg7IG1pbi13aWR0aDogMDsgfVxuICAgIC5jaC1ldmVudC10aXRsZSB7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6ICMxYTFkMjM7IH1cbiAgICAuY2gtZXZlbnQtbWV0YSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjNmI3MjgwOyB9XG4gICAgLmNoLW1ldGEtaWNvbiB7IGZvbnQtc2l6ZTogMTJweDsgd2lkdGg6IDEycHg7IGhlaWdodDogMTJweDsgY29sb3I6ICM5Y2EzYWY7IH1cbiAgICAuY2gtbWV0YS1hY3RvciwgLmNoLW1ldGEtdGltZXN0YW1wIHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzZiNzI4MDsgfVxuICAgIC5jaC1iYWRnZXMgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDZweDsgbWFyZ2luLXRvcDogNnB4OyBmbGV4LXdyYXA6IHdyYXA7IH1cbiAgICAuY2gtYmFkZ2UgeyBmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiA1MDA7IHBhZGRpbmc6IDJweCA4cHg7IGJvcmRlci1yYWRpdXM6IDRweDsgfVxuICAgIC5jaC1iYWRnZS0tYWRkZWQgeyBiYWNrZ3JvdW5kOiAjZGNmY2U3OyBjb2xvcjogIzE1ODAzZDsgfVxuICAgIC5jaC1iYWRnZS0tbW9kaWZpZWQgeyBiYWNrZ3JvdW5kOiAjZmVmOWMzOyBjb2xvcjogIzg1NGQwZTsgfVxuICAgIC5jaC1iYWRnZS0tcmVtb3ZlZCB7IGJhY2tncm91bmQ6ICNmZWUyZTI7IGNvbG9yOiAjYjkxYzFjOyB9XG4gICAgLmNoLWFjdGlvbnMgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgbWFyZ2luLWxlZnQ6IGF1dG87IGZsZXgtc2hyaW5rOiAwOyB9XG4gIGBdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgQ2hhbmdlSGlzdG9yeUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGl0ZW1zOiBDaGFuZ2VIaXN0b3J5SXRlbVtdID0gW107XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnQ2hhbmdlIEhpc3RvcnknO1xuXG4gIEBPdXRwdXQoKSB2aWV3RGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVtYmVyPigpO1xuICBAT3V0cHV0KCkgcmV2ZXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudW1iZXI+KCk7XG5cbiAgZ2V0RXZlbnRJY29uKGV2ZW50VHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRVZFTlRfSUNPTl9NQVBbZXZlbnRUeXBlXSA/PyBERUZBVUxUX0lDT047XG4gIH1cblxuICBvblZpZXdEZXRhaWxzKGlkOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdEZXRhaWxzLmVtaXQoaWQpO1xuICB9XG5cbiAgb25SZXZlcnQoaWQ6IHN0cmluZyB8IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucmV2ZXJ0LmVtaXQoaWQpO1xuICB9XG5cbiAgdHJhY2tCeUlkKF9pbmRleDogbnVtYmVyLCBpdGVtOiBDaGFuZ2VIaXN0b3J5SXRlbSk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjaC13cmFwcGVyXCIgcm9sZT1cInJlZ2lvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwidGl0bGVcIj5cblxuICA8IS0tIEhlYWRlciAtLT5cbiAgPGRpdiBjbGFzcz1cImNoLWhlYWRlclwiPlxuICAgIDxzcGFuIGNsYXNzPVwiY2gtaGVhZGVyLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgIDxtYXQtaWNvbj5oaXN0b3J5PC9tYXQtaWNvbj5cbiAgICA8L3NwYW4+XG4gICAgPGRpdj5cbiAgICAgIDxoMiBjbGFzcz1cImNoLXRpdGxlXCI+e3sgdGl0bGUgfX08L2gyPlxuICAgICAgPHAgY2xhc3M9XCJjaC1zdWJ0aXRsZVwiPnt7IGl0ZW1zLmxlbmd0aCB9fSBldmVudHMgcmVjb3JkZWQ8L3A+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRW1wdHkgc3RhdGUgLS0+XG4gIDxkaXYgY2xhc3M9XCJjaC1lbXB0eVwiICpuZ0lmPVwiIWl0ZW1zLmxlbmd0aFwiPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImNoLWVtcHR5LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5oaXN0b3J5PC9tYXQtaWNvbj5cbiAgICA8cD5ObyBoaXN0b3J5IGV2ZW50cyByZWNvcmRlZCB5ZXQuPC9wPlxuICA8L2Rpdj5cblxuICA8IS0tIFRpbWVsaW5lIC0tPlxuICA8b2wgY2xhc3M9XCJjaC10aW1lbGluZVwiICpuZ0lmPVwiaXRlbXMubGVuZ3RoXCIgYXJpYS1sYWJlbD1cIkNoYW5nZSBoaXN0b3J5IGV2ZW50c1wiPlxuICAgIDxsaVxuICAgICAgY2xhc3M9XCJjaC1ldmVudFwiXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGFzdCBhcyBpc0xhc3Q7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXG4gICAgICBbY2xhc3MuY2gtZXZlbnQtLWxhc3RdPVwiaXNMYXN0XCJcbiAgICA+XG4gICAgICA8IS0tIFRyYWNrOiBkb3QgKyB2ZXJ0aWNhbCBsaW5lIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNoLXRyYWNrXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2gtZG90XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQ2FyZCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjaC1jYXJkXCI+XG5cbiAgICAgICAgPCEtLSBFdmVudCBpY29uIC0tPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNoLWV2ZW50LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8bWF0LWljb24+e3sgZ2V0RXZlbnRJY29uKGl0ZW0uZXZlbnRUeXBlKSB9fTwvbWF0LWljb24+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8IS0tIEJvZHkgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaC1ldmVudC1ib2R5XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaC1ldmVudC10aXRsZVwiPnt7IGl0ZW0udGl0bGUgfX08L3NwYW4+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2gtZXZlbnQtbWV0YVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2gtbWV0YS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+cGVyc29uPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2gtbWV0YS1hY3RvclwiPnt7IGl0ZW0uYWN0b3IgfX08L3NwYW4+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjaC1tZXRhLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5zY2hlZHVsZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoLW1ldGEtdGltZXN0YW1wXCI+e3sgaXRlbS50aW1lc3RhbXAgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2gtYmFkZ2VzXCIgKm5nSWY9XCJpdGVtLmJhZGdlcz8ubGVuZ3RoXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYmFkZ2Ugb2YgaXRlbS5iYWRnZXNcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNoLWJhZGdlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2NoLWJhZGdlLS0nICsgYmFkZ2UudmFyaWFudFwiXG4gICAgICAgICAgICA+e3sgYmFkZ2UubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQWN0aW9ucyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoLWFjdGlvbnNcIj5cbiAgICAgICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgYnRuU2l6ZT1cInNtXCJcbiAgICAgICAgICAgIGljb249XCJ2aXNpYmlsaXR5XCJcbiAgICAgICAgICAgIFt0ZXh0XT1cIidWaWV3IERldGFpbHMnXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1ZpZXcgZGV0YWlscyBmb3IgJyArIGl0ZW0udGl0bGVcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwib25WaWV3RGV0YWlscyhpdGVtLmlkKVwiXG4gICAgICAgICAgPjwvY3FhLWJ1dHRvbj5cblxuICAgICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIml0ZW0uY2FuUmV2ZXJ0XCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGJ0blNpemU9XCJzbVwiXG4gICAgICAgICAgICBpY29uPVwiaGlzdG9yeVwiXG4gICAgICAgICAgICBbdGV4dF09XCInUmV2ZXJ0J1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZXZlcnQgJyArIGl0ZW0udGl0bGVcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwib25SZXZlcnQoaXRlbS5pZClcIlxuICAgICAgICAgID48L2NxYS1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICA8L29sPlxuXG48L2Rpdj5cbiJdfQ==
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLWhpc3RvcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jaGFuZ2UtaGlzdG9yeS9jaGFuZ2UtaGlzdG9yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NoYW5nZS1oaXN0b3J5L2NoYW5nZS1oaXN0b3J5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBR3ZFLDJEQUEyRDtBQUMzRCxNQUFNLGNBQWMsR0FBMkI7SUFDN0MsY0FBYyxFQUFXLFFBQVE7SUFDakMscUJBQXFCLEVBQUksYUFBYTtJQUN0QyxvQkFBb0IsRUFBSyxNQUFNO0lBQy9CLHVCQUF1QixFQUFFLFlBQVk7Q0FDdEMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQztBQUNuQyxNQUFNLHFCQUFxQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK0I3QixDQUFDO0FBUUYsTUFBTSxPQUFPLHNCQUFzQjtJQU5uQztRQU9XLFVBQUssR0FBd0IsRUFBRSxDQUFDO1FBQ2hDLFVBQUssR0FBVyxnQkFBZ0IsQ0FBQztRQUVoQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBQ2xELFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztLQWlCeEQ7SUFmQyxZQUFZLENBQUMsU0FBaUI7UUFDNUIsT0FBTyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksWUFBWSxDQUFDO0lBQ25ELENBQUM7SUFFRCxhQUFhLENBQUMsRUFBbUI7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUFtQjtRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWMsRUFBRSxJQUF1QjtRQUMvQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7bUhBckJVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLDBNQ25EbkMsa3VGQXNGQTsyRkRuQ2Esc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG9CQUFvQixVQUV0QixDQUFDLHFCQUFxQixDQUFDLFFBQ3pCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTs4QkFHckIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFuZ2VIaXN0b3J5SXRlbSB9IGZyb20gJy4vY2hhbmdlLWhpc3RvcnkudHlwZXMnO1xuXG4vKiogTWFwcyBrbm93biBldmVudFR5cGUgc3RyaW5ncyB0byBNYXRlcmlhbCBpY29uIG5hbWVzLiAqL1xuY29uc3QgRVZFTlRfSUNPTl9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGluaXRpYWxfdXBsb2FkOiAgICAgICAgICAndXBsb2FkJyxcbiAgYWlfYW5hbHlzaXNfY29tcGxldGVkOiAgICdkZXNjcmlwdGlvbicsXG4gIHRlc3RfY2FzZXNfZ2VuZXJhdGVkOiAgICAnZWRpdCcsXG4gIHF1ZXN0aW9ubmFpcmVfZ2VuZXJhdGVkOiAnYXNzaWdubWVudCcsXG59O1xuXG5jb25zdCBERUZBVUxUX0lDT04gPSAnZGVzY3JpcHRpb24nO1xuY29uc3QgQ0hBTkdFX0hJU1RPUllfU1RZTEVTID0gYFxuICA6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwJTsgfVxuICAuY2gtd3JhcHBlciB7IGJhY2tncm91bmQ6ICNmZmZmZmY7IGJvcmRlcjogMXB4IHNvbGlkICNlOGVhZjA7IGJvcmRlci1yYWRpdXM6IDhweDsgcGFkZGluZzogMjRweDsgYm94LXNoYWRvdzogMCAxcHggNHB4IHJnYmEoMCwwLDAsLjA2KTsgd2lkdGg6IDEwMCU7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbiAgLmNoLWhlYWRlciB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDEwcHg7IG1hcmdpbi1ib3R0b206IDI0cHg7IH1cbiAgLmNoLWhlYWRlci1pY29uIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGNvbG9yOiAjNmI3MjgwOyBmbGV4LXNocmluazogMDsgfVxuICAuY2gtaGVhZGVyLWljb24gbWF0LWljb24geyBmb250LXNpemU6IDIwcHg7IHdpZHRoOiAyMHB4OyBoZWlnaHQ6IDIwcHg7IH1cbiAgLmNoLXRpdGxlIHsgZm9udC1zaXplOiAxNXB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzFhMWQyMzsgbWFyZ2luOiAwIDAgMnB4IDA7IGxpbmUtaGVpZ2h0OiAxLjQ7IH1cbiAgLmNoLXN1YnRpdGxlIHsgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogIzZiNzI4MDsgbWFyZ2luOiAwOyB9XG4gIC5jaC1lbXB0eSB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBwYWRkaW5nOiA0OHB4IDI0cHg7IGdhcDogMTJweDsgfVxuICAuY2gtZW1wdHkgcCB7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6ICM5Y2EzYWY7IG1hcmdpbjogMDsgfVxuICAuY2gtZW1wdHktaWNvbiB7IGZvbnQtc2l6ZTogMzJweDsgd2lkdGg6IDMycHg7IGhlaWdodDogMzJweDsgY29sb3I6ICNkMWQ1ZGI7IH1cbiAgLmNoLXRpbWVsaW5lIHsgbGlzdC1zdHlsZTogbm9uZTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9XG4gIC5jaC1ldmVudCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XG4gIC5jaC10cmFjayB7IHdpZHRoOiAyNHB4OyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogY2VudGVyOyBmbGV4LXNocmluazogMDsgfVxuICAuY2gtdHJhY2s6OmFmdGVyIHsgY29udGVudDogJyc7IHdpZHRoOiAycHg7IGZsZXg6IDE7IGJhY2tncm91bmQtY29sb3I6ICNlNWU3ZWI7IG1hcmdpbi10b3A6IDRweDsgfVxuICAuY2gtZXZlbnQtLWxhc3QgLmNoLXRyYWNrOjphZnRlciB7IGRpc3BsYXk6IG5vbmU7IH1cbiAgLmNoLWRvdCB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4OyBib3JkZXItcmFkaXVzOiA1MCU7IGJhY2tncm91bmQ6ICNmZmZmZmY7IGJvcmRlcjogMnB4IHNvbGlkICNkMWQ1ZGI7IG1hcmdpbi10b3A6IDRweDsgei1pbmRleDogMTsgZmxleC1zaHJpbms6IDA7IH1cbiAgLmNoLWNhcmQgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiAxMnB4OyBwYWRkaW5nOiAwIDAgMjhweCAxMnB4OyB3aWR0aDogMTAwJTsgfVxuICAuY2gtZXZlbnQtaWNvbiB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgd2lkdGg6IDMycHg7IGhlaWdodDogMzJweDsgYm9yZGVyLXJhZGl1czogNnB4OyBiYWNrZ3JvdW5kOiAjZjNmNGY2OyBmbGV4LXNocmluazogMDsgfVxuICAuY2gtZXZlbnQtaWNvbiBtYXQtaWNvbiB7IGZvbnQtc2l6ZTogMTZweDsgd2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsgY29sb3I6ICM2YjcyODA7IH1cbiAgLmNoLWV2ZW50LWJvZHkgeyBmbGV4OiAxOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDRweDsgbWluLXdpZHRoOiAwOyB9XG4gIC5jaC1ldmVudC10aXRsZSB7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6ICMxYTFkMjM7IH1cbiAgLmNoLWV2ZW50LW1ldGEgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDZweDsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzZiNzI4MDsgfVxuICAuY2gtbWV0YS1pY29uIHsgZm9udC1zaXplOiAxMnB4OyB3aWR0aDogMTJweDsgaGVpZ2h0OiAxMnB4OyBjb2xvcjogIzljYTNhZjsgfVxuICAuY2gtbWV0YS1hY3RvciwgLmNoLW1ldGEtdGltZXN0YW1wIHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzZiNzI4MDsgfVxuICAuY2gtYmFkZ2VzIHsgZGlzcGxheTogZmxleDsgZ2FwOiA2cHg7IG1hcmdpbi10b3A6IDZweDsgZmxleC13cmFwOiB3cmFwOyB9XG4gIC5jaC1iYWRnZSB7IGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDUwMDsgcGFkZGluZzogMnB4IDhweDsgYm9yZGVyLXJhZGl1czogNHB4OyB9XG4gIC5jaC1iYWRnZS0tYWRkZWQgeyBiYWNrZ3JvdW5kOiAjZGNmY2U3OyBjb2xvcjogIzE1ODAzZDsgfVxuICAuY2gtYmFkZ2UtLW1vZGlmaWVkIHsgYmFja2dyb3VuZDogI2ZlZjljMzsgY29sb3I6ICM4NTRkMGU7IH1cbiAgLmNoLWJhZGdlLS1yZW1vdmVkIHsgYmFja2dyb3VuZDogI2ZlZTJlMjsgY29sb3I6ICNiOTFjMWM7IH1cbiAgLmNoLWFjdGlvbnMgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgbWFyZ2luLWxlZnQ6IGF1dG87IGZsZXgtc2hyaW5rOiAwOyB9XG5gO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtY2hhbmdlLWhpc3RvcnknLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhbmdlLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtDSEFOR0VfSElTVE9SWV9TVFlMRVNdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgQ2hhbmdlSGlzdG9yeUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGl0ZW1zOiBDaGFuZ2VIaXN0b3J5SXRlbVtdID0gW107XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnQ2hhbmdlIEhpc3RvcnknO1xuXG4gIEBPdXRwdXQoKSB2aWV3RGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVtYmVyPigpO1xuICBAT3V0cHV0KCkgcmV2ZXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudW1iZXI+KCk7XG5cbiAgZ2V0RXZlbnRJY29uKGV2ZW50VHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRVZFTlRfSUNPTl9NQVBbZXZlbnRUeXBlXSA/PyBERUZBVUxUX0lDT047XG4gIH1cblxuICBvblZpZXdEZXRhaWxzKGlkOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdEZXRhaWxzLmVtaXQoaWQpO1xuICB9XG5cbiAgb25SZXZlcnQoaWQ6IHN0cmluZyB8IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucmV2ZXJ0LmVtaXQoaWQpO1xuICB9XG5cbiAgdHJhY2tCeUlkKF9pbmRleDogbnVtYmVyLCBpdGVtOiBDaGFuZ2VIaXN0b3J5SXRlbSk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjaC13cmFwcGVyXCIgcm9sZT1cInJlZ2lvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwidGl0bGVcIj5cblxuICA8IS0tIEhlYWRlciAtLT5cbiAgPGRpdiBjbGFzcz1cImNoLWhlYWRlclwiPlxuICAgIDxzcGFuIGNsYXNzPVwiY2gtaGVhZGVyLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgIDxtYXQtaWNvbj5oaXN0b3J5PC9tYXQtaWNvbj5cbiAgICA8L3NwYW4+XG4gICAgPGRpdj5cbiAgICAgIDxoMiBjbGFzcz1cImNoLXRpdGxlXCI+e3sgdGl0bGUgfX08L2gyPlxuICAgICAgPHAgY2xhc3M9XCJjaC1zdWJ0aXRsZVwiPnt7IGl0ZW1zLmxlbmd0aCB9fSBldmVudHMgcmVjb3JkZWQ8L3A+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRW1wdHkgc3RhdGUgLS0+XG4gIDxkaXYgY2xhc3M9XCJjaC1lbXB0eVwiICpuZ0lmPVwiIWl0ZW1zLmxlbmd0aFwiPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImNoLWVtcHR5LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5oaXN0b3J5PC9tYXQtaWNvbj5cbiAgICA8cD5ObyBoaXN0b3J5IGV2ZW50cyByZWNvcmRlZCB5ZXQuPC9wPlxuICA8L2Rpdj5cblxuICA8IS0tIFRpbWVsaW5lIC0tPlxuICA8b2wgY2xhc3M9XCJjaC10aW1lbGluZVwiICpuZ0lmPVwiaXRlbXMubGVuZ3RoXCIgYXJpYS1sYWJlbD1cIkNoYW5nZSBoaXN0b3J5IGV2ZW50c1wiPlxuICAgIDxsaVxuICAgICAgY2xhc3M9XCJjaC1ldmVudFwiXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGFzdCBhcyBpc0xhc3Q7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXG4gICAgICBbY2xhc3MuY2gtZXZlbnQtLWxhc3RdPVwiaXNMYXN0XCJcbiAgICA+XG4gICAgICA8IS0tIFRyYWNrOiBkb3QgKyB2ZXJ0aWNhbCBsaW5lIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNoLXRyYWNrXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2gtZG90XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQ2FyZCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjaC1jYXJkXCI+XG5cbiAgICAgICAgPCEtLSBFdmVudCBpY29uIC0tPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNoLWV2ZW50LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8bWF0LWljb24+e3sgZ2V0RXZlbnRJY29uKGl0ZW0uZXZlbnRUeXBlKSB9fTwvbWF0LWljb24+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8IS0tIEJvZHkgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaC1ldmVudC1ib2R5XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaC1ldmVudC10aXRsZVwiPnt7IGl0ZW0udGl0bGUgfX08L3NwYW4+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2gtZXZlbnQtbWV0YVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2gtbWV0YS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+cGVyc29uPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2gtbWV0YS1hY3RvclwiPnt7IGl0ZW0uYWN0b3IgfX08L3NwYW4+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjaC1tZXRhLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5zY2hlZHVsZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoLW1ldGEtdGltZXN0YW1wXCI+e3sgaXRlbS50aW1lc3RhbXAgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2gtYmFkZ2VzXCIgKm5nSWY9XCJpdGVtLmJhZGdlcz8ubGVuZ3RoXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYmFkZ2Ugb2YgaXRlbS5iYWRnZXNcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNoLWJhZGdlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2NoLWJhZGdlLS0nICsgYmFkZ2UudmFyaWFudFwiXG4gICAgICAgICAgICA+e3sgYmFkZ2UubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQWN0aW9ucyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoLWFjdGlvbnNcIj5cbiAgICAgICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgYnRuU2l6ZT1cInNtXCJcbiAgICAgICAgICAgIGljb249XCJ2aXNpYmlsaXR5XCJcbiAgICAgICAgICAgIFt0ZXh0XT1cIidWaWV3IERldGFpbHMnXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1ZpZXcgZGV0YWlscyBmb3IgJyArIGl0ZW0udGl0bGVcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwib25WaWV3RGV0YWlscyhpdGVtLmlkKVwiXG4gICAgICAgICAgPjwvY3FhLWJ1dHRvbj5cblxuICAgICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIml0ZW0uY2FuUmV2ZXJ0XCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGJ0blNpemU9XCJzbVwiXG4gICAgICAgICAgICBpY29uPVwiaGlzdG9yeVwiXG4gICAgICAgICAgICBbdGV4dF09XCInUmV2ZXJ0J1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZXZlcnQgJyArIGl0ZW0udGl0bGVcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwib25SZXZlcnQoaXRlbS5pZClcIlxuICAgICAgICAgID48L2NxYS1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICA8L29sPlxuXG48L2Rpdj5cbiJdfQ==
@@ -4,6 +4,28 @@ import * as i1 from "../custom-input/custom-input.component";
4
4
  import * as i2 from "../button/button.component";
5
5
  import * as i3 from "@angular/common";
6
6
  import * as i4 from "@angular/forms";
7
+ const QUESTIONNAIRE_LIST_STYLES = `
8
+ :host { display: block; width: 100%; }
9
+ .ql-wrapper { background: #ffffff; border: 1px solid #e8eaf0; border-radius: 8px; padding: 24px; box-shadow: 0 1px 4px rgba(0,0,0,.06); width: 100%; box-sizing: border-box; }
10
+ .ql-header { margin-bottom: 20px; }
11
+ .ql-title { font-size: 16px; font-weight: 600; color: #1a1d23; margin: 0 0 4px 0; line-height: 1.4; }
12
+ .ql-subtitle { font-size: 13px; font-weight: 400; color: #6b7280; margin: 0; line-height: 1.5; }
13
+ .ql-body { display: flex; flex-direction: column; }
14
+ .ql-item { display: flex; flex-direction: column; gap: 6px; padding-bottom: 16px; margin-bottom: 16px; border-bottom: 1px solid #f3f4f6; }
15
+ .ql-item.ql-item--last { border-bottom: none; margin-bottom: 0; }
16
+ .ql-badge { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: #eef0ff; color: #4f46e5; font-size: 12px; font-weight: 600; flex-shrink: 0; }
17
+ .ql-label { display: block; font-size: 13px; font-weight: 500; color: #374151; }
18
+ .ql-input { width: 100%; }
19
+ .ql-empty { padding: 24px 0; font-size: 13px; color: #6b7280; text-align: center; }
20
+ .ql-footer { display: flex; align-items: center; justify-content: space-between; padding-top: 16px; margin-top: 8px; border-top: 1px solid #f3f4f6; }
21
+ .ql-footer-left { display: flex; align-items: center; }
22
+ .ql-footer-label { font-size: 13px; color: #6b7280; margin-right: 8px; }
23
+ .ql-page-size-select { width: 72px; height: 28px; border: 1px solid #e5e7eb; border-radius: 4px; padding: 0 6px; font-size: 13px; color: #374151; background: #ffffff; cursor: pointer; outline: none; }
24
+ .ql-page-size-select:focus { border-color: #6366f1; }
25
+ .ql-footer-right { display: flex; align-items: center; gap: 4px; }
26
+ .ql-range-label { font-size: 13px; color: #374151; margin-right: 8px; }
27
+ .ql-nav-btn { width: 28px; height: 28px; }
28
+ `;
7
29
  export class QuestionnaireListComponent {
8
30
  constructor() {
9
31
  this.items = [];
@@ -69,28 +91,7 @@ QuestionnaireListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0
69
91
  QuestionnaireListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: QuestionnaireListComponent, selector: "cqa-questionnaire-list", inputs: { items: "items", defaultPageSize: "defaultPageSize", pageSizeOptions: "pageSizeOptions", inputPlaceholder: "inputPlaceholder" }, outputs: { answerChange: "answerChange" }, host: { classAttribute: "cqa-ui-root" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"ql-wrapper\" role=\"region\" aria-label=\"Clarification Questionnaire\">\n\n <!-- Header -->\n <div class=\"ql-header\">\n <h2 class=\"ql-title\">Clarification Questionnaire</h2>\n <p class=\"ql-subtitle\">\n The AI has generated these questions to resolve ambiguities in the requirement.\n Answering these will regenerate specific test cases.\n </p>\n </div>\n\n <!-- Question rows -->\n <div class=\"ql-body\">\n <ng-container *ngIf=\"visibleItems.length; else emptyState\">\n <div\n class=\"ql-item\"\n *ngFor=\"let item of visibleItems; last as isLast; trackBy: trackById\"\n [class.ql-item--last]=\"isLast\"\n >\n <span class=\"ql-badge\">{{ item.index }}</span>\n <label class=\"ql-label\" [for]=\"getInputId(item.id)\">{{ item.question }}</label>\n <cqa-custom-input\n [inputId]=\"getInputId(item.id)\"\n [value]=\"item.answer\"\n [placeholder]=\"inputPlaceholder\"\n [fullWidth]=\"true\"\n (valueChange)=\"onAnswerInput(item.id, $event)\"\n class=\"ql-input\"\n ></cqa-custom-input>\n </div>\n </ng-container>\n <ng-template #emptyState>\n <div class=\"ql-empty\">No questions available.</div>\n </ng-template>\n </div>\n\n <!-- Footer: per-page selector + range + nav -->\n <div class=\"ql-footer\" aria-live=\"polite\">\n\n <div class=\"ql-footer-left\">\n <span class=\"ql-footer-label\">Questions per page</span>\n <select\n class=\"ql-page-size-select\"\n [value]=\"pageSize\"\n (change)=\"onPageSizeChange(+$any($event.target).value)\"\n >\n <option *ngFor=\"let opt of pageSizeOptions\" [value]=\"opt\">{{ opt }}</option>\n </select>\n </div>\n\n <div class=\"ql-footer-right\">\n <span class=\"ql-range-label\">\n {{ totalItems ? startIndex + 1 : 0 }}&ndash;{{ endIndex }} of {{ totalItems }}\n </span>\n <cqa-button\n variant=\"outlined\"\n btnSize=\"sm\"\n icon=\"chevron_left\"\n [disabled]=\"isPrevDisabled\"\n (clicked)=\"prevPage()\"\n aria-label=\"Previous page\"\n class=\"ql-nav-btn\"\n ></cqa-button>\n <cqa-button\n variant=\"outlined\"\n btnSize=\"sm\"\n icon=\"chevron_right\"\n [disabled]=\"isNextDisabled\"\n (clicked)=\"nextPage()\"\n aria-label=\"Next page\"\n class=\"ql-nav-btn\"\n ></cqa-button>\n </div>\n\n </div>\n\n</div>\n", styles: [":host{display:block;width:100%}.ql-wrapper{background:#ffffff;border:1px solid #e8eaf0;border-radius:8px;padding:24px;box-shadow:0 1px 4px #0000000f;width:100%;box-sizing:border-box}.ql-header{margin-bottom:20px}.ql-title{font-size:16px;font-weight:600;color:#1a1d23;margin:0 0 4px;line-height:1.4}.ql-subtitle{font-size:13px;font-weight:400;color:#6b7280;margin:0;line-height:1.5}.ql-body{display:flex;flex-direction:column}.ql-item{display:flex;flex-direction:column;gap:6px;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #f3f4f6}.ql-item.ql-item--last{border-bottom:none;margin-bottom:0}.ql-badge{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#eef0ff;color:#4f46e5;font-size:12px;font-weight:600;flex-shrink:0}.ql-label{display:block;font-size:13px;font-weight:500;color:#374151}.ql-input{width:100%}.ql-empty{padding:24px 0;font-size:13px;color:#6b7280;text-align:center}.ql-footer{display:flex;align-items:center;justify-content:space-between;padding-top:16px;margin-top:8px;border-top:1px solid #f3f4f6}.ql-footer-left{display:flex;align-items:center}.ql-footer-label{font-size:13px;color:#6b7280;margin-right:8px}.ql-page-size-select{width:72px;height:28px;border:1px solid #e5e7eb;border-radius:4px;padding:0 6px;font-size:13px;color:#374151;background:#ffffff;cursor:pointer;outline:none}.ql-page-size-select:focus{border-color:#6366f1}.ql-footer-right{display:flex;align-items:center;gap:4px}.ql-range-label{font-size:13px;color:#374151;margin-right:8px}.ql-nav-btn{width:28px;height:28px}\n"], components: [{ type: i1.CustomInputComponent, selector: "cqa-custom-input", inputs: ["inputId", "label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: i2.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
70
92
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: QuestionnaireListComponent, decorators: [{
71
93
  type: Component,
72
- args: [{ selector: 'cqa-questionnaire-list', styles: [`
73
- :host { display: block; width: 100%; }
74
- .ql-wrapper { background: #ffffff; border: 1px solid #e8eaf0; border-radius: 8px; padding: 24px; box-shadow: 0 1px 4px rgba(0,0,0,.06); width: 100%; box-sizing: border-box; }
75
- .ql-header { margin-bottom: 20px; }
76
- .ql-title { font-size: 16px; font-weight: 600; color: #1a1d23; margin: 0 0 4px 0; line-height: 1.4; }
77
- .ql-subtitle { font-size: 13px; font-weight: 400; color: #6b7280; margin: 0; line-height: 1.5; }
78
- .ql-body { display: flex; flex-direction: column; }
79
- .ql-item { display: flex; flex-direction: column; gap: 6px; padding-bottom: 16px; margin-bottom: 16px; border-bottom: 1px solid #f3f4f6; }
80
- .ql-item.ql-item--last { border-bottom: none; margin-bottom: 0; }
81
- .ql-badge { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: #eef0ff; color: #4f46e5; font-size: 12px; font-weight: 600; flex-shrink: 0; }
82
- .ql-label { display: block; font-size: 13px; font-weight: 500; color: #374151; }
83
- .ql-input { width: 100%; }
84
- .ql-empty { padding: 24px 0; font-size: 13px; color: #6b7280; text-align: center; }
85
- .ql-footer { display: flex; align-items: center; justify-content: space-between; padding-top: 16px; margin-top: 8px; border-top: 1px solid #f3f4f6; }
86
- .ql-footer-left { display: flex; align-items: center; }
87
- .ql-footer-label { font-size: 13px; color: #6b7280; margin-right: 8px; }
88
- .ql-page-size-select { width: 72px; height: 28px; border: 1px solid #e5e7eb; border-radius: 4px; padding: 0 6px; font-size: 13px; color: #374151; background: #ffffff; cursor: pointer; outline: none; }
89
- .ql-page-size-select:focus { border-color: #6366f1; }
90
- .ql-footer-right { display: flex; align-items: center; gap: 4px; }
91
- .ql-range-label { font-size: 13px; color: #374151; margin-right: 8px; }
92
- .ql-nav-btn { width: 28px; height: 28px; }
93
- `], host: { class: 'cqa-ui-root' }, template: "<div class=\"ql-wrapper\" role=\"region\" aria-label=\"Clarification Questionnaire\">\n\n <!-- Header -->\n <div class=\"ql-header\">\n <h2 class=\"ql-title\">Clarification Questionnaire</h2>\n <p class=\"ql-subtitle\">\n The AI has generated these questions to resolve ambiguities in the requirement.\n Answering these will regenerate specific test cases.\n </p>\n </div>\n\n <!-- Question rows -->\n <div class=\"ql-body\">\n <ng-container *ngIf=\"visibleItems.length; else emptyState\">\n <div\n class=\"ql-item\"\n *ngFor=\"let item of visibleItems; last as isLast; trackBy: trackById\"\n [class.ql-item--last]=\"isLast\"\n >\n <span class=\"ql-badge\">{{ item.index }}</span>\n <label class=\"ql-label\" [for]=\"getInputId(item.id)\">{{ item.question }}</label>\n <cqa-custom-input\n [inputId]=\"getInputId(item.id)\"\n [value]=\"item.answer\"\n [placeholder]=\"inputPlaceholder\"\n [fullWidth]=\"true\"\n (valueChange)=\"onAnswerInput(item.id, $event)\"\n class=\"ql-input\"\n ></cqa-custom-input>\n </div>\n </ng-container>\n <ng-template #emptyState>\n <div class=\"ql-empty\">No questions available.</div>\n </ng-template>\n </div>\n\n <!-- Footer: per-page selector + range + nav -->\n <div class=\"ql-footer\" aria-live=\"polite\">\n\n <div class=\"ql-footer-left\">\n <span class=\"ql-footer-label\">Questions per page</span>\n <select\n class=\"ql-page-size-select\"\n [value]=\"pageSize\"\n (change)=\"onPageSizeChange(+$any($event.target).value)\"\n >\n <option *ngFor=\"let opt of pageSizeOptions\" [value]=\"opt\">{{ opt }}</option>\n </select>\n </div>\n\n <div class=\"ql-footer-right\">\n <span class=\"ql-range-label\">\n {{ totalItems ? startIndex + 1 : 0 }}&ndash;{{ endIndex }} of {{ totalItems }}\n </span>\n <cqa-button\n variant=\"outlined\"\n btnSize=\"sm\"\n icon=\"chevron_left\"\n [disabled]=\"isPrevDisabled\"\n (clicked)=\"prevPage()\"\n aria-label=\"Previous page\"\n class=\"ql-nav-btn\"\n ></cqa-button>\n <cqa-button\n variant=\"outlined\"\n btnSize=\"sm\"\n icon=\"chevron_right\"\n [disabled]=\"isNextDisabled\"\n (clicked)=\"nextPage()\"\n aria-label=\"Next page\"\n class=\"ql-nav-btn\"\n ></cqa-button>\n </div>\n\n </div>\n\n</div>\n" }]
94
+ args: [{ selector: 'cqa-questionnaire-list', styles: [QUESTIONNAIRE_LIST_STYLES], host: { class: 'cqa-ui-root' }, template: "<div class=\"ql-wrapper\" role=\"region\" aria-label=\"Clarification Questionnaire\">\n\n <!-- Header -->\n <div class=\"ql-header\">\n <h2 class=\"ql-title\">Clarification Questionnaire</h2>\n <p class=\"ql-subtitle\">\n The AI has generated these questions to resolve ambiguities in the requirement.\n Answering these will regenerate specific test cases.\n </p>\n </div>\n\n <!-- Question rows -->\n <div class=\"ql-body\">\n <ng-container *ngIf=\"visibleItems.length; else emptyState\">\n <div\n class=\"ql-item\"\n *ngFor=\"let item of visibleItems; last as isLast; trackBy: trackById\"\n [class.ql-item--last]=\"isLast\"\n >\n <span class=\"ql-badge\">{{ item.index }}</span>\n <label class=\"ql-label\" [for]=\"getInputId(item.id)\">{{ item.question }}</label>\n <cqa-custom-input\n [inputId]=\"getInputId(item.id)\"\n [value]=\"item.answer\"\n [placeholder]=\"inputPlaceholder\"\n [fullWidth]=\"true\"\n (valueChange)=\"onAnswerInput(item.id, $event)\"\n class=\"ql-input\"\n ></cqa-custom-input>\n </div>\n </ng-container>\n <ng-template #emptyState>\n <div class=\"ql-empty\">No questions available.</div>\n </ng-template>\n </div>\n\n <!-- Footer: per-page selector + range + nav -->\n <div class=\"ql-footer\" aria-live=\"polite\">\n\n <div class=\"ql-footer-left\">\n <span class=\"ql-footer-label\">Questions per page</span>\n <select\n class=\"ql-page-size-select\"\n [value]=\"pageSize\"\n (change)=\"onPageSizeChange(+$any($event.target).value)\"\n >\n <option *ngFor=\"let opt of pageSizeOptions\" [value]=\"opt\">{{ opt }}</option>\n </select>\n </div>\n\n <div class=\"ql-footer-right\">\n <span class=\"ql-range-label\">\n {{ totalItems ? startIndex + 1 : 0 }}&ndash;{{ endIndex }} of {{ totalItems }}\n </span>\n <cqa-button\n variant=\"outlined\"\n btnSize=\"sm\"\n icon=\"chevron_left\"\n [disabled]=\"isPrevDisabled\"\n (clicked)=\"prevPage()\"\n aria-label=\"Previous page\"\n class=\"ql-nav-btn\"\n ></cqa-button>\n <cqa-button\n variant=\"outlined\"\n btnSize=\"sm\"\n icon=\"chevron_right\"\n [disabled]=\"isNextDisabled\"\n (clicked)=\"nextPage()\"\n aria-label=\"Next page\"\n class=\"ql-nav-btn\"\n ></cqa-button>\n </div>\n\n </div>\n\n</div>\n" }]
94
95
  }], propDecorators: { items: [{
95
96
  type: Input
96
97
  }], defaultPageSize: [{
@@ -102,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
102
103
  }], answerChange: [{
103
104
  type: Output
104
105
  }] } });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvcXVlc3Rpb25uYWlyZS1saXN0L3F1ZXN0aW9ubmFpcmUtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3F1ZXN0aW9ubmFpcmUtbGlzdC9xdWVzdGlvbm5haXJlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7Ozs7OztBQThCakcsTUFBTSxPQUFPLDBCQUEwQjtJQTNCdkM7UUE0QlcsVUFBSyxHQUF3QixFQUFFLENBQUM7UUFDaEMsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFDNUIsb0JBQWUsR0FBYSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLHFCQUFnQixHQUFXLDBCQUEwQixDQUFDO1FBRXJELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQTBDLENBQUM7UUFFcEYsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsYUFBUSxHQUFHLENBQUMsQ0FBQztLQWlFZDtJQS9EQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLEVBQUU7WUFDekUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBWTtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFtQixFQUFFLEtBQWE7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEVBQW1CO1FBQzVCLE9BQU8sa0JBQWtCLEVBQUUsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYyxFQUFFLElBQXVCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNqQixDQUFDOzt1SEF6RVUsMEJBQTBCOzJHQUExQiwwQkFBMEIsaVRDOUJ2Qyx3K0VBNkVBOzJGRC9DYSwwQkFBMEI7a0JBM0J0QyxTQUFTOytCQUNFLHdCQUF3QixVQUUxQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQlIsQ0FBQyxRQUNJLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTs4QkFHckIsS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVJdGVtIH0gZnJvbSAnLi9xdWVzdGlvbm5haXJlLWxpc3QudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtcXVlc3Rpb25uYWlyZS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXN0aW9ubmFpcmUtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW2BcbiAgICA6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwJTsgfVxuICAgIC5xbC13cmFwcGVyIHsgYmFja2dyb3VuZDogI2ZmZmZmZjsgYm9yZGVyOiAxcHggc29saWQgI2U4ZWFmMDsgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiAyNHB4OyBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLDAsMCwuMDYpOyB3aWR0aDogMTAwJTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuICAgIC5xbC1oZWFkZXIgeyBtYXJnaW4tYm90dG9tOiAyMHB4OyB9XG4gICAgLnFsLXRpdGxlIHsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzFhMWQyMzsgbWFyZ2luOiAwIDAgNHB4IDA7IGxpbmUtaGVpZ2h0OiAxLjQ7IH1cbiAgICAucWwtc3VidGl0bGUgeyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGNvbG9yOiAjNmI3MjgwOyBtYXJnaW46IDA7IGxpbmUtaGVpZ2h0OiAxLjU7IH1cbiAgICAucWwtYm9keSB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cbiAgICAucWwtaXRlbSB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogNnB4OyBwYWRkaW5nLWJvdHRvbTogMTZweDsgbWFyZ2luLWJvdHRvbTogMTZweDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmM2Y0ZjY7IH1cbiAgICAucWwtaXRlbS5xbC1pdGVtLS1sYXN0IHsgYm9yZGVyLWJvdHRvbTogbm9uZTsgbWFyZ2luLWJvdHRvbTogMDsgfVxuICAgIC5xbC1iYWRnZSB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgd2lkdGg6IDIycHg7IGhlaWdodDogMjJweDsgYm9yZGVyLXJhZGl1czogNTAlOyBiYWNrZ3JvdW5kOiAjZWVmMGZmOyBjb2xvcjogIzRmNDZlNTsgZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogNjAwOyBmbGV4LXNocmluazogMDsgfVxuICAgIC5xbC1sYWJlbCB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjMzc0MTUxOyB9XG4gICAgLnFsLWlucHV0IHsgd2lkdGg6IDEwMCU7IH1cbiAgICAucWwtZW1wdHkgeyBwYWRkaW5nOiAyNHB4IDA7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6ICM2YjcyODA7IHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAgIC5xbC1mb290ZXIgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHBhZGRpbmctdG9wOiAxNnB4OyBtYXJnaW4tdG9wOiA4cHg7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjZjNmNGY2OyB9XG4gICAgLnFsLWZvb3Rlci1sZWZ0IHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICAgIC5xbC1mb290ZXItbGFiZWwgeyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjNmI3MjgwOyBtYXJnaW4tcmlnaHQ6IDhweDsgfVxuICAgIC5xbC1wYWdlLXNpemUtc2VsZWN0IHsgd2lkdGg6IDcycHg7IGhlaWdodDogMjhweDsgYm9yZGVyOiAxcHggc29saWQgI2U1ZTdlYjsgYm9yZGVyLXJhZGl1czogNHB4OyBwYWRkaW5nOiAwIDZweDsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogIzM3NDE1MTsgYmFja2dyb3VuZDogI2ZmZmZmZjsgY3Vyc29yOiBwb2ludGVyOyBvdXRsaW5lOiBub25lOyB9XG4gICAgLnFsLXBhZ2Utc2l6ZS1zZWxlY3Q6Zm9jdXMgeyBib3JkZXItY29sb3I6ICM2MzY2ZjE7IH1cbiAgICAucWwtZm9vdGVyLXJpZ2h0IHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA0cHg7IH1cbiAgICAucWwtcmFuZ2UtbGFiZWwgeyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjMzc0MTUxOyBtYXJnaW4tcmlnaHQ6IDhweDsgfVxuICAgIC5xbC1uYXYtYnRuIHsgd2lkdGg6IDI4cHg7IGhlaWdodDogMjhweDsgfVxuICBgXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9XG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9ubmFpcmVMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgaXRlbXM6IFF1ZXN0aW9ubmFpcmVJdGVtW10gPSBbXTtcbiAgQElucHV0KCkgZGVmYXVsdFBhZ2VTaXplOiBudW1iZXIgPSA2O1xuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzYsIDEwLCAyMCwgNTBdO1xuICBASW5wdXQoKSBpbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnVHlwZSB5b3VyIGFuc3dlciBoZXJlLi4uJztcblxuICBAT3V0cHV0KCkgYW5zd2VyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlkOiBzdHJpbmcgfCBudW1iZXI7IHZhbHVlOiBzdHJpbmcgfT4oKTtcblxuICBjdXJyZW50UGFnZSA9IDE7XG4gIHBhZ2VTaXplID0gNjtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2RlZmF1bHRQYWdlU2l6ZSddICYmIGNoYW5nZXNbJ2RlZmF1bHRQYWdlU2l6ZSddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMuZGVmYXVsdFBhZ2VTaXplO1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRvdGFsSXRlbXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGg7XG4gIH1cblxuICBnZXQgdG90YWxQYWdlcygpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1heCgxLCBNYXRoLmNlaWwodGhpcy50b3RhbEl0ZW1zIC8gdGhpcy5wYWdlU2l6ZSkpO1xuICB9XG5cbiAgZ2V0IHN0YXJ0SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucGFnZVNpemU7XG4gIH1cblxuICBnZXQgZW5kSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4odGhpcy5zdGFydEluZGV4ICsgdGhpcy5wYWdlU2l6ZSwgdGhpcy50b3RhbEl0ZW1zKTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlSXRlbXMoKTogUXVlc3Rpb25uYWlyZUl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuc2xpY2UodGhpcy5zdGFydEluZGV4LCB0aGlzLmVuZEluZGV4KTtcbiAgfVxuXG4gIGdldCBpc1ByZXZEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA9PT0gMTtcbiAgfVxuXG4gIGdldCBpc05leHREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA9PT0gdGhpcy50b3RhbFBhZ2VzO1xuICB9XG5cbiAgb25QYWdlU2l6ZUNoYW5nZShzaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VTaXplID0gc2l6ZTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgfVxuXG4gIHByZXZQYWdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1ByZXZEaXNhYmxlZCkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZS0tO1xuICAgIH1cbiAgfVxuXG4gIG5leHRQYWdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc05leHREaXNhYmxlZCkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSsrO1xuICAgIH1cbiAgfVxuXG4gIG9uQW5zd2VySW5wdXQoaWQ6IHN0cmluZyB8IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYW5zd2VyQ2hhbmdlLmVtaXQoeyBpZCwgdmFsdWUgfSk7XG4gIH1cblxuICBnZXRJbnB1dElkKGlkOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgcXVlc3Rpb24taW5wdXQtJHtpZH1gO1xuICB9XG5cbiAgdHJhY2tCeUlkKF9pbmRleDogbnVtYmVyLCBpdGVtOiBRdWVzdGlvbm5haXJlSXRlbSk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJxbC13cmFwcGVyXCIgcm9sZT1cInJlZ2lvblwiIGFyaWEtbGFiZWw9XCJDbGFyaWZpY2F0aW9uIFF1ZXN0aW9ubmFpcmVcIj5cblxuICA8IS0tIEhlYWRlciAtLT5cbiAgPGRpdiBjbGFzcz1cInFsLWhlYWRlclwiPlxuICAgIDxoMiBjbGFzcz1cInFsLXRpdGxlXCI+Q2xhcmlmaWNhdGlvbiBRdWVzdGlvbm5haXJlPC9oMj5cbiAgICA8cCBjbGFzcz1cInFsLXN1YnRpdGxlXCI+XG4gICAgICBUaGUgQUkgaGFzIGdlbmVyYXRlZCB0aGVzZSBxdWVzdGlvbnMgdG8gcmVzb2x2ZSBhbWJpZ3VpdGllcyBpbiB0aGUgcmVxdWlyZW1lbnQuXG4gICAgICBBbnN3ZXJpbmcgdGhlc2Ugd2lsbCByZWdlbmVyYXRlIHNwZWNpZmljIHRlc3QgY2FzZXMuXG4gICAgPC9wPlxuICA8L2Rpdj5cblxuICA8IS0tIFF1ZXN0aW9uIHJvd3MgLS0+XG4gIDxkaXYgY2xhc3M9XCJxbC1ib2R5XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpc2libGVJdGVtcy5sZW5ndGg7IGVsc2UgZW1wdHlTdGF0ZVwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInFsLWl0ZW1cIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aXNpYmxlSXRlbXM7IGxhc3QgYXMgaXNMYXN0OyB0cmFja0J5OiB0cmFja0J5SWRcIlxuICAgICAgICBbY2xhc3MucWwtaXRlbS0tbGFzdF09XCJpc0xhc3RcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInFsLWJhZGdlXCI+e3sgaXRlbS5pbmRleCB9fTwvc3Bhbj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwicWwtbGFiZWxcIiBbZm9yXT1cImdldElucHV0SWQoaXRlbS5pZClcIj57eyBpdGVtLnF1ZXN0aW9uIH19PC9sYWJlbD5cbiAgICAgICAgPGNxYS1jdXN0b20taW5wdXRcbiAgICAgICAgICBbaW5wdXRJZF09XCJnZXRJbnB1dElkKGl0ZW0uaWQpXCJcbiAgICAgICAgICBbdmFsdWVdPVwiaXRlbS5hbnN3ZXJcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpbnB1dFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkFuc3dlcklucHV0KGl0ZW0uaWQsICRldmVudClcIlxuICAgICAgICAgIGNsYXNzPVwicWwtaW5wdXRcIlxuICAgICAgICA+PC9jcWEtY3VzdG9tLWlucHV0PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eVN0YXRlPlxuICAgICAgPGRpdiBjbGFzcz1cInFsLWVtcHR5XCI+Tm8gcXVlc3Rpb25zIGF2YWlsYWJsZS48L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8IS0tIEZvb3RlcjogcGVyLXBhZ2Ugc2VsZWN0b3IgKyByYW5nZSArIG5hdiAtLT5cbiAgPGRpdiBjbGFzcz1cInFsLWZvb3RlclwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cInFsLWZvb3Rlci1sZWZ0XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInFsLWZvb3Rlci1sYWJlbFwiPlF1ZXN0aW9ucyBwZXIgcGFnZTwvc3Bhbj5cbiAgICAgIDxzZWxlY3RcbiAgICAgICAgY2xhc3M9XCJxbC1wYWdlLXNpemUtc2VsZWN0XCJcbiAgICAgICAgW3ZhbHVlXT1cInBhZ2VTaXplXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCskYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiXG4gICAgICA+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdCBvZiBwYWdlU2l6ZU9wdGlvbnNcIiBbdmFsdWVdPVwib3B0XCI+e3sgb3B0IH19PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJxbC1mb290ZXItcmlnaHRcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicWwtcmFuZ2UtbGFiZWxcIj5cbiAgICAgICAge3sgdG90YWxJdGVtcyA/IHN0YXJ0SW5kZXggKyAxIDogMCB9fSZuZGFzaDt7eyBlbmRJbmRleCB9fSBvZiB7eyB0b3RhbEl0ZW1zIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBidG5TaXplPVwic21cIlxuICAgICAgICBpY29uPVwiY2hldnJvbl9sZWZ0XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzUHJldkRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrZWQpPVwicHJldlBhZ2UoKVwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJQcmV2aW91cyBwYWdlXCJcbiAgICAgICAgY2xhc3M9XCJxbC1uYXYtYnRuXCJcbiAgICAgID48L2NxYS1idXR0b24+XG4gICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBidG5TaXplPVwic21cIlxuICAgICAgICBpY29uPVwiY2hldnJvbl9yaWdodFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc05leHREaXNhYmxlZFwiXG4gICAgICAgIChjbGlja2VkKT1cIm5leHRQYWdlKClcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiTmV4dCBwYWdlXCJcbiAgICAgICAgY2xhc3M9XCJxbC1uYXYtYnRuXCJcbiAgICAgID48L2NxYS1idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuIl19
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvcXVlc3Rpb25uYWlyZS1saXN0L3F1ZXN0aW9ubmFpcmUtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3F1ZXN0aW9ubmFpcmUtbGlzdC9xdWVzdGlvbm5haXJlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUdqRyxNQUFNLHlCQUF5QixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FxQmpDLENBQUM7QUFRRixNQUFNLE9BQU8sMEJBQTBCO0lBTnZDO1FBT1csVUFBSyxHQUF3QixFQUFFLENBQUM7UUFDaEMsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFDNUIsb0JBQWUsR0FBYSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLHFCQUFnQixHQUFXLDBCQUEwQixDQUFDO1FBRXJELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQTBDLENBQUM7UUFFcEYsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsYUFBUSxHQUFHLENBQUMsQ0FBQztLQWlFZDtJQS9EQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLEVBQUU7WUFDekUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBWTtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFtQixFQUFFLEtBQWE7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEVBQW1CO1FBQzVCLE9BQU8sa0JBQWtCLEVBQUUsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYyxFQUFFLElBQXVCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNqQixDQUFDOzt1SEF6RVUsMEJBQTBCOzJHQUExQiwwQkFBMEIsaVRDaEN2Qyx3K0VBNkVBOzJGRDdDYSwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0Usd0JBQXdCLFVBRTFCLENBQUMseUJBQXlCLENBQUMsUUFDN0IsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFOzhCQUdyQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUXVlc3Rpb25uYWlyZUl0ZW0gfSBmcm9tICcuL3F1ZXN0aW9ubmFpcmUtbGlzdC50eXBlcyc7XG5cbmNvbnN0IFFVRVNUSU9OTkFJUkVfTElTVF9TVFlMRVMgPSBgXG4gIDpob3N0IHsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlOyB9XG4gIC5xbC13cmFwcGVyIHsgYmFja2dyb3VuZDogI2ZmZmZmZjsgYm9yZGVyOiAxcHggc29saWQgI2U4ZWFmMDsgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiAyNHB4OyBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLDAsMCwuMDYpOyB3aWR0aDogMTAwJTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuICAucWwtaGVhZGVyIHsgbWFyZ2luLWJvdHRvbTogMjBweDsgfVxuICAucWwtdGl0bGUgeyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiAjMWExZDIzOyBtYXJnaW46IDAgMCA0cHggMDsgbGluZS1oZWlnaHQ6IDEuNDsgfVxuICAucWwtc3VidGl0bGUgeyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGNvbG9yOiAjNmI3MjgwOyBtYXJnaW46IDA7IGxpbmUtaGVpZ2h0OiAxLjU7IH1cbiAgLnFsLWJvZHkgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9XG4gIC5xbC1pdGVtIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA2cHg7IHBhZGRpbmctYm90dG9tOiAxNnB4OyBtYXJnaW4tYm90dG9tOiAxNnB4OyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YzZjRmNjsgfVxuICAucWwtaXRlbS5xbC1pdGVtLS1sYXN0IHsgYm9yZGVyLWJvdHRvbTogbm9uZTsgbWFyZ2luLWJvdHRvbTogMDsgfVxuICAucWwtYmFkZ2UgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IHdpZHRoOiAyMnB4OyBoZWlnaHQ6IDIycHg7IGJvcmRlci1yYWRpdXM6IDUwJTsgYmFja2dyb3VuZDogI2VlZjBmZjsgY29sb3I6ICM0ZjQ2ZTU7IGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDYwMDsgZmxleC1zaHJpbms6IDA7IH1cbiAgLnFsLWxhYmVsIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMzNzQxNTE7IH1cbiAgLnFsLWlucHV0IHsgd2lkdGg6IDEwMCU7IH1cbiAgLnFsLWVtcHR5IHsgcGFkZGluZzogMjRweCAwOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjNmI3MjgwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLnFsLWZvb3RlciB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgcGFkZGluZy10b3A6IDE2cHg7IG1hcmdpbi10b3A6IDhweDsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNmM2Y0ZjY7IH1cbiAgLnFsLWZvb3Rlci1sZWZ0IHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICAucWwtZm9vdGVyLWxhYmVsIHsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogIzZiNzI4MDsgbWFyZ2luLXJpZ2h0OiA4cHg7IH1cbiAgLnFsLXBhZ2Utc2l6ZS1zZWxlY3QgeyB3aWR0aDogNzJweDsgaGVpZ2h0OiAyOHB4OyBib3JkZXI6IDFweCBzb2xpZCAjZTVlN2ViOyBib3JkZXItcmFkaXVzOiA0cHg7IHBhZGRpbmc6IDAgNnB4OyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjMzc0MTUxOyBiYWNrZ3JvdW5kOiAjZmZmZmZmOyBjdXJzb3I6IHBvaW50ZXI7IG91dGxpbmU6IG5vbmU7IH1cbiAgLnFsLXBhZ2Utc2l6ZS1zZWxlY3Q6Zm9jdXMgeyBib3JkZXItY29sb3I6ICM2MzY2ZjE7IH1cbiAgLnFsLWZvb3Rlci1yaWdodCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNHB4OyB9XG4gIC5xbC1yYW5nZS1sYWJlbCB7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6ICMzNzQxNTE7IG1hcmdpbi1yaWdodDogOHB4OyB9XG4gIC5xbC1uYXYtYnRuIHsgd2lkdGg6IDI4cHg7IGhlaWdodDogMjhweDsgfVxuYDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLXF1ZXN0aW9ubmFpcmUtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbm5haXJlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtRVUVTVElPTk5BSVJFX0xJU1RfU1RZTEVTXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9XG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9ubmFpcmVMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgaXRlbXM6IFF1ZXN0aW9ubmFpcmVJdGVtW10gPSBbXTtcbiAgQElucHV0KCkgZGVmYXVsdFBhZ2VTaXplOiBudW1iZXIgPSA2O1xuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzYsIDEwLCAyMCwgNTBdO1xuICBASW5wdXQoKSBpbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnVHlwZSB5b3VyIGFuc3dlciBoZXJlLi4uJztcblxuICBAT3V0cHV0KCkgYW5zd2VyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlkOiBzdHJpbmcgfCBudW1iZXI7IHZhbHVlOiBzdHJpbmcgfT4oKTtcblxuICBjdXJyZW50UGFnZSA9IDE7XG4gIHBhZ2VTaXplID0gNjtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2RlZmF1bHRQYWdlU2l6ZSddICYmIGNoYW5nZXNbJ2RlZmF1bHRQYWdlU2l6ZSddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMuZGVmYXVsdFBhZ2VTaXplO1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRvdGFsSXRlbXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGg7XG4gIH1cblxuICBnZXQgdG90YWxQYWdlcygpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1heCgxLCBNYXRoLmNlaWwodGhpcy50b3RhbEl0ZW1zIC8gdGhpcy5wYWdlU2l6ZSkpO1xuICB9XG5cbiAgZ2V0IHN0YXJ0SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucGFnZVNpemU7XG4gIH1cblxuICBnZXQgZW5kSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4odGhpcy5zdGFydEluZGV4ICsgdGhpcy5wYWdlU2l6ZSwgdGhpcy50b3RhbEl0ZW1zKTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlSXRlbXMoKTogUXVlc3Rpb25uYWlyZUl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuc2xpY2UodGhpcy5zdGFydEluZGV4LCB0aGlzLmVuZEluZGV4KTtcbiAgfVxuXG4gIGdldCBpc1ByZXZEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA9PT0gMTtcbiAgfVxuXG4gIGdldCBpc05leHREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA9PT0gdGhpcy50b3RhbFBhZ2VzO1xuICB9XG5cbiAgb25QYWdlU2l6ZUNoYW5nZShzaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VTaXplID0gc2l6ZTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgfVxuXG4gIHByZXZQYWdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1ByZXZEaXNhYmxlZCkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZS0tO1xuICAgIH1cbiAgfVxuXG4gIG5leHRQYWdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc05leHREaXNhYmxlZCkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSsrO1xuICAgIH1cbiAgfVxuXG4gIG9uQW5zd2VySW5wdXQoaWQ6IHN0cmluZyB8IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYW5zd2VyQ2hhbmdlLmVtaXQoeyBpZCwgdmFsdWUgfSk7XG4gIH1cblxuICBnZXRJbnB1dElkKGlkOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgcXVlc3Rpb24taW5wdXQtJHtpZH1gO1xuICB9XG5cbiAgdHJhY2tCeUlkKF9pbmRleDogbnVtYmVyLCBpdGVtOiBRdWVzdGlvbm5haXJlSXRlbSk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJxbC13cmFwcGVyXCIgcm9sZT1cInJlZ2lvblwiIGFyaWEtbGFiZWw9XCJDbGFyaWZpY2F0aW9uIFF1ZXN0aW9ubmFpcmVcIj5cblxuICA8IS0tIEhlYWRlciAtLT5cbiAgPGRpdiBjbGFzcz1cInFsLWhlYWRlclwiPlxuICAgIDxoMiBjbGFzcz1cInFsLXRpdGxlXCI+Q2xhcmlmaWNhdGlvbiBRdWVzdGlvbm5haXJlPC9oMj5cbiAgICA8cCBjbGFzcz1cInFsLXN1YnRpdGxlXCI+XG4gICAgICBUaGUgQUkgaGFzIGdlbmVyYXRlZCB0aGVzZSBxdWVzdGlvbnMgdG8gcmVzb2x2ZSBhbWJpZ3VpdGllcyBpbiB0aGUgcmVxdWlyZW1lbnQuXG4gICAgICBBbnN3ZXJpbmcgdGhlc2Ugd2lsbCByZWdlbmVyYXRlIHNwZWNpZmljIHRlc3QgY2FzZXMuXG4gICAgPC9wPlxuICA8L2Rpdj5cblxuICA8IS0tIFF1ZXN0aW9uIHJvd3MgLS0+XG4gIDxkaXYgY2xhc3M9XCJxbC1ib2R5XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpc2libGVJdGVtcy5sZW5ndGg7IGVsc2UgZW1wdHlTdGF0ZVwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInFsLWl0ZW1cIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aXNpYmxlSXRlbXM7IGxhc3QgYXMgaXNMYXN0OyB0cmFja0J5OiB0cmFja0J5SWRcIlxuICAgICAgICBbY2xhc3MucWwtaXRlbS0tbGFzdF09XCJpc0xhc3RcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInFsLWJhZGdlXCI+e3sgaXRlbS5pbmRleCB9fTwvc3Bhbj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwicWwtbGFiZWxcIiBbZm9yXT1cImdldElucHV0SWQoaXRlbS5pZClcIj57eyBpdGVtLnF1ZXN0aW9uIH19PC9sYWJlbD5cbiAgICAgICAgPGNxYS1jdXN0b20taW5wdXRcbiAgICAgICAgICBbaW5wdXRJZF09XCJnZXRJbnB1dElkKGl0ZW0uaWQpXCJcbiAgICAgICAgICBbdmFsdWVdPVwiaXRlbS5hbnN3ZXJcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpbnB1dFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkFuc3dlcklucHV0KGl0ZW0uaWQsICRldmVudClcIlxuICAgICAgICAgIGNsYXNzPVwicWwtaW5wdXRcIlxuICAgICAgICA+PC9jcWEtY3VzdG9tLWlucHV0PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eVN0YXRlPlxuICAgICAgPGRpdiBjbGFzcz1cInFsLWVtcHR5XCI+Tm8gcXVlc3Rpb25zIGF2YWlsYWJsZS48L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8IS0tIEZvb3RlcjogcGVyLXBhZ2Ugc2VsZWN0b3IgKyByYW5nZSArIG5hdiAtLT5cbiAgPGRpdiBjbGFzcz1cInFsLWZvb3RlclwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cInFsLWZvb3Rlci1sZWZ0XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInFsLWZvb3Rlci1sYWJlbFwiPlF1ZXN0aW9ucyBwZXIgcGFnZTwvc3Bhbj5cbiAgICAgIDxzZWxlY3RcbiAgICAgICAgY2xhc3M9XCJxbC1wYWdlLXNpemUtc2VsZWN0XCJcbiAgICAgICAgW3ZhbHVlXT1cInBhZ2VTaXplXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCskYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiXG4gICAgICA+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdCBvZiBwYWdlU2l6ZU9wdGlvbnNcIiBbdmFsdWVdPVwib3B0XCI+e3sgb3B0IH19PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJxbC1mb290ZXItcmlnaHRcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicWwtcmFuZ2UtbGFiZWxcIj5cbiAgICAgICAge3sgdG90YWxJdGVtcyA/IHN0YXJ0SW5kZXggKyAxIDogMCB9fSZuZGFzaDt7eyBlbmRJbmRleCB9fSBvZiB7eyB0b3RhbEl0ZW1zIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBidG5TaXplPVwic21cIlxuICAgICAgICBpY29uPVwiY2hldnJvbl9sZWZ0XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzUHJldkRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrZWQpPVwicHJldlBhZ2UoKVwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJQcmV2aW91cyBwYWdlXCJcbiAgICAgICAgY2xhc3M9XCJxbC1uYXYtYnRuXCJcbiAgICAgID48L2NxYS1idXR0b24+XG4gICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBidG5TaXplPVwic21cIlxuICAgICAgICBpY29uPVwiY2hldnJvbl9yaWdodFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc05leHREaXNhYmxlZFwiXG4gICAgICAgIChjbGlja2VkKT1cIm5leHRQYWdlKClcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiTmV4dCBwYWdlXCJcbiAgICAgICAgY2xhc3M9XCJxbC1uYXYtYnRuXCJcbiAgICAgID48L2NxYS1idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuIl19
@@ -42644,6 +42644,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
42644
42644
  type: Output
42645
42645
  }] } });
42646
42646
 
42647
+ const QUESTIONNAIRE_LIST_STYLES = `
42648
+ :host { display: block; width: 100%; }
42649
+ .ql-wrapper { background: #ffffff; border: 1px solid #e8eaf0; border-radius: 8px; padding: 24px; box-shadow: 0 1px 4px rgba(0,0,0,.06); width: 100%; box-sizing: border-box; }
42650
+ .ql-header { margin-bottom: 20px; }
42651
+ .ql-title { font-size: 16px; font-weight: 600; color: #1a1d23; margin: 0 0 4px 0; line-height: 1.4; }
42652
+ .ql-subtitle { font-size: 13px; font-weight: 400; color: #6b7280; margin: 0; line-height: 1.5; }
42653
+ .ql-body { display: flex; flex-direction: column; }
42654
+ .ql-item { display: flex; flex-direction: column; gap: 6px; padding-bottom: 16px; margin-bottom: 16px; border-bottom: 1px solid #f3f4f6; }
42655
+ .ql-item.ql-item--last { border-bottom: none; margin-bottom: 0; }
42656
+ .ql-badge { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: #eef0ff; color: #4f46e5; font-size: 12px; font-weight: 600; flex-shrink: 0; }
42657
+ .ql-label { display: block; font-size: 13px; font-weight: 500; color: #374151; }
42658
+ .ql-input { width: 100%; }
42659
+ .ql-empty { padding: 24px 0; font-size: 13px; color: #6b7280; text-align: center; }
42660
+ .ql-footer { display: flex; align-items: center; justify-content: space-between; padding-top: 16px; margin-top: 8px; border-top: 1px solid #f3f4f6; }
42661
+ .ql-footer-left { display: flex; align-items: center; }
42662
+ .ql-footer-label { font-size: 13px; color: #6b7280; margin-right: 8px; }
42663
+ .ql-page-size-select { width: 72px; height: 28px; border: 1px solid #e5e7eb; border-radius: 4px; padding: 0 6px; font-size: 13px; color: #374151; background: #ffffff; cursor: pointer; outline: none; }
42664
+ .ql-page-size-select:focus { border-color: #6366f1; }
42665
+ .ql-footer-right { display: flex; align-items: center; gap: 4px; }
42666
+ .ql-range-label { font-size: 13px; color: #374151; margin-right: 8px; }
42667
+ .ql-nav-btn { width: 28px; height: 28px; }
42668
+ `;
42647
42669
  class QuestionnaireListComponent {
42648
42670
  constructor() {
42649
42671
  this.items = [];
@@ -42709,28 +42731,7 @@ QuestionnaireListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0
42709
42731
  QuestionnaireListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: QuestionnaireListComponent, selector: "cqa-questionnaire-list", inputs: { items: "items", defaultPageSize: "defaultPageSize", pageSizeOptions: "pageSizeOptions", inputPlaceholder: "inputPlaceholder" }, outputs: { answerChange: "answerChange" }, host: { classAttribute: "cqa-ui-root" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"ql-wrapper\" role=\"region\" aria-label=\"Clarification Questionnaire\">\n\n <!-- Header -->\n <div class=\"ql-header\">\n <h2 class=\"ql-title\">Clarification Questionnaire</h2>\n <p class=\"ql-subtitle\">\n The AI has generated these questions to resolve ambiguities in the requirement.\n Answering these will regenerate specific test cases.\n </p>\n </div>\n\n <!-- Question rows -->\n <div class=\"ql-body\">\n <ng-container *ngIf=\"visibleItems.length; else emptyState\">\n <div\n class=\"ql-item\"\n *ngFor=\"let item of visibleItems; last as isLast; trackBy: trackById\"\n [class.ql-item--last]=\"isLast\"\n >\n <span class=\"ql-badge\">{{ item.index }}</span>\n <label class=\"ql-label\" [for]=\"getInputId(item.id)\">{{ item.question }}</label>\n <cqa-custom-input\n [inputId]=\"getInputId(item.id)\"\n [value]=\"item.answer\"\n [placeholder]=\"inputPlaceholder\"\n [fullWidth]=\"true\"\n (valueChange)=\"onAnswerInput(item.id, $event)\"\n class=\"ql-input\"\n ></cqa-custom-input>\n </div>\n </ng-container>\n <ng-template #emptyState>\n <div class=\"ql-empty\">No questions available.</div>\n </ng-template>\n </div>\n\n <!-- Footer: per-page selector + range + nav -->\n <div class=\"ql-footer\" aria-live=\"polite\">\n\n <div class=\"ql-footer-left\">\n <span class=\"ql-footer-label\">Questions per page</span>\n <select\n class=\"ql-page-size-select\"\n [value]=\"pageSize\"\n (change)=\"onPageSizeChange(+$any($event.target).value)\"\n >\n <option *ngFor=\"let opt of pageSizeOptions\" [value]=\"opt\">{{ opt }}</option>\n </select>\n </div>\n\n <div class=\"ql-footer-right\">\n <span class=\"ql-range-label\">\n {{ totalItems ? startIndex + 1 : 0 }}&ndash;{{ endIndex }} of {{ totalItems }}\n </span>\n <cqa-button\n variant=\"outlined\"\n btnSize=\"sm\"\n icon=\"chevron_left\"\n [disabled]=\"isPrevDisabled\"\n (clicked)=\"prevPage()\"\n aria-label=\"Previous page\"\n class=\"ql-nav-btn\"\n ></cqa-button>\n <cqa-button\n variant=\"outlined\"\n btnSize=\"sm\"\n icon=\"chevron_right\"\n [disabled]=\"isNextDisabled\"\n (clicked)=\"nextPage()\"\n aria-label=\"Next page\"\n class=\"ql-nav-btn\"\n ></cqa-button>\n </div>\n\n </div>\n\n</div>\n", styles: [":host{display:block;width:100%}.ql-wrapper{background:#ffffff;border:1px solid #e8eaf0;border-radius:8px;padding:24px;box-shadow:0 1px 4px #0000000f;width:100%;box-sizing:border-box}.ql-header{margin-bottom:20px}.ql-title{font-size:16px;font-weight:600;color:#1a1d23;margin:0 0 4px;line-height:1.4}.ql-subtitle{font-size:13px;font-weight:400;color:#6b7280;margin:0;line-height:1.5}.ql-body{display:flex;flex-direction:column}.ql-item{display:flex;flex-direction:column;gap:6px;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #f3f4f6}.ql-item.ql-item--last{border-bottom:none;margin-bottom:0}.ql-badge{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#eef0ff;color:#4f46e5;font-size:12px;font-weight:600;flex-shrink:0}.ql-label{display:block;font-size:13px;font-weight:500;color:#374151}.ql-input{width:100%}.ql-empty{padding:24px 0;font-size:13px;color:#6b7280;text-align:center}.ql-footer{display:flex;align-items:center;justify-content:space-between;padding-top:16px;margin-top:8px;border-top:1px solid #f3f4f6}.ql-footer-left{display:flex;align-items:center}.ql-footer-label{font-size:13px;color:#6b7280;margin-right:8px}.ql-page-size-select{width:72px;height:28px;border:1px solid #e5e7eb;border-radius:4px;padding:0 6px;font-size:13px;color:#374151;background:#ffffff;cursor:pointer;outline:none}.ql-page-size-select:focus{border-color:#6366f1}.ql-footer-right{display:flex;align-items:center;gap:4px}.ql-range-label{font-size:13px;color:#374151;margin-right:8px}.ql-nav-btn{width:28px;height:28px}\n"], components: [{ type: CustomInputComponent, selector: "cqa-custom-input", inputs: ["inputId", "label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
42710
42732
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: QuestionnaireListComponent, decorators: [{
42711
42733
  type: Component,
42712
- args: [{ selector: 'cqa-questionnaire-list', styles: [`
42713
- :host { display: block; width: 100%; }
42714
- .ql-wrapper { background: #ffffff; border: 1px solid #e8eaf0; border-radius: 8px; padding: 24px; box-shadow: 0 1px 4px rgba(0,0,0,.06); width: 100%; box-sizing: border-box; }
42715
- .ql-header { margin-bottom: 20px; }
42716
- .ql-title { font-size: 16px; font-weight: 600; color: #1a1d23; margin: 0 0 4px 0; line-height: 1.4; }
42717
- .ql-subtitle { font-size: 13px; font-weight: 400; color: #6b7280; margin: 0; line-height: 1.5; }
42718
- .ql-body { display: flex; flex-direction: column; }
42719
- .ql-item { display: flex; flex-direction: column; gap: 6px; padding-bottom: 16px; margin-bottom: 16px; border-bottom: 1px solid #f3f4f6; }
42720
- .ql-item.ql-item--last { border-bottom: none; margin-bottom: 0; }
42721
- .ql-badge { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: #eef0ff; color: #4f46e5; font-size: 12px; font-weight: 600; flex-shrink: 0; }
42722
- .ql-label { display: block; font-size: 13px; font-weight: 500; color: #374151; }
42723
- .ql-input { width: 100%; }
42724
- .ql-empty { padding: 24px 0; font-size: 13px; color: #6b7280; text-align: center; }
42725
- .ql-footer { display: flex; align-items: center; justify-content: space-between; padding-top: 16px; margin-top: 8px; border-top: 1px solid #f3f4f6; }
42726
- .ql-footer-left { display: flex; align-items: center; }
42727
- .ql-footer-label { font-size: 13px; color: #6b7280; margin-right: 8px; }
42728
- .ql-page-size-select { width: 72px; height: 28px; border: 1px solid #e5e7eb; border-radius: 4px; padding: 0 6px; font-size: 13px; color: #374151; background: #ffffff; cursor: pointer; outline: none; }
42729
- .ql-page-size-select:focus { border-color: #6366f1; }
42730
- .ql-footer-right { display: flex; align-items: center; gap: 4px; }
42731
- .ql-range-label { font-size: 13px; color: #374151; margin-right: 8px; }
42732
- .ql-nav-btn { width: 28px; height: 28px; }
42733
- `], host: { class: 'cqa-ui-root' }, template: "<div class=\"ql-wrapper\" role=\"region\" aria-label=\"Clarification Questionnaire\">\n\n <!-- Header -->\n <div class=\"ql-header\">\n <h2 class=\"ql-title\">Clarification Questionnaire</h2>\n <p class=\"ql-subtitle\">\n The AI has generated these questions to resolve ambiguities in the requirement.\n Answering these will regenerate specific test cases.\n </p>\n </div>\n\n <!-- Question rows -->\n <div class=\"ql-body\">\n <ng-container *ngIf=\"visibleItems.length; else emptyState\">\n <div\n class=\"ql-item\"\n *ngFor=\"let item of visibleItems; last as isLast; trackBy: trackById\"\n [class.ql-item--last]=\"isLast\"\n >\n <span class=\"ql-badge\">{{ item.index }}</span>\n <label class=\"ql-label\" [for]=\"getInputId(item.id)\">{{ item.question }}</label>\n <cqa-custom-input\n [inputId]=\"getInputId(item.id)\"\n [value]=\"item.answer\"\n [placeholder]=\"inputPlaceholder\"\n [fullWidth]=\"true\"\n (valueChange)=\"onAnswerInput(item.id, $event)\"\n class=\"ql-input\"\n ></cqa-custom-input>\n </div>\n </ng-container>\n <ng-template #emptyState>\n <div class=\"ql-empty\">No questions available.</div>\n </ng-template>\n </div>\n\n <!-- Footer: per-page selector + range + nav -->\n <div class=\"ql-footer\" aria-live=\"polite\">\n\n <div class=\"ql-footer-left\">\n <span class=\"ql-footer-label\">Questions per page</span>\n <select\n class=\"ql-page-size-select\"\n [value]=\"pageSize\"\n (change)=\"onPageSizeChange(+$any($event.target).value)\"\n >\n <option *ngFor=\"let opt of pageSizeOptions\" [value]=\"opt\">{{ opt }}</option>\n </select>\n </div>\n\n <div class=\"ql-footer-right\">\n <span class=\"ql-range-label\">\n {{ totalItems ? startIndex + 1 : 0 }}&ndash;{{ endIndex }} of {{ totalItems }}\n </span>\n <cqa-button\n variant=\"outlined\"\n btnSize=\"sm\"\n icon=\"chevron_left\"\n [disabled]=\"isPrevDisabled\"\n (clicked)=\"prevPage()\"\n aria-label=\"Previous page\"\n class=\"ql-nav-btn\"\n ></cqa-button>\n <cqa-button\n variant=\"outlined\"\n btnSize=\"sm\"\n icon=\"chevron_right\"\n [disabled]=\"isNextDisabled\"\n (clicked)=\"nextPage()\"\n aria-label=\"Next page\"\n class=\"ql-nav-btn\"\n ></cqa-button>\n </div>\n\n </div>\n\n</div>\n" }]
42734
+ args: [{ selector: 'cqa-questionnaire-list', styles: [QUESTIONNAIRE_LIST_STYLES], host: { class: 'cqa-ui-root' }, template: "<div class=\"ql-wrapper\" role=\"region\" aria-label=\"Clarification Questionnaire\">\n\n <!-- Header -->\n <div class=\"ql-header\">\n <h2 class=\"ql-title\">Clarification Questionnaire</h2>\n <p class=\"ql-subtitle\">\n The AI has generated these questions to resolve ambiguities in the requirement.\n Answering these will regenerate specific test cases.\n </p>\n </div>\n\n <!-- Question rows -->\n <div class=\"ql-body\">\n <ng-container *ngIf=\"visibleItems.length; else emptyState\">\n <div\n class=\"ql-item\"\n *ngFor=\"let item of visibleItems; last as isLast; trackBy: trackById\"\n [class.ql-item--last]=\"isLast\"\n >\n <span class=\"ql-badge\">{{ item.index }}</span>\n <label class=\"ql-label\" [for]=\"getInputId(item.id)\">{{ item.question }}</label>\n <cqa-custom-input\n [inputId]=\"getInputId(item.id)\"\n [value]=\"item.answer\"\n [placeholder]=\"inputPlaceholder\"\n [fullWidth]=\"true\"\n (valueChange)=\"onAnswerInput(item.id, $event)\"\n class=\"ql-input\"\n ></cqa-custom-input>\n </div>\n </ng-container>\n <ng-template #emptyState>\n <div class=\"ql-empty\">No questions available.</div>\n </ng-template>\n </div>\n\n <!-- Footer: per-page selector + range + nav -->\n <div class=\"ql-footer\" aria-live=\"polite\">\n\n <div class=\"ql-footer-left\">\n <span class=\"ql-footer-label\">Questions per page</span>\n <select\n class=\"ql-page-size-select\"\n [value]=\"pageSize\"\n (change)=\"onPageSizeChange(+$any($event.target).value)\"\n >\n <option *ngFor=\"let opt of pageSizeOptions\" [value]=\"opt\">{{ opt }}</option>\n </select>\n </div>\n\n <div class=\"ql-footer-right\">\n <span class=\"ql-range-label\">\n {{ totalItems ? startIndex + 1 : 0 }}&ndash;{{ endIndex }} of {{ totalItems }}\n </span>\n <cqa-button\n variant=\"outlined\"\n btnSize=\"sm\"\n icon=\"chevron_left\"\n [disabled]=\"isPrevDisabled\"\n (clicked)=\"prevPage()\"\n aria-label=\"Previous page\"\n class=\"ql-nav-btn\"\n ></cqa-button>\n <cqa-button\n variant=\"outlined\"\n btnSize=\"sm\"\n icon=\"chevron_right\"\n [disabled]=\"isNextDisabled\"\n (clicked)=\"nextPage()\"\n aria-label=\"Next page\"\n class=\"ql-nav-btn\"\n ></cqa-button>\n </div>\n\n </div>\n\n</div>\n" }]
42734
42735
  }], propDecorators: { items: [{
42735
42736
  type: Input
42736
42737
  }], defaultPageSize: [{
@@ -42751,6 +42752,38 @@ const EVENT_ICON_MAP = {
42751
42752
  questionnaire_generated: 'assignment',
42752
42753
  };
42753
42754
  const DEFAULT_ICON = 'description';
42755
+ const CHANGE_HISTORY_STYLES = `
42756
+ :host { display: block; width: 100%; }
42757
+ .ch-wrapper { background: #ffffff; border: 1px solid #e8eaf0; border-radius: 8px; padding: 24px; box-shadow: 0 1px 4px rgba(0,0,0,.06); width: 100%; box-sizing: border-box; }
42758
+ .ch-header { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 24px; }
42759
+ .ch-header-icon { display: inline-flex; align-items: center; color: #6b7280; flex-shrink: 0; }
42760
+ .ch-header-icon mat-icon { font-size: 20px; width: 20px; height: 20px; }
42761
+ .ch-title { font-size: 15px; font-weight: 600; color: #1a1d23; margin: 0 0 2px 0; line-height: 1.4; }
42762
+ .ch-subtitle { font-size: 13px; font-weight: 400; color: #6b7280; margin: 0; }
42763
+ .ch-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 48px 24px; gap: 12px; }
42764
+ .ch-empty p { font-size: 14px; color: #9ca3af; margin: 0; }
42765
+ .ch-empty-icon { font-size: 32px; width: 32px; height: 32px; color: #d1d5db; }
42766
+ .ch-timeline { list-style: none; margin: 0; padding: 0; }
42767
+ .ch-event { display: flex; align-items: flex-start; }
42768
+ .ch-track { width: 24px; display: flex; flex-direction: column; align-items: center; flex-shrink: 0; }
42769
+ .ch-track::after { content: ''; width: 2px; flex: 1; background-color: #e5e7eb; margin-top: 4px; }
42770
+ .ch-event--last .ch-track::after { display: none; }
42771
+ .ch-dot { display: block; width: 10px; height: 10px; border-radius: 50%; background: #ffffff; border: 2px solid #d1d5db; margin-top: 4px; z-index: 1; flex-shrink: 0; }
42772
+ .ch-card { display: flex; align-items: flex-start; gap: 12px; padding: 0 0 28px 12px; width: 100%; }
42773
+ .ch-event-icon { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 6px; background: #f3f4f6; flex-shrink: 0; }
42774
+ .ch-event-icon mat-icon { font-size: 16px; width: 16px; height: 16px; color: #6b7280; }
42775
+ .ch-event-body { flex: 1; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
42776
+ .ch-event-title { font-size: 14px; font-weight: 600; color: #1a1d23; }
42777
+ .ch-event-meta { display: flex; align-items: center; gap: 6px; font-size: 12px; color: #6b7280; }
42778
+ .ch-meta-icon { font-size: 12px; width: 12px; height: 12px; color: #9ca3af; }
42779
+ .ch-meta-actor, .ch-meta-timestamp { font-size: 12px; color: #6b7280; }
42780
+ .ch-badges { display: flex; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
42781
+ .ch-badge { font-size: 12px; font-weight: 500; padding: 2px 8px; border-radius: 4px; }
42782
+ .ch-badge--added { background: #dcfce7; color: #15803d; }
42783
+ .ch-badge--modified { background: #fef9c3; color: #854d0e; }
42784
+ .ch-badge--removed { background: #fee2e2; color: #b91c1c; }
42785
+ .ch-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-shrink: 0; }
42786
+ `;
42754
42787
  class ChangeHistoryComponent {
42755
42788
  constructor() {
42756
42789
  this.items = [];
@@ -42776,38 +42809,7 @@ ChangeHistoryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", v
42776
42809
  ChangeHistoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ChangeHistoryComponent, selector: "cqa-change-history", inputs: { items: "items", title: "title" }, outputs: { viewDetails: "viewDetails", revert: "revert" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"ch-wrapper\" role=\"region\" [attr.aria-label]=\"title\">\n\n <!-- Header -->\n <div class=\"ch-header\">\n <span class=\"ch-header-icon\" aria-hidden=\"true\">\n <mat-icon>history</mat-icon>\n </span>\n <div>\n <h2 class=\"ch-title\">{{ title }}</h2>\n <p class=\"ch-subtitle\">{{ items.length }} events recorded</p>\n </div>\n </div>\n\n <!-- Empty state -->\n <div class=\"ch-empty\" *ngIf=\"!items.length\">\n <mat-icon class=\"ch-empty-icon\" aria-hidden=\"true\">history</mat-icon>\n <p>No history events recorded yet.</p>\n </div>\n\n <!-- Timeline -->\n <ol class=\"ch-timeline\" *ngIf=\"items.length\" aria-label=\"Change history events\">\n <li\n class=\"ch-event\"\n *ngFor=\"let item of items; last as isLast; trackBy: trackById\"\n [class.ch-event--last]=\"isLast\"\n >\n <!-- Track: dot + vertical line -->\n <div class=\"ch-track\">\n <span class=\"ch-dot\" aria-hidden=\"true\"></span>\n </div>\n\n <!-- Card -->\n <div class=\"ch-card\">\n\n <!-- Event icon -->\n <span class=\"ch-event-icon\" aria-hidden=\"true\">\n <mat-icon>{{ getEventIcon(item.eventType) }}</mat-icon>\n </span>\n\n <!-- Body -->\n <div class=\"ch-event-body\">\n <span class=\"ch-event-title\">{{ item.title }}</span>\n\n <div class=\"ch-event-meta\">\n <mat-icon class=\"ch-meta-icon\" aria-hidden=\"true\">person</mat-icon>\n <span class=\"ch-meta-actor\">{{ item.actor }}</span>\n <mat-icon class=\"ch-meta-icon\" aria-hidden=\"true\">schedule</mat-icon>\n <span class=\"ch-meta-timestamp\">{{ item.timestamp }}</span>\n </div>\n\n <div class=\"ch-badges\" *ngIf=\"item.badges?.length\">\n <span\n *ngFor=\"let badge of item.badges\"\n class=\"ch-badge\"\n [ngClass]=\"'ch-badge--' + badge.variant\"\n >{{ badge.label }}</span>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"ch-actions\">\n <cqa-button\n variant=\"text\"\n btnSize=\"sm\"\n icon=\"visibility\"\n [text]=\"'View Details'\"\n [attr.aria-label]=\"'View details for ' + item.title\"\n (clicked)=\"onViewDetails(item.id)\"\n ></cqa-button>\n\n <cqa-button\n *ngIf=\"item.canRevert\"\n variant=\"text\"\n btnSize=\"sm\"\n icon=\"history\"\n [text]=\"'Revert'\"\n [attr.aria-label]=\"'Revert ' + item.title\"\n (clicked)=\"onRevert(item.id)\"\n ></cqa-button>\n </div>\n\n </div>\n </li>\n </ol>\n\n</div>\n", styles: [":host{display:block;width:100%}.ch-wrapper{background:#ffffff;border:1px solid #e8eaf0;border-radius:8px;padding:24px;box-shadow:0 1px 4px #0000000f;width:100%;box-sizing:border-box}.ch-header{display:flex;align-items:flex-start;gap:10px;margin-bottom:24px}.ch-header-icon{display:inline-flex;align-items:center;color:#6b7280;flex-shrink:0}.ch-header-icon mat-icon{font-size:20px;width:20px;height:20px}.ch-title{font-size:15px;font-weight:600;color:#1a1d23;margin:0 0 2px;line-height:1.4}.ch-subtitle{font-size:13px;font-weight:400;color:#6b7280;margin:0}.ch-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;gap:12px}.ch-empty p{font-size:14px;color:#9ca3af;margin:0}.ch-empty-icon{font-size:32px;width:32px;height:32px;color:#d1d5db}.ch-timeline{list-style:none;margin:0;padding:0}.ch-event{display:flex;align-items:flex-start}.ch-track{width:24px;display:flex;flex-direction:column;align-items:center;flex-shrink:0}.ch-track:after{content:\"\";width:2px;flex:1;background-color:#e5e7eb;margin-top:4px}.ch-event--last .ch-track:after{display:none}.ch-dot{display:block;width:10px;height:10px;border-radius:50%;background:#ffffff;border:2px solid #d1d5db;margin-top:4px;z-index:1;flex-shrink:0}.ch-card{display:flex;align-items:flex-start;gap:12px;padding:0 0 28px 12px;width:100%}.ch-event-icon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;background:#f3f4f6;flex-shrink:0}.ch-event-icon mat-icon{font-size:16px;width:16px;height:16px;color:#6b7280}.ch-event-body{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.ch-event-title{font-size:14px;font-weight:600;color:#1a1d23}.ch-event-meta{display:flex;align-items:center;gap:6px;font-size:12px;color:#6b7280}.ch-meta-icon{font-size:12px;width:12px;height:12px;color:#9ca3af}.ch-meta-actor,.ch-meta-timestamp{font-size:12px;color:#6b7280}.ch-badges{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}.ch-badge{font-size:12px;font-weight:500;padding:2px 8px;border-radius:4px}.ch-badge--added{background:#dcfce7;color:#15803d}.ch-badge--modified{background:#fef9c3;color:#854d0e}.ch-badge--removed{background:#fee2e2;color:#b91c1c}.ch-actions{display:flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
42777
42810
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ChangeHistoryComponent, decorators: [{
42778
42811
  type: Component,
42779
- args: [{ selector: 'cqa-change-history', styles: [`
42780
- :host { display: block; width: 100%; }
42781
- .ch-wrapper { background: #ffffff; border: 1px solid #e8eaf0; border-radius: 8px; padding: 24px; box-shadow: 0 1px 4px rgba(0,0,0,.06); width: 100%; box-sizing: border-box; }
42782
- .ch-header { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 24px; }
42783
- .ch-header-icon { display: inline-flex; align-items: center; color: #6b7280; flex-shrink: 0; }
42784
- .ch-header-icon mat-icon { font-size: 20px; width: 20px; height: 20px; }
42785
- .ch-title { font-size: 15px; font-weight: 600; color: #1a1d23; margin: 0 0 2px 0; line-height: 1.4; }
42786
- .ch-subtitle { font-size: 13px; font-weight: 400; color: #6b7280; margin: 0; }
42787
- .ch-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 48px 24px; gap: 12px; }
42788
- .ch-empty p { font-size: 14px; color: #9ca3af; margin: 0; }
42789
- .ch-empty-icon { font-size: 32px; width: 32px; height: 32px; color: #d1d5db; }
42790
- .ch-timeline { list-style: none; margin: 0; padding: 0; }
42791
- .ch-event { display: flex; align-items: flex-start; }
42792
- .ch-track { width: 24px; display: flex; flex-direction: column; align-items: center; flex-shrink: 0; }
42793
- .ch-track::after { content: ''; width: 2px; flex: 1; background-color: #e5e7eb; margin-top: 4px; }
42794
- .ch-event--last .ch-track::after { display: none; }
42795
- .ch-dot { display: block; width: 10px; height: 10px; border-radius: 50%; background: #ffffff; border: 2px solid #d1d5db; margin-top: 4px; z-index: 1; flex-shrink: 0; }
42796
- .ch-card { display: flex; align-items: flex-start; gap: 12px; padding: 0 0 28px 12px; width: 100%; }
42797
- .ch-event-icon { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 6px; background: #f3f4f6; flex-shrink: 0; }
42798
- .ch-event-icon mat-icon { font-size: 16px; width: 16px; height: 16px; color: #6b7280; }
42799
- .ch-event-body { flex: 1; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
42800
- .ch-event-title { font-size: 14px; font-weight: 600; color: #1a1d23; }
42801
- .ch-event-meta { display: flex; align-items: center; gap: 6px; font-size: 12px; color: #6b7280; }
42802
- .ch-meta-icon { font-size: 12px; width: 12px; height: 12px; color: #9ca3af; }
42803
- .ch-meta-actor, .ch-meta-timestamp { font-size: 12px; color: #6b7280; }
42804
- .ch-badges { display: flex; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
42805
- .ch-badge { font-size: 12px; font-weight: 500; padding: 2px 8px; border-radius: 4px; }
42806
- .ch-badge--added { background: #dcfce7; color: #15803d; }
42807
- .ch-badge--modified { background: #fef9c3; color: #854d0e; }
42808
- .ch-badge--removed { background: #fee2e2; color: #b91c1c; }
42809
- .ch-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-shrink: 0; }
42810
- `], host: { class: 'cqa-ui-root' }, template: "<div class=\"ch-wrapper\" role=\"region\" [attr.aria-label]=\"title\">\n\n <!-- Header -->\n <div class=\"ch-header\">\n <span class=\"ch-header-icon\" aria-hidden=\"true\">\n <mat-icon>history</mat-icon>\n </span>\n <div>\n <h2 class=\"ch-title\">{{ title }}</h2>\n <p class=\"ch-subtitle\">{{ items.length }} events recorded</p>\n </div>\n </div>\n\n <!-- Empty state -->\n <div class=\"ch-empty\" *ngIf=\"!items.length\">\n <mat-icon class=\"ch-empty-icon\" aria-hidden=\"true\">history</mat-icon>\n <p>No history events recorded yet.</p>\n </div>\n\n <!-- Timeline -->\n <ol class=\"ch-timeline\" *ngIf=\"items.length\" aria-label=\"Change history events\">\n <li\n class=\"ch-event\"\n *ngFor=\"let item of items; last as isLast; trackBy: trackById\"\n [class.ch-event--last]=\"isLast\"\n >\n <!-- Track: dot + vertical line -->\n <div class=\"ch-track\">\n <span class=\"ch-dot\" aria-hidden=\"true\"></span>\n </div>\n\n <!-- Card -->\n <div class=\"ch-card\">\n\n <!-- Event icon -->\n <span class=\"ch-event-icon\" aria-hidden=\"true\">\n <mat-icon>{{ getEventIcon(item.eventType) }}</mat-icon>\n </span>\n\n <!-- Body -->\n <div class=\"ch-event-body\">\n <span class=\"ch-event-title\">{{ item.title }}</span>\n\n <div class=\"ch-event-meta\">\n <mat-icon class=\"ch-meta-icon\" aria-hidden=\"true\">person</mat-icon>\n <span class=\"ch-meta-actor\">{{ item.actor }}</span>\n <mat-icon class=\"ch-meta-icon\" aria-hidden=\"true\">schedule</mat-icon>\n <span class=\"ch-meta-timestamp\">{{ item.timestamp }}</span>\n </div>\n\n <div class=\"ch-badges\" *ngIf=\"item.badges?.length\">\n <span\n *ngFor=\"let badge of item.badges\"\n class=\"ch-badge\"\n [ngClass]=\"'ch-badge--' + badge.variant\"\n >{{ badge.label }}</span>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"ch-actions\">\n <cqa-button\n variant=\"text\"\n btnSize=\"sm\"\n icon=\"visibility\"\n [text]=\"'View Details'\"\n [attr.aria-label]=\"'View details for ' + item.title\"\n (clicked)=\"onViewDetails(item.id)\"\n ></cqa-button>\n\n <cqa-button\n *ngIf=\"item.canRevert\"\n variant=\"text\"\n btnSize=\"sm\"\n icon=\"history\"\n [text]=\"'Revert'\"\n [attr.aria-label]=\"'Revert ' + item.title\"\n (clicked)=\"onRevert(item.id)\"\n ></cqa-button>\n </div>\n\n </div>\n </li>\n </ol>\n\n</div>\n" }]
42812
+ args: [{ selector: 'cqa-change-history', styles: [CHANGE_HISTORY_STYLES], host: { class: 'cqa-ui-root' }, template: "<div class=\"ch-wrapper\" role=\"region\" [attr.aria-label]=\"title\">\n\n <!-- Header -->\n <div class=\"ch-header\">\n <span class=\"ch-header-icon\" aria-hidden=\"true\">\n <mat-icon>history</mat-icon>\n </span>\n <div>\n <h2 class=\"ch-title\">{{ title }}</h2>\n <p class=\"ch-subtitle\">{{ items.length }} events recorded</p>\n </div>\n </div>\n\n <!-- Empty state -->\n <div class=\"ch-empty\" *ngIf=\"!items.length\">\n <mat-icon class=\"ch-empty-icon\" aria-hidden=\"true\">history</mat-icon>\n <p>No history events recorded yet.</p>\n </div>\n\n <!-- Timeline -->\n <ol class=\"ch-timeline\" *ngIf=\"items.length\" aria-label=\"Change history events\">\n <li\n class=\"ch-event\"\n *ngFor=\"let item of items; last as isLast; trackBy: trackById\"\n [class.ch-event--last]=\"isLast\"\n >\n <!-- Track: dot + vertical line -->\n <div class=\"ch-track\">\n <span class=\"ch-dot\" aria-hidden=\"true\"></span>\n </div>\n\n <!-- Card -->\n <div class=\"ch-card\">\n\n <!-- Event icon -->\n <span class=\"ch-event-icon\" aria-hidden=\"true\">\n <mat-icon>{{ getEventIcon(item.eventType) }}</mat-icon>\n </span>\n\n <!-- Body -->\n <div class=\"ch-event-body\">\n <span class=\"ch-event-title\">{{ item.title }}</span>\n\n <div class=\"ch-event-meta\">\n <mat-icon class=\"ch-meta-icon\" aria-hidden=\"true\">person</mat-icon>\n <span class=\"ch-meta-actor\">{{ item.actor }}</span>\n <mat-icon class=\"ch-meta-icon\" aria-hidden=\"true\">schedule</mat-icon>\n <span class=\"ch-meta-timestamp\">{{ item.timestamp }}</span>\n </div>\n\n <div class=\"ch-badges\" *ngIf=\"item.badges?.length\">\n <span\n *ngFor=\"let badge of item.badges\"\n class=\"ch-badge\"\n [ngClass]=\"'ch-badge--' + badge.variant\"\n >{{ badge.label }}</span>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"ch-actions\">\n <cqa-button\n variant=\"text\"\n btnSize=\"sm\"\n icon=\"visibility\"\n [text]=\"'View Details'\"\n [attr.aria-label]=\"'View details for ' + item.title\"\n (clicked)=\"onViewDetails(item.id)\"\n ></cqa-button>\n\n <cqa-button\n *ngIf=\"item.canRevert\"\n variant=\"text\"\n btnSize=\"sm\"\n icon=\"history\"\n [text]=\"'Revert'\"\n [attr.aria-label]=\"'Revert ' + item.title\"\n (clicked)=\"onRevert(item.id)\"\n ></cqa-button>\n </div>\n\n </div>\n </li>\n </ol>\n\n</div>\n" }]
42811
42813
  }], propDecorators: { items: [{
42812
42814
  type: Input
42813
42815
  }], title: [{