@almatar/smart-booking-dashboard 0.0.1
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.
- package/LICENSE +21 -0
- package/README.md +132 -0
- package/esm2022/almatar-smart-booking-dashboard.mjs +5 -0
- package/esm2022/lib/components/action-card/action-card.component.mjs +19 -0
- package/esm2022/lib/components/action-dialog/action-dialog.component.mjs +177 -0
- package/esm2022/lib/components/action-grid/action-grid.component.mjs +18 -0
- package/esm2022/lib/components/add-note-dialog/add-note-dialog.component.mjs +62 -0
- package/esm2022/lib/components/booking-input/booking-input.component.mjs +43 -0
- package/esm2022/lib/components/cancel-dialog/cancel-dialog.component.mjs +1441 -0
- package/esm2022/lib/components/data-search/data-search.component.mjs +84 -0
- package/esm2022/lib/components/flight-itinerary-card/flight-itinerary-card.component.mjs +73 -0
- package/esm2022/lib/components/result-panel/result-panel.component.mjs +46 -0
- package/esm2022/lib/components/workflow-actions/workflow-actions.component.mjs +19 -0
- package/esm2022/lib/config/dashboard.config.mjs +16 -0
- package/esm2022/lib/config/flight-actions.config.mjs +906 -0
- package/esm2022/lib/config/hotel-actions.config.mjs +53 -0
- package/esm2022/lib/config/labels.ar.mjs +116 -0
- package/esm2022/lib/models/action.types.mjs +2 -0
- package/esm2022/lib/models/booking.types.mjs +2 -0
- package/esm2022/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.mjs +145 -0
- package/esm2022/lib/services/booking.service.mjs +65 -0
- package/esm2022/lib/services/toast.service.mjs +19 -0
- package/esm2022/lib/smart-booking-dashboard.module.mjs +17 -0
- package/esm2022/lib/smart-booking-dashboard.routes.mjs +7 -0
- package/esm2022/public-api.mjs +9 -0
- package/fesm2022/almatar-smart-booking-dashboard.mjs +3259 -0
- package/fesm2022/almatar-smart-booking-dashboard.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/action-card/action-card.component.d.ts +10 -0
- package/lib/components/action-dialog/action-dialog.component.d.ts +26 -0
- package/lib/components/action-grid/action-grid.component.d.ts +10 -0
- package/lib/components/add-note-dialog/add-note-dialog.component.d.ts +25 -0
- package/lib/components/booking-input/booking-input.component.d.ts +23 -0
- package/lib/components/cancel-dialog/cancel-dialog.component.d.ts +395 -0
- package/lib/components/data-search/data-search.component.d.ts +21 -0
- package/lib/components/flight-itinerary-card/flight-itinerary-card.component.d.ts +17 -0
- package/lib/components/result-panel/result-panel.component.d.ts +14 -0
- package/lib/components/workflow-actions/workflow-actions.component.d.ts +7 -0
- package/lib/config/dashboard.config.d.ts +15 -0
- package/lib/config/flight-actions.config.d.ts +2 -0
- package/lib/config/hotel-actions.config.d.ts +2 -0
- package/lib/config/labels.ar.d.ts +2 -0
- package/lib/models/action.types.d.ts +34 -0
- package/lib/models/booking.types.d.ts +6 -0
- package/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.d.ts +43 -0
- package/lib/services/booking.service.d.ts +22 -0
- package/lib/services/toast.service.d.ts +10 -0
- package/lib/smart-booking-dashboard.module.d.ts +7 -0
- package/lib/smart-booking-dashboard.routes.d.ts +2 -0
- package/package.json +50 -0
- package/public-api.d.ts +5 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Component, computed, input, signal } from '@angular/core';
|
|
2
|
+
import { FormsModule } from '@angular/forms';
|
|
3
|
+
import { InputTextModule } from 'primeng/inputtext';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/forms";
|
|
6
|
+
import * as i2 from "primeng/inputtext";
|
|
7
|
+
export class SbdDataSearchComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
|
+
this.data = input(null);
|
|
11
|
+
this.query = signal('');
|
|
12
|
+
this.allEntries = computed(() => {
|
|
13
|
+
const d = this.data()?.data?.booking_info;
|
|
14
|
+
if (!d)
|
|
15
|
+
return [];
|
|
16
|
+
return this.flatten(d);
|
|
17
|
+
});
|
|
18
|
+
this.results = computed(() => {
|
|
19
|
+
const q = this.query().trim().toLowerCase();
|
|
20
|
+
if (q.length < 2)
|
|
21
|
+
return [];
|
|
22
|
+
return this.allEntries()
|
|
23
|
+
.filter(e => e.key.toLowerCase().includes(q) ||
|
|
24
|
+
e.rawValue.toLowerCase().includes(q) ||
|
|
25
|
+
e.displayValue.toLowerCase().includes(q))
|
|
26
|
+
.slice(0, 50);
|
|
27
|
+
});
|
|
28
|
+
this.totalCount = computed(() => {
|
|
29
|
+
const q = this.query().trim().toLowerCase();
|
|
30
|
+
if (q.length < 2)
|
|
31
|
+
return 0;
|
|
32
|
+
return this.allEntries().filter(e => e.key.toLowerCase().includes(q) ||
|
|
33
|
+
e.rawValue.toLowerCase().includes(q) ||
|
|
34
|
+
e.displayValue.toLowerCase().includes(q)).length;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
+
flatten(obj, pathParts = []) {
|
|
39
|
+
if (obj === null || obj === undefined)
|
|
40
|
+
return [];
|
|
41
|
+
if (typeof obj !== 'object') {
|
|
42
|
+
const raw = String(obj);
|
|
43
|
+
const key = pathParts[pathParts.length - 1] ?? '';
|
|
44
|
+
const { display, type } = this.formatEntry(key, raw);
|
|
45
|
+
return [{ path: pathParts.slice(0, -1).join(' › '), key, rawValue: raw, displayValue: display, type }];
|
|
46
|
+
}
|
|
47
|
+
if (Array.isArray(obj)) {
|
|
48
|
+
return obj.flatMap((item, i) => this.flatten(item, [...pathParts, `[${i}]`]));
|
|
49
|
+
}
|
|
50
|
+
return Object.entries(obj).flatMap(([k, v]) => this.flatten(v, [...pathParts, k]));
|
|
51
|
+
}
|
|
52
|
+
formatEntry(key, raw) {
|
|
53
|
+
if (/minutes|duration/i.test(key)) {
|
|
54
|
+
const n = Number(raw);
|
|
55
|
+
if (!isNaN(n) && raw !== '') {
|
|
56
|
+
return { display: `${Math.floor(n / 60)}h ${n % 60}m`, type: 'duration' };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/.test(raw)) {
|
|
60
|
+
try {
|
|
61
|
+
return { display: new Date(raw).toLocaleString('en-GB', { day: '2-digit', month: 'short', year: 'numeric', hour: '2-digit', minute: '2-digit' }), type: 'date' };
|
|
62
|
+
}
|
|
63
|
+
catch { /* fall through */ }
|
|
64
|
+
}
|
|
65
|
+
if (/^\d{4}-\d{2}-\d{2}$/.test(raw)) {
|
|
66
|
+
try {
|
|
67
|
+
return { display: new Date(raw + 'T00:00:00').toLocaleDateString('en-GB', { day: '2-digit', month: 'short', year: 'numeric' }), type: 'date' };
|
|
68
|
+
}
|
|
69
|
+
catch { /* fall through */ }
|
|
70
|
+
}
|
|
71
|
+
if (raw === 'true' || raw === 'false')
|
|
72
|
+
return { display: raw, type: 'bool' };
|
|
73
|
+
if (raw !== '' && !isNaN(Number(raw)))
|
|
74
|
+
return { display: raw, type: 'number' };
|
|
75
|
+
return { display: raw, type: 'text' };
|
|
76
|
+
}
|
|
77
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdDataSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
78
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SbdDataSearchComponent, isStandalone: true, selector: "app-sbd-data-search", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"sbd-data-search\">\n <div class=\"sbd-data-search__input-wrap\">\n <i class=\"pi pi-search sbd-data-search__icon\"></i>\n <input pInputText class=\"sbd-data-search__input\"\n placeholder=\"Search any field or value from this booking\u2026\"\n [ngModel]=\"query()\" (ngModelChange)=\"query.set($event)\" />\n @if (query().length >= 2) {\n <span class=\"sbd-data-search__count\">{{ totalCount() }} match{{ totalCount() !== 1 ? 'es' : '' }}</span>\n }\n </div>\n\n @if (query().length >= 2 && results().length > 0) {\n <div class=\"sbd-data-search__results\">\n @for (entry of results(); track entry.path + entry.key) {\n <div class=\"sbd-data-search__result\">\n <div class=\"sbd-data-search__result-left\">\n <div class=\"sbd-data-search__result-path\">\n @if (entry.path) { <span class=\"sbd-data-search__result-pathtext\">{{ entry.path }} \u203A</span> }\n <span class=\"sbd-data-search__result-key\">{{ entry.key }}</span>\n </div>\n </div>\n <div class=\"sbd-data-search__result-right\">\n <span class=\"sbd-data-search__type-badge sbd-data-search__type-badge--{{ entry.type }}\">{{ entry.type }}</span>\n <span class=\"sbd-data-search__result-value\">{{ entry.displayValue }}</span>\n </div>\n </div>\n }\n @if (totalCount() > 50) {\n <div class=\"sbd-data-search__more\">+{{ totalCount() - 50 }} more \u2014 refine your search</div>\n }\n </div>\n }\n\n @if (query().length >= 2 && results().length === 0) {\n <div class=\"sbd-data-search__empty\">\n <i class=\"pi pi-inbox\"></i> No fields or values match \"{{ query() }}\"\n </div>\n }\n</div>\n", styles: [".sbd-data-search{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.sbd-data-search__input-wrap{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid transparent;transition:border-color .15s}.sbd-data-search__input-wrap:focus-within{border-bottom-color:#e2e8f0}.sbd-data-search__icon{color:#94a3b8;font-size:15px;flex-shrink:0}.sbd-data-search__input{flex:1;border:none!important;outline:none!important;box-shadow:none!important;padding:0!important;font-size:14px;background:transparent!important;color:#1e2e4a}.sbd-data-search__input::placeholder{color:#94a3b8}.sbd-data-search__count{font-size:12px;font-weight:600;color:#6366f1;background:#eef2ff;padding:2px 8px;border-radius:10px;white-space:nowrap}.sbd-data-search__results{max-height:320px;overflow-y:auto}.sbd-data-search__result{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 16px;border-bottom:1px solid #f1f5f9;cursor:default;transition:background .1s}.sbd-data-search__result:last-child{border-bottom:none}.sbd-data-search__result:hover{background:#f8fafc}.sbd-data-search__result-left{min-width:0;flex:1;overflow:hidden}.sbd-data-search__result-right{display:flex;align-items:center;gap:8px;flex-shrink:0;max-width:55%}.sbd-data-search__result-path{font-size:11px;color:#94a3b8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sbd-data-search__result-pathtext{color:#cbd5e1}.sbd-data-search__result-key{font-weight:600;color:#475569}.sbd-data-search__result-value{font-size:13px;font-weight:600;color:#1e2e4a;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:monospace}.sbd-data-search__type-badge{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 6px;border-radius:4px;white-space:nowrap;flex-shrink:0}.sbd-data-search__type-badge--date{background:#eff6ff;color:#3b82f6}.sbd-data-search__type-badge--duration{background:#fff7ed;color:#f97316}.sbd-data-search__type-badge--bool{background:#f0fdf4;color:#22c55e}.sbd-data-search__type-badge--number{background:#faf5ff;color:#a855f7}.sbd-data-search__type-badge--text{background:#f8fafc;color:#64748b}.sbd-data-search__more{padding:10px 16px;font-size:12px;color:#94a3b8;text-align:center;font-style:italic}.sbd-data-search__empty{display:flex;align-items:center;gap:8px;padding:16px;font-size:13px;color:#94a3b8}.sbd-data-search__empty .pi{font-size:16px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i2.InputText, selector: "[pInputText]" }] }); }
|
|
79
|
+
}
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdDataSearchComponent, decorators: [{
|
|
81
|
+
type: Component,
|
|
82
|
+
args: [{ selector: 'app-sbd-data-search', standalone: true, imports: [FormsModule, InputTextModule], template: "<div class=\"sbd-data-search\">\n <div class=\"sbd-data-search__input-wrap\">\n <i class=\"pi pi-search sbd-data-search__icon\"></i>\n <input pInputText class=\"sbd-data-search__input\"\n placeholder=\"Search any field or value from this booking\u2026\"\n [ngModel]=\"query()\" (ngModelChange)=\"query.set($event)\" />\n @if (query().length >= 2) {\n <span class=\"sbd-data-search__count\">{{ totalCount() }} match{{ totalCount() !== 1 ? 'es' : '' }}</span>\n }\n </div>\n\n @if (query().length >= 2 && results().length > 0) {\n <div class=\"sbd-data-search__results\">\n @for (entry of results(); track entry.path + entry.key) {\n <div class=\"sbd-data-search__result\">\n <div class=\"sbd-data-search__result-left\">\n <div class=\"sbd-data-search__result-path\">\n @if (entry.path) { <span class=\"sbd-data-search__result-pathtext\">{{ entry.path }} \u203A</span> }\n <span class=\"sbd-data-search__result-key\">{{ entry.key }}</span>\n </div>\n </div>\n <div class=\"sbd-data-search__result-right\">\n <span class=\"sbd-data-search__type-badge sbd-data-search__type-badge--{{ entry.type }}\">{{ entry.type }}</span>\n <span class=\"sbd-data-search__result-value\">{{ entry.displayValue }}</span>\n </div>\n </div>\n }\n @if (totalCount() > 50) {\n <div class=\"sbd-data-search__more\">+{{ totalCount() - 50 }} more \u2014 refine your search</div>\n }\n </div>\n }\n\n @if (query().length >= 2 && results().length === 0) {\n <div class=\"sbd-data-search__empty\">\n <i class=\"pi pi-inbox\"></i> No fields or values match \"{{ query() }}\"\n </div>\n }\n</div>\n", styles: [".sbd-data-search{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.sbd-data-search__input-wrap{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid transparent;transition:border-color .15s}.sbd-data-search__input-wrap:focus-within{border-bottom-color:#e2e8f0}.sbd-data-search__icon{color:#94a3b8;font-size:15px;flex-shrink:0}.sbd-data-search__input{flex:1;border:none!important;outline:none!important;box-shadow:none!important;padding:0!important;font-size:14px;background:transparent!important;color:#1e2e4a}.sbd-data-search__input::placeholder{color:#94a3b8}.sbd-data-search__count{font-size:12px;font-weight:600;color:#6366f1;background:#eef2ff;padding:2px 8px;border-radius:10px;white-space:nowrap}.sbd-data-search__results{max-height:320px;overflow-y:auto}.sbd-data-search__result{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 16px;border-bottom:1px solid #f1f5f9;cursor:default;transition:background .1s}.sbd-data-search__result:last-child{border-bottom:none}.sbd-data-search__result:hover{background:#f8fafc}.sbd-data-search__result-left{min-width:0;flex:1;overflow:hidden}.sbd-data-search__result-right{display:flex;align-items:center;gap:8px;flex-shrink:0;max-width:55%}.sbd-data-search__result-path{font-size:11px;color:#94a3b8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sbd-data-search__result-pathtext{color:#cbd5e1}.sbd-data-search__result-key{font-weight:600;color:#475569}.sbd-data-search__result-value{font-size:13px;font-weight:600;color:#1e2e4a;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:monospace}.sbd-data-search__type-badge{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 6px;border-radius:4px;white-space:nowrap;flex-shrink:0}.sbd-data-search__type-badge--date{background:#eff6ff;color:#3b82f6}.sbd-data-search__type-badge--duration{background:#fff7ed;color:#f97316}.sbd-data-search__type-badge--bool{background:#f0fdf4;color:#22c55e}.sbd-data-search__type-badge--number{background:#faf5ff;color:#a855f7}.sbd-data-search__type-badge--text{background:#f8fafc;color:#64748b}.sbd-data-search__more{padding:10px 16px;font-size:12px;color:#94a3b8;text-align:center;font-style:italic}.sbd-data-search__empty{display:flex;align-items:center;gap:8px;padding:16px;font-size:13px;color:#94a3b8}.sbd-data-search__empty .pi{font-size:16px}\n"] }]
|
|
83
|
+
}] });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtc2VhcmNoL2RhdGEtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXNlYXJjaC9kYXRhLXNlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFtQnBELE1BQU0sT0FBTyxzQkFBc0I7SUFQbkM7UUFRRSw4REFBOEQ7UUFDOUQsU0FBSSxHQUFHLEtBQUssQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUN4QixVQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRVgsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFnQixFQUFFO1lBQzlDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDO1lBQzFDLElBQUksQ0FBQyxDQUFDO2dCQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUVILFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBZ0IsRUFBRTtZQUNuQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxF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QUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2pKLENBQUM7WUFBQyxNQUFNLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLE9BQU87WUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDN0UsSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDeEMsQ0FBQzsrR0FwRVUsc0JBQXNCO21HQUF0QixzQkFBc0IsZ05DckJuQyxvdURBdUNBLHM4RUR0QlksV0FBVyw4bUJBQUUsZUFBZTs7NEZBSTNCLHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuXG50eXBlIEVudHJ5VHlwZSA9ICdkYXRlJyB8ICdkdXJhdGlvbicgfCAnYm9vbCcgfCAnbnVtYmVyJyB8ICd0ZXh0JztcblxuaW50ZXJmYWNlIEZsYXRFbnRyeSB7XG4gIHBhdGg6IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG4gIHJhd1ZhbHVlOiBzdHJpbmc7XG4gIGRpc3BsYXlWYWx1ZTogc3RyaW5nO1xuICB0eXBlOiBFbnRyeVR5cGU7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zYmQtZGF0YS1zZWFyY2gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIElucHV0VGV4dE1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRhLXNlYXJjaC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFNiZERhdGFTZWFyY2hDb21wb25lbnQge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBkYXRhID0gaW5wdXQ8YW55PihudWxsKTtcbiAgcXVlcnkgPSBzaWduYWwoJycpO1xuXG4gIHByaXZhdGUgYWxsRW50cmllcyA9IGNvbXB1dGVkKCgpOiBGbGF0RW50cnlbXSA9PiB7XG4gICAgY29uc3QgZCA9IHRoaXMuZGF0YSgpPy5kYXRhPy5ib29raW5nX2luZm87XG4gICAgaWYgKCFkKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHRoaXMuZmxhdHRlbihkKTtcbiAgfSk7XG5cbiAgcmVzdWx0cyA9IGNvbXB1dGVkKCgpOiBGbGF0RW50cnlbXSA9PiB7XG4gICAgY29uc3QgcSA9IHRoaXMucXVlcnkoKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAocS5sZW5ndGggPCAyKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHRoaXMuYWxsRW50cmllcygpXG4gICAgICAuZmlsdGVyKGUgPT5cbiAgICAgICAgZS5rZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKSB8fFxuICAgICAgICBlLnJhd1ZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkgfHxcbiAgICAgICAgZS5kaXNwbGF5VmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKVxuICAgICAgKVxuICAgICAgLnNsaWNlKDAsIDUwKTtcbiAgfSk7XG5cbiAgdG90YWxDb3VudCA9IGNvbXB1dGVkKCgpOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IHEgPSB0aGlzLnF1ZXJ5KCkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHEubGVuZ3RoIDwgMikgcmV0dXJuIDA7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW50cmllcygpLmZpbHRlcihlID0+XG4gICAgICBlLmtleS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpIHx8XG4gICAgICBlLnJhd1ZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkgfHxcbiAgICAgIGUuZGlzcGxheVZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSlcbiAgICApLmxlbmd0aDtcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcHJpdmF0ZSBmbGF0dGVuKG9iajogYW55LCBwYXRoUGFydHM6IHN0cmluZ1tdID0gW10pOiBGbGF0RW50cnlbXSB7XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZCkgcmV0dXJuIFtdO1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgcmF3ID0gU3RyaW5nKG9iaik7XG4gICAgICBjb25zdCBrZXkgPSBwYXRoUGFydHNbcGF0aFBhcnRzLmxlbmd0aCAtIDFdID8/ICcnO1xuICAgICAgY29uc3QgeyBkaXNwbGF5LCB0eXBlIH0gPSB0aGlzLmZvcm1hdEVudHJ5KGtleSwgcmF3KTtcbiAgICAgIHJldHVybiBbeyBwYXRoOiBwYXRoUGFydHMuc2xpY2UoMCwgLTEpLmpvaW4oJyDigLogJyksIGtleSwgcmF3VmFsdWU6IHJhdywgZGlzcGxheVZhbHVlOiBkaXNwbGF5LCB0eXBlIH1dO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICByZXR1cm4gb2JqLmZsYXRNYXAoKGl0ZW0sIGkpID0+IHRoaXMuZmxhdHRlbihpdGVtLCBbLi4ucGF0aFBhcnRzLCBgWyR7aX1dYF0pKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iaikuZmxhdE1hcCgoW2ssIHZdKSA9PiB0aGlzLmZsYXR0ZW4odiwgWy4uLnBhdGhQYXJ0cywga10pKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0RW50cnkoa2V5OiBzdHJpbmcsIHJhdzogc3RyaW5nKTogeyBkaXNwbGF5OiBzdHJpbmc7IHR5cGU6IEVudHJ5VHlwZSB9IHtcbiAgICBpZiAoL21pbnV0ZXN8ZHVyYXRpb24vaS50ZXN0KGtleSkpIHtcbiAgICAgIGNvbnN0IG4gPSBOdW1iZXIocmF3KTtcbiAgICAgIGlmICghaXNOYU4obikgJiYgcmF3ICE9PSAnJykge1xuICAgICAgICByZXR1cm4geyBkaXNwbGF5OiBgJHtNYXRoLmZsb29yKG4gLyA2MCl9aCAke24gJSA2MH1tYCwgdHlwZTogJ2R1cmF0aW9uJyB9O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9Ly50ZXN0KHJhdykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB7IGRpc3BsYXk6IG5ldyBEYXRlKHJhdykudG9Mb2NhbGVTdHJpbmcoJ2VuLUdCJywgeyBkYXk6ICcyLWRpZ2l0JywgbW9udGg6ICdzaG9ydCcsIHllYXI6ICdudW1lcmljJywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KSwgdHlwZTogJ2RhdGUnIH07XG4gICAgICB9IGNhdGNoIHsgLyogZmFsbCB0aHJvdWdoICovIH1cbiAgICB9XG4gICAgaWYgKC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kLy50ZXN0KHJhdykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB7IGRpc3BsYXk6IG5ldyBEYXRlKHJhdyArICdUMDA6MDA6MDAnKS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUdCJywgeyBkYXk6ICcyLWRpZ2l0JywgbW9udGg6ICdzaG9ydCcsIHllYXI6ICdudW1lcmljJyB9KSwgdHlwZTogJ2RhdGUnIH07XG4gICAgICB9IGNhdGNoIHsgLyogZmFsbCB0aHJvdWdoICovIH1cbiAgICB9XG4gICAgaWYgKHJhdyA9PT0gJ3RydWUnIHx8IHJhdyA9PT0gJ2ZhbHNlJykgcmV0dXJuIHsgZGlzcGxheTogcmF3LCB0eXBlOiAnYm9vbCcgfTtcbiAgICBpZiAocmF3ICE9PSAnJyAmJiAhaXNOYU4oTnVtYmVyKHJhdykpKSByZXR1cm4geyBkaXNwbGF5OiByYXcsIHR5cGU6ICdudW1iZXInIH07XG4gICAgcmV0dXJuIHsgZGlzcGxheTogcmF3LCB0eXBlOiAndGV4dCcgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNiZC1kYXRhLXNlYXJjaFwiPlxuICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19pbnB1dC13cmFwXCI+XG4gICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2ggc2JkLWRhdGEtc2VhcmNoX19pY29uXCI+PC9pPlxuICAgIDxpbnB1dCBwSW5wdXRUZXh0IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19pbnB1dFwiXG4gICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBhbnkgZmllbGQgb3IgdmFsdWUgZnJvbSB0aGlzIGJvb2tpbmfigKZcIlxuICAgICAgW25nTW9kZWxdPVwicXVlcnkoKVwiIChuZ01vZGVsQ2hhbmdlKT1cInF1ZXJ5LnNldCgkZXZlbnQpXCIgLz5cbiAgICBAaWYgKHF1ZXJ5KCkubGVuZ3RoID49IDIpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19jb3VudFwiPnt7IHRvdGFsQ291bnQoKSB9fSBtYXRjaHt7IHRvdGFsQ291bnQoKSAhPT0gMSA/ICdlcycgOiAnJyB9fTwvc3Bhbj5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIEBpZiAocXVlcnkoKS5sZW5ndGggPj0gMiAmJiByZXN1bHRzKCkubGVuZ3RoID4gMCkge1xuICAgIDxkaXYgY2xhc3M9XCJzYmQtZGF0YS1zZWFyY2hfX3Jlc3VsdHNcIj5cbiAgICAgIEBmb3IgKGVudHJ5IG9mIHJlc3VsdHMoKTsgdHJhY2sgZW50cnkucGF0aCArIGVudHJ5LmtleSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19yZXN1bHRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19yZXN1bHQtbGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1kYXRhLXNlYXJjaF9fcmVzdWx0LXBhdGhcIj5cbiAgICAgICAgICAgICAgQGlmIChlbnRyeS5wYXRoKSB7IDxzcGFuIGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19yZXN1bHQtcGF0aHRleHRcIj57eyBlbnRyeS5wYXRoIH19IOKAujwvc3Bhbj4gfVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1kYXRhLXNlYXJjaF9fcmVzdWx0LWtleVwiPnt7IGVudHJ5LmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtZGF0YS1zZWFyY2hfX3Jlc3VsdC1yaWdodFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtZGF0YS1zZWFyY2hfX3R5cGUtYmFkZ2Ugc2JkLWRhdGEtc2VhcmNoX190eXBlLWJhZGdlLS17eyBlbnRyeS50eXBlIH19XCI+e3sgZW50cnkudHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19yZXN1bHQtdmFsdWVcIj57eyBlbnRyeS5kaXNwbGF5VmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmICh0b3RhbENvdW50KCkgPiA1MCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19tb3JlXCI+K3t7IHRvdGFsQ291bnQoKSAtIDUwIH19IG1vcmUg4oCUIHJlZmluZSB5b3VyIHNlYXJjaDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG5cbiAgQGlmIChxdWVyeSgpLmxlbmd0aCA+PSAyICYmIHJlc3VsdHMoKS5sZW5ndGggPT09IDApIHtcbiAgICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19lbXB0eVwiPlxuICAgICAgPGkgY2xhc3M9XCJwaSBwaS1pbmJveFwiPjwvaT4gTm8gZmllbGRzIG9yIHZhbHVlcyBtYXRjaCBcInt7IHF1ZXJ5KCkgfX1cIlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Component, computed, input } from '@angular/core';
|
|
2
|
+
import { UpperCasePipe, LowerCasePipe } from '@angular/common';
|
|
3
|
+
import { TagModule } from 'primeng/tag';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class SbdFlightItineraryCardComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
|
+
this.data = input(null);
|
|
9
|
+
this.product = input.required();
|
|
10
|
+
this.verified = input(false);
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
+
this.bi = computed(() => this.data()?.data?.booking_info);
|
|
13
|
+
this.legs = computed(() => {
|
|
14
|
+
const d = this.bi();
|
|
15
|
+
if (!d)
|
|
16
|
+
return [];
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
|
+
return (d.leg_info ?? []).map((leg, i) => ({
|
|
19
|
+
direction: leg.LegDirectionality,
|
|
20
|
+
airlineName: (leg.LegAirlinesNames ?? []).join(', '),
|
|
21
|
+
cabin: leg.LegCabins?.[0]?.Name ?? '',
|
|
22
|
+
fareBrand: leg.fareBrand?.name ?? '',
|
|
23
|
+
from: leg.LegDepartureAirportCode,
|
|
24
|
+
to: leg.LegArrivalAirportCode,
|
|
25
|
+
depTime: leg.LegDepartureDateTime,
|
|
26
|
+
arrTime: leg.LegArrivalDateTime,
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
|
+
stops: (leg.Stops ?? []),
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30
|
+
segments: (d.airline_info?.[i]?.Segments ?? []),
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
|
+
durationSegments: (d.duration?.legs?.[i]?.Segments ?? []),
|
|
33
|
+
}));
|
|
34
|
+
});
|
|
35
|
+
this.passengers = computed(() =>
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
+
(this.bi()?.passenger_info?.passengers ?? []));
|
|
38
|
+
this.payment = computed(() => this.bi()?.payment_status);
|
|
39
|
+
this.typeLabel = { ADT: 'Adult', CNN: 'Child', INF: 'Infant' };
|
|
40
|
+
}
|
|
41
|
+
fmtTime(dt) {
|
|
42
|
+
if (!dt)
|
|
43
|
+
return '—';
|
|
44
|
+
try {
|
|
45
|
+
return new Date(dt).toLocaleTimeString('en-GB', { hour: '2-digit', minute: '2-digit' });
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return dt;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
fmtShortDate(dt) {
|
|
52
|
+
if (!dt)
|
|
53
|
+
return '—';
|
|
54
|
+
try {
|
|
55
|
+
return new Date(dt).toLocaleDateString('en-GB', { day: '2-digit', month: 'short' });
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return dt;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
fmtMins(mins) {
|
|
62
|
+
if (mins == null)
|
|
63
|
+
return '—';
|
|
64
|
+
return `${Math.floor(mins / 60)}h ${mins % 60}m`;
|
|
65
|
+
}
|
|
66
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdFlightItineraryCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
67
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SbdFlightItineraryCardComponent, isStandalone: true, selector: "app-sbd-flight-itinerary-card", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, product: { classPropertyName: "product", publicName: "product", isSignal: true, isRequired: true, transformFunction: null }, verified: { classPropertyName: "verified", publicName: "verified", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"fic\">\n @if (product() === 'flight') {\n\n <!-- \u2500\u2500 Verified pill \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (verified()) {\n <div class=\"fic__verified-bar\">\n <span class=\"fic__verified-pill\">\n <i class=\"pi pi-verified\"></i> Verified with Airlines\n </span>\n </div>\n }\n\n <!-- \u2500\u2500 Legs \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @for (leg of legs(); track leg.direction + $index; let li = $index) {\n <div class=\"fic__leg\" [class.fic__leg--return]=\"leg.direction === 'Return'\">\n\n <!-- Leg header -->\n <div class=\"fic__leg-header\">\n <div class=\"fic__leg-direction\">\n <i class=\"pi\" [class.pi-arrow-right]=\"leg.direction !== 'Return'\" [class.pi-arrow-left]=\"leg.direction === 'Return'\"></i>\n <span>{{ leg.direction }}</span>\n </div>\n <div class=\"fic__leg-chips\">\n @if (leg.cabin) {\n <span class=\"fic__chip fic__chip--cabin\">{{ leg.cabin }}</span>\n }\n @if (leg.fareBrand) {\n <span class=\"fic__chip fic__chip--fare\">{{ leg.fareBrand }}</span>\n }\n </div>\n </div>\n\n <!-- Airline row -->\n @if (leg.airlineName) {\n <div class=\"fic__airline\">\n <i class=\"pi pi-send\"></i>\n <span>{{ leg.airlineName }}</span>\n </div>\n }\n\n <!-- Route timeline -->\n <div class=\"fic__route\">\n\n <!-- Origin -->\n <div class=\"fic__airport\">\n <div class=\"fic__airport-code\">{{ leg.from }}</div>\n <div class=\"fic__airport-time\">{{ fmtTime(leg.depTime) }}</div>\n <div class=\"fic__airport-date\">{{ fmtShortDate(leg.depTime) }}</div>\n </div>\n\n <!-- Segments + stops -->\n <div class=\"fic__timeline\">\n\n <!-- Top row: all labels -->\n <div class=\"fic__tl-top\">\n @for (seg of leg.durationSegments; track seg.DepartureAirportCode; let si = $index) {\n <div class=\"fic__tl-seg\">\n <span class=\"fic__tl-flt\">{{ leg.segments[si]?.AirlineCode }}{{ leg.segments[si]?.FlightNumber }}</span>\n <span class=\"fic__tl-dur\">{{ fmtMins(seg.SegmentElapsedTimeMinutes) }}</span>\n </div>\n @if (si < leg.stops.length) {\n <div class=\"fic__tl-stop\">\n <span class=\"fic__stop-dot\"></span>\n <span class=\"fic__stop-code\">{{ leg.stops[si].StopAirport }}</span>\n <span class=\"fic__stop-sep\">\u00B7</span>\n <span class=\"fic__stop-dur\">{{ fmtMins(leg.stops[si].LayoverDuration) }}</span>\n </div>\n }\n }\n </div>\n\n <!-- Bottom row: single continuous line + one arrow -->\n <div class=\"fic__tl-track\">\n <div class=\"fic__tl-line\"></div>\n <i class=\"pi pi-send fic__tl-plane\"></i>\n </div>\n\n </div>\n\n <!-- Destination -->\n <div class=\"fic__airport fic__airport--right\">\n <div class=\"fic__airport-code\">{{ leg.to }}</div>\n <div class=\"fic__airport-time\">{{ fmtTime(leg.arrTime) }}</div>\n <div class=\"fic__airport-date\">{{ fmtShortDate(leg.arrTime) }}</div>\n </div>\n\n </div>\n </div>\n }\n\n <!-- \u2500\u2500 Passengers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (passengers().length > 0) {\n <div class=\"fic__section\">\n <div class=\"fic__section-label\">\n <i class=\"pi pi-users\"></i> Passengers\n <span class=\"fic__section-count\">{{ passengers().length }}</span>\n </div>\n <div class=\"fic__pax-list\">\n @for (p of passengers(); track p.passengerId) {\n <div class=\"fic__pax\">\n <div class=\"fic__pax-top\">\n <span class=\"fic__pax-badge fic__pax-badge--{{ p.type | lowercase }}\">{{ typeLabel[p.type] ?? p.type }}</span>\n <span class=\"fic__pax-name\">{{ p.name?.prefix }} {{ p.name?.givenName }} {{ p.name?.surName }}</span>\n </div>\n <div class=\"fic__pax-bottom\">\n @if (p.identity?.number) {\n <span class=\"fic__pax-doc\"><i class=\"pi pi-id-card\"></i> {{ p.identity?.number }}</span>\n }\n @if (p.email) {\n <span class=\"fic__pax-email\">{{ p.email }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- \u2500\u2500 Payment \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (payment()) {\n <div class=\"fic__payment\">\n <div class=\"fic__payment-main\">\n <i class=\"pi pi-credit-card fic__payment-icon\"></i>\n <span class=\"fic__payment-amount\">{{ payment()?.amount }} {{ payment()?.currency }}</span>\n <span class=\"fic__payment-status\" [class.fic__payment-status--ok]=\"payment()?.status?.key === 'SUCCESS'\">\n <i class=\"pi\" [class.pi-check-circle]=\"payment()?.status?.key === 'SUCCESS'\" [class.pi-clock]=\"payment()?.status?.key !== 'SUCCESS'\"></i>\n {{ payment()?.status?.name }}\n </span>\n </div>\n @if (payment()?.method || payment()?.date) {\n <div class=\"fic__payment-sub\">\n @if (payment()?.method) { <span>{{ payment()?.method }}</span> }\n @if (payment()?.method && payment()?.date) { <span class=\"fic__dot\">\u00B7</span> }\n @if (payment()?.date) { <span>{{ payment()?.date }}</span> }\n </div>\n }\n </div>\n }\n\n\n }\n</div>\n", styles: [".fic{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;font-family:inherit}.fic__leg{padding:16px 16px 18px;border-bottom:1px solid #e2e8f0}.fic__leg--return{background:#fafbff}.fic__leg-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.fic__leg-direction{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#1e2e4a}.fic__leg-direction .pi{font-size:10px;color:#475569}.fic__leg-chips{display:flex;gap:5px}.fic__chip{font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:12px;letter-spacing:.02em}.fic__chip--cabin{background:#eff6ff;color:#1d4ed8}.fic__chip--fare{background:#fef9c3;color:#854d0e}.fic__airline{display:flex;align-items:center;gap:5px;font-size:12px;color:#64748b;margin-bottom:14px}.fic__airline .pi{font-size:11px;color:#94a3b8;transform:rotate(45deg)}.fic__route{display:flex;align-items:flex-start;gap:0}.fic__airport{display:flex;flex-direction:column;align-items:flex-start;flex-shrink:0}.fic__airport--right{align-items:flex-end}.fic__airport-code{font-size:26px;font-weight:800;color:#1e2e4a;line-height:1}.fic__airport-time{font-size:13px;font-weight:600;color:#334155;margin-top:3px}.fic__airport-date{font-size:10.5px;color:#94a3b8;margin-top:1px}.fic__timeline{flex:1;display:flex;flex-direction:column;gap:4px;margin:0 4px}.fic__tl-top{display:flex;align-items:flex-end;gap:0}.fic__tl-seg{flex:1;display:flex;flex-direction:column;align-items:center;gap:1px}.fic__tl-flt{font-size:10px;font-weight:700;color:#1e2e4a;background:#f1f5f9;padding:1px 5px;border-radius:4px;white-space:nowrap}.fic__tl-dur{font-size:9.5px;color:#94a3b8;white-space:nowrap}.fic__tl-stop{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;padding:0 8px 1px}.fic__tl-track{display:flex;align-items:center;height:22px}.fic__tl-line{flex:1;height:2px;background:#cbd5e1}.fic__tl-plane{font-size:13px;color:#475569;transform:rotate(45deg);flex-shrink:0;margin-left:-2px}.fic__stop-dot{width:7px;height:7px;border-radius:50%;background:#94a3b8;flex-shrink:0}.fic__stop-code{font-size:11px;font-weight:700;color:#334155}.fic__stop-sep{font-size:11px;color:#cbd5e1}.fic__stop-dur{font-size:11px;font-weight:600;color:#f59e0b}.fic__section{padding:14px 16px;border-bottom:1px solid #e2e8f0}.fic__section-label{display:flex;align-items:center;gap:5px;font-size:10.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#64748b;margin-bottom:10px}.fic__section-label .pi{font-size:11px}.fic__section-count{margin-left:auto;background:#f1f5f9;color:#475569;font-size:10px;font-weight:700;padding:1px 6px;border-radius:10px}.fic__pax-list{display:flex;flex-direction:column;gap:8px}.fic__pax{background:#f8fafc;border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:5px}.fic__pax-top{display:flex;align-items:center;gap:7px}.fic__pax-badge{font-size:9.5px;font-weight:700;letter-spacing:.04em;padding:2px 7px;border-radius:10px;flex-shrink:0;text-transform:uppercase}.fic__pax-badge--adt{background:#dbeafe;color:#1d4ed8}.fic__pax-badge--cnn{background:#dcfce7;color:#15803d}.fic__pax-badge--inf{background:#fce7f3;color:#9d174d}.fic__pax-name{font-size:12.5px;font-weight:600;color:#1e2e4a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fic__pax-bottom{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.fic__pax-doc{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-family:monospace;color:#475569;background:#f1f5f9;padding:1px 6px;border-radius:4px}.fic__pax-doc .pi{font-size:10px}.fic__pax-email{font-size:11px;color:#94a3b8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}.fic__payment{padding:12px 16px;background:#f8fafc;display:flex;flex-direction:column;gap:4px}.fic__payment-main{display:flex;align-items:center;gap:8px}.fic__payment-icon{font-size:14px;color:#64748b}.fic__payment-amount{font-size:14px;font-weight:700;color:#1e2e4a}.fic__payment-status{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:600;color:#64748b;margin-left:auto}.fic__payment-status .pi{font-size:12px}.fic__payment-status--ok{color:#16a34a}.fic__payment-sub{display:flex;align-items:center;gap:6px;font-size:11.5px;color:#94a3b8;padding-left:22px}.fic__dot{color:#cbd5e1}.fic__verified-bar{display:flex;align-items:center;padding:8px 12px;background:#f0fdf4;border-bottom:1px solid #bbf7d0}.fic__verified-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px 3px 7px;background:#16a34a;color:#fff;font-size:11px;font-weight:700;border-radius:20px;letter-spacing:.02em}.fic__verified-pill .pi{font-size:12px}\n"], dependencies: [{ kind: "ngmodule", type: TagModule }, { kind: "pipe", type: LowerCasePipe, name: "lowercase" }] }); }
|
|
68
|
+
}
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdFlightItineraryCardComponent, decorators: [{
|
|
70
|
+
type: Component,
|
|
71
|
+
args: [{ selector: 'app-sbd-flight-itinerary-card', standalone: true, imports: [TagModule, UpperCasePipe, LowerCasePipe], template: "<div class=\"fic\">\n @if (product() === 'flight') {\n\n <!-- \u2500\u2500 Verified pill \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (verified()) {\n <div class=\"fic__verified-bar\">\n <span class=\"fic__verified-pill\">\n <i class=\"pi pi-verified\"></i> Verified with Airlines\n </span>\n </div>\n }\n\n <!-- \u2500\u2500 Legs \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @for (leg of legs(); track leg.direction + $index; let li = $index) {\n <div class=\"fic__leg\" [class.fic__leg--return]=\"leg.direction === 'Return'\">\n\n <!-- Leg header -->\n <div class=\"fic__leg-header\">\n <div class=\"fic__leg-direction\">\n <i class=\"pi\" [class.pi-arrow-right]=\"leg.direction !== 'Return'\" [class.pi-arrow-left]=\"leg.direction === 'Return'\"></i>\n <span>{{ leg.direction }}</span>\n </div>\n <div class=\"fic__leg-chips\">\n @if (leg.cabin) {\n <span class=\"fic__chip fic__chip--cabin\">{{ leg.cabin }}</span>\n }\n @if (leg.fareBrand) {\n <span class=\"fic__chip fic__chip--fare\">{{ leg.fareBrand }}</span>\n }\n </div>\n </div>\n\n <!-- Airline row -->\n @if (leg.airlineName) {\n <div class=\"fic__airline\">\n <i class=\"pi pi-send\"></i>\n <span>{{ leg.airlineName }}</span>\n </div>\n }\n\n <!-- Route timeline -->\n <div class=\"fic__route\">\n\n <!-- Origin -->\n <div class=\"fic__airport\">\n <div class=\"fic__airport-code\">{{ leg.from }}</div>\n <div class=\"fic__airport-time\">{{ fmtTime(leg.depTime) }}</div>\n <div class=\"fic__airport-date\">{{ fmtShortDate(leg.depTime) }}</div>\n </div>\n\n <!-- Segments + stops -->\n <div class=\"fic__timeline\">\n\n <!-- Top row: all labels -->\n <div class=\"fic__tl-top\">\n @for (seg of leg.durationSegments; track seg.DepartureAirportCode; let si = $index) {\n <div class=\"fic__tl-seg\">\n <span class=\"fic__tl-flt\">{{ leg.segments[si]?.AirlineCode }}{{ leg.segments[si]?.FlightNumber }}</span>\n <span class=\"fic__tl-dur\">{{ fmtMins(seg.SegmentElapsedTimeMinutes) }}</span>\n </div>\n @if (si < leg.stops.length) {\n <div class=\"fic__tl-stop\">\n <span class=\"fic__stop-dot\"></span>\n <span class=\"fic__stop-code\">{{ leg.stops[si].StopAirport }}</span>\n <span class=\"fic__stop-sep\">\u00B7</span>\n <span class=\"fic__stop-dur\">{{ fmtMins(leg.stops[si].LayoverDuration) }}</span>\n </div>\n }\n }\n </div>\n\n <!-- Bottom row: single continuous line + one arrow -->\n <div class=\"fic__tl-track\">\n <div class=\"fic__tl-line\"></div>\n <i class=\"pi pi-send fic__tl-plane\"></i>\n </div>\n\n </div>\n\n <!-- Destination -->\n <div class=\"fic__airport fic__airport--right\">\n <div class=\"fic__airport-code\">{{ leg.to }}</div>\n <div class=\"fic__airport-time\">{{ fmtTime(leg.arrTime) }}</div>\n <div class=\"fic__airport-date\">{{ fmtShortDate(leg.arrTime) }}</div>\n </div>\n\n </div>\n </div>\n }\n\n <!-- \u2500\u2500 Passengers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (passengers().length > 0) {\n <div class=\"fic__section\">\n <div class=\"fic__section-label\">\n <i class=\"pi pi-users\"></i> Passengers\n <span class=\"fic__section-count\">{{ passengers().length }}</span>\n </div>\n <div class=\"fic__pax-list\">\n @for (p of passengers(); track p.passengerId) {\n <div class=\"fic__pax\">\n <div class=\"fic__pax-top\">\n <span class=\"fic__pax-badge fic__pax-badge--{{ p.type | lowercase }}\">{{ typeLabel[p.type] ?? p.type }}</span>\n <span class=\"fic__pax-name\">{{ p.name?.prefix }} {{ p.name?.givenName }} {{ p.name?.surName }}</span>\n </div>\n <div class=\"fic__pax-bottom\">\n @if (p.identity?.number) {\n <span class=\"fic__pax-doc\"><i class=\"pi pi-id-card\"></i> {{ p.identity?.number }}</span>\n }\n @if (p.email) {\n <span class=\"fic__pax-email\">{{ p.email }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- \u2500\u2500 Payment \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (payment()) {\n <div class=\"fic__payment\">\n <div class=\"fic__payment-main\">\n <i class=\"pi pi-credit-card fic__payment-icon\"></i>\n <span class=\"fic__payment-amount\">{{ payment()?.amount }} {{ payment()?.currency }}</span>\n <span class=\"fic__payment-status\" [class.fic__payment-status--ok]=\"payment()?.status?.key === 'SUCCESS'\">\n <i class=\"pi\" [class.pi-check-circle]=\"payment()?.status?.key === 'SUCCESS'\" [class.pi-clock]=\"payment()?.status?.key !== 'SUCCESS'\"></i>\n {{ payment()?.status?.name }}\n </span>\n </div>\n @if (payment()?.method || payment()?.date) {\n <div class=\"fic__payment-sub\">\n @if (payment()?.method) { <span>{{ payment()?.method }}</span> }\n @if (payment()?.method && payment()?.date) { <span class=\"fic__dot\">\u00B7</span> }\n @if (payment()?.date) { <span>{{ payment()?.date }}</span> }\n </div>\n }\n </div>\n }\n\n\n }\n</div>\n", styles: [".fic{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;font-family:inherit}.fic__leg{padding:16px 16px 18px;border-bottom:1px solid #e2e8f0}.fic__leg--return{background:#fafbff}.fic__leg-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.fic__leg-direction{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#1e2e4a}.fic__leg-direction .pi{font-size:10px;color:#475569}.fic__leg-chips{display:flex;gap:5px}.fic__chip{font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:12px;letter-spacing:.02em}.fic__chip--cabin{background:#eff6ff;color:#1d4ed8}.fic__chip--fare{background:#fef9c3;color:#854d0e}.fic__airline{display:flex;align-items:center;gap:5px;font-size:12px;color:#64748b;margin-bottom:14px}.fic__airline .pi{font-size:11px;color:#94a3b8;transform:rotate(45deg)}.fic__route{display:flex;align-items:flex-start;gap:0}.fic__airport{display:flex;flex-direction:column;align-items:flex-start;flex-shrink:0}.fic__airport--right{align-items:flex-end}.fic__airport-code{font-size:26px;font-weight:800;color:#1e2e4a;line-height:1}.fic__airport-time{font-size:13px;font-weight:600;color:#334155;margin-top:3px}.fic__airport-date{font-size:10.5px;color:#94a3b8;margin-top:1px}.fic__timeline{flex:1;display:flex;flex-direction:column;gap:4px;margin:0 4px}.fic__tl-top{display:flex;align-items:flex-end;gap:0}.fic__tl-seg{flex:1;display:flex;flex-direction:column;align-items:center;gap:1px}.fic__tl-flt{font-size:10px;font-weight:700;color:#1e2e4a;background:#f1f5f9;padding:1px 5px;border-radius:4px;white-space:nowrap}.fic__tl-dur{font-size:9.5px;color:#94a3b8;white-space:nowrap}.fic__tl-stop{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;padding:0 8px 1px}.fic__tl-track{display:flex;align-items:center;height:22px}.fic__tl-line{flex:1;height:2px;background:#cbd5e1}.fic__tl-plane{font-size:13px;color:#475569;transform:rotate(45deg);flex-shrink:0;margin-left:-2px}.fic__stop-dot{width:7px;height:7px;border-radius:50%;background:#94a3b8;flex-shrink:0}.fic__stop-code{font-size:11px;font-weight:700;color:#334155}.fic__stop-sep{font-size:11px;color:#cbd5e1}.fic__stop-dur{font-size:11px;font-weight:600;color:#f59e0b}.fic__section{padding:14px 16px;border-bottom:1px solid #e2e8f0}.fic__section-label{display:flex;align-items:center;gap:5px;font-size:10.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#64748b;margin-bottom:10px}.fic__section-label .pi{font-size:11px}.fic__section-count{margin-left:auto;background:#f1f5f9;color:#475569;font-size:10px;font-weight:700;padding:1px 6px;border-radius:10px}.fic__pax-list{display:flex;flex-direction:column;gap:8px}.fic__pax{background:#f8fafc;border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:5px}.fic__pax-top{display:flex;align-items:center;gap:7px}.fic__pax-badge{font-size:9.5px;font-weight:700;letter-spacing:.04em;padding:2px 7px;border-radius:10px;flex-shrink:0;text-transform:uppercase}.fic__pax-badge--adt{background:#dbeafe;color:#1d4ed8}.fic__pax-badge--cnn{background:#dcfce7;color:#15803d}.fic__pax-badge--inf{background:#fce7f3;color:#9d174d}.fic__pax-name{font-size:12.5px;font-weight:600;color:#1e2e4a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fic__pax-bottom{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.fic__pax-doc{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-family:monospace;color:#475569;background:#f1f5f9;padding:1px 6px;border-radius:4px}.fic__pax-doc .pi{font-size:10px}.fic__pax-email{font-size:11px;color:#94a3b8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}.fic__payment{padding:12px 16px;background:#f8fafc;display:flex;flex-direction:column;gap:4px}.fic__payment-main{display:flex;align-items:center;gap:8px}.fic__payment-icon{font-size:14px;color:#64748b}.fic__payment-amount{font-size:14px;font-weight:700;color:#1e2e4a}.fic__payment-status{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:600;color:#64748b;margin-left:auto}.fic__payment-status .pi{font-size:12px}.fic__payment-status--ok{color:#16a34a}.fic__payment-sub{display:flex;align-items:center;gap:6px;font-size:11.5px;color:#94a3b8;padding-left:22px}.fic__dot{color:#cbd5e1}.fic__verified-bar{display:flex;align-items:center;padding:8px 12px;background:#f0fdf4;border-bottom:1px solid #bbf7d0}.fic__verified-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px 3px 7px;background:#16a34a;color:#fff;font-size:11px;font-weight:700;border-radius:20px;letter-spacing:.02em}.fic__verified-pill .pi{font-size:12px}\n"] }]
|
|
72
|
+
}] });
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxpZ2h0LWl0aW5lcmFyeS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9mbGlnaHQtaXRpbmVyYXJ5LWNhcmQvZmxpZ2h0LWl0aW5lcmFyeS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9mbGlnaHQtaXRpbmVyYXJ5LWNhcmQvZmxpZ2h0LWl0aW5lcmFyeS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBVXhDLE1BQU0sT0FBTywrQkFBK0I7SUFQNUM7UUFRRSw4REFBOEQ7UUFDOUQsU0FBSSxHQUFNLEtBQUssQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUMzQixZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBZSxDQUFDO1FBQ3hDLGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEIsOERBQThEO1FBQ3RELE9BQUUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU3RCxTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLENBQUM7Z0JBQUUsT0FBTyxFQUFFLENBQUM7WUFDbEIsOERBQThEO1lBQzlELE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RELFNBQVMsRUFBRSxHQUFHLENBQUMsaUJBQTJCO2dCQUMxQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDcEQsS0FBSyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksRUFBRTtnQkFDckMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BDLElBQUksRUFBRSxHQUFHLENBQUMsdUJBQWlDO2dCQUMzQyxFQUFFLEVBQUUsR0FBRyxDQUFDLHFCQUErQjtnQkFDdkMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxvQkFBOEI7Z0JBQzNDLE9BQU8sRUFBRSxHQUFHLENBQUMsa0JBQTRCO2dCQUN6Qyw4REFBOEQ7Z0JBQzlELEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFVO2dCQUNqQyw4REFBOEQ7Z0JBQzlELFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFVO2dCQUN4RCw4REFBOEQ7Z0JBQzlELGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFVO2FBQ25FLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFFSCxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN6Qiw4REFBOEQ7UUFDOUQsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQVUsQ0FDdkQsQ0FBQztRQUVGLFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRTNDLGNBQVMsR0FBMkIsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDO0tBa0I1RjtJQWhCQyxPQUFPLENBQUMsRUFBVTtRQUNoQixJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQztZQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDaEcsTUFBTSxDQUFDO1lBQUMsT0FBTyxFQUFFLENBQUM7UUFBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxZQUFZLENBQUMsRUFBVTtRQUNyQixJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQztZQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDNUYsTUFBTSxDQUFDO1lBQUMsT0FBTyxFQUFFLENBQUM7UUFBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNsQixJQUFJLElBQUksSUFBSSxJQUFJO1lBQUUsT0FBTyxHQUFHLENBQUM7UUFDN0IsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNuRCxDQUFDOytHQXZEVSwrQkFBK0I7bUdBQS9CLCtCQUErQix3ZENaNUMsODBNQThJQSw0bkpEdElZLFNBQVMsMEJBQWlCLGFBQWE7OzRGQUl0QywrQkFBK0I7a0JBUDNDLFNBQVM7K0JBQ0UsK0JBQStCLGNBQzdCLElBQUksV0FDUCxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVwcGVyQ2FzZVBpcGUsIExvd2VyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVGFnTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWcnO1xuaW1wb3J0IHsgUHJvZHVjdFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYm9va2luZy50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zYmQtZmxpZ2h0LWl0aW5lcmFyeS1jYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1RhZ01vZHVsZSwgVXBwZXJDYXNlUGlwZSwgTG93ZXJDYXNlUGlwZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9mbGlnaHQtaXRpbmVyYXJ5LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZmxpZ2h0LWl0aW5lcmFyeS1jYXJkLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgU2JkRmxpZ2h0SXRpbmVyYXJ5Q2FyZENvbXBvbmVudCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGRhdGEgICAgPSBpbnB1dDxhbnk+KG51bGwpO1xuICBwcm9kdWN0ID0gaW5wdXQucmVxdWlyZWQ8UHJvZHVjdFR5cGU+KCk7XG4gIHZlcmlmaWVkID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHByaXZhdGUgYmkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRhdGEoKT8uZGF0YT8uYm9va2luZ19pbmZvKTtcblxuICBsZWdzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGQgPSB0aGlzLmJpKCk7XG4gICAgaWYgKCFkKSByZXR1cm4gW107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICByZXR1cm4gKGQubGVnX2luZm8gPz8gW10pLm1hcCgobGVnOiBhbnksIGk6IG51bWJlcikgPT4gKHtcbiAgICAgIGRpcmVjdGlvbjogbGVnLkxlZ0RpcmVjdGlvbmFsaXR5IGFzIHN0cmluZyxcbiAgICAgIGFpcmxpbmVOYW1lOiAobGVnLkxlZ0FpcmxpbmVzTmFtZXMgPz8gW10pLmpvaW4oJywgJyksXG4gICAgICBjYWJpbjogbGVnLkxlZ0NhYmlucz8uWzBdPy5OYW1lID8/ICcnLFxuICAgICAgZmFyZUJyYW5kOiBsZWcuZmFyZUJyYW5kPy5uYW1lID8/ICcnLFxuICAgICAgZnJvbTogbGVnLkxlZ0RlcGFydHVyZUFpcnBvcnRDb2RlIGFzIHN0cmluZyxcbiAgICAgIHRvOiBsZWcuTGVnQXJyaXZhbEFpcnBvcnRDb2RlIGFzIHN0cmluZyxcbiAgICAgIGRlcFRpbWU6IGxlZy5MZWdEZXBhcnR1cmVEYXRlVGltZSBhcyBzdHJpbmcsXG4gICAgICBhcnJUaW1lOiBsZWcuTGVnQXJyaXZhbERhdGVUaW1lIGFzIHN0cmluZyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICBzdG9wczogKGxlZy5TdG9wcyA/PyBbXSkgYXMgYW55W10sXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgc2VnbWVudHM6IChkLmFpcmxpbmVfaW5mbz8uW2ldPy5TZWdtZW50cyA/PyBbXSkgYXMgYW55W10sXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgZHVyYXRpb25TZWdtZW50czogKGQuZHVyYXRpb24/LmxlZ3M/LltpXT8uU2VnbWVudHMgPz8gW10pIGFzIGFueVtdLFxuICAgIH0pKTtcbiAgfSk7XG5cbiAgcGFzc2VuZ2VycyA9IGNvbXB1dGVkKCgpID0+XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAodGhpcy5iaSgpPy5wYXNzZW5nZXJfaW5mbz8ucGFzc2VuZ2VycyA/PyBbXSkgYXMgYW55W11cbiAgKTtcblxuICBwYXltZW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5iaSgpPy5wYXltZW50X3N0YXR1cyk7XG5cbiAgcmVhZG9ubHkgdHlwZUxhYmVsOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBBRFQ6ICdBZHVsdCcsIENOTjogJ0NoaWxkJywgSU5GOiAnSW5mYW50JyB9O1xuXG4gIGZtdFRpbWUoZHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFkdCkgcmV0dXJuICfigJQnO1xuICAgIHRyeSB7IHJldHVybiBuZXcgRGF0ZShkdCkudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1HQicsIHsgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KTsgfVxuICAgIGNhdGNoIHsgcmV0dXJuIGR0OyB9XG4gIH1cblxuICBmbXRTaG9ydERhdGUoZHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFkdCkgcmV0dXJuICfigJQnO1xuICAgIHRyeSB7IHJldHVybiBuZXcgRGF0ZShkdCkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1HQicsIHsgZGF5OiAnMi1kaWdpdCcsIG1vbnRoOiAnc2hvcnQnIH0pOyB9XG4gICAgY2F0Y2ggeyByZXR1cm4gZHQ7IH1cbiAgfVxuXG4gIGZtdE1pbnMobWluczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAobWlucyA9PSBudWxsKSByZXR1cm4gJ+KAlCc7XG4gICAgcmV0dXJuIGAke01hdGguZmxvb3IobWlucyAvIDYwKX1oICR7bWlucyAlIDYwfW1gO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmljXCI+XG4gIEBpZiAocHJvZHVjdCgpID09PSAnZmxpZ2h0Jykge1xuXG4gICAgPCEtLSDilIDilIAgVmVyaWZpZWQgcGlsbCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgLS0+XG4gICAgQGlmICh2ZXJpZmllZCgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiZmljX192ZXJpZmllZC1iYXJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWNfX3ZlcmlmaWVkLXBpbGxcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXZlcmlmaWVkXCI+PC9pPiBWZXJpZmllZCB3aXRoIEFpcmxpbmVzXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0g4pSA4pSAIExlZ3Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIC0tPlxuICAgIEBmb3IgKGxlZyBvZiBsZWdzKCk7IHRyYWNrIGxlZy5kaXJlY3Rpb24gKyAkaW5kZXg7IGxldCBsaSA9ICRpbmRleCkge1xuICAgICAgPGRpdiBjbGFzcz1cImZpY19fbGVnXCIgW2NsYXNzLmZpY19fbGVnLS1yZXR1cm5dPVwibGVnLmRpcmVjdGlvbiA9PT0gJ1JldHVybidcIj5cblxuICAgICAgICA8IS0tIExlZyBoZWFkZXIgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWNfX2xlZy1oZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmljX19sZWctZGlyZWN0aW9uXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpXCIgW2NsYXNzLnBpLWFycm93LXJpZ2h0XT1cImxlZy5kaXJlY3Rpb24gIT09ICdSZXR1cm4nXCIgW2NsYXNzLnBpLWFycm93LWxlZnRdPVwibGVnLmRpcmVjdGlvbiA9PT0gJ1JldHVybidcIj48L2k+XG4gICAgICAgICAgICA8c3Bhbj57eyBsZWcuZGlyZWN0aW9uIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWNfX2xlZy1jaGlwc1wiPlxuICAgICAgICAgICAgQGlmIChsZWcuY2FiaW4pIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWNfX2NoaXAgZmljX19jaGlwLS1jYWJpblwiPnt7IGxlZy5jYWJpbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAobGVnLmZhcmVCcmFuZCkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpY19fY2hpcCBmaWNfX2NoaXAtLWZhcmVcIj57eyBsZWcuZmFyZUJyYW5kIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEFpcmxpbmUgcm93IC0tPlxuICAgICAgICBAaWYgKGxlZy5haXJsaW5lTmFtZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWNfX2FpcmxpbmVcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VuZFwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuPnt7IGxlZy5haXJsaW5lTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gUm91dGUgdGltZWxpbmUgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWNfX3JvdXRlXCI+XG5cbiAgICAgICAgICA8IS0tIE9yaWdpbiAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmljX19haXJwb3J0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmljX19haXJwb3J0LWNvZGVcIj57eyBsZWcuZnJvbSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpY19fYWlycG9ydC10aW1lXCI+e3sgZm10VGltZShsZWcuZGVwVGltZSkgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWNfX2FpcnBvcnQtZGF0ZVwiPnt7IGZtdFNob3J0RGF0ZShsZWcuZGVwVGltZSkgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gU2VnbWVudHMgKyBzdG9wcyAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmljX190aW1lbGluZVwiPlxuXG4gICAgICAgICAgICA8IS0tIFRvcCByb3c6IGFsbCBsYWJlbHMgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmljX190bC10b3BcIj5cbiAgICAgICAgICAgICAgQGZvciAoc2VnIG9mIGxlZy5kdXJhdGlvblNlZ21lbnRzOyB0cmFjayBzZWcuRGVwYXJ0dXJlQWlycG9ydENvZGU7IGxldCBzaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWNfX3RsLXNlZ1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWNfX3RsLWZsdFwiPnt7IGxlZy5zZWdtZW50c1tzaV0/LkFpcmxpbmVDb2RlIH19e3sgbGVnLnNlZ21lbnRzW3NpXT8uRmxpZ2h0TnVtYmVyIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWNfX3RsLWR1clwiPnt7IGZtdE1pbnMoc2VnLlNlZ21lbnRFbGFwc2VkVGltZU1pbnV0ZXMpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIEBpZiAoc2kgPCBsZWcuc3RvcHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmljX190bC1zdG9wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmljX19zdG9wLWRvdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWNfX3N0b3AtY29kZVwiPnt7IGxlZy5zdG9wc1tzaV0uU3RvcEFpcnBvcnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmljX19zdG9wLXNlcFwiPsK3PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpY19fc3RvcC1kdXJcIj57eyBmbXRNaW5zKGxlZy5zdG9wc1tzaV0uTGF5b3ZlckR1cmF0aW9uKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gQm90dG9tIHJvdzogc2luZ2xlIGNvbnRpbnVvdXMgbGluZSArIG9uZSBhcnJvdyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWNfX3RsLXRyYWNrXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWNfX3RsLWxpbmVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZW5kIGZpY19fdGwtcGxhbmVcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBEZXN0aW5hdGlvbiAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmljX19haXJwb3J0IGZpY19fYWlycG9ydC0tcmlnaHRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWNfX2FpcnBvcnQtY29kZVwiPnt7IGxlZy50byB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpY19fYWlycG9ydC10aW1lXCI+e3sgZm10VGltZShsZWcuYXJyVGltZSkgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWNfX2FpcnBvcnQtZGF0ZVwiPnt7IGZtdFNob3J0RGF0ZShsZWcuYXJyVGltZSkgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0g4pSA4pSAIFBhc3NlbmdlcnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIC0tPlxuICAgIEBpZiAocGFzc2VuZ2VycygpLmxlbmd0aCA+IDApIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWNfX3NlY3Rpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpY19fc2VjdGlvbi1sYWJlbFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktdXNlcnNcIj48L2k+IFBhc3NlbmdlcnNcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpY19fc2VjdGlvbi1jb3VudFwiPnt7IHBhc3NlbmdlcnMoKS5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmljX19wYXgtbGlzdFwiPlxuICAgICAgICAgIEBmb3IgKHAgb2YgcGFzc2VuZ2VycygpOyB0cmFjayBwLnBhc3NlbmdlcklkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmljX19wYXhcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpY19fcGF4LXRvcFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmljX19wYXgtYmFkZ2UgZmljX19wYXgtYmFkZ2UtLXt7IHAudHlwZSB8IGxvd2VyY2FzZSB9fVwiPnt7IHR5cGVMYWJlbFtwLnR5cGVdID8/IHAudHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpY19fcGF4LW5hbWVcIj57eyBwLm5hbWU/LnByZWZpeCB9fSB7eyBwLm5hbWU/LmdpdmVuTmFtZSB9fSB7eyBwLm5hbWU/LnN1ck5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmljX19wYXgtYm90dG9tXCI+XG4gICAgICAgICAgICAgICAgQGlmIChwLmlkZW50aXR5Py5udW1iZXIpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmljX19wYXgtZG9jXCI+PGkgY2xhc3M9XCJwaSBwaS1pZC1jYXJkXCI+PC9pPiB7eyBwLmlkZW50aXR5Py5udW1iZXIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAocC5lbWFpbCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWNfX3BheC1lbWFpbFwiPnt7IHAuZW1haWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8IS0tIOKUgOKUgCBQYXltZW50IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAtLT5cbiAgICBAaWYgKHBheW1lbnQoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImZpY19fcGF5bWVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmljX19wYXltZW50LW1haW5cIj5cbiAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWNyZWRpdC1jYXJkIGZpY19fcGF5bWVudC1pY29uXCI+PC9pPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmljX19wYXltZW50LWFtb3VudFwiPnt7IHBheW1lbnQoKT8uYW1vdW50IH19IHt7IHBheW1lbnQoKT8uY3VycmVuY3kgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWNfX3BheW1lbnQtc3RhdHVzXCIgW2NsYXNzLmZpY19fcGF5bWVudC1zdGF0dXMtLW9rXT1cInBheW1lbnQoKT8uc3RhdHVzPy5rZXkgPT09ICdTVUNDRVNTJ1wiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJwaVwiIFtjbGFzcy5waS1jaGVjay1jaXJjbGVdPVwicGF5bWVudCgpPy5zdGF0dXM/LmtleSA9PT0gJ1NVQ0NFU1MnXCIgW2NsYXNzLnBpLWNsb2NrXT1cInBheW1lbnQoKT8uc3RhdHVzPy5rZXkgIT09ICdTVUNDRVNTJ1wiPjwvaT5cbiAgICAgICAgICAgIHt7IHBheW1lbnQoKT8uc3RhdHVzPy5uYW1lIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChwYXltZW50KCk/Lm1ldGhvZCB8fCBwYXltZW50KCk/LmRhdGUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmljX19wYXltZW50LXN1YlwiPlxuICAgICAgICAgICAgQGlmIChwYXltZW50KCk/Lm1ldGhvZCkgeyA8c3Bhbj57eyBwYXltZW50KCk/Lm1ldGhvZCB9fTwvc3Bhbj4gfVxuICAgICAgICAgICAgQGlmIChwYXltZW50KCk/Lm1ldGhvZCAmJiBwYXltZW50KCk/LmRhdGUpIHsgPHNwYW4gY2xhc3M9XCJmaWNfX2RvdFwiPsK3PC9zcGFuPiB9XG4gICAgICAgICAgICBAaWYgKHBheW1lbnQoKT8uZGF0ZSkgeyA8c3Bhbj57eyBwYXltZW50KCk/LmRhdGUgfX08L3NwYW4+IH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuXG5cbiAgfVxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Component, input, output, inject } from '@angular/core';
|
|
2
|
+
import { trigger, transition, style, animate } from '@angular/animations';
|
|
3
|
+
import { SkeletonModule } from 'primeng/skeleton';
|
|
4
|
+
import { ButtonModule } from 'primeng/button';
|
|
5
|
+
import { SbdToastService } from '../../services/toast.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "primeng/skeleton";
|
|
8
|
+
export class SbdResultPanelComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.toast = inject(SbdToastService);
|
|
11
|
+
this.actionLabel = input('');
|
|
12
|
+
this.elapsedMs = input(0);
|
|
13
|
+
this.status = input('idle');
|
|
14
|
+
this.result = input(null);
|
|
15
|
+
this.feedbackGiven = output();
|
|
16
|
+
}
|
|
17
|
+
get elapsedSeconds() { return (this.elapsedMs() / 1000).toFixed(2); }
|
|
18
|
+
copy() {
|
|
19
|
+
const r = this.result();
|
|
20
|
+
if (!r)
|
|
21
|
+
return;
|
|
22
|
+
const lines = [r.title, r.subtitle ?? '', '', ...r.points.map(p => `${p.label}: ${p.value}`), r.callout ? `\nNote: ${r.callout.message}` : ''].filter(Boolean);
|
|
23
|
+
navigator.clipboard.writeText(lines.join('\n')).then(() => this.toast.success('Copied to clipboard'));
|
|
24
|
+
}
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdResultPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SbdResultPanelComponent, isStandalone: true, selector: "app-sbd-result-panel", inputs: { actionLabel: { classPropertyName: "actionLabel", publicName: "actionLabel", isSignal: true, isRequired: false, transformFunction: null }, elapsedMs: { classPropertyName: "elapsedMs", publicName: "elapsedMs", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, result: { classPropertyName: "result", publicName: "result", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { feedbackGiven: "feedbackGiven" }, ngImport: i0, template: "<div class=\"sbd-result-panel\">\n @if (status() === 'loading') {\n <div class=\"sbd-result-panel__loading\">\n <div class=\"sbd-result-panel__loading-header\">\n <p-skeleton width=\"200px\" height=\"18px\" /><p-skeleton width=\"80px\" height=\"18px\" />\n </div>\n <p-skeleton width=\"60%\" height=\"28px\" styleClass=\"mt-3 mb-2\" />\n <p-skeleton width=\"40%\" height=\"16px\" styleClass=\"mb-4\" />\n <div class=\"sbd-result-panel__loading-points\">\n @for (i of [1,2,3,4]; track i) {\n <div class=\"sbd-result-panel__loading-row\">\n <p-skeleton width=\"100px\" height=\"13px\" /><p-skeleton width=\"160px\" height=\"13px\" />\n </div>\n }\n </div>\n </div>\n }\n @if (status() === 'success' && result()) {\n <div @fadeInUp>\n <div class=\"sbd-result-panel__header\">\n <div class=\"sbd-result-panel__header-left\">\n <i class=\"pi pi-check-circle sbd-result-panel__check-icon\"></i>\n <span class=\"sbd-result-panel__header-label\">Result \u00B7 {{ actionLabel() }}</span>\n </div>\n <span class=\"sbd-result-panel__elapsed\">Found in {{ elapsedSeconds }}s</span>\n </div>\n <div class=\"sbd-result-panel__body\">\n <h2 class=\"sbd-result-panel__title\">{{ result()!.title }}</h2>\n @if (result()!.subtitle) { <p class=\"sbd-result-panel__subtitle\">{{ result()!.subtitle }}</p> }\n\n <!-- Sectioned layout (refund breakdown etc.) -->\n @if (result()!.sections?.length) {\n <div class=\"sbd-result-panel__sections\">\n @for (section of result()!.sections!; track section.title) {\n <div class=\"sbd-result-panel__section\">\n <div class=\"sbd-result-panel__section-title\">{{ section.title }}</div>\n @for (row of section.rows; track row.label) {\n @if (row.value) {\n <div class=\"sbd-result-panel__section-row\">\n <span class=\"sbd-result-panel__section-row-label\">{{ row.label }}</span>\n <span class=\"sbd-result-panel__section-row-value sbd-result-panel__section-row-value--{{ row.valueClass ?? 'neutral' }}\">{{ row.value }}</span>\n </div>\n } @else {\n <div class=\"sbd-result-panel__section-divider\">{{ row.label }}</div>\n }\n }\n </div>\n }\n </div>\n }\n\n <!-- Flat points layout (all other actions) -->\n @else if (result()!.points?.length) {\n <ul class=\"sbd-result-panel__points\">\n @for (point of result()!.points!; track point.label) {\n <li class=\"sbd-result-panel__point\">\n <span class=\"sbd-result-panel__point-label\">{{ point.label }}</span>\n <span class=\"sbd-result-panel__point-value\">{{ point.value }}</span>\n </li>\n }\n </ul>\n }\n\n @if (result()!.callout) {\n <div class=\"sbd-result-panel__callout sbd-result-panel__callout--{{ result()!.callout!.type }}\">\n <i class=\"pi pi-info-circle\"></i><span>{{ result()!.callout!.message }}</span>\n </div>\n }\n </div>\n <div class=\"sbd-result-panel__footer\">\n <div class=\"sbd-result-panel__feedback\">\n <span class=\"sbd-result-panel__feedback-label\">Helpful?</span>\n <button class=\"sbd-result-panel__feedback-btn sbd-result-panel__feedback-btn--up\" (click)=\"feedbackGiven.emit('up')\">\n <i class=\"pi pi-thumbs-up\"></i>\n </button>\n <button class=\"sbd-result-panel__feedback-btn sbd-result-panel__feedback-btn--down\" (click)=\"feedbackGiven.emit('down')\">\n <i class=\"pi pi-thumbs-down\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n @if (status() === 'error') {\n <div class=\"sbd-result-panel__error\" @fadeInUp>\n <i class=\"pi pi-exclamation-triangle\"></i><span>Could not load this information. Please try again.</span>\n </div>\n }\n @if (status() === 'idle') {\n <div class=\"sbd-result-panel__idle\">\n <i class=\"pi pi-arrow-up-left\"></i><span>Select an action above to see results here</span>\n </div>\n }\n</div>\n", styles: [".sbd-result-panel{background:#fff;border-radius:12px;border:1px solid #e2e8f0;overflow:hidden}.sbd-result-panel__loading{padding:20px}.sbd-result-panel__loading-header{display:flex;justify-content:space-between;margin-bottom:14px}.sbd-result-panel__loading-points{display:flex;flex-direction:column;gap:10px}.sbd-result-panel__loading-row{display:flex;gap:24px}.sbd-result-panel__header{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background:#00b67a12;border-bottom:1px solid rgba(0,182,122,.15)}.sbd-result-panel__header-left{display:flex;align-items:center;gap:8px}.sbd-result-panel__check-icon{color:#00b67a;font-size:15px}.sbd-result-panel__header-label{font-size:13px;font-weight:600;color:#1e2e4a}.sbd-result-panel__elapsed{font-size:11.5px;font-weight:600;color:#00b67a;background:#00b67a1a;border-radius:20px;padding:2px 10px}.sbd-result-panel__body{padding:20px}.sbd-result-panel__title{font-size:20px;font-weight:800;color:#1e2e4a;margin:0 0 4px}.sbd-result-panel__subtitle{font-size:13px;color:#94a3b8;margin:0 0 14px}.sbd-result-panel__points{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column}.sbd-result-panel__point{display:flex;align-items:baseline;gap:14px;padding:9px 0;border-bottom:1px solid #f1f5f9}.sbd-result-panel__point:last-child{border-bottom:none}.sbd-result-panel__point:before{content:\"\";width:6px;height:6px;border-radius:50%;background:#3b82f6;flex-shrink:0;margin-top:5px;align-self:flex-start}.sbd-result-panel__point-label{font-size:12px;color:#94a3b8;font-weight:500;width:140px;flex-shrink:0}.sbd-result-panel__point-value{font-size:13px;font-weight:600;color:#1e2e4a;flex:1}.sbd-result-panel__sections{display:flex;flex-direction:column;gap:14px;margin-bottom:14px}.sbd-result-panel__section{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.sbd-result-panel__section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b;background:#f8fafc;padding:7px 12px;border-bottom:1px solid #e2e8f0}.sbd-result-panel__section-row{display:flex;justify-content:space-between;align-items:center;padding:7px 12px;border-bottom:1px solid #f1f5f9;font-size:13px}.sbd-result-panel__section-row:last-child{border-bottom:none}.sbd-result-panel__section-row-label{color:#64748b;font-size:12.5px}.sbd-result-panel__section-row-value{font-weight:600;font-size:13px}.sbd-result-panel__section-row-value--positive{color:#16a34a}.sbd-result-panel__section-row-value--negative{color:#ef4444}.sbd-result-panel__section-row-value--neutral{color:#1e2e4a}.sbd-result-panel__section-divider{padding:5px 12px;font-size:10.5px;font-weight:700;letter-spacing:.05em;color:#94a3b8;background:#f8fafc;border-bottom:1px solid #f1f5f9;text-align:center}.sbd-result-panel__callout{display:flex;align-items:flex-start;gap:8px;padding:12px;border-radius:8px;font-size:12.5px;font-weight:500;border-left:3px solid #6366f1;background:#f8f9ff;color:#1e2e4a}.sbd-result-panel__callout--warning{border-left-color:#f97316;background:#f973160f}.sbd-result-panel__callout--tip{border-left-color:#0ea5e9;background:#0ea5e912}.sbd-result-panel__callout i{font-size:14px;margin-top:1px}.sbd-result-panel__footer{display:flex;align-items:center;justify-content:flex-end;padding:10px 20px;border-top:1px solid #f1f5f9;background:#f8fafc;gap:10px}.sbd-result-panel__feedback{display:flex;align-items:center;gap:6px}.sbd-result-panel__feedback-label{font-size:12px;color:#94a3b8;margin-right:2px}.sbd-result-panel__feedback-btn{background:none;border:1px solid #e2e8f0;border-radius:8px;width:34px;height:34px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s}.sbd-result-panel__feedback-btn .pi{font-size:14px;color:#94a3b8}.sbd-result-panel__feedback-btn:hover{border-color:#cbd5e1;background:#f1f5f9}.sbd-result-panel__feedback-btn:hover .pi{color:#475569}.sbd-result-panel__feedback-btn--up:hover{border-color:#86efac;background:#f0fdf4}.sbd-result-panel__feedback-btn--up:hover .pi{color:#16a34a}.sbd-result-panel__feedback-btn--down:hover{border-color:#fca5a5;background:#fef2f2}.sbd-result-panel__feedback-btn--down:hover .pi{color:#ef4444}.sbd-result-panel__error{display:flex;align-items:center;gap:8px;padding:24px;color:#ef4444;font-size:13.5px;font-weight:500}.sbd-result-panel__error i{font-size:18px}.sbd-result-panel__idle{display:flex;align-items:center;gap:8px;padding:24px;color:#94a3b8;font-size:13px}.sbd-result-panel__idle i{font-size:16px}\n"], dependencies: [{ kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "ngmodule", type: ButtonModule }], animations: [
|
|
27
|
+
trigger('fadeInUp', [
|
|
28
|
+
transition(':enter', [
|
|
29
|
+
style({ opacity: 0, transform: 'translateY(8px)' }),
|
|
30
|
+
animate('200ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),
|
|
31
|
+
]),
|
|
32
|
+
]),
|
|
33
|
+
] }); }
|
|
34
|
+
}
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdResultPanelComponent, decorators: [{
|
|
36
|
+
type: Component,
|
|
37
|
+
args: [{ selector: 'app-sbd-result-panel', standalone: true, imports: [SkeletonModule, ButtonModule], animations: [
|
|
38
|
+
trigger('fadeInUp', [
|
|
39
|
+
transition(':enter', [
|
|
40
|
+
style({ opacity: 0, transform: 'translateY(8px)' }),
|
|
41
|
+
animate('200ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),
|
|
42
|
+
]),
|
|
43
|
+
]),
|
|
44
|
+
], template: "<div class=\"sbd-result-panel\">\n @if (status() === 'loading') {\n <div class=\"sbd-result-panel__loading\">\n <div class=\"sbd-result-panel__loading-header\">\n <p-skeleton width=\"200px\" height=\"18px\" /><p-skeleton width=\"80px\" height=\"18px\" />\n </div>\n <p-skeleton width=\"60%\" height=\"28px\" styleClass=\"mt-3 mb-2\" />\n <p-skeleton width=\"40%\" height=\"16px\" styleClass=\"mb-4\" />\n <div class=\"sbd-result-panel__loading-points\">\n @for (i of [1,2,3,4]; track i) {\n <div class=\"sbd-result-panel__loading-row\">\n <p-skeleton width=\"100px\" height=\"13px\" /><p-skeleton width=\"160px\" height=\"13px\" />\n </div>\n }\n </div>\n </div>\n }\n @if (status() === 'success' && result()) {\n <div @fadeInUp>\n <div class=\"sbd-result-panel__header\">\n <div class=\"sbd-result-panel__header-left\">\n <i class=\"pi pi-check-circle sbd-result-panel__check-icon\"></i>\n <span class=\"sbd-result-panel__header-label\">Result \u00B7 {{ actionLabel() }}</span>\n </div>\n <span class=\"sbd-result-panel__elapsed\">Found in {{ elapsedSeconds }}s</span>\n </div>\n <div class=\"sbd-result-panel__body\">\n <h2 class=\"sbd-result-panel__title\">{{ result()!.title }}</h2>\n @if (result()!.subtitle) { <p class=\"sbd-result-panel__subtitle\">{{ result()!.subtitle }}</p> }\n\n <!-- Sectioned layout (refund breakdown etc.) -->\n @if (result()!.sections?.length) {\n <div class=\"sbd-result-panel__sections\">\n @for (section of result()!.sections!; track section.title) {\n <div class=\"sbd-result-panel__section\">\n <div class=\"sbd-result-panel__section-title\">{{ section.title }}</div>\n @for (row of section.rows; track row.label) {\n @if (row.value) {\n <div class=\"sbd-result-panel__section-row\">\n <span class=\"sbd-result-panel__section-row-label\">{{ row.label }}</span>\n <span class=\"sbd-result-panel__section-row-value sbd-result-panel__section-row-value--{{ row.valueClass ?? 'neutral' }}\">{{ row.value }}</span>\n </div>\n } @else {\n <div class=\"sbd-result-panel__section-divider\">{{ row.label }}</div>\n }\n }\n </div>\n }\n </div>\n }\n\n <!-- Flat points layout (all other actions) -->\n @else if (result()!.points?.length) {\n <ul class=\"sbd-result-panel__points\">\n @for (point of result()!.points!; track point.label) {\n <li class=\"sbd-result-panel__point\">\n <span class=\"sbd-result-panel__point-label\">{{ point.label }}</span>\n <span class=\"sbd-result-panel__point-value\">{{ point.value }}</span>\n </li>\n }\n </ul>\n }\n\n @if (result()!.callout) {\n <div class=\"sbd-result-panel__callout sbd-result-panel__callout--{{ result()!.callout!.type }}\">\n <i class=\"pi pi-info-circle\"></i><span>{{ result()!.callout!.message }}</span>\n </div>\n }\n </div>\n <div class=\"sbd-result-panel__footer\">\n <div class=\"sbd-result-panel__feedback\">\n <span class=\"sbd-result-panel__feedback-label\">Helpful?</span>\n <button class=\"sbd-result-panel__feedback-btn sbd-result-panel__feedback-btn--up\" (click)=\"feedbackGiven.emit('up')\">\n <i class=\"pi pi-thumbs-up\"></i>\n </button>\n <button class=\"sbd-result-panel__feedback-btn sbd-result-panel__feedback-btn--down\" (click)=\"feedbackGiven.emit('down')\">\n <i class=\"pi pi-thumbs-down\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n @if (status() === 'error') {\n <div class=\"sbd-result-panel__error\" @fadeInUp>\n <i class=\"pi pi-exclamation-triangle\"></i><span>Could not load this information. Please try again.</span>\n </div>\n }\n @if (status() === 'idle') {\n <div class=\"sbd-result-panel__idle\">\n <i class=\"pi pi-arrow-up-left\"></i><span>Select an action above to see results here</span>\n </div>\n }\n</div>\n", styles: [".sbd-result-panel{background:#fff;border-radius:12px;border:1px solid #e2e8f0;overflow:hidden}.sbd-result-panel__loading{padding:20px}.sbd-result-panel__loading-header{display:flex;justify-content:space-between;margin-bottom:14px}.sbd-result-panel__loading-points{display:flex;flex-direction:column;gap:10px}.sbd-result-panel__loading-row{display:flex;gap:24px}.sbd-result-panel__header{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background:#00b67a12;border-bottom:1px solid rgba(0,182,122,.15)}.sbd-result-panel__header-left{display:flex;align-items:center;gap:8px}.sbd-result-panel__check-icon{color:#00b67a;font-size:15px}.sbd-result-panel__header-label{font-size:13px;font-weight:600;color:#1e2e4a}.sbd-result-panel__elapsed{font-size:11.5px;font-weight:600;color:#00b67a;background:#00b67a1a;border-radius:20px;padding:2px 10px}.sbd-result-panel__body{padding:20px}.sbd-result-panel__title{font-size:20px;font-weight:800;color:#1e2e4a;margin:0 0 4px}.sbd-result-panel__subtitle{font-size:13px;color:#94a3b8;margin:0 0 14px}.sbd-result-panel__points{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column}.sbd-result-panel__point{display:flex;align-items:baseline;gap:14px;padding:9px 0;border-bottom:1px solid #f1f5f9}.sbd-result-panel__point:last-child{border-bottom:none}.sbd-result-panel__point:before{content:\"\";width:6px;height:6px;border-radius:50%;background:#3b82f6;flex-shrink:0;margin-top:5px;align-self:flex-start}.sbd-result-panel__point-label{font-size:12px;color:#94a3b8;font-weight:500;width:140px;flex-shrink:0}.sbd-result-panel__point-value{font-size:13px;font-weight:600;color:#1e2e4a;flex:1}.sbd-result-panel__sections{display:flex;flex-direction:column;gap:14px;margin-bottom:14px}.sbd-result-panel__section{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.sbd-result-panel__section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b;background:#f8fafc;padding:7px 12px;border-bottom:1px solid #e2e8f0}.sbd-result-panel__section-row{display:flex;justify-content:space-between;align-items:center;padding:7px 12px;border-bottom:1px solid #f1f5f9;font-size:13px}.sbd-result-panel__section-row:last-child{border-bottom:none}.sbd-result-panel__section-row-label{color:#64748b;font-size:12.5px}.sbd-result-panel__section-row-value{font-weight:600;font-size:13px}.sbd-result-panel__section-row-value--positive{color:#16a34a}.sbd-result-panel__section-row-value--negative{color:#ef4444}.sbd-result-panel__section-row-value--neutral{color:#1e2e4a}.sbd-result-panel__section-divider{padding:5px 12px;font-size:10.5px;font-weight:700;letter-spacing:.05em;color:#94a3b8;background:#f8fafc;border-bottom:1px solid #f1f5f9;text-align:center}.sbd-result-panel__callout{display:flex;align-items:flex-start;gap:8px;padding:12px;border-radius:8px;font-size:12.5px;font-weight:500;border-left:3px solid #6366f1;background:#f8f9ff;color:#1e2e4a}.sbd-result-panel__callout--warning{border-left-color:#f97316;background:#f973160f}.sbd-result-panel__callout--tip{border-left-color:#0ea5e9;background:#0ea5e912}.sbd-result-panel__callout i{font-size:14px;margin-top:1px}.sbd-result-panel__footer{display:flex;align-items:center;justify-content:flex-end;padding:10px 20px;border-top:1px solid #f1f5f9;background:#f8fafc;gap:10px}.sbd-result-panel__feedback{display:flex;align-items:center;gap:6px}.sbd-result-panel__feedback-label{font-size:12px;color:#94a3b8;margin-right:2px}.sbd-result-panel__feedback-btn{background:none;border:1px solid #e2e8f0;border-radius:8px;width:34px;height:34px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s}.sbd-result-panel__feedback-btn .pi{font-size:14px;color:#94a3b8}.sbd-result-panel__feedback-btn:hover{border-color:#cbd5e1;background:#f1f5f9}.sbd-result-panel__feedback-btn:hover .pi{color:#475569}.sbd-result-panel__feedback-btn--up:hover{border-color:#86efac;background:#f0fdf4}.sbd-result-panel__feedback-btn--up:hover .pi{color:#16a34a}.sbd-result-panel__feedback-btn--down:hover{border-color:#fca5a5;background:#fef2f2}.sbd-result-panel__feedback-btn--down:hover .pi{color:#ef4444}.sbd-result-panel__error{display:flex;align-items:center;gap:8px;padding:24px;color:#ef4444;font-size:13.5px;font-weight:500}.sbd-result-panel__error i{font-size:18px}.sbd-result-panel__idle{display:flex;align-items:center;gap:8px;padding:24px;color:#94a3b8;font-size:13px}.sbd-result-panel__idle i{font-size:16px}\n"] }]
|
|
45
|
+
}] });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9yZXN1bHQtcGFuZWwvcmVzdWx0LXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9yZXN1bHQtcGFuZWwvcmVzdWx0LXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFpQi9ELE1BQU0sT0FBTyx1QkFBdUI7SUFmcEM7UUFnQlUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV4QyxnQkFBVyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixjQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLFdBQU0sR0FBRyxLQUFLLENBQTJDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLFdBQU0sR0FBRyxLQUFLLENBQXVCLElBQUksQ0FBQyxDQUFDO1FBRTNDLGtCQUFhLEdBQUcsTUFBTSxFQUFpQixDQUFDO0tBVXpDO0lBUkMsSUFBSSxjQUFjLEtBQWEsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTdFLElBQUk7UUFDRixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9KLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7K0dBakJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDZvQkN0QnBDLG94SUE2RkEsKzhJRG5GWSxjQUFjLGtNQUFFLFlBQVksaUJBRzFCO1lBQ1YsT0FBTyxDQUFDLFVBQVUsRUFBRTtnQkFDbEIsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDbkIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztvQkFDbkQsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7aUJBQzdFLENBQUM7YUFDSCxDQUFDO1NBQ0g7OzRGQUVVLHVCQUF1QjtrQkFmbkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxjQUczQjt3QkFDVixPQUFPLENBQUMsVUFBVSxFQUFFOzRCQUNsQixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO2dDQUNuRCxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQzs2QkFDN0UsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRyaWdnZXIsIHRyYW5zaXRpb24sIHN0eWxlLCBhbmltYXRlIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2tlbGV0b24nO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgUmVzdWx0Q29udGVudCB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24udHlwZXMnO1xuaW1wb3J0IHsgU2JkVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zYmQtcmVzdWx0LXBhbmVsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1NrZWxldG9uTW9kdWxlLCBCdXR0b25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdWx0LXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Jlc3VsdC1wYW5lbC5jb21wb25lbnQuc2NzcycsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdmYWRlSW5VcCcsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDhweCknIH0pLFxuICAgICAgICBhbmltYXRlKCcyMDBtcyBlYXNlLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScgfSkpLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNiZFJlc3VsdFBhbmVsQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChTYmRUb2FzdFNlcnZpY2UpO1xuXG4gIGFjdGlvbkxhYmVsID0gaW5wdXQoJycpO1xuICBlbGFwc2VkTXMgPSBpbnB1dCgwKTtcbiAgc3RhdHVzID0gaW5wdXQ8J2lkbGUnIHwgJ2xvYWRpbmcnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJz4oJ2lkbGUnKTtcbiAgcmVzdWx0ID0gaW5wdXQ8UmVzdWx0Q29udGVudCB8IG51bGw+KG51bGwpO1xuXG4gIGZlZWRiYWNrR2l2ZW4gPSBvdXRwdXQ8J3VwJyB8ICdkb3duJz4oKTtcblxuICBnZXQgZWxhcHNlZFNlY29uZHMoKTogc3RyaW5nIHsgcmV0dXJuICh0aGlzLmVsYXBzZWRNcygpIC8gMTAwMCkudG9GaXhlZCgyKTsgfVxuXG4gIGNvcHkoKTogdm9pZCB7XG4gICAgY29uc3QgciA9IHRoaXMucmVzdWx0KCk7XG4gICAgaWYgKCFyKSByZXR1cm47XG4gICAgY29uc3QgbGluZXMgPSBbci50aXRsZSwgci5zdWJ0aXRsZSA/PyAnJywgJycsIC4uLnIucG9pbnRzLm1hcChwID0+IGAke3AubGFiZWx9OiAke3AudmFsdWV9YCksIHIuY2FsbG91dCA/IGBcXG5Ob3RlOiAke3IuY2FsbG91dC5tZXNzYWdlfWAgOiAnJ10uZmlsdGVyKEJvb2xlYW4pO1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGxpbmVzLmpvaW4oJ1xcbicpKS50aGVuKCgpID0+IHRoaXMudG9hc3Quc3VjY2VzcygnQ29waWVkIHRvIGNsaXBib2FyZCcpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNiZC1yZXN1bHQtcGFuZWxcIj5cbiAgQGlmIChzdGF0dXMoKSA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgPGRpdiBjbGFzcz1cInNiZC1yZXN1bHQtcGFuZWxfX2xvYWRpbmdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcmVzdWx0LXBhbmVsX19sb2FkaW5nLWhlYWRlclwiPlxuICAgICAgICA8cC1za2VsZXRvbiB3aWR0aD1cIjIwMHB4XCIgaGVpZ2h0PVwiMThweFwiIC8+PHAtc2tlbGV0b24gd2lkdGg9XCI4MHB4XCIgaGVpZ2h0PVwiMThweFwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxwLXNrZWxldG9uIHdpZHRoPVwiNjAlXCIgaGVpZ2h0PVwiMjhweFwiIHN0eWxlQ2xhc3M9XCJtdC0zIG1iLTJcIiAvPlxuICAgICAgPHAtc2tlbGV0b24gd2lkdGg9XCI0MCVcIiBoZWlnaHQ9XCIxNnB4XCIgc3R5bGVDbGFzcz1cIm1iLTRcIiAvPlxuICAgICAgPGRpdiBjbGFzcz1cInNiZC1yZXN1bHQtcGFuZWxfX2xvYWRpbmctcG9pbnRzXCI+XG4gICAgICAgIEBmb3IgKGkgb2YgWzEsMiwzLDRdOyB0cmFjayBpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1yZXN1bHQtcGFuZWxfX2xvYWRpbmctcm93XCI+XG4gICAgICAgICAgICA8cC1za2VsZXRvbiB3aWR0aD1cIjEwMHB4XCIgaGVpZ2h0PVwiMTNweFwiIC8+PHAtc2tlbGV0b24gd2lkdGg9XCIxNjBweFwiIGhlaWdodD1cIjEzcHhcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuICBAaWYgKHN0YXR1cygpID09PSAnc3VjY2VzcycgJiYgcmVzdWx0KCkpIHtcbiAgICA8ZGl2IEBmYWRlSW5VcD5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcmVzdWx0LXBhbmVsX19oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1yZXN1bHQtcGFuZWxfX2hlYWRlci1sZWZ0XCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1jaGVjay1jaXJjbGUgc2JkLXJlc3VsdC1wYW5lbF9fY2hlY2staWNvblwiPjwvaT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1yZXN1bHQtcGFuZWxfX2hlYWRlci1sYWJlbFwiPlJlc3VsdCDCtyB7eyBhY3Rpb25MYWJlbCgpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcmVzdWx0LXBhbmVsX19lbGFwc2VkXCI+Rm91bmQgaW4ge3sgZWxhcHNlZFNlY29uZHMgfX1zPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2JkLXJlc3VsdC1wYW5lbF9fYm9keVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJzYmQtcmVzdWx0LXBhbmVsX190aXRsZVwiPnt7IHJlc3VsdCgpIS50aXRsZSB9fTwvaDI+XG4gICAgICAgIEBpZiAocmVzdWx0KCkhLnN1YnRpdGxlKSB7IDxwIGNsYXNzPVwic2JkLXJlc3VsdC1wYW5lbF9fc3VidGl0bGVcIj57eyByZXN1bHQoKSEuc3VidGl0bGUgfX08L3A+IH1cblxuICAgICAgICA8IS0tIFNlY3Rpb25lZCBsYXlvdXQgKHJlZnVuZCBicmVha2Rvd24gZXRjLikgLS0+XG4gICAgICAgIEBpZiAocmVzdWx0KCkhLnNlY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXJlc3VsdC1wYW5lbF9fc2VjdGlvbnNcIj5cbiAgICAgICAgICAgIEBmb3IgKHNlY3Rpb24gb2YgcmVzdWx0KCkhLnNlY3Rpb25zITsgdHJhY2sgc2VjdGlvbi50aXRsZSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXJlc3VsdC1wYW5lbF9fc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcmVzdWx0LXBhbmVsX19zZWN0aW9uLXRpdGxlXCI+e3sgc2VjdGlvbi50aXRsZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIEBmb3IgKHJvdyBvZiBzZWN0aW9uLnJvd3M7IHRyYWNrIHJvdy5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgQGlmIChyb3cudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1yZXN1bHQtcGFuZWxfX3NlY3Rpb24tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcmVzdWx0LXBhbmVsX19zZWN0aW9uLXJvdy1sYWJlbFwiPnt7IHJvdy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1yZXN1bHQtcGFuZWxfX3NlY3Rpb24tcm93LXZhbHVlIHNiZC1yZXN1bHQtcGFuZWxfX3NlY3Rpb24tcm93LXZhbHVlLS17eyByb3cudmFsdWVDbGFzcyA/PyAnbmV1dHJhbCcgfX1cIj57eyByb3cudmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcmVzdWx0LXBhbmVsX19zZWN0aW9uLWRpdmlkZXJcIj57eyByb3cubGFiZWwgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBGbGF0IHBvaW50cyBsYXlvdXQgKGFsbCBvdGhlciBhY3Rpb25zKSAtLT5cbiAgICAgICAgQGVsc2UgaWYgKHJlc3VsdCgpIS5wb2ludHM/Lmxlbmd0aCkge1xuICAgICAgICAgIDx1bCBjbGFzcz1cInNiZC1yZXN1bHQtcGFuZWxfX3BvaW50c1wiPlxuICAgICAgICAgICAgQGZvciAocG9pbnQgb2YgcmVzdWx0KCkhLnBvaW50cyE7IHRyYWNrIHBvaW50LmxhYmVsKSB7XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cInNiZC1yZXN1bHQtcGFuZWxfX3BvaW50XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcmVzdWx0LXBhbmVsX19wb2ludC1sYWJlbFwiPnt7IHBvaW50LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXJlc3VsdC1wYW5lbF9fcG9pbnQtdmFsdWVcIj57eyBwb2ludC52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3VsPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChyZXN1bHQoKSEuY2FsbG91dCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcmVzdWx0LXBhbmVsX19jYWxsb3V0IHNiZC1yZXN1bHQtcGFuZWxfX2NhbGxvdXQtLXt7IHJlc3VsdCgpIS5jYWxsb3V0IS50eXBlIH19XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWluZm8tY2lyY2xlXCI+PC9pPjxzcGFuPnt7IHJlc3VsdCgpIS5jYWxsb3V0IS5tZXNzYWdlIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcmVzdWx0LXBhbmVsX19mb290ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1yZXN1bHQtcGFuZWxfX2ZlZWRiYWNrXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcmVzdWx0LXBhbmVsX19mZWVkYmFjay1sYWJlbFwiPkhlbHBmdWw/PC9zcGFuPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzYmQtcmVzdWx0LXBhbmVsX19mZWVkYmFjay1idG4gc2JkLXJlc3VsdC1wYW5lbF9fZmVlZGJhY2stYnRuLS11cFwiIChjbGljayk9XCJmZWVkYmFja0dpdmVuLmVtaXQoJ3VwJylcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktdGh1bWJzLXVwXCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzYmQtcmVzdWx0LXBhbmVsX19mZWVkYmFjay1idG4gc2JkLXJlc3VsdC1wYW5lbF9fZmVlZGJhY2stYnRuLS1kb3duXCIgKGNsaWNrKT1cImZlZWRiYWNrR2l2ZW4uZW1pdCgnZG93bicpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXRodW1icy1kb3duXCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAoc3RhdHVzKCkgPT09ICdlcnJvcicpIHtcbiAgICA8ZGl2IGNsYXNzPVwic2JkLXJlc3VsdC1wYW5lbF9fZXJyb3JcIiBAZmFkZUluVXA+XG4gICAgICA8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCI+PC9pPjxzcGFuPkNvdWxkIG5vdCBsb2FkIHRoaXMgaW5mb3JtYXRpb24uIFBsZWFzZSB0cnkgYWdhaW4uPC9zcGFuPlxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAoc3RhdHVzKCkgPT09ICdpZGxlJykge1xuICAgIDxkaXYgY2xhc3M9XCJzYmQtcmVzdWx0LXBhbmVsX19pZGxlXCI+XG4gICAgICA8aSBjbGFzcz1cInBpIHBpLWFycm93LXVwLWxlZnRcIj48L2k+PHNwYW4+U2VsZWN0IGFuIGFjdGlvbiBhYm92ZSB0byBzZWUgcmVzdWx0cyBoZXJlPC9zcGFuPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Component, input, output } from '@angular/core';
|
|
2
|
+
import { ButtonModule } from 'primeng/button';
|
|
3
|
+
import { TooltipModule } from 'primeng/tooltip';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "primeng/button";
|
|
6
|
+
import * as i2 from "primeng/tooltip";
|
|
7
|
+
export class SbdWorkflowActionsComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.bookingId = input.required();
|
|
10
|
+
this.cancelBooking = output();
|
|
11
|
+
}
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdWorkflowActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: SbdWorkflowActionsComponent, isStandalone: true, selector: "app-sbd-workflow-actions", inputs: { bookingId: { classPropertyName: "bookingId", publicName: "bookingId", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { cancelBooking: "cancelBooking" }, ngImport: i0, template: "<div class=\"sbd-workflow-actions\">\n <button pButton label=\"Cancel Booking\" icon=\"pi pi-times-circle\"\n class=\"p-button-danger p-button-outlined p-button-sm\"\n (click)=\"cancelBooking.emit()\">\n </button>\n\n <button pButton label=\"Send Ticket\" icon=\"pi pi-send\"\n class=\"p-button-outlined p-button-sm p-button-secondary\"\n [disabled]=\"true\"\n pTooltip=\"Coming soon\" tooltipPosition=\"bottom\">\n </button>\n\n <button pButton label=\"Flight Status\" icon=\"pi pi-chart-bar\"\n class=\"p-button-outlined p-button-sm p-button-secondary\"\n [disabled]=\"true\"\n pTooltip=\"Coming soon\" tooltipPosition=\"bottom\">\n </button>\n\n <button pButton label=\"Select Seat\" icon=\"pi pi-th-large\"\n class=\"p-button-outlined p-button-sm p-button-secondary\"\n [disabled]=\"true\"\n pTooltip=\"Coming soon\" tooltipPosition=\"bottom\">\n </button>\n\n <button pButton label=\"Add Baggage\" icon=\"pi pi-briefcase\"\n class=\"p-button-outlined p-button-sm p-button-secondary\"\n [disabled]=\"true\"\n pTooltip=\"Coming soon\" tooltipPosition=\"bottom\">\n </button>\n\n <button pButton label=\"Add Service\" icon=\"pi pi-plus-circle\"\n class=\"p-button-outlined p-button-sm p-button-secondary\"\n [disabled]=\"true\"\n pTooltip=\"Coming soon\" tooltipPosition=\"bottom\">\n </button>\n</div>\n", styles: [".sbd-workflow-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdWorkflowActionsComponent, decorators: [{
|
|
16
|
+
type: Component,
|
|
17
|
+
args: [{ selector: 'app-sbd-workflow-actions', standalone: true, imports: [ButtonModule, TooltipModule], template: "<div class=\"sbd-workflow-actions\">\n <button pButton label=\"Cancel Booking\" icon=\"pi pi-times-circle\"\n class=\"p-button-danger p-button-outlined p-button-sm\"\n (click)=\"cancelBooking.emit()\">\n </button>\n\n <button pButton label=\"Send Ticket\" icon=\"pi pi-send\"\n class=\"p-button-outlined p-button-sm p-button-secondary\"\n [disabled]=\"true\"\n pTooltip=\"Coming soon\" tooltipPosition=\"bottom\">\n </button>\n\n <button pButton label=\"Flight Status\" icon=\"pi pi-chart-bar\"\n class=\"p-button-outlined p-button-sm p-button-secondary\"\n [disabled]=\"true\"\n pTooltip=\"Coming soon\" tooltipPosition=\"bottom\">\n </button>\n\n <button pButton label=\"Select Seat\" icon=\"pi pi-th-large\"\n class=\"p-button-outlined p-button-sm p-button-secondary\"\n [disabled]=\"true\"\n pTooltip=\"Coming soon\" tooltipPosition=\"bottom\">\n </button>\n\n <button pButton label=\"Add Baggage\" icon=\"pi pi-briefcase\"\n class=\"p-button-outlined p-button-sm p-button-secondary\"\n [disabled]=\"true\"\n pTooltip=\"Coming soon\" tooltipPosition=\"bottom\">\n </button>\n\n <button pButton label=\"Add Service\" icon=\"pi pi-plus-circle\"\n class=\"p-button-outlined p-button-sm p-button-secondary\"\n [disabled]=\"true\"\n pTooltip=\"Coming soon\" tooltipPosition=\"bottom\">\n </button>\n</div>\n", styles: [".sbd-workflow-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}\n"] }]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvd29ya2Zsb3ctYWN0aW9ucy93b3JrZmxvdy1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy93b3JrZmxvdy1hY3Rpb25zL3dvcmtmbG93LWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFTaEQsTUFBTSxPQUFPLDJCQUEyQjtJQVB4QztRQVFFLGNBQVMsR0FBTyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDekMsa0JBQWEsR0FBRyxNQUFNLEVBQVEsQ0FBQztLQUNoQzsrR0FIWSwyQkFBMkI7bUdBQTNCLDJCQUEyQixnUkNYeEMsMjFDQW9DQSx5SUQ3QlksWUFBWSxzS0FBRSxhQUFhOzs0RkFJMUIsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNFLDBCQUEwQixjQUN4QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNiZC13b3JrZmxvdy1hY3Rpb25zJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0J1dHRvbk1vZHVsZSwgVG9vbHRpcE1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3dvcmtmbG93LWFjdGlvbnMuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTYmRXb3JrZmxvd0FjdGlvbnNDb21wb25lbnQge1xuICBib29raW5nSWQgICAgID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBjYW5jZWxCb29raW5nID0gb3V0cHV0PHZvaWQ+KCk7XG59XG4iLCI8ZGl2IGNsYXNzPVwic2JkLXdvcmtmbG93LWFjdGlvbnNcIj5cbiAgPGJ1dHRvbiBwQnV0dG9uIGxhYmVsPVwiQ2FuY2VsIEJvb2tpbmdcIiBpY29uPVwicGkgcGktdGltZXMtY2lyY2xlXCJcbiAgICBjbGFzcz1cInAtYnV0dG9uLWRhbmdlciBwLWJ1dHRvbi1vdXRsaW5lZCBwLWJ1dHRvbi1zbVwiXG4gICAgKGNsaWNrKT1cImNhbmNlbEJvb2tpbmcuZW1pdCgpXCI+XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b24gcEJ1dHRvbiBsYWJlbD1cIlNlbmQgVGlja2V0XCIgaWNvbj1cInBpIHBpLXNlbmRcIlxuICAgIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgcC1idXR0b24tc20gcC1idXR0b24tc2Vjb25kYXJ5XCJcbiAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgcFRvb2x0aXA9XCJDb21pbmcgc29vblwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uIHBCdXR0b24gbGFiZWw9XCJGbGlnaHQgU3RhdHVzXCIgaWNvbj1cInBpIHBpLWNoYXJ0LWJhclwiXG4gICAgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCBwLWJ1dHRvbi1zbSBwLWJ1dHRvbi1zZWNvbmRhcnlcIlxuICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICBwVG9vbHRpcD1cIkNvbWluZyBzb29uXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b24gcEJ1dHRvbiBsYWJlbD1cIlNlbGVjdCBTZWF0XCIgaWNvbj1cInBpIHBpLXRoLWxhcmdlXCJcbiAgICBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkIHAtYnV0dG9uLXNtIHAtYnV0dG9uLXNlY29uZGFyeVwiXG4gICAgW2Rpc2FibGVkXT1cInRydWVcIlxuICAgIHBUb29sdGlwPVwiQ29taW5nIHNvb25cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvbiBwQnV0dG9uIGxhYmVsPVwiQWRkIEJhZ2dhZ2VcIiBpY29uPVwicGkgcGktYnJpZWZjYXNlXCJcbiAgICBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkIHAtYnV0dG9uLXNtIHAtYnV0dG9uLXNlY29uZGFyeVwiXG4gICAgW2Rpc2FibGVkXT1cInRydWVcIlxuICAgIHBUb29sdGlwPVwiQ29taW5nIHNvb25cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvbiBwQnV0dG9uIGxhYmVsPVwiQWRkIFNlcnZpY2VcIiBpY29uPVwicGkgcGktcGx1cy1jaXJjbGVcIlxuICAgIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgcC1idXR0b24tc20gcC1idXR0b24tc2Vjb25kYXJ5XCJcbiAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgcFRvb2x0aXA9XCJDb21pbmcgc29vblwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { InjectionToken, makeEnvironmentProviders } from '@angular/core';
|
|
2
|
+
export const SBD_DEFAULT_CONFIG = {
|
|
3
|
+
apiBase: '/api',
|
|
4
|
+
platform: 'BO',
|
|
5
|
+
};
|
|
6
|
+
export const SBD_CONFIG = new InjectionToken('SBD_CONFIG', {
|
|
7
|
+
providedIn: 'root',
|
|
8
|
+
factory: () => SBD_DEFAULT_CONFIG,
|
|
9
|
+
});
|
|
10
|
+
/** Optional: call in the host app's providers to override the defaults. */
|
|
11
|
+
export function provideSmartBookingDashboard(config = {}) {
|
|
12
|
+
return makeEnvironmentProviders([
|
|
13
|
+
{ provide: SBD_CONFIG, useValue: { ...SBD_DEFAULT_CONFIG, ...config } },
|
|
14
|
+
]);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29uZmlnL2Rhc2hib2FyZC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixjQUFjLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFhL0YsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQWM7SUFDM0MsT0FBTyxFQUFFLE1BQU07SUFDZixRQUFRLEVBQUUsSUFBSTtDQUNmLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQVksWUFBWSxFQUFFO0lBQ3BFLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0I7Q0FDbEMsQ0FBQyxDQUFDO0FBRUgsMkVBQTJFO0FBQzNFLE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxTQUE2QixFQUFFO0lBQzFFLE9BQU8sd0JBQXdCLENBQUM7UUFDOUIsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsa0JBQWtCLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFBRTtLQUN4RSxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRQcm92aWRlcnMsIEluamVjdGlvblRva2VuLCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBIb3N0LWFwcCBjb25maWd1cmF0aW9uIGZvciB0aGUgU21hcnQgQm9va2luZyBEYXNoYm9hcmQuXG4gKiBFdmVyeSBmaWVsZCBpcyBvcHRpb25hbDsgdGhlIGRlZmF1bHRzIG1hdGNoIHRoZSBBbG1hdGFyIGJhY2tvZmZpY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2JkQ29uZmlnIHtcbiAgLyoqIEJhc2UgVVJMIG9mIHRoZSBiYWNrZW5kIEFQSS4gRGVmYXVsdDogJy9hcGknICovXG4gIGFwaUJhc2U6IHN0cmluZztcbiAgLyoqIFZhbHVlIG9mIHRoZSBgcGxhdGZvcm1gIGhlYWRlciBzZW50IHdpdGggRkNSIHJlcXVlc3RzLiBEZWZhdWx0OiAnQk8nICovXG4gIHBsYXRmb3JtOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBTQkRfREVGQVVMVF9DT05GSUc6IFNiZENvbmZpZyA9IHtcbiAgYXBpQmFzZTogJy9hcGknLFxuICBwbGF0Zm9ybTogJ0JPJyxcbn07XG5cbmV4cG9ydCBjb25zdCBTQkRfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFNiZENvbmZpZz4oJ1NCRF9DT05GSUcnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gU0JEX0RFRkFVTFRfQ09ORklHLFxufSk7XG5cbi8qKiBPcHRpb25hbDogY2FsbCBpbiB0aGUgaG9zdCBhcHAncyBwcm92aWRlcnMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVTbWFydEJvb2tpbmdEYXNoYm9hcmQoY29uZmlnOiBQYXJ0aWFsPFNiZENvbmZpZz4gPSB7fSk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgeyBwcm92aWRlOiBTQkRfQ09ORklHLCB1c2VWYWx1ZTogeyAuLi5TQkRfREVGQVVMVF9DT05GSUcsIC4uLmNvbmZpZyB9IH0sXG4gIF0pO1xufVxuIl19
|