@almatar/smart-booking-dashboard 0.0.1 → 0.0.2-alpha.3

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.
Files changed (128) hide show
  1. package/esm2022/lib/components/action-card/action-card.component.mjs +3 -3
  2. package/esm2022/lib/components/add-note-dialog/add-note-dialog.component.mjs +3 -3
  3. package/esm2022/lib/components/almatar-aside/aside-back-button.service.mjs +24 -0
  4. package/esm2022/lib/components/almatar-aside/aside.component.mjs +122 -0
  5. package/esm2022/lib/components/booking-input/booking-input.component.mjs +4 -3
  6. package/esm2022/lib/components/cancel-dialog/cancel-dialog.component.mjs +53 -4
  7. package/esm2022/lib/components/data-search/data-search.component.mjs +3 -3
  8. package/esm2022/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.mjs +544 -0
  9. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-method/almatar-hotel-auto-cancellation-refund-method.component.mjs +43 -0
  10. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary/almatar-hotel-auto-cancellation-refund-summary.component.mjs +296 -0
  11. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/almatar-hotel-auto-cancellation-select-rooms.component.mjs +88 -0
  12. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-non-refundable-room/almatar-hotel-auto-cancellation-non-refundable-room.component.mjs +242 -0
  13. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-refundable-room/almatar-hotel-auto-cancellation-refundable-room.component.mjs +48 -0
  14. package/esm2022/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.mjs +129 -0
  15. package/esm2022/lib/components/hotel-cancel/components/hotel-refund-method-selector/hotel-refund-method-selector.component.mjs +321 -0
  16. package/esm2022/lib/components/hotel-cancel/components/result-overlay/result-overlay.component.mjs +52 -0
  17. package/esm2022/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-endpoints.enum.mjs +9 -0
  18. package/esm2022/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-step.enum.mjs +7 -0
  19. package/esm2022/lib/components/hotel-cancel/interfaces/i-almatar-hotel-auto-cancellation.interface.mjs +2 -0
  20. package/esm2022/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation-endpoints.service.mjs +457 -0
  21. package/esm2022/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation.service.mjs +55 -0
  22. package/esm2022/lib/components/hotel-itinerary-card/hotel-itinerary-card.component.mjs +48 -0
  23. package/esm2022/lib/components/reissue-dialog/reissue-dialog.component.mjs +135 -0
  24. package/esm2022/lib/components/reissue-dialog/reissue-upgrade.store.mjs +305 -0
  25. package/esm2022/lib/components/reissue-dialog/reissue.store.mjs +349 -0
  26. package/esm2022/lib/components/reissue-dialog/steps/reissue-date-step/reissue-date-step.component.mjs +45 -0
  27. package/esm2022/lib/components/reissue-dialog/steps/reissue-legs-step/reissue-legs-step.component.mjs +140 -0
  28. package/esm2022/lib/components/reissue-dialog/steps/reissue-notice/reissue-notice.component.mjs +16 -0
  29. package/esm2022/lib/components/reissue-dialog/steps/reissue-route-step/reissue-route-step.component.mjs +104 -0
  30. package/esm2022/lib/components/reissue-dialog/steps/reissue-service-step/reissue-service-step.component.mjs +44 -0
  31. package/esm2022/lib/components/reissue-dialog/steps/reissue-upgrade-confirm-step/reissue-upgrade-confirm-step.component.mjs +193 -0
  32. package/esm2022/lib/components/reissue-dialog/steps/reissue-upgrade-step/reissue-upgrade-step.component.mjs +88 -0
  33. package/esm2022/lib/components/result-panel/result-panel.component.mjs +3 -3
  34. package/esm2022/lib/components/shared/components/confirm-modal/confirm-modal.component.mjs +75 -0
  35. package/esm2022/lib/components/shared/components/manage-booking-failed-modal/manage-booking-failed-modal.component.mjs +46 -0
  36. package/esm2022/lib/components/shared/enums/hotel-manage-booking-aside-tab.enum.mjs +9 -0
  37. package/esm2022/lib/components/shared/interfaces/i-flight-refund-details.mjs +86 -0
  38. package/esm2022/lib/components/shared/models/cancel-hotel-booking.model.mjs +7 -0
  39. package/esm2022/lib/components/shared/services/hotel-manage-booking/hotel-manage-booking.service.mjs +27 -0
  40. package/esm2022/lib/components/shared/services/hotel-manage-booking-endpoints/hotel-manage-booking-endpoints.service.mjs +17 -0
  41. package/esm2022/lib/components/workflow-actions/workflow-actions.component.mjs +5 -3
  42. package/esm2022/lib/config/dashboard.config.mjs +3 -1
  43. package/esm2022/lib/config/hotel-actions.config.mjs +21 -1
  44. package/esm2022/lib/models/booking.types.mjs +73 -2
  45. package/esm2022/lib/models/reissue.types.mjs +2 -0
  46. package/esm2022/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.mjs +31 -7
  47. package/esm2022/lib/services/booking.service.mjs +6 -2
  48. package/esm2022/lib/services/reissue.service.mjs +142 -0
  49. package/esm2022/lib/services/toast.service.mjs +15 -7
  50. package/esm2022/lib/shared/components/currency-code-icon/currency-code-icon.component.mjs +35 -0
  51. package/esm2022/lib/shared/enums/brand-enums.enum.mjs +7 -0
  52. package/esm2022/lib/shared/environments/environment.mjs +10 -0
  53. package/esm2022/lib/shared/models/index.mjs +6 -0
  54. package/esm2022/lib/shared/modules/almatar-icon/almatar-icon.module.mjs +36 -0
  55. package/esm2022/lib/shared/modules/loader/loader.module.mjs +43 -0
  56. package/esm2022/lib/shared/pipes/exchange.pipe.mjs +49 -0
  57. package/esm2022/lib/shared/services/api.service.mjs +42 -0
  58. package/esm2022/lib/shared/services/shared.service.mjs +34 -0
  59. package/esm2022/lib/shared/services/translation.service.mjs +61 -0
  60. package/esm2022/lib/shared/services/webengage-tracking.service.mjs +28 -0
  61. package/esm2022/lib/shared/store/selectors/currency.selectors.mjs +9 -0
  62. package/esm2022/lib/utils/reissue-format.mjs +64 -0
  63. package/esm2022/lib/utils/reissue-url.builder.mjs +314 -0
  64. package/esm2022/public-api.mjs +3 -1
  65. package/fesm2022/almatar-smart-booking-dashboard.mjs +5387 -395
  66. package/fesm2022/almatar-smart-booking-dashboard.mjs.map +1 -1
  67. package/lib/components/action-dialog/action-dialog.component.d.ts +1 -1
  68. package/lib/components/almatar-aside/aside-back-button.service.d.ts +11 -0
  69. package/lib/components/almatar-aside/aside.component.d.ts +46 -0
  70. package/lib/components/cancel-dialog/cancel-dialog.component.d.ts +7 -0
  71. package/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.d.ts +97 -0
  72. package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-method/almatar-hotel-auto-cancellation-refund-method.component.d.ts +25 -0
  73. package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary/almatar-hotel-auto-cancellation-refund-summary.component.d.ts +91 -0
  74. package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/almatar-hotel-auto-cancellation-select-rooms.component.d.ts +39 -0
  75. package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-non-refundable-room/almatar-hotel-auto-cancellation-non-refundable-room.component.d.ts +44 -0
  76. package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-refundable-room/almatar-hotel-auto-cancellation-refundable-room.component.d.ts +19 -0
  77. package/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.d.ts +38 -0
  78. package/lib/components/hotel-cancel/components/hotel-refund-method-selector/hotel-refund-method-selector.component.d.ts +142 -0
  79. package/lib/components/hotel-cancel/components/result-overlay/result-overlay.component.d.ts +23 -0
  80. package/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-endpoints.enum.d.ts +7 -0
  81. package/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-step.enum.d.ts +5 -0
  82. package/lib/components/hotel-cancel/interfaces/i-almatar-hotel-auto-cancellation.interface.d.ts +252 -0
  83. package/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation-endpoints.service.d.ts +88 -0
  84. package/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation.service.d.ts +21 -0
  85. package/lib/components/hotel-itinerary-card/hotel-itinerary-card.component.d.ts +16 -0
  86. package/lib/components/reissue-dialog/reissue-dialog.component.d.ts +34 -0
  87. package/lib/components/reissue-dialog/reissue-upgrade.store.d.ts +96 -0
  88. package/lib/components/reissue-dialog/reissue.store.d.ts +124 -0
  89. package/lib/components/reissue-dialog/steps/reissue-date-step/reissue-date-step.component.d.ts +11 -0
  90. package/lib/components/reissue-dialog/steps/reissue-legs-step/reissue-legs-step.component.d.ts +16 -0
  91. package/lib/components/reissue-dialog/steps/reissue-notice/reissue-notice.component.d.ts +8 -0
  92. package/lib/components/reissue-dialog/steps/reissue-route-step/reissue-route-step.component.d.ts +21 -0
  93. package/lib/components/reissue-dialog/steps/reissue-service-step/reissue-service-step.component.d.ts +17 -0
  94. package/lib/components/reissue-dialog/steps/reissue-upgrade-confirm-step/reissue-upgrade-confirm-step.component.d.ts +28 -0
  95. package/lib/components/reissue-dialog/steps/reissue-upgrade-step/reissue-upgrade-step.component.d.ts +13 -0
  96. package/lib/components/result-panel/result-panel.component.d.ts +1 -1
  97. package/lib/components/shared/components/confirm-modal/confirm-modal.component.d.ts +17 -0
  98. package/lib/components/shared/components/manage-booking-failed-modal/manage-booking-failed-modal.component.d.ts +10 -0
  99. package/lib/components/shared/enums/hotel-manage-booking-aside-tab.enum.d.ts +7 -0
  100. package/lib/components/shared/interfaces/i-flight-refund-details.d.ts +73 -0
  101. package/lib/components/shared/models/cancel-hotel-booking.model.d.ts +6 -0
  102. package/lib/components/shared/services/hotel-manage-booking/hotel-manage-booking.service.d.ts +11 -0
  103. package/lib/components/shared/services/hotel-manage-booking-endpoints/hotel-manage-booking-endpoints.service.d.ts +7 -0
  104. package/lib/components/workflow-actions/workflow-actions.component.d.ts +3 -1
  105. package/lib/config/dashboard.config.d.ts +29 -0
  106. package/lib/models/booking.types.d.ts +28 -0
  107. package/lib/models/reissue.types.d.ts +147 -0
  108. package/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.d.ts +5 -1
  109. package/lib/services/reissue.service.d.ts +45 -0
  110. package/lib/services/toast.service.d.ts +14 -1
  111. package/lib/shared/components/currency-code-icon/currency-code-icon.component.d.ts +13 -0
  112. package/lib/shared/enums/brand-enums.enum.d.ts +5 -0
  113. package/lib/shared/environments/environment.d.ts +7 -0
  114. package/lib/shared/models/index.d.ts +11 -0
  115. package/lib/shared/modules/almatar-icon/almatar-icon.module.d.ts +13 -0
  116. package/lib/shared/modules/loader/loader.module.d.ts +13 -0
  117. package/lib/shared/pipes/exchange.pipe.d.ts +17 -0
  118. package/lib/shared/services/api.service.d.ts +43 -0
  119. package/lib/shared/services/shared.service.d.ts +12 -0
  120. package/lib/shared/services/translation.service.d.ts +17 -0
  121. package/lib/shared/services/webengage-tracking.service.d.ts +8 -0
  122. package/lib/shared/store/selectors/currency.selectors.d.ts +2 -0
  123. package/lib/utils/reissue-format.d.ts +28 -0
  124. package/lib/utils/reissue-url.builder.d.ts +24 -0
  125. package/package.json +9 -24
  126. package/public-api.d.ts +5 -1
  127. package/LICENSE +0 -21
  128. package/README.md +0 -132
@@ -0,0 +1,88 @@
1
+ import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';
2
+ import { SbdReissueNoticeComponent } from '../reissue-notice/reissue-notice.component';
3
+ import * as i0 from "@angular/core";
4
+ /** New-class options as radio cards, in the look of the cancel dialog's refund-method options. */
5
+ export class SbdReissueUpgradeStepComponent {
6
+ constructor() {
7
+ this.sections = input.required();
8
+ this.error = input(null);
9
+ this.picked = output();
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdReissueUpgradeStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SbdReissueUpgradeStepComponent, isStandalone: true, selector: "app-sbd-reissue-upgrade-step", inputs: { sections: { classPropertyName: "sections", publicName: "sections", isSignal: true, isRequired: true, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { picked: "picked" }, host: { classAttribute: "sbd-rup" }, ngImport: i0, template: `
13
+ @if (error()) {
14
+ <app-sbd-reissue-notice tone="error" icon="pi pi-exclamation-circle">{{ error() }}</app-sbd-reissue-notice>
15
+ }
16
+
17
+ @for (section of sections(); track section.id) {
18
+ <section class="sbd-rup__section">
19
+ <div class="sbd-rup__head">
20
+ <span class="sbd-rup__route">{{ section.title }}</span>
21
+ @if (section.current) { <span class="sbd-rup__current">{{ section.current }}</span> }
22
+ </div>
23
+
24
+ @if (!section.options.length) {
25
+ <span class="sbd-rup__empty">No upgrade available for this flight.</span>
26
+ }
27
+
28
+ @for (option of section.options; track option.key) {
29
+ <button type="button" class="sbd-rup__option"
30
+ [class.sbd-rup__option--active]="option.selected"
31
+ [disabled]="option.unavailable"
32
+ (click)="picked.emit({ sectionId: section.id, key: option.key })">
33
+ <span class="sbd-rup__radio" [class.sbd-rup__radio--on]="option.selected"></span>
34
+ <span class="sbd-rup__text">
35
+ <strong>{{ option.name }}</strong>
36
+ <small>{{ option.code }}</small>
37
+ </span>
38
+ @if (option.unavailable) {
39
+ <span class="sbd-rup__unavailable">Not available</span>
40
+ } @else {
41
+ <span class="sbd-rup__price">{{ option.extraLabel }}</span>
42
+ }
43
+ </button>
44
+ }
45
+ </section>
46
+ }
47
+ `, isInline: true, styles: [":host{display:flex;flex-direction:column;gap:14px}.sbd-rup__section{display:flex;flex-direction:column;gap:10px}.sbd-rup__head{display:flex;flex-direction:column;gap:2px}.sbd-rup__route{font-size:15px;font-weight:700;color:#1e2e4a}.sbd-rup__current,.sbd-rup__empty{font-size:13px;color:#64748b}.sbd-rup__option{border:1.5px solid #e2e8f0;border-radius:16px;background:#fff;transition:border-color .15s,box-shadow .15s;display:flex;align-items:center;gap:12px;width:100%;padding:16px;text-align:left;font-family:inherit;cursor:pointer}.sbd-rup__option--active{border-color:var(--sbd-accent, #6d4aff);box-shadow:0 0 0 1px var(--sbd-accent, #6d4aff)}.sbd-rup__option:disabled{opacity:.5;cursor:not-allowed}.sbd-rup__option:hover:not(:disabled):not(.sbd-rup__option--active){border-color:#cbd5e1}.sbd-rup__radio{flex-shrink:0;width:20px;height:20px;border-radius:50%;border:2px solid #cbd5e1;background:#fff}.sbd-rup__radio--on{border-color:var(--sbd-accent, #6d4aff);box-shadow:inset 0 0 0 4px #fff;background:var(--sbd-accent, #6d4aff)}.sbd-rup__text{flex:1;display:flex;flex-direction:column;gap:2px}.sbd-rup__text strong{font-size:14px;font-weight:700;color:#1e2e4a}.sbd-rup__text small{font-size:12.5px;color:#64748b}.sbd-rup__price{font-size:14px;font-weight:800;color:#1e2e4a;white-space:nowrap;font-variant-numeric:tabular-nums}.sbd-rup__unavailable{font-size:11.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#64748b;background:#f8fafc;box-shadow:inset 0 0 0 1px #e2e8f0;border-radius:20px;padding:3px 12px;white-space:nowrap}\n"], dependencies: [{ kind: "component", type: SbdReissueNoticeComponent, selector: "app-sbd-reissue-notice", inputs: ["icon", "tone"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdReissueUpgradeStepComponent, decorators: [{
50
+ type: Component,
51
+ args: [{ selector: 'app-sbd-reissue-upgrade-step', standalone: true, imports: [SbdReissueNoticeComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
52
+ @if (error()) {
53
+ <app-sbd-reissue-notice tone="error" icon="pi pi-exclamation-circle">{{ error() }}</app-sbd-reissue-notice>
54
+ }
55
+
56
+ @for (section of sections(); track section.id) {
57
+ <section class="sbd-rup__section">
58
+ <div class="sbd-rup__head">
59
+ <span class="sbd-rup__route">{{ section.title }}</span>
60
+ @if (section.current) { <span class="sbd-rup__current">{{ section.current }}</span> }
61
+ </div>
62
+
63
+ @if (!section.options.length) {
64
+ <span class="sbd-rup__empty">No upgrade available for this flight.</span>
65
+ }
66
+
67
+ @for (option of section.options; track option.key) {
68
+ <button type="button" class="sbd-rup__option"
69
+ [class.sbd-rup__option--active]="option.selected"
70
+ [disabled]="option.unavailable"
71
+ (click)="picked.emit({ sectionId: section.id, key: option.key })">
72
+ <span class="sbd-rup__radio" [class.sbd-rup__radio--on]="option.selected"></span>
73
+ <span class="sbd-rup__text">
74
+ <strong>{{ option.name }}</strong>
75
+ <small>{{ option.code }}</small>
76
+ </span>
77
+ @if (option.unavailable) {
78
+ <span class="sbd-rup__unavailable">Not available</span>
79
+ } @else {
80
+ <span class="sbd-rup__price">{{ option.extraLabel }}</span>
81
+ }
82
+ </button>
83
+ }
84
+ </section>
85
+ }
86
+ `, host: { class: 'sbd-rup' }, styles: [":host{display:flex;flex-direction:column;gap:14px}.sbd-rup__section{display:flex;flex-direction:column;gap:10px}.sbd-rup__head{display:flex;flex-direction:column;gap:2px}.sbd-rup__route{font-size:15px;font-weight:700;color:#1e2e4a}.sbd-rup__current,.sbd-rup__empty{font-size:13px;color:#64748b}.sbd-rup__option{border:1.5px solid #e2e8f0;border-radius:16px;background:#fff;transition:border-color .15s,box-shadow .15s;display:flex;align-items:center;gap:12px;width:100%;padding:16px;text-align:left;font-family:inherit;cursor:pointer}.sbd-rup__option--active{border-color:var(--sbd-accent, #6d4aff);box-shadow:0 0 0 1px var(--sbd-accent, #6d4aff)}.sbd-rup__option:disabled{opacity:.5;cursor:not-allowed}.sbd-rup__option:hover:not(:disabled):not(.sbd-rup__option--active){border-color:#cbd5e1}.sbd-rup__radio{flex-shrink:0;width:20px;height:20px;border-radius:50%;border:2px solid #cbd5e1;background:#fff}.sbd-rup__radio--on{border-color:var(--sbd-accent, #6d4aff);box-shadow:inset 0 0 0 4px #fff;background:var(--sbd-accent, #6d4aff)}.sbd-rup__text{flex:1;display:flex;flex-direction:column;gap:2px}.sbd-rup__text strong{font-size:14px;font-weight:700;color:#1e2e4a}.sbd-rup__text small{font-size:12.5px;color:#64748b}.sbd-rup__price{font-size:14px;font-weight:800;color:#1e2e4a;white-space:nowrap;font-variant-numeric:tabular-nums}.sbd-rup__unavailable{font-size:11.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#64748b;background:#f8fafc;box-shadow:inset 0 0 0 1px #e2e8f0;border-radius:20px;padding:3px 12px;white-space:nowrap}\n"] }]
87
+ }] });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVpc3N1ZS11cGdyYWRlLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL3JlaXNzdWUtZGlhbG9nL3N0ZXBzL3JlaXNzdWUtdXBncmFkZS1zdGVwL3JlaXNzdWUtdXBncmFkZS1zdGVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7O0FBRXZGLGtHQUFrRztBQTZDbEcsTUFBTSxPQUFPLDhCQUE4QjtJQTVDM0M7UUE2Q0UsYUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXVCLENBQUM7UUFDakQsVUFBSyxHQUFHLEtBQUssQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDbkMsV0FBTSxHQUFHLE1BQU0sRUFBc0MsQ0FBQztLQUN2RDsrR0FKWSw4QkFBOEI7bUdBQTlCLDhCQUE4QixnYUF2Qy9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DVCxnbURBckNTLHlCQUF5Qjs7NEZBeUN4Qiw4QkFBOEI7a0JBNUMxQyxTQUFTOytCQUNFLDhCQUE4QixjQUM1QixJQUFJLFdBQ1AsQ0FBQyx5QkFBeUIsQ0FBQyxtQkFDbkIsdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ1QsUUFFSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVcGdyYWRlU2VjdGlvblJvdyB9IGZyb20gJy4uLy4uL3JlaXNzdWUtdXBncmFkZS5zdG9yZSc7XG5pbXBvcnQgeyBTYmRSZWlzc3VlTm90aWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVpc3N1ZS1ub3RpY2UvcmVpc3N1ZS1ub3RpY2UuY29tcG9uZW50JztcblxuLyoqIE5ldy1jbGFzcyBvcHRpb25zIGFzIHJhZGlvIGNhcmRzLCBpbiB0aGUgbG9vayBvZiB0aGUgY2FuY2VsIGRpYWxvZydzIHJlZnVuZC1tZXRob2Qgb3B0aW9ucy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zYmQtcmVpc3N1ZS11cGdyYWRlLXN0ZXAnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbU2JkUmVpc3N1ZU5vdGljZUNvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIEBpZiAoZXJyb3IoKSkge1xuICAgICAgPGFwcC1zYmQtcmVpc3N1ZS1ub3RpY2UgdG9uZT1cImVycm9yXCIgaWNvbj1cInBpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZVwiPnt7IGVycm9yKCkgfX08L2FwcC1zYmQtcmVpc3N1ZS1ub3RpY2U+XG4gICAgfVxuXG4gICAgQGZvciAoc2VjdGlvbiBvZiBzZWN0aW9ucygpOyB0cmFjayBzZWN0aW9uLmlkKSB7XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInNiZC1ydXBfX3NlY3Rpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1ydXBfX2hlYWRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1ydXBfX3JvdXRlXCI+e3sgc2VjdGlvbi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICBAaWYgKHNlY3Rpb24uY3VycmVudCkgeyA8c3BhbiBjbGFzcz1cInNiZC1ydXBfX2N1cnJlbnRcIj57eyBzZWN0aW9uLmN1cnJlbnQgfX08L3NwYW4+IH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmICghc2VjdGlvbi5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXJ1cF9fZW1wdHlcIj5ObyB1cGdyYWRlIGF2YWlsYWJsZSBmb3IgdGhpcyBmbGlnaHQuPC9zcGFuPlxuICAgICAgICB9XG5cbiAgICAgICAgQGZvciAob3B0aW9uIG9mIHNlY3Rpb24ub3B0aW9uczsgdHJhY2sgb3B0aW9uLmtleSkge1xuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2JkLXJ1cF9fb3B0aW9uXCJcbiAgICAgICAgICAgIFtjbGFzcy5zYmQtcnVwX19vcHRpb24tLWFjdGl2ZV09XCJvcHRpb24uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbi51bmF2YWlsYWJsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwicGlja2VkLmVtaXQoeyBzZWN0aW9uSWQ6IHNlY3Rpb24uaWQsIGtleTogb3B0aW9uLmtleSB9KVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcnVwX19yYWRpb1wiIFtjbGFzcy5zYmQtcnVwX19yYWRpby0tb25dPVwib3B0aW9uLnNlbGVjdGVkXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcnVwX190ZXh0XCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgb3B0aW9uLm5hbWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IG9wdGlvbi5jb2RlIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIEBpZiAob3B0aW9uLnVuYXZhaWxhYmxlKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXJ1cF9fdW5hdmFpbGFibGVcIj5Ob3QgYXZhaWxhYmxlPC9zcGFuPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXJ1cF9fcHJpY2VcIj57eyBvcHRpb24uZXh0cmFMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9zZWN0aW9uPlxuICAgIH1cbiAgYCxcbiAgc3R5bGVVcmw6ICcuL3JlaXNzdWUtdXBncmFkZS1zdGVwLmNvbXBvbmVudC5zY3NzJyxcbiAgaG9zdDogeyBjbGFzczogJ3NiZC1ydXAnIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNiZFJlaXNzdWVVcGdyYWRlU3RlcENvbXBvbmVudCB7XG4gIHNlY3Rpb25zID0gaW5wdXQucmVxdWlyZWQ8VXBncmFkZVNlY3Rpb25Sb3dbXT4oKTtcbiAgZXJyb3IgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcGlja2VkID0gb3V0cHV0PHsgc2VjdGlvbklkOiBzdHJpbmc7IGtleTogc3RyaW5nIH0+KCk7XG59XG4iXX0=
@@ -23,7 +23,7 @@ export class SbdResultPanelComponent {
23
23
  navigator.clipboard.writeText(lines.join('\n')).then(() => this.toast.success('Copied to clipboard'));
24
24
  }
25
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: [
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:var(--sbd-primary, #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
27
  trigger('fadeInUp', [
28
28
  transition(':enter', [
29
29
  style({ opacity: 0, transform: 'translateY(8px)' }),
@@ -41,6 +41,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
41
41
  animate('200ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),
42
42
  ]),
43
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"] }]
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:var(--sbd-primary, #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
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==
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9yZXN1bHQtcGFuZWwvcmVzdWx0LXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9yZXN1bHQtcGFuZWwvcmVzdWx0LXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFpQi9ELE1BQU0sT0FBTyx1QkFBdUI7SUFmcEM7UUFnQlUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV4QyxnQkFBVyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixjQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLFdBQU0sR0FBRyxLQUFLLENBQTJDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLFdBQU0sR0FBRyxLQUFLLENBQXVCLElBQUksQ0FBQyxDQUFDO1FBRTNDLGtCQUFhLEdBQUcsTUFBTSxFQUFpQixDQUFDO0tBVXpDO0lBUkMsSUFBSSxjQUFjLEtBQWEsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTdFLElBQUk7UUFDRixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9KLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7K0dBakJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDZvQkN0QnBDLG94SUE2RkEsbStJRG5GWSxjQUFjLGtNQUFFLFlBQVksaUJBRzFCO1lBQ1YsT0FBTyxDQUFDLFVBQVUsRUFBRTtnQkFDbEIsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDbkIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztvQkFDbkQsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7aUJBQzdFLENBQUM7YUFDSCxDQUFDO1NBQ0g7OzRGQUVVLHVCQUF1QjtrQkFmbkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxjQUczQjt3QkFDVixPQUFPLENBQUMsVUFBVSxFQUFFOzRCQUNsQixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO2dDQUNuRCxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQzs2QkFDN0UsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRyaWdnZXIsIHRyYW5zaXRpb24sIHN0eWxlLCBhbmltYXRlIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2tlbGV0b24nO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgUmVzdWx0Q29udGVudCB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24udHlwZXMnO1xuaW1wb3J0IHsgU2JkVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zYmQtcmVzdWx0LXBhbmVsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1NrZWxldG9uTW9kdWxlLCBCdXR0b25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdWx0LXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Jlc3VsdC1wYW5lbC5jb21wb25lbnQuc2NzcycsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdmYWRlSW5VcCcsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDhweCknIH0pLFxuICAgICAgICBhbmltYXRlKCcyMDBtcyBlYXNlLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScgfSkpLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNiZFJlc3VsdFBhbmVsQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChTYmRUb2FzdFNlcnZpY2UpO1xuXG4gIGFjdGlvbkxhYmVsID0gaW5wdXQoJycpO1xuICBlbGFwc2VkTXMgPSBpbnB1dCgwKTtcbiAgc3RhdHVzID0gaW5wdXQ8J2lkbGUnIHwgJ2xvYWRpbmcnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJz4oJ2lkbGUnKTtcbiAgcmVzdWx0ID0gaW5wdXQ8UmVzdWx0Q29udGVudCB8IG51bGw+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,75 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ButtonModule } from 'primeng/button';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "primeng/button";
7
+ export class ConfirmModalComponent {
8
+ constructor() {
9
+ this.visible = false;
10
+ this.title = '';
11
+ this.message = '';
12
+ this.confirmLabel = 'Confirm';
13
+ this.cancelLabel = 'Cancel';
14
+ this.visibleChange = new EventEmitter();
15
+ this.confirm = new EventEmitter();
16
+ this.cancel = new EventEmitter();
17
+ }
18
+ onConfirm() {
19
+ this.confirm.emit();
20
+ this.close();
21
+ }
22
+ onCancel() {
23
+ this.cancel.emit();
24
+ this.close();
25
+ }
26
+ close() {
27
+ this.visible = false;
28
+ this.visibleChange.emit(false);
29
+ }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConfirmModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ConfirmModalComponent, isStandalone: true, selector: "confirm-modal", inputs: { visible: "visible", title: "title", message: "message", confirmLabel: "confirmLabel", cancelLabel: "cancelLabel" }, outputs: { visibleChange: "visibleChange", confirm: "confirm", cancel: "cancel" }, ngImport: i0, template: `
32
+ <div class="modal-overlay" *ngIf="visible" (click)="onCancel()">
33
+ <div class="modal-content" (click)="$event.stopPropagation()">
34
+ <h3>{{ title || 'Confirm' }}</h3>
35
+ <p>{{ message }}</p>
36
+ <div class="modal-actions">
37
+ <button pButton type="button" [label]="cancelLabel || 'Cancel'" class="p-button-secondary" (click)="onCancel()"></button>
38
+ <button pButton type="button" [label]="confirmLabel || 'Confirm'" (click)="onConfirm()"></button>
39
+ </div>
40
+ </div>
41
+ </div>
42
+ `, isInline: true, styles: [".modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}.modal-content{background:#fff;padding:2rem;border-radius:8px;max-width:400px;width:90%}h3{margin-top:0}.modal-actions{display:flex;gap:1rem;justify-content:flex-end;margin-top:1.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }] }); }
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConfirmModalComponent, decorators: [{
45
+ type: Component,
46
+ args: [{ selector: 'confirm-modal', standalone: true, imports: [CommonModule, ButtonModule], template: `
47
+ <div class="modal-overlay" *ngIf="visible" (click)="onCancel()">
48
+ <div class="modal-content" (click)="$event.stopPropagation()">
49
+ <h3>{{ title || 'Confirm' }}</h3>
50
+ <p>{{ message }}</p>
51
+ <div class="modal-actions">
52
+ <button pButton type="button" [label]="cancelLabel || 'Cancel'" class="p-button-secondary" (click)="onCancel()"></button>
53
+ <button pButton type="button" [label]="confirmLabel || 'Confirm'" (click)="onConfirm()"></button>
54
+ </div>
55
+ </div>
56
+ </div>
57
+ `, styles: [".modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}.modal-content{background:#fff;padding:2rem;border-radius:8px;max-width:400px;width:90%}h3{margin-top:0}.modal-actions{display:flex;gap:1rem;justify-content:flex-end;margin-top:1.5rem}\n"] }]
58
+ }], propDecorators: { visible: [{
59
+ type: Input
60
+ }], title: [{
61
+ type: Input
62
+ }], message: [{
63
+ type: Input
64
+ }], confirmLabel: [{
65
+ type: Input
66
+ }], cancelLabel: [{
67
+ type: Input
68
+ }], visibleChange: [{
69
+ type: Output
70
+ }], confirm: [{
71
+ type: Output
72
+ }], cancel: [{
73
+ type: Output
74
+ }] } });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL2NvbXBvbmVudHMvY29uZmlybS1tb2RhbC9jb25maXJtLW1vZGFsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFvRDlDLE1BQU0sT0FBTyxxQkFBcUI7SUFsRGxDO1FBbURXLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixpQkFBWSxHQUFHLFNBQVMsQ0FBQztRQUN6QixnQkFBVyxHQUFHLFFBQVEsQ0FBQztRQUV0QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDNUMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbkMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0FnQjdDO0lBZEMsU0FBUztRQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFTyxLQUFLO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQzsrR0F4QlUscUJBQXFCO21HQUFyQixxQkFBcUIsMFJBOUN0Qjs7Ozs7Ozs7Ozs7R0FXVCw4WkFaUyxZQUFZLGtJQUFFLFlBQVk7OzRGQStDekIscUJBQXFCO2tCQWxEakMsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxZQUMzQjs7Ozs7Ozs7Ozs7R0FXVDs4QkFvQ1EsT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29uZmlybS1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJ1dHRvbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLW92ZXJsYXlcIiAqbmdJZj1cInZpc2libGVcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgIDxoMz57eyB0aXRsZSB8fCAnQ29uZmlybScgfX08L2gzPlxuICAgICAgICA8cD57eyBtZXNzYWdlIH19PC9wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYWN0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2xhYmVsXT1cImNhbmNlbExhYmVsIHx8ICdDYW5jZWwnXCIgY2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnlcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPjwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2xhYmVsXT1cImNvbmZpcm1MYWJlbCB8fCAnQ29uZmlybSdcIiAoY2xpY2spPVwib25Db25maXJtKClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIC5tb2RhbC1vdmVybGF5IHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB6LWluZGV4OiAyMDAwO1xuICAgIH1cblxuICAgIC5tb2RhbC1jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgcGFkZGluZzogMnJlbTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgICB3aWR0aDogOTAlO1xuICAgIH1cblxuICAgIGgzIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuXG4gICAgLm1vZGFsLWFjdGlvbnMge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGdhcDogMXJlbTtcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICBtYXJnaW4tdG9wOiAxLjVyZW07XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBDb25maXJtTW9kYWxDb21wb25lbnQge1xuICBASW5wdXQoKSB2aXNpYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIG1lc3NhZ2UgPSAnJztcbiAgQElucHV0KCkgY29uZmlybUxhYmVsID0gJ0NvbmZpcm0nO1xuICBASW5wdXQoKSBjYW5jZWxMYWJlbCA9ICdDYW5jZWwnO1xuXG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY29uZmlybSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBvbkNvbmZpcm0oKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtLmVtaXQoKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBvbkNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,46 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ButtonModule } from 'primeng/button';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "primeng/button";
7
+ export class ManageBookingFailedModalComponent {
8
+ constructor() {
9
+ this.visible = false;
10
+ this.message = '';
11
+ this.visibleChange = new EventEmitter();
12
+ }
13
+ close() {
14
+ this.visible = false;
15
+ this.visibleChange.emit(false);
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ManageBookingFailedModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ManageBookingFailedModalComponent, isStandalone: true, selector: "manage-booking-failed-modal", inputs: { visible: "visible", message: "message" }, outputs: { visibleChange: "visibleChange" }, ngImport: i0, template: `
19
+ <div class="modal-overlay" *ngIf="visible" (click)="close()">
20
+ <div class="modal-content" (click)="$event.stopPropagation()">
21
+ <h3>Operation Failed</h3>
22
+ <p>{{ message || 'An error occurred. Please try again.' }}</p>
23
+ <button pButton type="button" label="Close" (click)="close()"></button>
24
+ </div>
25
+ </div>
26
+ `, isInline: true, styles: [".modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}.modal-content{background:#fff;padding:2rem;border-radius:8px;max-width:400px;width:90%}h3{margin-top:0;color:#d32f2f}p{margin:1rem 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }] }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ManageBookingFailedModalComponent, decorators: [{
29
+ type: Component,
30
+ args: [{ selector: 'manage-booking-failed-modal', standalone: true, imports: [CommonModule, ButtonModule], template: `
31
+ <div class="modal-overlay" *ngIf="visible" (click)="close()">
32
+ <div class="modal-content" (click)="$event.stopPropagation()">
33
+ <h3>Operation Failed</h3>
34
+ <p>{{ message || 'An error occurred. Please try again.' }}</p>
35
+ <button pButton type="button" label="Close" (click)="close()"></button>
36
+ </div>
37
+ </div>
38
+ `, styles: [".modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}.modal-content{background:#fff;padding:2rem;border-radius:8px;max-width:400px;width:90%}h3{margin-top:0;color:#d32f2f}p{margin:1rem 0}\n"] }]
39
+ }], propDecorators: { visible: [{
40
+ type: Input
41
+ }], message: [{
42
+ type: Input
43
+ }], visibleChange: [{
44
+ type: Output
45
+ }] } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWJvb2tpbmctZmFpbGVkLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQvY29tcG9uZW50cy9tYW5hZ2UtYm9va2luZy1mYWlsZWQtbW9kYWwvbWFuYWdlLWJvb2tpbmctZmFpbGVkLW1vZGFsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUErQzlDLE1BQU0sT0FBTyxpQ0FBaUM7SUE3QzlDO1FBOENXLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUVaLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztLQU12RDtJQUpDLEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDOytHQVRVLGlDQUFpQzttR0FBakMsaUNBQWlDLHdMQXpDbEM7Ozs7Ozs7O0dBUVQsNFdBVFMsWUFBWSxrSUFBRSxZQUFZOzs0RkEwQ3pCLGlDQUFpQztrQkE3QzdDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBQzNCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsWUFDM0I7Ozs7Ozs7O0dBUVQ7OEJBa0NRLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYW5hZ2UtYm9va2luZy1mYWlsZWQtbW9kYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCdXR0b25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1vdmVybGF5XCIgKm5nSWY9XCJ2aXNpYmxlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICA8aDM+T3BlcmF0aW9uIEZhaWxlZDwvaDM+XG4gICAgICAgIDxwPnt7IG1lc3NhZ2UgfHwgJ0FuIGVycm9yIG9jY3VycmVkLiBQbGVhc2UgdHJ5IGFnYWluLicgfX08L3A+XG4gICAgICAgIDxidXR0b24gcEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJjbG9zZSgpXCI+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIC5tb2RhbC1vdmVybGF5IHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB6LWluZGV4OiAyMDAwO1xuICAgIH1cblxuICAgIC5tb2RhbC1jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgcGFkZGluZzogMnJlbTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgICB3aWR0aDogOTAlO1xuICAgIH1cblxuICAgIGgzIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICBjb2xvcjogI2QzMmYyZjtcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgIG1hcmdpbjogMXJlbSAwO1xuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgTWFuYWdlQm9va2luZ0ZhaWxlZE1vZGFsQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdmlzaWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBtZXNzYWdlID0gJyc7XG5cbiAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ export var HotelManageBookingAsideTabEnum;
2
+ (function (HotelManageBookingAsideTabEnum) {
3
+ HotelManageBookingAsideTabEnum["DETAILS"] = "details";
4
+ HotelManageBookingAsideTabEnum["CANCELLATION"] = "cancellation";
5
+ HotelManageBookingAsideTabEnum["MODIFICATION"] = "modification";
6
+ HotelManageBookingAsideTabEnum["REFUND"] = "refund";
7
+ HotelManageBookingAsideTabEnum["whatsAppAgent"] = "whatsAppAgent";
8
+ })(HotelManageBookingAsideTabEnum || (HotelManageBookingAsideTabEnum = {}));
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90ZWwtbWFuYWdlLWJvb2tpbmctYXNpZGUtdGFiLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL2VudW1zL2hvdGVsLW1hbmFnZS1ib29raW5nLWFzaWRlLXRhYi5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLDhCQU1YO0FBTkQsV0FBWSw4QkFBOEI7SUFDeEMscURBQW1CLENBQUE7SUFDbkIsK0RBQTZCLENBQUE7SUFDN0IsK0RBQTZCLENBQUE7SUFDN0IsbURBQWlCLENBQUE7SUFDakIsaUVBQStCLENBQUE7QUFDakMsQ0FBQyxFQU5XLDhCQUE4QixLQUE5Qiw4QkFBOEIsUUFNekMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBIb3RlbE1hbmFnZUJvb2tpbmdBc2lkZVRhYkVudW0ge1xuICBERVRBSUxTID0gJ2RldGFpbHMnLFxuICBDQU5DRUxMQVRJT04gPSAnY2FuY2VsbGF0aW9uJyxcbiAgTU9ESUZJQ0FUSU9OID0gJ21vZGlmaWNhdGlvbicsXG4gIFJFRlVORCA9ICdyZWZ1bmQnLFxuICB3aGF0c0FwcEFnZW50ID0gJ3doYXRzQXBwQWdlbnQnXG59XG4iXX0=
@@ -0,0 +1,86 @@
1
+ // Flight refund details interfaces
2
+ export var PaymentGatewayCode;
3
+ (function (PaymentGatewayCode) {
4
+ PaymentGatewayCode["MADA"] = "MADA";
5
+ PaymentGatewayCode["VISA"] = "VISA";
6
+ PaymentGatewayCode["MASTERCARD"] = "MASTERCARD";
7
+ PaymentGatewayCode["AMEX"] = "AMEX";
8
+ PaymentGatewayCode["APPLE_PAY"] = "APPLE_PAY";
9
+ PaymentGatewayCode["AlRajhiMokafaa"] = "RAJHI";
10
+ PaymentGatewayCode["Qitaf"] = "QITAF";
11
+ PaymentGatewayCode["Wala"] = "WALA";
12
+ PaymentGatewayCode["Tamara"] = "TM";
13
+ PaymentGatewayCode["Tabby"] = "TB";
14
+ PaymentGatewayCode["Stc"] = "STC";
15
+ PaymentGatewayCode["CH"] = "CH";
16
+ PaymentGatewayCode["HP"] = "HP";
17
+ PaymentGatewayCode["MF"] = "MF";
18
+ PaymentGatewayCode["WT"] = "WT";
19
+ PaymentGatewayCode["TM"] = "TM";
20
+ PaymentGatewayCode["TB"] = "TB";
21
+ PaymentGatewayCode["RAJHI"] = "RAJHI";
22
+ PaymentGatewayCode["STC"] = "STC";
23
+ PaymentGatewayCode["PPB"] = "PPB";
24
+ PaymentGatewayCode["PP"] = "PP";
25
+ PaymentGatewayCode["TAMAM"] = "TAMAM";
26
+ PaymentGatewayCode["QITAF"] = "QITAF";
27
+ PaymentGatewayCode["WALA"] = "WALA";
28
+ })(PaymentGatewayCode || (PaymentGatewayCode = {}));
29
+ /** Labels for `paymentMethodCustomerUsed` gateway codes returned by the backend. */
30
+ export const PAYMENT_GATEWAY_LABELS = {
31
+ CH: { en: 'Card', ar: 'البطاقة' },
32
+ HP: { en: 'Hyperpay', ar: 'هايبر باي' },
33
+ MF: { en: 'My Fatoora', ar: 'ماي فاتورة' },
34
+ WT: { en: 'Wire Transfer', ar: 'تحويل بنكي' },
35
+ STC: { en: 'STC', ar: 'STC' },
36
+ TM: { en: 'Tamara', ar: 'تمارا' },
37
+ TB: { en: 'Tabby', ar: 'تابي' },
38
+ RAJHI: { en: 'Al Rajhi Mokafaa', ar: 'الراجحي مكافآت' },
39
+ PPB: { en: 'Customer Balance', ar: 'رصيد العميل' },
40
+ PP: { en: 'Postpay', ar: 'بوست باي' },
41
+ TAMAM: { en: 'Tamam', ar: 'تمام' },
42
+ QITAF: { en: 'Qitaf', ar: 'قطاف' },
43
+ MIS: { en: 'MIS Pay', ar: 'MIS Pay' },
44
+ MATAR: { en: 'Almatar Pay', ar: 'المطار باي' },
45
+ CB: { en: 'Company Balance', ar: 'رصيد الشركة' },
46
+ ANB: { en: 'ANB', ar: 'العربي الوطني' },
47
+ AMWAL: { en: 'Amwal', ar: 'أموال' },
48
+ WALA: { en: 'Wala', ar: 'ولاء' },
49
+ YGG: { en: 'YGG', ar: 'YGG' },
50
+ };
51
+ /** Gateway codes that refund to an installment plan rather than the original card. */
52
+ export const INSTALLMENT_GATEWAY_CODES = ['TM', 'TB'];
53
+ /** Gateway codes that refund to a loyalty-program account rather than the original card. */
54
+ export const LOYALTY_GATEWAY_CODES = ['RAJHI', 'QITAF', 'STC', 'WALA'];
55
+ /**
56
+ * Internal payment-processor/gateway names, never customer-recognizable
57
+ * brands — must not be surfaced verbatim (e.g. a card refund processed
58
+ * through Hyperpay must read as "Card"/"Original Payment Method", never
59
+ * "Hyperpay"). Callers fall back to a generic label whenever the normalized
60
+ * lookup returns ''.
61
+ */
62
+ export const INTERNAL_GATEWAY_CODES = ['HP', 'MF', 'WT', 'PPB', 'PP', 'TAMAM'];
63
+ /**
64
+ * Result/confirmation-screen-only override: these gateways process card
65
+ * payments through Mada — shown specifically as "Mada Card" instead of
66
+ * falling back to the generic "Original Payment Method" label used
67
+ * everywhere else `INTERNAL_GATEWAY_CODES` applies.
68
+ */
69
+ export const MADA_GATEWAY_CODES = ['HP', 'CH'];
70
+ /**
71
+ * Normalizes a raw payment gateway code from the backend to a standardized code.
72
+ * Handles both uppercase codes (e.g. 'HP') and labels (e.g. 'Hyperpay').
73
+ */
74
+ export function normalizePaymentGatewayCode(raw) {
75
+ if (!raw)
76
+ return '';
77
+ const needle = raw.trim().toLowerCase();
78
+ const codes = Object.keys(PAYMENT_GATEWAY_LABELS);
79
+ const byCode = codes.find((code) => code.toLowerCase() === needle);
80
+ if (byCode)
81
+ return byCode;
82
+ const byLabel = codes.find((code) => PAYMENT_GATEWAY_LABELS[code].en.toLowerCase() === needle ||
83
+ PAYMENT_GATEWAY_LABELS[code].ar.toLowerCase() === needle);
84
+ return byLabel ? byLabel : '';
85
+ }
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1mbGlnaHQtcmVmdW5kLWRldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL2ludGVyZmFjZXMvaS1mbGlnaHQtcmVmdW5kLWRldGFpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUNBQW1DO0FBa0NuQyxNQUFNLENBQU4sSUFBWSxrQkF5Qlg7QUF6QkQsV0FBWSxrQkFBa0I7SUFDNUIsbUNBQWEsQ0FBQTtJQUNiLG1DQUFhLENBQUE7SUFDYiwrQ0FBeUIsQ0FBQTtJQUN6QixtQ0FBYSxDQUFBO0lBQ2IsNkNBQXVCLENBQUE7SUFDdkIsOENBQXdCLENBQUE7SUFDeEIscUNBQWUsQ0FBQTtJQUNmLG1DQUFhLENBQUE7SUFDYixtQ0FBYSxDQUFBO0lBQ2Isa0NBQVksQ0FBQTtJQUNaLGlDQUFXLENBQUE7SUFDWCwrQkFBUyxDQUFBO0lBQ1QsK0JBQVMsQ0FBQTtJQUNULCtCQUFTLENBQUE7SUFDVCwrQkFBUyxDQUFBO0lBQ1QsK0JBQVMsQ0FBQTtJQUNULCtCQUFTLENBQUE7SUFDVCxxQ0FBZSxDQUFBO0lBQ2YsaUNBQVcsQ0FBQTtJQUNYLGlDQUFXLENBQUE7SUFDWCwrQkFBUyxDQUFBO0lBQ1QscUNBQWUsQ0FBQTtJQUNmLHFDQUFlLENBQUE7SUFDZixtQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQXpCVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBeUI3QjtBQUVELG9GQUFvRjtBQUNwRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBK0M7SUFDaEYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFO0lBQ2pDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRTtJQUN2QyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUU7SUFDMUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFO0lBQzdDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRTtJQUM3QixFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUU7SUFDakMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFO0lBQy9CLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUU7SUFDdkQsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUU7SUFDbEQsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFO0lBQ3JDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRTtJQUNsQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUU7SUFDbEMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRTtJQUM5QyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRTtJQUNoRCxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUU7SUFDdkMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFO0lBQ25DLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRTtJQUNoQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUU7Q0FDOUIsQ0FBQztBQUVGLHNGQUFzRjtBQUN0RixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUV0RCw0RkFBNEY7QUFDNUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUV2RTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFL0U7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUUvQzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsR0FBbUI7SUFDN0QsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNwQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztJQUNuRSxJQUFJLE1BQU07UUFBRSxPQUFPLE1BQTRCLENBQUM7SUFDaEQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ2xDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNO1FBQ3hELHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLENBQ3pELENBQUM7SUFDRixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUUsT0FBOEIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBGbGlnaHQgcmVmdW5kIGRldGFpbHMgaW50ZXJmYWNlc1xuXG5leHBvcnQgaW50ZXJmYWNlIElSZWZ1bmREZXRhaWxzRGF0YSB7XG4gIGJvb2tpbmdJZD86IHN0cmluZyB8IG51bWJlcjtcbiAgcmVmdW5kQW1vdW50PzogbnVtYmVyO1xuICB0b3RhbFJlZnVuZEFtb3VudD86IG51bWJlcjtcbiAgd2FsbGV0UmVmdW5kQW1vdW50PzogbnVtYmVyO1xuICB0b3RhbENhcmRSZWZ1bmRBbW91bnQ/OiBudW1iZXI7XG4gIHRvdGFsTG95YWx0eVBvaW50c1JlZnVuZEFtb3VudD86IG51bWJlcjtcbiAgdG90YWxMb3lhbHR5UG9pbnRzPzogbnVtYmVyO1xuICBjdXJyZW5jeT86IHN0cmluZztcbiAgcmVmdW5kTWV0aG9kPzogUmVmdW5kUHJlZmVycmVkTWV0aG9kIHwgc3RyaW5nO1xuICBwYXltZW50R2F0ZXdheT86IFBheW1lbnRHYXRld2F5Q29kZSB8IExveWFsdHlQYXltZW50VHlwZSB8IHN0cmluZztcbiAgbG95YWx0eVBheW1lbnRUeXBlPzogTG95YWx0eVBheW1lbnRUeXBlIHwgc3RyaW5nO1xuICBpc0Z1bGxXYWxsZXRSZWZ1bmRBbGxvd2VkPzogYm9vbGVhbjtcbiAgcGF5bWVudE1ldGhvZEN1c3RvbWVyVXNlZD86IHN0cmluZztcbiAgaXNSZWZ1bmRhYmxlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgUmVmdW5kUHJlZmVycmVkTWV0aG9kID1cbiAgfCAnT1JJR0lOQUxfUEFZTUVOVF9NRVRIT0QnXG4gIHwgJ1dBTExFVCdcbiAgfCAnd2FsbGV0J1xuICB8ICdvcmlnaW5hbFBheW1lbnRNZXRob2QnXG4gIHwgJ0JBTktfVFJBTlNGRVInXG4gIHwgJ0xPWUFMVFlfUE9JTlRTJztcblxuZXhwb3J0IHR5cGUgTG95YWx0eVBheW1lbnRUeXBlID1cbiAgfCAnQUxNQVRBUl9QT0lOVFMnXG4gIHwgJ0FMRlVSU0FOJ1xuICB8ICdBbFJhamhpTW9rYWZhYSdcbiAgfCAnUWl0YWYnXG4gIHwgJ1dhbGEnO1xuXG5leHBvcnQgZW51bSBQYXltZW50R2F0ZXdheUNvZGUge1xuICBNQURBID0gJ01BREEnLFxuICBWSVNBID0gJ1ZJU0EnLFxuICBNQVNURVJDQVJEID0gJ01BU1RFUkNBUkQnLFxuICBBTUVYID0gJ0FNRVgnLFxuICBBUFBMRV9QQVkgPSAnQVBQTEVfUEFZJyxcbiAgQWxSYWpoaU1va2FmYWEgPSAnUkFKSEknLFxuICBRaXRhZiA9ICdRSVRBRicsXG4gIFdhbGEgPSAnV0FMQScsXG4gIFRhbWFyYSA9ICdUTScsXG4gIFRhYmJ5ID0gJ1RCJyxcbiAgU3RjID0gJ1NUQycsXG4gIENIID0gJ0NIJyxcbiAgSFAgPSAnSFAnLFxuICBNRiA9ICdNRicsXG4gIFdUID0gJ1dUJyxcbiAgVE0gPSAnVE0nLFxuICBUQiA9ICdUQicsXG4gIFJBSkhJID0gJ1JBSkhJJyxcbiAgU1RDID0gJ1NUQycsXG4gIFBQQiA9ICdQUEInLFxuICBQUCA9ICdQUCcsXG4gIFRBTUFNID0gJ1RBTUFNJyxcbiAgUUlUQUYgPSAnUUlUQUYnLFxuICBXQUxBID0gJ1dBTEEnXG59XG5cbi8qKiBMYWJlbHMgZm9yIGBwYXltZW50TWV0aG9kQ3VzdG9tZXJVc2VkYCBnYXRld2F5IGNvZGVzIHJldHVybmVkIGJ5IHRoZSBiYWNrZW5kLiAqL1xuZXhwb3J0IGNvbnN0IFBBWU1FTlRfR0FURVdBWV9MQUJFTFM6IFJlY29yZDxzdHJpbmcsIHsgZW46IHN0cmluZzsgYXI6IHN0cmluZyB9PiA9IHtcbiAgQ0g6IHsgZW46ICdDYXJkJywgYXI6ICfYp9mE2KjYt9in2YLYqScgfSxcbiAgSFA6IHsgZW46ICdIeXBlcnBheScsIGFyOiAn2YfYp9mK2KjYsSDYqNin2YonIH0sXG4gIE1GOiB7IGVuOiAnTXkgRmF0b29yYScsIGFyOiAn2YXYp9mKINmB2KfYqtmI2LHYqScgfSxcbiAgV1Q6IHsgZW46ICdXaXJlIFRyYW5zZmVyJywgYXI6ICfYqtit2YjZitmEINio2YbZg9mKJyB9LFxuICBTVEM6IHsgZW46ICdTVEMnLCBhcjogJ1NUQycgfSxcbiAgVE06IHsgZW46ICdUYW1hcmEnLCBhcjogJ9iq2YXYp9ix2KcnIH0sXG4gIFRCOiB7IGVuOiAnVGFiYnknLCBhcjogJ9iq2KfYqNmKJyB9LFxuICBSQUpISTogeyBlbjogJ0FsIFJhamhpIE1va2FmYWEnLCBhcjogJ9in2YTYsdin2KzYrdmKINmF2YPYp9mB2KLYqicgfSxcbiAgUFBCOiB7IGVuOiAnQ3VzdG9tZXIgQmFsYW5jZScsIGFyOiAn2LHYtdmK2K8g2KfZhNi52YXZitmEJyB9LFxuICBQUDogeyBlbjogJ1Bvc3RwYXknLCBhcjogJ9io2YjYs9iqINio2KfZiicgfSxcbiAgVEFNQU06IHsgZW46ICdUYW1hbScsIGFyOiAn2KrZhdin2YUnIH0sXG4gIFFJVEFGOiB7IGVuOiAnUWl0YWYnLCBhcjogJ9mC2LfYp9mBJyB9LFxuICBNSVM6IHsgZW46ICdNSVMgUGF5JywgYXI6ICdNSVMgUGF5JyB9LFxuICBNQVRBUjogeyBlbjogJ0FsbWF0YXIgUGF5JywgYXI6ICfYp9mE2YXYt9in2LEg2KjYp9mKJyB9LFxuICBDQjogeyBlbjogJ0NvbXBhbnkgQmFsYW5jZScsIGFyOiAn2LHYtdmK2K8g2KfZhNi02LHZg9ipJyB9LFxuICBBTkI6IHsgZW46ICdBTkInLCBhcjogJ9in2YTYudix2KjZiiDYp9mE2YjYt9mG2YonIH0sXG4gIEFNV0FMOiB7IGVuOiAnQW13YWwnLCBhcjogJ9ij2YXZiNin2YQnIH0sXG4gIFdBTEE6IHsgZW46ICdXYWxhJywgYXI6ICfZiNmE2KfYoScgfSxcbiAgWUdHOiB7IGVuOiAnWUdHJywgYXI6ICdZR0cnIH0sXG59O1xuXG4vKiogR2F0ZXdheSBjb2RlcyB0aGF0IHJlZnVuZCB0byBhbiBpbnN0YWxsbWVudCBwbGFuIHJhdGhlciB0aGFuIHRoZSBvcmlnaW5hbCBjYXJkLiAqL1xuZXhwb3J0IGNvbnN0IElOU1RBTExNRU5UX0dBVEVXQVlfQ09ERVMgPSBbJ1RNJywgJ1RCJ107XG5cbi8qKiBHYXRld2F5IGNvZGVzIHRoYXQgcmVmdW5kIHRvIGEgbG95YWx0eS1wcm9ncmFtIGFjY291bnQgcmF0aGVyIHRoYW4gdGhlIG9yaWdpbmFsIGNhcmQuICovXG5leHBvcnQgY29uc3QgTE9ZQUxUWV9HQVRFV0FZX0NPREVTID0gWydSQUpISScsICdRSVRBRicsICdTVEMnLCAnV0FMQSddO1xuXG4vKipcbiAqIEludGVybmFsIHBheW1lbnQtcHJvY2Vzc29yL2dhdGV3YXkgbmFtZXMsIG5ldmVyIGN1c3RvbWVyLXJlY29nbml6YWJsZVxuICogYnJhbmRzIOKAlCBtdXN0IG5vdCBiZSBzdXJmYWNlZCB2ZXJiYXRpbSAoZS5nLiBhIGNhcmQgcmVmdW5kIHByb2Nlc3NlZFxuICogdGhyb3VnaCBIeXBlcnBheSBtdXN0IHJlYWQgYXMgXCJDYXJkXCIvXCJPcmlnaW5hbCBQYXltZW50IE1ldGhvZFwiLCBuZXZlclxuICogXCJIeXBlcnBheVwiKS4gQ2FsbGVycyBmYWxsIGJhY2sgdG8gYSBnZW5lcmljIGxhYmVsIHdoZW5ldmVyIHRoZSBub3JtYWxpemVkXG4gKiBsb29rdXAgcmV0dXJucyAnJy5cbiAqL1xuZXhwb3J0IGNvbnN0IElOVEVSTkFMX0dBVEVXQVlfQ09ERVMgPSBbJ0hQJywgJ01GJywgJ1dUJywgJ1BQQicsICdQUCcsICdUQU1BTSddO1xuXG4vKipcbiAqIFJlc3VsdC9jb25maXJtYXRpb24tc2NyZWVuLW9ubHkgb3ZlcnJpZGU6IHRoZXNlIGdhdGV3YXlzIHByb2Nlc3MgY2FyZFxuICogcGF5bWVudHMgdGhyb3VnaCBNYWRhIOKAlCBzaG93biBzcGVjaWZpY2FsbHkgYXMgXCJNYWRhIENhcmRcIiBpbnN0ZWFkIG9mXG4gKiBmYWxsaW5nIGJhY2sgdG8gdGhlIGdlbmVyaWMgXCJPcmlnaW5hbCBQYXltZW50IE1ldGhvZFwiIGxhYmVsIHVzZWRcbiAqIGV2ZXJ5d2hlcmUgZWxzZSBgSU5URVJOQUxfR0FURVdBWV9DT0RFU2AgYXBwbGllcy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BREFfR0FURVdBWV9DT0RFUyA9IFsnSFAnLCAnQ0gnXTtcblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgcmF3IHBheW1lbnQgZ2F0ZXdheSBjb2RlIGZyb20gdGhlIGJhY2tlbmQgdG8gYSBzdGFuZGFyZGl6ZWQgY29kZS5cbiAqIEhhbmRsZXMgYm90aCB1cHBlcmNhc2UgY29kZXMgKGUuZy4gJ0hQJykgYW5kIGxhYmVscyAoZS5nLiAnSHlwZXJwYXknKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVBheW1lbnRHYXRld2F5Q29kZShyYXc/OiBzdHJpbmcgfCBudWxsKTogUGF5bWVudEdhdGV3YXlDb2RlIHwgJycge1xuICBpZiAoIXJhdykgcmV0dXJuICcnO1xuICBjb25zdCBuZWVkbGUgPSByYXcudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IGNvZGVzID0gT2JqZWN0LmtleXMoUEFZTUVOVF9HQVRFV0FZX0xBQkVMUyk7XG4gIGNvbnN0IGJ5Q29kZSA9IGNvZGVzLmZpbmQoKGNvZGUpID0+IGNvZGUudG9Mb3dlckNhc2UoKSA9PT0gbmVlZGxlKTtcbiAgaWYgKGJ5Q29kZSkgcmV0dXJuIGJ5Q29kZSBhcyBQYXltZW50R2F0ZXdheUNvZGU7XG4gIGNvbnN0IGJ5TGFiZWwgPSBjb2Rlcy5maW5kKChjb2RlKSA9PlxuICAgIFBBWU1FTlRfR0FURVdBWV9MQUJFTFNbY29kZV0uZW4udG9Mb3dlckNhc2UoKSA9PT0gbmVlZGxlIHx8XG4gICAgUEFZTUVOVF9HQVRFV0FZX0xBQkVMU1tjb2RlXS5hci50b0xvd2VyQ2FzZSgpID09PSBuZWVkbGVcbiAgKTtcbiAgcmV0dXJuIGJ5TGFiZWwgPyAoYnlMYWJlbCBhcyBQYXltZW50R2F0ZXdheUNvZGUpIDogJyc7XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ export class CancelHotelBookingPayload {
2
+ // Add other properties as needed
3
+ constructor(data) {
4
+ Object.assign(this, data);
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLWhvdGVsLWJvb2tpbmcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL21vZGVscy9jYW5jZWwtaG90ZWwtYm9va2luZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8seUJBQXlCO0lBSXBDLGlDQUFpQztJQUVqQyxZQUFZLElBQXlDO1FBQ25ELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDYW5jZWxIb3RlbEJvb2tpbmdQYXlsb2FkIHtcbiAgYm9va2luZ0lkPzogc3RyaW5nO1xuICByb29tSWRzPzogc3RyaW5nW107XG4gIHJlZnVuZE1ldGhvZD86IHN0cmluZztcbiAgLy8gQWRkIG90aGVyIHByb3BlcnRpZXMgYXMgbmVlZGVkXG5cbiAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8Q2FuY2VsSG90ZWxCb29raW5nUGF5bG9hZD4pIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGRhdGEpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { Injectable, signal } from '@angular/core';
2
+ import { of, BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class HotelManageBookingService {
5
+ constructor() {
6
+ this.activeAsideTab = signal('details');
7
+ this.selectedHotelBooking = new BehaviorSubject(null);
8
+ }
9
+ getActiveAsideTab() {
10
+ return this.activeAsideTab();
11
+ }
12
+ setActiveAsideTab(tab) {
13
+ this.activeAsideTab.set(tab);
14
+ }
15
+ getBookingDetails(bookingId) {
16
+ return of(null);
17
+ }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HotelManageBookingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
19
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HotelManageBookingService, providedIn: 'root' }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HotelManageBookingService, decorators: [{
22
+ type: Injectable,
23
+ args: [{
24
+ providedIn: 'root'
25
+ }]
26
+ }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90ZWwtbWFuYWdlLWJvb2tpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQvc2VydmljZXMvaG90ZWwtbWFuYWdlLWJvb2tpbmcvaG90ZWwtbWFuYWdlLWJvb2tpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLdkQsTUFBTSxPQUFPLHlCQUF5QjtJQUh0QztRQUlVLG1CQUFjLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO0tBYXZEO0lBWEMsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQWlCO1FBQ2pDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7K0dBZFUseUJBQXlCO21IQUF6Qix5QkFBeUIsY0FGeEIsTUFBTTs7NEZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBIb3RlbE1hbmFnZUJvb2tpbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBhY3RpdmVBc2lkZVRhYiA9IHNpZ25hbDxzdHJpbmc+KCdkZXRhaWxzJyk7XG4gIHNlbGVjdGVkSG90ZWxCb29raW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuXG4gIGdldEFjdGl2ZUFzaWRlVGFiKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlQXNpZGVUYWIoKTtcbiAgfVxuXG4gIHNldEFjdGl2ZUFzaWRlVGFiKHRhYjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVBc2lkZVRhYi5zZXQodGFiKTtcbiAgfVxuXG4gIGdldEJvb2tpbmdEZXRhaWxzKGJvb2tpbmdJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gb2YobnVsbCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { of } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class HotelManageBookingEndpointsService {
5
+ cancelBookingRequest(payload) {
6
+ return of(null);
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HotelManageBookingEndpointsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HotelManageBookingEndpointsService, providedIn: 'root' }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HotelManageBookingEndpointsService, decorators: [{
12
+ type: Injectable,
13
+ args: [{
14
+ providedIn: 'root'
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90ZWwtbWFuYWdlLWJvb2tpbmctZW5kcG9pbnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL3NlcnZpY2VzL2hvdGVsLW1hbmFnZS1ib29raW5nLWVuZHBvaW50cy9ob3RlbC1tYW5hZ2UtYm9va2luZy1lbmRwb2ludHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3RDLE1BQU0sT0FBTyxrQ0FBa0M7SUFDN0Msb0JBQW9CLENBQUMsT0FBWTtRQUMvQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDOytHQUhVLGtDQUFrQzttSEFBbEMsa0NBQWtDLGNBRmpDLE1BQU07OzRGQUVQLGtDQUFrQztrQkFIOUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBIb3RlbE1hbmFnZUJvb2tpbmdFbmRwb2ludHNTZXJ2aWNlIHtcbiAgY2FuY2VsQm9va2luZ1JlcXVlc3QocGF5bG9hZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gb2YobnVsbCk7XG4gIH1cbn1cbiJdfQ==