@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.
- package/esm2022/lib/components/action-card/action-card.component.mjs +3 -3
- package/esm2022/lib/components/add-note-dialog/add-note-dialog.component.mjs +3 -3
- package/esm2022/lib/components/almatar-aside/aside-back-button.service.mjs +24 -0
- package/esm2022/lib/components/almatar-aside/aside.component.mjs +122 -0
- package/esm2022/lib/components/booking-input/booking-input.component.mjs +4 -3
- package/esm2022/lib/components/cancel-dialog/cancel-dialog.component.mjs +53 -4
- package/esm2022/lib/components/data-search/data-search.component.mjs +3 -3
- package/esm2022/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.mjs +544 -0
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-method/almatar-hotel-auto-cancellation-refund-method.component.mjs +43 -0
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary/almatar-hotel-auto-cancellation-refund-summary.component.mjs +296 -0
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/almatar-hotel-auto-cancellation-select-rooms.component.mjs +88 -0
- 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
- 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
- package/esm2022/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.mjs +129 -0
- package/esm2022/lib/components/hotel-cancel/components/hotel-refund-method-selector/hotel-refund-method-selector.component.mjs +321 -0
- package/esm2022/lib/components/hotel-cancel/components/result-overlay/result-overlay.component.mjs +52 -0
- package/esm2022/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-endpoints.enum.mjs +9 -0
- package/esm2022/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-step.enum.mjs +7 -0
- package/esm2022/lib/components/hotel-cancel/interfaces/i-almatar-hotel-auto-cancellation.interface.mjs +2 -0
- package/esm2022/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation-endpoints.service.mjs +457 -0
- package/esm2022/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation.service.mjs +55 -0
- package/esm2022/lib/components/hotel-itinerary-card/hotel-itinerary-card.component.mjs +48 -0
- package/esm2022/lib/components/reissue-dialog/reissue-dialog.component.mjs +135 -0
- package/esm2022/lib/components/reissue-dialog/reissue-upgrade.store.mjs +305 -0
- package/esm2022/lib/components/reissue-dialog/reissue.store.mjs +349 -0
- package/esm2022/lib/components/reissue-dialog/steps/reissue-date-step/reissue-date-step.component.mjs +45 -0
- package/esm2022/lib/components/reissue-dialog/steps/reissue-legs-step/reissue-legs-step.component.mjs +140 -0
- package/esm2022/lib/components/reissue-dialog/steps/reissue-notice/reissue-notice.component.mjs +16 -0
- package/esm2022/lib/components/reissue-dialog/steps/reissue-route-step/reissue-route-step.component.mjs +104 -0
- package/esm2022/lib/components/reissue-dialog/steps/reissue-service-step/reissue-service-step.component.mjs +44 -0
- package/esm2022/lib/components/reissue-dialog/steps/reissue-upgrade-confirm-step/reissue-upgrade-confirm-step.component.mjs +193 -0
- package/esm2022/lib/components/reissue-dialog/steps/reissue-upgrade-step/reissue-upgrade-step.component.mjs +88 -0
- package/esm2022/lib/components/result-panel/result-panel.component.mjs +3 -3
- package/esm2022/lib/components/shared/components/confirm-modal/confirm-modal.component.mjs +75 -0
- package/esm2022/lib/components/shared/components/manage-booking-failed-modal/manage-booking-failed-modal.component.mjs +46 -0
- package/esm2022/lib/components/shared/enums/hotel-manage-booking-aside-tab.enum.mjs +9 -0
- package/esm2022/lib/components/shared/interfaces/i-flight-refund-details.mjs +86 -0
- package/esm2022/lib/components/shared/models/cancel-hotel-booking.model.mjs +7 -0
- package/esm2022/lib/components/shared/services/hotel-manage-booking/hotel-manage-booking.service.mjs +27 -0
- package/esm2022/lib/components/shared/services/hotel-manage-booking-endpoints/hotel-manage-booking-endpoints.service.mjs +17 -0
- package/esm2022/lib/components/workflow-actions/workflow-actions.component.mjs +5 -3
- package/esm2022/lib/config/dashboard.config.mjs +3 -1
- package/esm2022/lib/config/hotel-actions.config.mjs +21 -1
- package/esm2022/lib/models/booking.types.mjs +73 -2
- package/esm2022/lib/models/reissue.types.mjs +2 -0
- package/esm2022/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.mjs +31 -7
- package/esm2022/lib/services/booking.service.mjs +6 -2
- package/esm2022/lib/services/reissue.service.mjs +142 -0
- package/esm2022/lib/services/toast.service.mjs +15 -7
- package/esm2022/lib/shared/components/currency-code-icon/currency-code-icon.component.mjs +35 -0
- package/esm2022/lib/shared/enums/brand-enums.enum.mjs +7 -0
- package/esm2022/lib/shared/environments/environment.mjs +10 -0
- package/esm2022/lib/shared/models/index.mjs +6 -0
- package/esm2022/lib/shared/modules/almatar-icon/almatar-icon.module.mjs +36 -0
- package/esm2022/lib/shared/modules/loader/loader.module.mjs +43 -0
- package/esm2022/lib/shared/pipes/exchange.pipe.mjs +49 -0
- package/esm2022/lib/shared/services/api.service.mjs +42 -0
- package/esm2022/lib/shared/services/shared.service.mjs +34 -0
- package/esm2022/lib/shared/services/translation.service.mjs +61 -0
- package/esm2022/lib/shared/services/webengage-tracking.service.mjs +28 -0
- package/esm2022/lib/shared/store/selectors/currency.selectors.mjs +9 -0
- package/esm2022/lib/utils/reissue-format.mjs +64 -0
- package/esm2022/lib/utils/reissue-url.builder.mjs +314 -0
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/almatar-smart-booking-dashboard.mjs +5387 -395
- package/fesm2022/almatar-smart-booking-dashboard.mjs.map +1 -1
- package/lib/components/action-dialog/action-dialog.component.d.ts +1 -1
- package/lib/components/almatar-aside/aside-back-button.service.d.ts +11 -0
- package/lib/components/almatar-aside/aside.component.d.ts +46 -0
- package/lib/components/cancel-dialog/cancel-dialog.component.d.ts +7 -0
- package/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.d.ts +97 -0
- package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-method/almatar-hotel-auto-cancellation-refund-method.component.d.ts +25 -0
- package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary/almatar-hotel-auto-cancellation-refund-summary.component.d.ts +91 -0
- package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/almatar-hotel-auto-cancellation-select-rooms.component.d.ts +39 -0
- 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
- 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
- package/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.d.ts +38 -0
- package/lib/components/hotel-cancel/components/hotel-refund-method-selector/hotel-refund-method-selector.component.d.ts +142 -0
- package/lib/components/hotel-cancel/components/result-overlay/result-overlay.component.d.ts +23 -0
- package/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-endpoints.enum.d.ts +7 -0
- package/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-step.enum.d.ts +5 -0
- package/lib/components/hotel-cancel/interfaces/i-almatar-hotel-auto-cancellation.interface.d.ts +252 -0
- package/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation-endpoints.service.d.ts +88 -0
- package/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation.service.d.ts +21 -0
- package/lib/components/hotel-itinerary-card/hotel-itinerary-card.component.d.ts +16 -0
- package/lib/components/reissue-dialog/reissue-dialog.component.d.ts +34 -0
- package/lib/components/reissue-dialog/reissue-upgrade.store.d.ts +96 -0
- package/lib/components/reissue-dialog/reissue.store.d.ts +124 -0
- package/lib/components/reissue-dialog/steps/reissue-date-step/reissue-date-step.component.d.ts +11 -0
- package/lib/components/reissue-dialog/steps/reissue-legs-step/reissue-legs-step.component.d.ts +16 -0
- package/lib/components/reissue-dialog/steps/reissue-notice/reissue-notice.component.d.ts +8 -0
- package/lib/components/reissue-dialog/steps/reissue-route-step/reissue-route-step.component.d.ts +21 -0
- package/lib/components/reissue-dialog/steps/reissue-service-step/reissue-service-step.component.d.ts +17 -0
- package/lib/components/reissue-dialog/steps/reissue-upgrade-confirm-step/reissue-upgrade-confirm-step.component.d.ts +28 -0
- package/lib/components/reissue-dialog/steps/reissue-upgrade-step/reissue-upgrade-step.component.d.ts +13 -0
- package/lib/components/result-panel/result-panel.component.d.ts +1 -1
- package/lib/components/shared/components/confirm-modal/confirm-modal.component.d.ts +17 -0
- package/lib/components/shared/components/manage-booking-failed-modal/manage-booking-failed-modal.component.d.ts +10 -0
- package/lib/components/shared/enums/hotel-manage-booking-aside-tab.enum.d.ts +7 -0
- package/lib/components/shared/interfaces/i-flight-refund-details.d.ts +73 -0
- package/lib/components/shared/models/cancel-hotel-booking.model.d.ts +6 -0
- package/lib/components/shared/services/hotel-manage-booking/hotel-manage-booking.service.d.ts +11 -0
- package/lib/components/shared/services/hotel-manage-booking-endpoints/hotel-manage-booking-endpoints.service.d.ts +7 -0
- package/lib/components/workflow-actions/workflow-actions.component.d.ts +3 -1
- package/lib/config/dashboard.config.d.ts +29 -0
- package/lib/models/booking.types.d.ts +28 -0
- package/lib/models/reissue.types.d.ts +147 -0
- package/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.d.ts +5 -1
- package/lib/services/reissue.service.d.ts +45 -0
- package/lib/services/toast.service.d.ts +14 -1
- package/lib/shared/components/currency-code-icon/currency-code-icon.component.d.ts +13 -0
- package/lib/shared/enums/brand-enums.enum.d.ts +5 -0
- package/lib/shared/environments/environment.d.ts +7 -0
- package/lib/shared/models/index.d.ts +11 -0
- package/lib/shared/modules/almatar-icon/almatar-icon.module.d.ts +13 -0
- package/lib/shared/modules/loader/loader.module.d.ts +13 -0
- package/lib/shared/pipes/exchange.pipe.d.ts +17 -0
- package/lib/shared/services/api.service.d.ts +43 -0
- package/lib/shared/services/shared.service.d.ts +12 -0
- package/lib/shared/services/translation.service.d.ts +17 -0
- package/lib/shared/services/webengage-tracking.service.d.ts +8 -0
- package/lib/shared/store/selectors/currency.selectors.d.ts +2 -0
- package/lib/utils/reissue-format.d.ts +28 -0
- package/lib/utils/reissue-url.builder.d.ts +24 -0
- package/package.json +9 -24
- package/public-api.d.ts +5 -1
- package/LICENSE +0 -21
- package/README.md +0 -132
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
3
|
+
import { of } from 'rxjs';
|
|
4
|
+
import { catchError, map } from 'rxjs/operators';
|
|
5
|
+
import { SBD_CONFIG } from '../config/dashboard.config';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
/**
|
|
8
|
+
* Query params the web always sends on `create-post-booking` (`getEntrySourceDeviceBrand()`): where the flow started
|
|
9
|
+
* and on which device. Same defaults as the web; ask the backend which values BO should send.
|
|
10
|
+
*/
|
|
11
|
+
const POST_BOOKING_PARAMS = { entrySource: 'navigation bar', device: 'web' };
|
|
12
|
+
/**
|
|
13
|
+
* Reissue APIs — the same endpoints the consumer web uses (the backend opens them for BO).
|
|
14
|
+
*/
|
|
15
|
+
export class SbdReissueService {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.http = inject(HttpClient);
|
|
18
|
+
this.config = inject(SBD_CONFIG);
|
|
19
|
+
this.base = this.config.apiBase;
|
|
20
|
+
}
|
|
21
|
+
get headers() {
|
|
22
|
+
return { platform: this.config.platform };
|
|
23
|
+
}
|
|
24
|
+
/** `POST /v2/manage-booking/flight/create-post-booking/{bookingId}` -> `postBookingId`. */
|
|
25
|
+
createPostBooking(bookingId) {
|
|
26
|
+
return this.http
|
|
27
|
+
.post(`${this.base}/v2/manage-booking/flight/create-post-booking/${bookingId}`, null, // the web sends no body on this call
|
|
28
|
+
{ headers: this.headers, params: POST_BOOKING_PARAMS })
|
|
29
|
+
.pipe(map(res => res?.data?.postBookingId ?? ''));
|
|
30
|
+
}
|
|
31
|
+
/** `GET /v3/manage-booking/flight/reissue/availability/{bookingId}/{postBookingId}` -> `data.legs[]`. */
|
|
32
|
+
getAvailability(bookingId, postBookingId, ctx) {
|
|
33
|
+
return this.http.get(`${this.base}/v3/manage-booking/flight/reissue/availability/${bookingId}/${postBookingId}`, { headers: this.headers });
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* `POST /v3/manage-booking/flight/reissue/upgrade-class/{bookingId}/{postBookingId}` — same call (and body) the
|
|
37
|
+
* web makes to decide whether the "Upgrade Class" option is shown. Returns the unwrapped `data`.
|
|
38
|
+
*/
|
|
39
|
+
getUpgradeClassOptions(bookingId, postBookingId, ctx) {
|
|
40
|
+
const body = {
|
|
41
|
+
serviceName: 'change-flight-class',
|
|
42
|
+
legs: ctx.legs.map(l => ({
|
|
43
|
+
legId: l.legId,
|
|
44
|
+
legDepartureAirportCode: l.originCode,
|
|
45
|
+
legArrivalAirportCode: l.destinationCode,
|
|
46
|
+
legDepartureDate: l.departure,
|
|
47
|
+
})),
|
|
48
|
+
};
|
|
49
|
+
return this.http
|
|
50
|
+
.post(`${this.base}/v3/manage-booking/flight/reissue/upgrade-class/${bookingId}/${postBookingId}`, body, { headers: this.headers })
|
|
51
|
+
.pipe(map(res => (res?.data ?? res) ?? null));
|
|
52
|
+
}
|
|
53
|
+
/** Same rule as the web's `hasUpgradeOptions()`: at least one option in any section. */
|
|
54
|
+
hasUpgradeOptions(data) {
|
|
55
|
+
if (!data)
|
|
56
|
+
return false;
|
|
57
|
+
if (data.fareOptionScope === 'leg')
|
|
58
|
+
return (data.legs ?? []).some(l => (l.options?.length ?? 0) > 0);
|
|
59
|
+
return (data.options?.length ?? 0) > 0;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Airport picker for Change Route. Same typeahead endpoint the web and the backoffice already use
|
|
63
|
+
* (`StaticDataService.getAirports`) — no extra backend work needed. Response: `data[].items[].items[]`.
|
|
64
|
+
* An empty term makes no request (the dialog lists the booking's own airports meanwhile).
|
|
65
|
+
*/
|
|
66
|
+
searchAirports(term) {
|
|
67
|
+
const q = term.trim();
|
|
68
|
+
if (!q)
|
|
69
|
+
return of([]);
|
|
70
|
+
return this.http
|
|
71
|
+
.get(`${this.base}/v1/typeahead-search-service/suggestion/suggest/flights`, { params: { q }, headers: this.headers })
|
|
72
|
+
.pipe(map(res => {
|
|
73
|
+
const out = [];
|
|
74
|
+
for (const group of res?.data ?? []) {
|
|
75
|
+
for (const item of group.items ?? []) {
|
|
76
|
+
if (item.items)
|
|
77
|
+
out.push(...item.items);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return out.map(a => ({
|
|
81
|
+
id: a.id,
|
|
82
|
+
name: a.name,
|
|
83
|
+
city_name: a.city_name,
|
|
84
|
+
country_name: a.country_name,
|
|
85
|
+
type: a.type === 'airport' ? 'airport' : 'city',
|
|
86
|
+
}));
|
|
87
|
+
}), catchError(() => of([])));
|
|
88
|
+
}
|
|
89
|
+
// ── Upgrade Class ──────────────────────────────────────────────────────────
|
|
90
|
+
/**
|
|
91
|
+
* `POST /v3/manage-booking/flight/reissue/choose-flight/{bookingId}/{postBookingId}` — prices the chosen upgrade
|
|
92
|
+
* option. Same endpoint/body the web uses; response `data` carries `itineraryAvailable`, `priceChanged`, `price`, `currency`.
|
|
93
|
+
*/
|
|
94
|
+
chooseFlight(bookingId, postBookingId, body) {
|
|
95
|
+
return this.http
|
|
96
|
+
.post(`${this.base}/v3/manage-booking/flight/reissue/choose-flight/${bookingId}/${postBookingId}`, body, { headers: this.headers })
|
|
97
|
+
.pipe(map(res => res?.data ?? {}));
|
|
98
|
+
}
|
|
99
|
+
/** `POST /v2/manage-booking/flight/book-now` — places a zero-total reissue (no payment needed). */
|
|
100
|
+
bookNow(postBookingId) {
|
|
101
|
+
return this.http.post(`${this.base}/v2/manage-booking/flight/book-now`, { postBookingId }, { headers: this.headers });
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Payment link of a reissue with an amount to pay. There is no separate API: the backend puts the link in the
|
|
105
|
+
* cart of the post-booking (`GET /v2/manage-booking/flight/cart/{postBookingId}`, the call the web checkout reads).
|
|
106
|
+
* The name of the field is not final yet: the first of the names below that exists is used, and the call fails
|
|
107
|
+
* with a clear message when the cart has none.
|
|
108
|
+
*/
|
|
109
|
+
getPaymentLink(postBookingId, amount = 0, currency = '') {
|
|
110
|
+
return this.http
|
|
111
|
+
.get(`${this.base}/v2/manage-booking/flight/cart/${postBookingId}`, {
|
|
112
|
+
headers: this.headers,
|
|
113
|
+
})
|
|
114
|
+
.pipe(map(res => {
|
|
115
|
+
const cart = res?.data ?? {};
|
|
116
|
+
let url = cart['paymentLink'] ?? cart['link'] ?? cart['payment']?.link ?? cart['payment']?.paymentLink ?? cart['payment']?.url;
|
|
117
|
+
if (!url)
|
|
118
|
+
throw new Error('The cart has no payment link yet.');
|
|
119
|
+
// The cart returns only a path ("/<paymentId>"): the customer page base comes from the host config.
|
|
120
|
+
if (!/^https?:\/\//i.test(url)) {
|
|
121
|
+
const linkBase = this.config.paymentLinkBase?.replace(/\/+$/, '');
|
|
122
|
+
if (!linkBase) {
|
|
123
|
+
throw new Error(`The cart returned a relative link (${url}) and no paymentLinkBase is configured.`);
|
|
124
|
+
}
|
|
125
|
+
url = `${linkBase}${url.startsWith('/') ? '' : '/'}${url}`;
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
url,
|
|
129
|
+
amount: cart['payment']?.amount ?? amount,
|
|
130
|
+
currency: cart['payment']?.currency ?? currency,
|
|
131
|
+
expiresAt: cart['payment']?.expiryDate ?? cart['expiryDate'],
|
|
132
|
+
};
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdReissueService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
136
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdReissueService, providedIn: 'root' }); }
|
|
137
|
+
}
|
|
138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdReissueService, decorators: [{
|
|
139
|
+
type: Injectable,
|
|
140
|
+
args: [{ providedIn: 'root' }]
|
|
141
|
+
}] });
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVpc3N1ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9zZXJ2aWNlcy9yZWlzc3VlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBV3hEOzs7R0FHRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRTdFOztHQUVHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVVLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QixTQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7S0E0SnBDO0lBMUpDLElBQVksT0FBTztRQUNqQixPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELDJGQUEyRjtJQUMzRixpQkFBaUIsQ0FBQyxTQUFpQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsSUFBSSxDQUNILEdBQUcsSUFBSSxDQUFDLElBQUksaURBQWlELFNBQVMsRUFBRSxFQUN4RSxJQUFJLEVBQUUscUNBQXFDO1FBQzND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LEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUM3RCxDQUFDO1lBQ0QsT0FBTztnQkFDTCxHQUFHO2dCQUNILE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxJQUFJLE1BQU07Z0JBQ3pDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxJQUFJLFFBQVE7Z0JBQy9DLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDN0QsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDOytHQTlKVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQURKLE1BQU07OzRGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNCRF9DT05GSUcgfSBmcm9tICcuLi9jb25maWcvZGFzaGJvYXJkLmNvbmZpZyc7XG5pbXBvcnQge1xuICBSZWlzc3VlQWlycG9ydCxcbiAgUmVpc3N1ZUF2YWlsYWJpbGl0eVJlc3BvbnNlLFxuICBSZWlzc3VlQm9va2luZ0NvbnRleHQsXG4gIFJlaXNzdWVDaG9vc2VGbGlnaHRSZXF1ZXN0LFxuICBSZWlzc3VlQ2hvb3NlRmxpZ2h0UmVzcG9uc2UsXG4gIFJlaXNzdWVQYXltZW50TGluayxcbiAgUmVpc3N1ZVVwZ3JhZGVPcHRpb25zUmVzcG9uc2UsXG59IGZyb20gJy4uL21vZGVscy9yZWlzc3VlLnR5cGVzJztcblxuLyoqXG4gKiBRdWVyeSBwYXJhbXMgdGhlIHdlYiBhbHdheXMgc2VuZHMgb24gYGNyZWF0ZS1wb3N0LWJvb2tpbmdgIChgZ2V0RW50cnlTb3VyY2VEZXZpY2VCcmFuZCgpYCk6IHdoZXJlIHRoZSBmbG93IHN0YXJ0ZWRcbiAqIGFuZCBvbiB3aGljaCBkZXZpY2UuIFNhbWUgZGVmYXVsdHMgYXMgdGhlIHdlYjsgYXNrIHRoZSBiYWNrZW5kIHdoaWNoIHZhbHVlcyBCTyBzaG91bGQgc2VuZC5cbiAqL1xuY29uc3QgUE9TVF9CT09LSU5HX1BBUkFNUyA9IHsgZW50cnlTb3VyY2U6ICduYXZpZ2F0aW9uIGJhcicsIGRldmljZTogJ3dlYicgfTtcblxuLyoqXG4gKiBSZWlzc3VlIEFQSXMg4oCUIHRoZSBzYW1lIGVuZHBvaW50cyB0aGUgY29uc3VtZXIgd2ViIHVzZXMgKHRoZSBiYWNrZW5kIG9wZW5zIHRoZW0gZm9yIEJPKS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTYmRSZWlzc3VlU2VydmljZSB7XG4gIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcHJpdmF0ZSBjb25maWcgPSBpbmplY3QoU0JEX0NPTkZJRyk7XG4gIHByaXZhdGUgYmFzZSA9IHRoaXMuY29uZmlnLmFwaUJhc2U7XG5cbiAgcHJpdmF0ZSBnZXQgaGVhZGVycygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4geyBwbGF0Zm9ybTogdGhpcy5jb25maWcucGxhdGZvcm0gfTtcbiAgfVxuXG4gIC8qKiBgUE9TVCAvdjIvbWFuYWdlLWJvb2tpbmcvZmxpZ2h0L2NyZWF0ZS1wb3N0LWJvb2tpbmcve2Jvb2tpbmdJZH1gIC0+IGBwb3N0Qm9va2luZ0lkYC4gKi9cbiAgY3JlYXRlUG9zdEJvb2tpbmcoYm9va2luZ0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PHsgZGF0YT86IHsgcG9zdEJvb2tpbmdJZD86IHN0cmluZyB9IH0+KFxuICAgICAgICBgJHt0aGlzLmJhc2V9L3YyL21hbmFnZS1ib29raW5nL2ZsaWdodC9jcmVhdGUtcG9zdC1ib29raW5nLyR7Ym9va2luZ0lkfWAsXG4gICAgICAgIG51bGwsIC8vIHRoZSB3ZWIgc2VuZHMgbm8gYm9keSBvbiB0aGlzIGNhbGxcbiAgICAgICAgeyBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsIHBhcmFtczogUE9TVF9CT09LSU5HX1BBUkFNUyB9LFxuICAgICAgKVxuICAgICAgLnBpcGUobWFwKHJlcyA9PiByZXM/LmRhdGE/LnBvc3RCb29raW5nSWQgPz8gJycpKTtcbiAgfVxuXG4gIC8qKiBgR0VUIC92My9tYW5hZ2UtYm9va2luZy9mbGlnaHQvcmVpc3N1ZS9hdmFpbGFiaWxpdHkve2Jvb2tpbmdJZH0ve3Bvc3RCb29raW5nSWR9YCAtPiBgZGF0YS5sZWdzW11gLiAqL1xuICBnZXRBdmFpbGFiaWxpdHkoXG4gICAgYm9va2luZ0lkOiBzdHJpbmcsXG4gICAgcG9zdEJvb2tpbmdJZDogc3RyaW5nLFxuICAgIGN0eD86IFJlaXNzdWVCb29raW5nQ29udGV4dCxcbiAgKTogT2JzZXJ2YWJsZTxSZWlzc3VlQXZhaWxhYmlsaXR5UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxSZWlzc3VlQXZhaWxhYmlsaXR5UmVzcG9uc2U+KFxuICAgICAgYCR7dGhpcy5iYXNlfS92My9tYW5hZ2UtYm9va2luZy9mbGlnaHQvcmVpc3N1ZS9hdmFpbGFiaWxpdHkvJHtib29raW5nSWR9LyR7cG9zdEJvb2tpbmdJZH1gLFxuICAgICAgeyBoZWFkZXJzOiB0aGlzLmhlYWRlcnMgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGBQT1NUIC92My9tYW5hZ2UtYm9va2luZy9mbGlnaHQvcmVpc3N1ZS91cGdyYWRlLWNsYXNzL3tib29raW5nSWR9L3twb3N0Qm9va2luZ0lkfWAg4oCUIHNhbWUgY2FsbCAoYW5kIGJvZHkpIHRoZVxuICAgKiB3ZWIgbWFrZXMgdG8gZGVjaWRlIHdoZXRoZXIgdGhlIFwiVXBncmFkZSBDbGFzc1wiIG9wdGlvbiBpcyBzaG93bi4gUmV0dXJucyB0aGUgdW53cmFwcGVkIGBkYXRhYC5cbiAgICovXG4gIGdldFVwZ3JhZGVDbGFzc09wdGlvbnMoXG4gICAgYm9va2luZ0lkOiBzdHJpbmcsXG4gICAgcG9zdEJvb2tpbmdJZDogc3RyaW5nLFxuICAgIGN0eDogUmVpc3N1ZUJvb2tpbmdDb250ZXh0LFxuICApOiBPYnNlcnZhYmxlPFJlaXNzdWVVcGdyYWRlT3B0aW9uc1Jlc3BvbnNlIHwgbnVsbD4ge1xuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICBzZXJ2aWNlTmFtZTogJ2NoYW5nZS1mbGlnaHQtY2xhc3MnLFxuICAgICAgbGVnczogY3R4LmxlZ3MubWFwKGwgPT4gKHtcbiAgICAgICAgbGVnSWQ6IGwubGVnSWQsXG4gICAgICAgIGxlZ0RlcGFydHVyZUFpcnBvcnRDb2RlOiBsLm9yaWdpbkNvZGUsXG4gICAgICAgIGxlZ0Fycml2YWxBaXJwb3J0Q29kZTogbC5kZXN0aW5hdGlvbkNvZGUsXG4gICAgICAgIGxlZ0RlcGFydHVyZURhdGU6IGwuZGVwYXJ0dXJlLFxuICAgICAgfSkpLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8eyBkYXRhPzogUmVpc3N1ZVVwZ3JhZGVPcHRpb25zUmVzcG9uc2UgfT4oXG4gICAgICAgIGAke3RoaXMuYmFzZX0vdjMvbWFuYWdlLWJvb2tpbmcvZmxpZ2h0L3JlaXNzdWUvdXBncmFkZS1jbGFzcy8ke2Jvb2tpbmdJZH0vJHtwb3N0Qm9va2luZ0lkfWAsXG4gICAgICAgIGJvZHksXG4gICAgICAgIHsgaGVhZGVyczogdGhpcy5oZWFkZXJzIH0sXG4gICAgICApXG4gICAgICAucGlwZShtYXAocmVzID0+IChyZXM/LmRhdGEgPz8gKHJlcyBhcyBSZWlzc3VlVXBncmFkZU9wdGlvbnNSZXNwb25zZSkpID8/IG51bGwpKTtcbiAgfVxuXG4gIC8qKiBTYW1lIHJ1bGUgYXMgdGhlIHdlYidzIGBoYXNVcGdyYWRlT3B0aW9ucygpYDogYXQgbGVhc3Qgb25lIG9wdGlvbiBpbiBhbnkgc2VjdGlvbi4gKi9cbiAgaGFzVXBncmFkZU9wdGlvbnMoZGF0YTogUmVpc3N1ZVVwZ3JhZGVPcHRpb25zUmVzcG9uc2UgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKCFkYXRhKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGRhdGEuZmFyZU9wdGlvblNjb3BlID09PSAnbGVnJykgcmV0dXJuIChkYXRhLmxlZ3MgPz8gW10pLnNvbWUobCA9PiAobC5vcHRpb25zPy5sZW5ndGggPz8gMCkgPiAwKTtcbiAgICByZXR1cm4gKGRhdGEub3B0aW9ucz8ubGVuZ3RoID8/IDApID4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBaXJwb3J0IHBpY2tlciBmb3IgQ2hhbmdlIFJvdXRlLiBTYW1lIHR5cGVhaGVhZCBlbmRwb2ludCB0aGUgd2ViIGFuZCB0aGUgYmFja29mZmljZSBhbHJlYWR5IHVzZVxuICAgKiAoYFN0YXRpY0RhdGFTZXJ2aWNlLmdldEFpcnBvcnRzYCkg4oCUIG5vIGV4dHJhIGJhY2tlbmQgd29yayBuZWVkZWQuIFJlc3BvbnNlOiBgZGF0YVtdLml0ZW1zW10uaXRlbXNbXWAuXG4gICAqIEFuIGVtcHR5IHRlcm0gbWFrZXMgbm8gcmVxdWVzdCAodGhlIGRpYWxvZyBsaXN0cyB0aGUgYm9va2luZydzIG93biBhaXJwb3J0cyBtZWFud2hpbGUpLlxuICAgKi9cbiAgc2VhcmNoQWlycG9ydHModGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZWlzc3VlQWlycG9ydFtdPiB7XG4gICAgY29uc3QgcSA9IHRlcm0udHJpbSgpO1xuICAgIGlmICghcSkgcmV0dXJuIG9mKFtdKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8eyBkYXRhPzogeyBpdGVtcz86IHsgaXRlbXM/OiBSZWlzc3VlQWlycG9ydFtdIH1bXSB9W10gfT4oXG4gICAgICAgIGAke3RoaXMuYmFzZX0vdjEvdHlwZWFoZWFkLXNlYXJjaC1zZXJ2aWNlL3N1Z2dlc3Rpb24vc3VnZ2VzdC9mbGlnaHRzYCxcbiAgICAgICAgeyBwYXJhbXM6IHsgcSB9LCBoZWFkZXJzOiB0aGlzLmhlYWRlcnMgfSxcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICBjb25zdCBvdXQ6IFJlaXNzdWVBaXJwb3J0W10gPSBbXTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHJlcz8uZGF0YSA/PyBbXSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwLml0ZW1zID8/IFtdKSB7XG4gICAgICAgICAgICAgIGlmIChpdGVtLml0ZW1zKSBvdXQucHVzaCguLi5pdGVtLml0ZW1zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG91dC5tYXAoYSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGEuaWQsXG4gICAgICAgICAgICBuYW1lOiBhLm5hbWUsXG4gICAgICAgICAgICBjaXR5X25hbWU6IGEuY2l0eV9uYW1lLFxuICAgICAgICAgICAgY291bnRyeV9uYW1lOiBhLmNvdW50cnlfbmFtZSxcbiAgICAgICAgICAgIHR5cGU6IGEudHlwZSA9PT0gJ2FpcnBvcnQnID8gKCdhaXJwb3J0JyBhcyBjb25zdCkgOiAoJ2NpdHknIGFzIGNvbnN0KSxcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKFtdIGFzIFJlaXNzdWVBaXJwb3J0W10pKSxcbiAgICAgICk7XG4gIH1cblxuICAvLyDilIDilIAgVXBncmFkZSBDbGFzcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICAvKipcbiAgICogYFBPU1QgL3YzL21hbmFnZS1ib29raW5nL2ZsaWdodC9yZWlzc3VlL2Nob29zZS1mbGlnaHQve2Jvb2tpbmdJZH0ve3Bvc3RCb29raW5nSWR9YCDigJQgcHJpY2VzIHRoZSBjaG9zZW4gdXBncmFkZVxuICAgKiBvcHRpb24uIFNhbWUgZW5kcG9pbnQvYm9keSB0aGUgd2ViIHVzZXM7IHJlc3BvbnNlIGBkYXRhYCBjYXJyaWVzIGBpdGluZXJhcnlBdmFpbGFibGVgLCBgcHJpY2VDaGFuZ2VkYCwgYHByaWNlYCwgYGN1cnJlbmN5YC5cbiAgICovXG4gIGNob29zZUZsaWdodChcbiAgICBib29raW5nSWQ6IHN0cmluZyxcbiAgICBwb3N0Qm9va2luZ0lkOiBzdHJpbmcsXG4gICAgYm9keTogUmVpc3N1ZUNob29zZUZsaWdodFJlcXVlc3QsXG4gICk6IE9ic2VydmFibGU8UmVpc3N1ZUNob29zZUZsaWdodFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8eyBkYXRhPzogUmVpc3N1ZUNob29zZUZsaWdodFJlc3BvbnNlIH0+KFxuICAgICAgICBgJHt0aGlzLmJhc2V9L3YzL21hbmFnZS1ib29raW5nL2ZsaWdodC9yZWlzc3VlL2Nob29zZS1mbGlnaHQvJHtib29raW5nSWR9LyR7cG9zdEJvb2tpbmdJZH1gLFxuICAgICAgICBib2R5LFxuICAgICAgICB7IGhlYWRlcnM6IHRoaXMuaGVhZGVycyB9LFxuICAgICAgKVxuICAgICAgLnBpcGUobWFwKHJlcyA9PiByZXM/LmRhdGEgPz8ge30pKTtcbiAgfVxuXG4gIC8qKiBgUE9TVCAvdjIvbWFuYWdlLWJvb2tpbmcvZmxpZ2h0L2Jvb2stbm93YCDigJQgcGxhY2VzIGEgemVyby10b3RhbCByZWlzc3VlIChubyBwYXltZW50IG5lZWRlZCkuICovXG4gIGJvb2tOb3cocG9zdEJvb2tpbmdJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuYmFzZX0vdjIvbWFuYWdlLWJvb2tpbmcvZmxpZ2h0L2Jvb2stbm93YCwgeyBwb3N0Qm9va2luZ0lkIH0sIHsgaGVhZGVyczogdGhpcy5oZWFkZXJzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBheW1lbnQgbGluayBvZiBhIHJlaXNzdWUgd2l0aCBhbiBhbW91bnQgdG8gcGF5LiBUaGVyZSBpcyBubyBzZXBhcmF0ZSBBUEk6IHRoZSBiYWNrZW5kIHB1dHMgdGhlIGxpbmsgaW4gdGhlXG4gICAqIGNhcnQgb2YgdGhlIHBvc3QtYm9va2luZyAoYEdFVCAvdjIvbWFuYWdlLWJvb2tpbmcvZmxpZ2h0L2NhcnQve3Bvc3RCb29raW5nSWR9YCwgdGhlIGNhbGwgdGhlIHdlYiBjaGVja291dCByZWFkcykuXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCBpcyBub3QgZmluYWwgeWV0OiB0aGUgZmlyc3Qgb2YgdGhlIG5hbWVzIGJlbG93IHRoYXQgZXhpc3RzIGlzIHVzZWQsIGFuZCB0aGUgY2FsbCBmYWlsc1xuICAgKiB3aXRoIGEgY2xlYXIgbWVzc2FnZSB3aGVuIHRoZSBjYXJ0IGhhcyBub25lLlxuICAgKi9cbiAgZ2V0UGF5bWVudExpbmsocG9zdEJvb2tpbmdJZDogc3RyaW5nLCBhbW91bnQgPSAwLCBjdXJyZW5jeSA9ICcnKTogT2JzZXJ2YWJsZTxSZWlzc3VlUGF5bWVudExpbms+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PHsgZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4gfT4oYCR7dGhpcy5iYXNlfS92Mi9tYW5hZ2UtYm9va2luZy9mbGlnaHQvY2FydC8ke3Bvc3RCb29raW5nSWR9YCwge1xuICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICAgIGNvbnN0IGNhcnQgPSByZXM/LmRhdGEgPz8ge307XG4gICAgICAgICAgbGV0IHVybDogc3RyaW5nIHwgdW5kZWZpbmVkID1cbiAgICAgICAgICAgIGNhcnRbJ3BheW1lbnRMaW5rJ10gPz8gY2FydFsnbGluayddID8/IGNhcnRbJ3BheW1lbnQnXT8ubGluayA/PyBjYXJ0WydwYXltZW50J10/LnBheW1lbnRMaW5rID8/IGNhcnRbJ3BheW1lbnQnXT8udXJsO1xuICAgICAgICAgIGlmICghdXJsKSB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBjYXJ0IGhhcyBubyBwYXltZW50IGxpbmsgeWV0LicpO1xuICAgICAgICAgIC8vIFRoZSBjYXJ0IHJldHVybnMgb25seSBhIHBhdGggKFwiLzxwYXltZW50SWQ+XCIpOiB0aGUgY3VzdG9tZXIgcGFnZSBiYXNlIGNvbWVzIGZyb20gdGhlIGhvc3QgY29uZmlnLlxuICAgICAgICAgIGlmICghL15odHRwcz86XFwvXFwvL2kudGVzdCh1cmwpKSB7XG4gICAgICAgICAgICBjb25zdCBsaW5rQmFzZSA9IHRoaXMuY29uZmlnLnBheW1lbnRMaW5rQmFzZT8ucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG4gICAgICAgICAgICBpZiAoIWxpbmtCYXNlKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGNhcnQgcmV0dXJuZWQgYSByZWxhdGl2ZSBsaW5rICgke3VybH0pIGFuZCBubyBwYXltZW50TGlua0Jhc2UgaXMgY29uZmlndXJlZC5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVybCA9IGAke2xpbmtCYXNlfSR7dXJsLnN0YXJ0c1dpdGgoJy8nKSA/ICcnIDogJy8nfSR7dXJsfWA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICBhbW91bnQ6IGNhcnRbJ3BheW1lbnQnXT8uYW1vdW50ID8/IGFtb3VudCxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBjYXJ0WydwYXltZW50J10/LmN1cnJlbmN5ID8/IGN1cnJlbmN5LFxuICAgICAgICAgICAgZXhwaXJlc0F0OiBjYXJ0WydwYXltZW50J10/LmV4cGlyeURhdGUgPz8gY2FydFsnZXhwaXJ5RGF0ZSddLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
import { Injectable, inject } from '@angular/core';
|
|
1
|
+
import { Injectable, InjectionToken, inject } from '@angular/core';
|
|
2
2
|
import { ToastrService } from 'ngx-toastr';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
export const SBD_TOAST_HANDLER = new InjectionToken('SBD_TOAST_HANDLER');
|
|
4
5
|
export class SbdToastService {
|
|
5
6
|
constructor() {
|
|
6
|
-
|
|
7
|
+
// The host's handler wins; ngx-toastr is the fallback and is optional, so a host that never configured it still works.
|
|
8
|
+
this.handler = inject(SBD_TOAST_HANDLER, { optional: true }) ?? inject(ToastrService, { optional: true });
|
|
9
|
+
}
|
|
10
|
+
success(msg) { this.show('success', msg); }
|
|
11
|
+
error(msg) { this.show('error', msg); }
|
|
12
|
+
info(msg) { this.show('info', msg); }
|
|
13
|
+
warning(msg) { this.show('warning', msg); }
|
|
14
|
+
show(kind, msg) {
|
|
15
|
+
if (this.handler)
|
|
16
|
+
this.handler[kind](msg);
|
|
17
|
+
else
|
|
18
|
+
console.warn(`[smart-booking-dashboard] ${kind}: ${msg}`);
|
|
7
19
|
}
|
|
8
|
-
success(msg) { this.toastr.success(msg); }
|
|
9
|
-
error(msg) { this.toastr.error(msg); }
|
|
10
|
-
info(msg) { this.toastr.info(msg); }
|
|
11
|
-
warning(msg) { this.toastr.warning(msg); }
|
|
12
20
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13
21
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdToastService, providedIn: 'root' }); }
|
|
14
22
|
}
|
|
@@ -16,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
16
24
|
type: Injectable,
|
|
17
25
|
args: [{ providedIn: 'root' }]
|
|
18
26
|
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvc2VydmljZXMvdG9hc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFhM0MsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQWtCLG1CQUFtQixDQUFDLENBQUM7QUFHMUYsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFRSx1SEFBdUg7UUFDL0csWUFBTyxHQUNiLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQVc5RjtJQVRDLE9BQU8sQ0FBQyxHQUFXLElBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELEtBQUssQ0FBQyxHQUFXLElBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELElBQUksQ0FBQyxHQUFXLElBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELE9BQU8sQ0FBQyxHQUFXLElBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpELElBQUksQ0FBQyxJQUEyQixFQUFFLEdBQVc7UUFDbkQsSUFBSSxJQUFJLENBQUMsT0FBTztZQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7O1lBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7K0dBYlUsZUFBZTttSEFBZixlQUFlLGNBREYsTUFBTTs7NEZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuXG4vKipcbiAqIEhvdyB0aGUgZGFzaGJvYXJkIHNob3dzIG1lc3NhZ2VzLiBUaGUgYmFja29mZmljZSB1c2VzIG5neC10b2FzdHIgKHRoZSBkZWZhdWx0KTsgYSBob3N0IHRoYXQgaGFzIGl0cyBvd24gdG9hc3RcbiAqIHN5c3RlbSAoZS5nLiBIZWxpeCB3aXRoIFByaW1lTkcncyBgTWVzc2FnZVNlcnZpY2VgKSBwcm92aWRlcyB0aGlzIHRva2VuIGFuZCB0aGUgZGFzaGJvYXJkIHVzZXMgaXQgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYmRUb2FzdEhhbmRsZXIge1xuICBzdWNjZXNzKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQ7XG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQ7XG4gIGluZm8obWVzc2FnZTogc3RyaW5nKTogdm9pZDtcbiAgd2FybmluZyhtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgU0JEX1RPQVNUX0hBTkRMRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48U2JkVG9hc3RIYW5kbGVyPignU0JEX1RPQVNUX0hBTkRMRVInKTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTYmRUb2FzdFNlcnZpY2Uge1xuICAvLyBUaGUgaG9zdCdzIGhhbmRsZXIgd2luczsgbmd4LXRvYXN0ciBpcyB0aGUgZmFsbGJhY2sgYW5kIGlzIG9wdGlvbmFsLCBzbyBhIGhvc3QgdGhhdCBuZXZlciBjb25maWd1cmVkIGl0IHN0aWxsIHdvcmtzLlxuICBwcml2YXRlIGhhbmRsZXI6IFNiZFRvYXN0SGFuZGxlciB8IG51bGwgPVxuICAgIGluamVjdChTQkRfVE9BU1RfSEFORExFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyBpbmplY3QoVG9hc3RyU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBzdWNjZXNzKG1zZzogc3RyaW5nKTogdm9pZCB7IHRoaXMuc2hvdygnc3VjY2VzcycsIG1zZyk7IH1cbiAgZXJyb3IobXNnOiBzdHJpbmcpOiB2b2lkICAgeyB0aGlzLnNob3coJ2Vycm9yJywgbXNnKTsgfVxuICBpbmZvKG1zZzogc3RyaW5nKTogdm9pZCAgICB7IHRoaXMuc2hvdygnaW5mbycsIG1zZyk7IH1cbiAgd2FybmluZyhtc2c6IHN0cmluZyk6IHZvaWQgeyB0aGlzLnNob3coJ3dhcm5pbmcnLCBtc2cpOyB9XG5cbiAgcHJpdmF0ZSBzaG93KGtpbmQ6IGtleW9mIFNiZFRvYXN0SGFuZGxlciwgbXNnOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVyKSB0aGlzLmhhbmRsZXJba2luZF0obXNnKTtcbiAgICBlbHNlIGNvbnNvbGUud2FybihgW3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkXSAke2tpbmR9OiAke21zZ31gKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export var CurrencySizeEnum;
|
|
5
|
+
(function (CurrencySizeEnum) {
|
|
6
|
+
CurrencySizeEnum["SMALL"] = "small";
|
|
7
|
+
CurrencySizeEnum["MEDIUM"] = "medium";
|
|
8
|
+
CurrencySizeEnum["LARGE"] = "large";
|
|
9
|
+
CurrencySizeEnum["LG"] = "large";
|
|
10
|
+
})(CurrencySizeEnum || (CurrencySizeEnum = {}));
|
|
11
|
+
export class CurrencyCodeIconComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.currencyCode = 'SAR';
|
|
14
|
+
this.size = CurrencySizeEnum.MEDIUM;
|
|
15
|
+
}
|
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyCodeIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CurrencyCodeIconComponent, isStandalone: true, selector: "currency-code-icon", inputs: { currencyCode: "currencyCode", size: "size" }, ngImport: i0, template: `
|
|
18
|
+
<span class="currency-icon" [class]="'currency-icon--' + size">
|
|
19
|
+
{{ currencyCode }}
|
|
20
|
+
</span>
|
|
21
|
+
`, isInline: true, styles: [".currency-icon{display:inline-block;font-weight:600}.currency-icon--small{font-size:.75rem}.currency-icon--medium{font-size:1rem}.currency-icon--large{font-size:1.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyCodeIconComponent, decorators: [{
|
|
24
|
+
type: Component,
|
|
25
|
+
args: [{ selector: 'currency-code-icon', standalone: true, imports: [CommonModule], template: `
|
|
26
|
+
<span class="currency-icon" [class]="'currency-icon--' + size">
|
|
27
|
+
{{ currencyCode }}
|
|
28
|
+
</span>
|
|
29
|
+
`, styles: [".currency-icon{display:inline-block;font-weight:600}.currency-icon--small{font-size:.75rem}.currency-icon--medium{font-size:1rem}.currency-icon--large{font-size:1.25rem}\n"] }]
|
|
30
|
+
}], propDecorators: { currencyCode: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}], size: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}] } });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktY29kZS1pY29uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY3VycmVuY3ktY29kZS1pY29uL2N1cnJlbmN5LWNvZGUtaWNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUvQyxNQUFNLENBQU4sSUFBWSxnQkFLWDtBQUxELFdBQVksZ0JBQWdCO0lBQzFCLG1DQUFlLENBQUE7SUFDZixxQ0FBaUIsQ0FBQTtJQUNqQixtQ0FBZSxDQUFBO0lBQ2YsZ0NBQVksQ0FBQTtBQUNkLENBQUMsRUFMVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSzNCO0FBOEJELE1BQU0sT0FBTyx5QkFBeUI7SUE1QnRDO1FBNkJXLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFNBQUksR0FBcUIsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO0tBQzNEOytHQUhZLHlCQUF5QjttR0FBekIseUJBQXlCLHNJQXhCMUI7Ozs7R0FJVCxvUEFMUyxZQUFZOzs0RkF5QlgseUJBQXlCO2tCQTVCckMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2I7Ozs7R0FJVDs4QkFxQlEsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5leHBvcnQgZW51bSBDdXJyZW5jeVNpemVFbnVtIHtcbiAgU01BTEwgPSAnc21hbGwnLFxuICBNRURJVU0gPSAnbWVkaXVtJyxcbiAgTEFSR0UgPSAnbGFyZ2UnLFxuICBMRyA9ICdsYXJnZSdcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3VycmVuY3ktY29kZS1pY29uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPHNwYW4gY2xhc3M9XCJjdXJyZW5jeS1pY29uXCIgW2NsYXNzXT1cIidjdXJyZW5jeS1pY29uLS0nICsgc2l6ZVwiPlxuICAgICAge3sgY3VycmVuY3lDb2RlIH19XG4gICAgPC9zcGFuPlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLmN1cnJlbmN5LWljb24ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB9XG5cbiAgICAuY3VycmVuY3ktaWNvbi0tc21hbGwge1xuICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIH1cblxuICAgIC5jdXJyZW5jeS1pY29uLS1tZWRpdW0ge1xuICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgIH1cblxuICAgIC5jdXJyZW5jeS1pY29uLS1sYXJnZSB7XG4gICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBDdXJyZW5jeUNvZGVJY29uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgY3VycmVuY3lDb2RlID0gJ1NBUic7XG4gIEBJbnB1dCgpIHNpemU6IEN1cnJlbmN5U2l6ZUVudW0gPSBDdXJyZW5jeVNpemVFbnVtLk1FRElVTTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export var brandEnum;
|
|
2
|
+
(function (brandEnum) {
|
|
3
|
+
brandEnum["almatar"] = "almatar";
|
|
4
|
+
brandEnum["rehlat"] = "rehlat";
|
|
5
|
+
brandEnum["tajawal"] = "tajawal";
|
|
6
|
+
})(brandEnum || (brandEnum = {}));
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmQtZW51bXMuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvc2hhcmVkL2VudW1zL2JyYW5kLWVudW1zLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNuQixnQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBaUIsQ0FBQTtJQUNqQixnQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsU0FBUyxLQUFULFNBQVMsUUFJcEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBicmFuZEVudW0ge1xuICBhbG1hdGFyID0gJ2FsbWF0YXInLFxuICByZWhsYXQgPSAncmVobGF0JyxcbiAgdGFqYXdhbCA9ICd0YWphd2FsJ1xufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Environment configuration stub
|
|
2
|
+
export const environments = {
|
|
3
|
+
production: false,
|
|
4
|
+
apiUrl: '',
|
|
5
|
+
baseUrl: '',
|
|
6
|
+
isTenant: false,
|
|
7
|
+
brandName: 'almatar',
|
|
8
|
+
// Add other environment properties as needed
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL3NoYXJlZC9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixVQUFVLEVBQUUsS0FBSztJQUNqQixNQUFNLEVBQUUsRUFBRTtJQUNWLE9BQU8sRUFBRSxFQUFFO0lBQ1gsUUFBUSxFQUFFLEtBQUs7SUFDZixTQUFTLEVBQUUsU0FBUztJQUNwQiw2Q0FBNkM7Q0FDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gc3R1YlxuXG5leHBvcnQgY29uc3QgZW52aXJvbm1lbnRzID0ge1xuICBwcm9kdWN0aW9uOiBmYWxzZSxcbiAgYXBpVXJsOiAnJyxcbiAgYmFzZVVybDogJycsXG4gIGlzVGVuYW50OiBmYWxzZSxcbiAgYnJhbmROYW1lOiAnYWxtYXRhcicsXG4gIC8vIEFkZCBvdGhlciBlbnZpcm9ubWVudCBwcm9wZXJ0aWVzIGFzIG5lZWRlZFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Shared models and types
|
|
2
|
+
export const loyaltyPointsMethods = {
|
|
3
|
+
ALMATAR_POINTS: 'ALMATAR_POINTS',
|
|
4
|
+
ALFURSAN: 'ALFURSAN',
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL3NoYXJlZC9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEJBQTBCO0FBUzFCLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLGNBQWMsRUFBRSxnQkFBZ0I7SUFDaEMsUUFBUSxFQUFFLFVBQVU7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU2hhcmVkIG1vZGVscyBhbmQgdHlwZXNcblxuZXhwb3J0IGludGVyZmFjZSBJQ3VycmVuY3kge1xuICBjb2RlOiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHN5bWJvbD86IHN0cmluZztcbiAgcmF0ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGxveWFsdHlQb2ludHNNZXRob2RzID0ge1xuICBBTE1BVEFSX1BPSU5UUzogJ0FMTUFUQVJfUE9JTlRTJyxcbiAgQUxGVVJTQU46ICdBTEZVUlNBTicsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBMb3lhbHR5UG9pbnRzTWV0aG9kID0gdHlwZW9mIGxveWFsdHlQb2ludHNNZXRob2RzW2tleW9mIHR5cGVvZiBsb3lhbHR5UG9pbnRzTWV0aG9kc107XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { NgModule, Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class AlmatarIconComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = '';
|
|
7
|
+
this.size = 16;
|
|
8
|
+
}
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlmatarIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlmatarIconComponent, isStandalone: true, selector: "almatar-icon", inputs: { name: "name", size: "size" }, ngImport: i0, template: `
|
|
11
|
+
<i [class]="'pi pi-' + name" [style.font-size.px]="size"></i>
|
|
12
|
+
`, isInline: true, styles: [":host{display:inline-flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlmatarIconComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'almatar-icon', standalone: true, imports: [CommonModule], template: `
|
|
17
|
+
<i [class]="'pi pi-' + name" [style.font-size.px]="size"></i>
|
|
18
|
+
`, styles: [":host{display:inline-flex;align-items:center;justify-content:center}\n"] }]
|
|
19
|
+
}], propDecorators: { name: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}], size: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}] } });
|
|
24
|
+
export class AlmatarIconModule {
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlmatarIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
26
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: AlmatarIconModule, imports: [CommonModule, AlmatarIconComponent], exports: [AlmatarIconComponent] }); }
|
|
27
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlmatarIconModule, imports: [CommonModule, AlmatarIconComponent] }); }
|
|
28
|
+
}
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlmatarIconModule, decorators: [{
|
|
30
|
+
type: NgModule,
|
|
31
|
+
args: [{
|
|
32
|
+
imports: [CommonModule, AlmatarIconComponent],
|
|
33
|
+
exports: [AlmatarIconComponent]
|
|
34
|
+
}]
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxtYXRhci1pY29uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvc2hhcmVkL21vZHVsZXMvYWxtYXRhci1pY29uL2FsbWF0YXItaWNvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFpQi9DLE1BQU0sT0FBTyxvQkFBb0I7SUFmakM7UUFnQlcsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLFNBQUksR0FBRyxFQUFFLENBQUM7S0FDcEI7K0dBSFksb0JBQW9CO21HQUFwQixvQkFBb0IsZ0hBWHJCOztHQUVULCtJQUhTLFlBQVk7OzRGQVlYLG9CQUFvQjtrQkFmaEMsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2I7O0dBRVQ7OEJBVVEsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSzs7QUFPUixNQUFNLE9BQU8saUJBQWlCOytHQUFqQixpQkFBaUI7Z0hBQWpCLGlCQUFpQixZQUhsQixZQUFZLEVBTlgsb0JBQW9CLGFBQXBCLG9CQUFvQjtnSEFTcEIsaUJBQWlCLFlBSGxCLFlBQVksRUFBRSxvQkFBb0I7OzRGQUdqQyxpQkFBaUI7a0JBSjdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG9CQUFvQixDQUFDO29CQUM3QyxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWxtYXRhci1pY29uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGkgW2NsYXNzXT1cIidwaSBwaS0nICsgbmFtZVwiIFtzdHlsZS5mb250LXNpemUucHhdPVwic2l6ZVwiPjwvaT5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgQWxtYXRhckljb25Db21wb25lbnQge1xuICBASW5wdXQoKSBuYW1lID0gJyc7XG4gIEBJbnB1dCgpIHNpemUgPSAxNjtcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQWxtYXRhckljb25Db21wb25lbnRdLFxuICBleHBvcnRzOiBbQWxtYXRhckljb25Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEFsbWF0YXJJY29uTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { NgModule, Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class LoaderComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.loading = false;
|
|
8
|
+
this.message = '';
|
|
9
|
+
}
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LoaderComponent, isStandalone: true, selector: "app-loader", inputs: { loading: "loading", message: "message" }, ngImport: i0, template: `
|
|
12
|
+
<div class="loader-container" *ngIf="loading">
|
|
13
|
+
<div class="spinner"></div>
|
|
14
|
+
<p *ngIf="message">{{ message }}</p>
|
|
15
|
+
</div>
|
|
16
|
+
`, isInline: true, styles: [".loader-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem}.spinner{border:4px solid #f3f3f3;border-top:4px solid #3498db;border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}p{margin-top:1rem;color:#666}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoaderComponent, decorators: [{
|
|
19
|
+
type: Component,
|
|
20
|
+
args: [{ selector: 'app-loader', standalone: true, imports: [CommonModule], template: `
|
|
21
|
+
<div class="loader-container" *ngIf="loading">
|
|
22
|
+
<div class="spinner"></div>
|
|
23
|
+
<p *ngIf="message">{{ message }}</p>
|
|
24
|
+
</div>
|
|
25
|
+
`, styles: [".loader-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem}.spinner{border:4px solid #f3f3f3;border-top:4px solid #3498db;border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}p{margin-top:1rem;color:#666}\n"] }]
|
|
26
|
+
}], propDecorators: { loading: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}], message: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}] } });
|
|
31
|
+
export class LoaderModule {
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
33
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: LoaderModule, imports: [CommonModule, LoaderComponent], exports: [LoaderComponent] }); }
|
|
34
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoaderModule, imports: [CommonModule, LoaderComponent] }); }
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoaderModule, decorators: [{
|
|
37
|
+
type: NgModule,
|
|
38
|
+
args: [{
|
|
39
|
+
imports: [CommonModule, LoaderComponent],
|
|
40
|
+
exports: [LoaderComponent]
|
|
41
|
+
}]
|
|
42
|
+
}] });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvc2hhcmVkL21vZHVsZXMvbG9hZGVyL2xvYWRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBeUMvQyxNQUFNLE9BQU8sZUFBZTtJQXZDNUI7UUF3Q1csWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixZQUFPLEdBQUcsRUFBRSxDQUFDO0tBQ3ZCOytHQUhZLGVBQWU7bUdBQWYsZUFBZSwwSEFuQ2hCOzs7OztHQUtULGthQU5TLFlBQVk7OzRGQW9DWCxlQUFlO2tCQXZDM0IsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2I7Ozs7O0dBS1Q7OEJBK0JRLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7O0FBT1IsTUFBTSxPQUFPLFlBQVk7K0dBQVosWUFBWTtnSEFBWixZQUFZLFlBSGIsWUFBWSxFQU5YLGVBQWUsYUFBZixlQUFlO2dIQVNmLFlBQVksWUFIYixZQUFZLEVBQUUsZUFBZTs7NEZBRzVCLFlBQVk7a0JBSnhCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbG9hZGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImxvYWRlci1jb250YWluZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+XG4gICAgICA8cCAqbmdJZj1cIm1lc3NhZ2VcIj57eyBtZXNzYWdlIH19PC9wPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLmxvYWRlci1jb250YWluZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiAycmVtO1xuICAgIH1cblxuICAgIC5zcGlubmVyIHtcbiAgICAgIGJvcmRlcjogNHB4IHNvbGlkICNmM2YzZjM7XG4gICAgICBib3JkZXItdG9wOiA0cHggc29saWQgIzM0OThkYjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHNwaW4ge1xuICAgICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxuICAgICAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbiAgICB9XG5cbiAgICBwIHtcbiAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgICBjb2xvcjogIzY2NjtcbiAgICB9XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIExvYWRlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgbWVzc2FnZSA9ICcnO1xufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMb2FkZXJDb21wb25lbnRdLFxuICBleHBvcnRzOiBbTG9hZGVyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBMb2FkZXJNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Pipe, NgModule } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ExchangePipe {
|
|
4
|
+
transform(value, currency, rate) {
|
|
5
|
+
if (!rate || rate === 1) {
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
return value * rate;
|
|
9
|
+
}
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExchangePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
11
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ExchangePipe, isStandalone: true, name: "exchange" }); }
|
|
12
|
+
}
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExchangePipe, decorators: [{
|
|
14
|
+
type: Pipe,
|
|
15
|
+
args: [{
|
|
16
|
+
name: 'exchange',
|
|
17
|
+
standalone: true
|
|
18
|
+
}]
|
|
19
|
+
}] });
|
|
20
|
+
export class ExchangeRoundPipe {
|
|
21
|
+
transform(value, currency, rate) {
|
|
22
|
+
if (!rate || rate === 1) {
|
|
23
|
+
return Math.round(value);
|
|
24
|
+
}
|
|
25
|
+
return Math.round(value * rate);
|
|
26
|
+
}
|
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExchangeRoundPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
28
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ExchangeRoundPipe, isStandalone: true, name: "exchange_round" }); }
|
|
29
|
+
}
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExchangeRoundPipe, decorators: [{
|
|
31
|
+
type: Pipe,
|
|
32
|
+
args: [{
|
|
33
|
+
name: 'exchange_round',
|
|
34
|
+
standalone: true
|
|
35
|
+
}]
|
|
36
|
+
}] });
|
|
37
|
+
export class ExchangePipeModule {
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExchangePipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
39
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ExchangePipeModule, imports: [ExchangePipe, ExchangeRoundPipe], exports: [ExchangePipe, ExchangeRoundPipe] }); }
|
|
40
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExchangePipeModule }); }
|
|
41
|
+
}
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExchangePipeModule, decorators: [{
|
|
43
|
+
type: NgModule,
|
|
44
|
+
args: [{
|
|
45
|
+
imports: [ExchangePipe, ExchangeRoundPipe],
|
|
46
|
+
exports: [ExchangePipe, ExchangeRoundPipe]
|
|
47
|
+
}]
|
|
48
|
+
}] });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjaGFuZ2UucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvc2hhcmVkL3BpcGVzL2V4Y2hhbmdlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU05RCxNQUFNLE9BQU8sWUFBWTtJQUN2QixTQUFTLENBQUMsS0FBYSxFQUFFLFFBQWlCLEVBQUUsSUFBYTtRQUN2RCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQzsrR0FOVSxZQUFZOzZHQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBSnhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7QUFjRCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsUUFBaUIsRUFBRSxJQUFhO1FBQ3ZELElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDOytHQU5VLGlCQUFpQjs2R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUo3QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxnQkFBZ0I7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7QUFjRCxNQUFNLE9BQU8sa0JBQWtCOytHQUFsQixrQkFBa0I7Z0hBQWxCLGtCQUFrQixZQTFCbEIsWUFBWSxFQWFaLGlCQUFpQixhQWJqQixZQUFZLEVBYVosaUJBQWlCO2dIQWFqQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDO29CQUMxQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUM7aUJBQzNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnZXhjaGFuZ2UnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEV4Y2hhbmdlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IG51bWJlciwgY3VycmVuY3k/OiBzdHJpbmcsIHJhdGU/OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICghcmF0ZSB8fCByYXRlID09PSAxKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSAqIHJhdGU7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnZXhjaGFuZ2Vfcm91bmQnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEV4Y2hhbmdlUm91bmRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogbnVtYmVyLCBjdXJyZW5jeT86IHN0cmluZywgcmF0ZT86IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKCFyYXRlIHx8IHJhdGUgPT09IDEpIHtcbiAgICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiByYXRlKTtcbiAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbRXhjaGFuZ2VQaXBlLCBFeGNoYW5nZVJvdW5kUGlwZV0sXG4gIGV4cG9ydHM6IFtFeGNoYW5nZVBpcGUsIEV4Y2hhbmdlUm91bmRQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBFeGNoYW5nZVBpcGVNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ApiService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.http = inject(HttpClient);
|
|
7
|
+
}
|
|
8
|
+
get(url, options) {
|
|
9
|
+
const requestUrl = typeof url === 'string' ? url : (url.url || url.endpoint);
|
|
10
|
+
return this.http.get(requestUrl, options);
|
|
11
|
+
}
|
|
12
|
+
post(url, body, options) {
|
|
13
|
+
if (typeof url === 'object') {
|
|
14
|
+
// Handle object-style API calls
|
|
15
|
+
const { url: urlProp, endpoint, ...requestBody } = url;
|
|
16
|
+
const requestUrl = urlProp || endpoint;
|
|
17
|
+
return this.http.post(requestUrl, requestBody, body);
|
|
18
|
+
}
|
|
19
|
+
return this.http.post(url, body, options);
|
|
20
|
+
}
|
|
21
|
+
put(url, body, options) {
|
|
22
|
+
const requestUrl = typeof url === 'string' ? url : (url.url || url.endpoint);
|
|
23
|
+
return this.http.put(requestUrl, body, options);
|
|
24
|
+
}
|
|
25
|
+
delete(url, options) {
|
|
26
|
+
const requestUrl = typeof url === 'string' ? url : (url.url || url.endpoint);
|
|
27
|
+
return this.http.delete(requestUrl, options);
|
|
28
|
+
}
|
|
29
|
+
patch(url, body, options) {
|
|
30
|
+
const requestUrl = typeof url === 'string' ? url : (url.url || url.endpoint);
|
|
31
|
+
return this.http.patch(requestUrl, body, options);
|
|
32
|
+
}
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
34
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ApiService, providedIn: 'root' }); }
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ApiService, decorators: [{
|
|
37
|
+
type: Injectable,
|
|
38
|
+
args: [{
|
|
39
|
+
providedIn: 'root'
|
|
40
|
+
}]
|
|
41
|
+
}] });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFlLE1BQU0sc0JBQXNCLENBQUM7O0FBZ0IvRCxNQUFNLE9BQU8sVUFBVTtJQUh2QjtRQUlVLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0ErQm5DO0lBN0JDLEdBQUcsQ0FBSSxHQUFxRSxFQUFFLE9BQXFCO1FBQ2pHLE1BQU0sVUFBVSxHQUFHLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUksVUFBVyxFQUFFLE9BQU8sQ0FBa0IsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFBSSxDQUFJLEdBQXFFLEVBQUUsSUFBVSxFQUFFLE9BQXFCO1FBQzlHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsZ0NBQWdDO1lBQ2hDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQztZQUN2RCxNQUFNLFVBQVUsR0FBRyxPQUFPLElBQUksUUFBUSxDQUFDO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUksVUFBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQWtCLENBQUM7UUFDNUUsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUksR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLENBQWtCLENBQUM7SUFDaEUsQ0FBQztJQUVELEdBQUcsQ0FBSSxHQUFxRSxFQUFFLElBQVUsRUFBRSxPQUFxQjtRQUM3RyxNQUFNLFVBQVUsR0FBRyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFJLFVBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFrQixDQUFDO0lBQ3ZFLENBQUM7SUFFRCxNQUFNLENBQUksR0FBcUUsRUFBRSxPQUFxQjtRQUNwRyxNQUFNLFVBQVUsR0FBRyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFJLFVBQVcsRUFBRSxPQUFPLENBQWtCLENBQUM7SUFDcEUsQ0FBQztJQUVELEtBQUssQ0FBSSxHQUFxRSxFQUFFLElBQVUsRUFBRSxPQUFxQjtRQUMvRyxNQUFNLFVBQVUsR0FBRyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFJLFVBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFrQixDQUFDO0lBQ3pFLENBQUM7K0dBL0JVLFVBQVU7bUhBQVYsVUFBVSxjQUZULE1BQU07OzRGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxudHlwZSBIdHRwT3B0aW9ucyA9IHtcbiAgaGVhZGVycz86IGFueTtcbiAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICBvYnNlcnZlPzogJ2JvZHknO1xuICBwYXJhbXM/OiBhbnk7XG4gIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xufTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXBpU2VydmljZSB7XG4gIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICBnZXQ8VD4odXJsOiBzdHJpbmcgfCB7IHVybD86IHN0cmluZzsgZW5kcG9pbnQ/OiBzdHJpbmc7IFtrZXk6IHN0cmluZ106IGFueSB9LCBvcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCByZXF1ZXN0VXJsID0gdHlwZW9mIHVybCA9PT0gJ3N0cmluZycgPyB1cmwgOiAodXJsLnVybCB8fCB1cmwuZW5kcG9pbnQpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KHJlcXVlc3RVcmwhLCBvcHRpb25zKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9XG5cbiAgcG9zdDxUPih1cmw6IHN0cmluZyB8IHsgdXJsPzogc3RyaW5nOyBlbmRwb2ludD86IHN0cmluZzsgW2tleTogc3RyaW5nXTogYW55IH0sIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8VD4ge1xuICAgIGlmICh0eXBlb2YgdXJsID09PSAnb2JqZWN0Jykge1xuICAgICAgLy8gSGFuZGxlIG9iamVjdC1zdHlsZSBBUEkgY2FsbHNcbiAgICAgIGNvbnN0IHsgdXJsOiB1cmxQcm9wLCBlbmRwb2ludCwgLi4ucmVxdWVzdEJvZHkgfSA9IHVybDtcbiAgICAgIGNvbnN0IHJlcXVlc3RVcmwgPSB1cmxQcm9wIHx8IGVuZHBvaW50O1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KHJlcXVlc3RVcmwhLCByZXF1ZXN0Qm9keSwgYm9keSkgYXMgT2JzZXJ2YWJsZTxUPjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KHVybCwgYm9keSwgb3B0aW9ucykgYXMgT2JzZXJ2YWJsZTxUPjtcbiAgfVxuXG4gIHB1dDxUPih1cmw6IHN0cmluZyB8IHsgdXJsPzogc3RyaW5nOyBlbmRwb2ludD86IHN0cmluZzsgW2tleTogc3RyaW5nXTogYW55IH0sIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IHJlcXVlc3RVcmwgPSB0eXBlb2YgdXJsID09PSAnc3RyaW5nJyA/IHVybCA6ICh1cmwudXJsIHx8IHVybC5lbmRwb2ludCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8VD4ocmVxdWVzdFVybCEsIGJvZHksIG9wdGlvbnMpIGFzIE9ic2VydmFibGU8VD47XG4gIH1cblxuICBkZWxldGU8VD4odXJsOiBzdHJpbmcgfCB7IHVybD86IHN0cmluZzsgZW5kcG9pbnQ/OiBzdHJpbmc7IFtrZXk6IHN0cmluZ106IGFueSB9LCBvcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCByZXF1ZXN0VXJsID0gdHlwZW9mIHVybCA9PT0gJ3N0cmluZycgPyB1cmwgOiAodXJsLnVybCB8fCB1cmwuZW5kcG9pbnQpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFQ+KHJlcXVlc3RVcmwhLCBvcHRpb25zKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9XG5cbiAgcGF0Y2g8VD4odXJsOiBzdHJpbmcgfCB7IHVybD86IHN0cmluZzsgZW5kcG9pbnQ/OiBzdHJpbmc7IFtrZXk6IHN0cmluZ106IGFueSB9LCBib2R5PzogYW55LCBvcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCByZXF1ZXN0VXJsID0gdHlwZW9mIHVybCA9PT0gJ3N0cmluZycgPyB1cmwgOiAodXJsLnVybCB8fCB1cmwuZW5kcG9pbnQpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8VD4ocmVxdWVzdFVybCEsIGJvZHksIG9wdGlvbnMpIGFzIE9ic2VydmFibGU8VD47XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class SharedService {
|
|
5
|
+
getAppLanguage() {
|
|
6
|
+
return 'en';
|
|
7
|
+
}
|
|
8
|
+
getCurrentLanguage() {
|
|
9
|
+
return 'en';
|
|
10
|
+
}
|
|
11
|
+
getDirection() {
|
|
12
|
+
return 'ltr';
|
|
13
|
+
}
|
|
14
|
+
getBaseCurrency() {
|
|
15
|
+
return of({
|
|
16
|
+
code: 'SAR',
|
|
17
|
+
name: 'Saudi Riyal',
|
|
18
|
+
symbol: 'SAR',
|
|
19
|
+
rate: 1
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
getInAppView() {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SharedService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
26
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SharedService, providedIn: 'root' }); }
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SharedService, decorators: [{
|
|
29
|
+
type: Injectable,
|
|
30
|
+
args: [{
|
|
31
|
+
providedIn: 'root'
|
|
32
|
+
}]
|
|
33
|
+
}] });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTXRDLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLEVBQUUsQ0FBQztZQUNSLElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFLGFBQWE7WUFDbkIsTUFBTSxFQUFFLEtBQUs7WUFDYixJQUFJLEVBQUUsQ0FBQztTQUNSLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOytHQXhCVSxhQUFhO21IQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJQ3VycmVuY3kgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTaGFyZWRTZXJ2aWNlIHtcbiAgZ2V0QXBwTGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2VuJztcbiAgfVxuXG4gIGdldEN1cnJlbnRMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZW4nO1xuICB9XG5cbiAgZ2V0RGlyZWN0aW9uKCk6ICdsdHInIHwgJ3J0bCcge1xuICAgIHJldHVybiAnbHRyJztcbiAgfVxuXG4gIGdldEJhc2VDdXJyZW5jeSgpOiBPYnNlcnZhYmxlPElDdXJyZW5jeT4ge1xuICAgIHJldHVybiBvZih7XG4gICAgICBjb2RlOiAnU0FSJyxcbiAgICAgIG5hbWU6ICdTYXVkaSBSaXlhbCcsXG4gICAgICBzeW1ib2w6ICdTQVInLFxuICAgICAgcmF0ZTogMVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0SW5BcHBWaWV3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Simple translation service that provides English translations
|
|
5
|
+
* without requiring ngx-translate
|
|
6
|
+
*/
|
|
7
|
+
export class TranslationService {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.currentLanguage = 'en';
|
|
10
|
+
this.translations = {
|
|
11
|
+
// Wallet and refund
|
|
12
|
+
'manage-booking.smart-cancel.result.wallet-points-label': 'Wallet Points',
|
|
13
|
+
'manage-booking.smart-cancel.result.your-wallet': 'Your Wallet',
|
|
14
|
+
'manage-booking.smart-cancel.result.ready-now': 'Ready Now',
|
|
15
|
+
'manage-booking.smart-cancel.refund-method.original': 'Original Payment Method',
|
|
16
|
+
'manage-booking.smart-cancel.refund-method.days-badge': '5-7 business days',
|
|
17
|
+
'manage-booking.smart-cancel.refund-method.installment-badge-tabby': '3-5 business days',
|
|
18
|
+
'manage-booking.smart-cancel.refund-method.installment-badge-tamara': '7-10 business days',
|
|
19
|
+
'manage-booking.smart-cancel.refund-method.loyalty-badge': 'Instant',
|
|
20
|
+
'manage-booking.smart-cancel.result.mada-card': 'Mada Card',
|
|
21
|
+
'manage-booking.smart-cancel.refund-method.wallet': 'Almatar Wallet',
|
|
22
|
+
'manage-booking.smart-cancel.refunds.loyalty': 'Loyalty Points',
|
|
23
|
+
// Refund method descriptions
|
|
24
|
+
'manage-booking.smart-cancel.refund-method.installment-desc': 'Refund to {{method}}',
|
|
25
|
+
'manage-booking.smart-cancel.refund-method.loyalty-desc': 'Refund to {{method}}',
|
|
26
|
+
'manage-booking.smart-cancel.refund-method.original-desc': 'Refund to {{method}}',
|
|
27
|
+
// Hotel cancellation policy
|
|
28
|
+
'HOTEL.cancellation-policy': 'Cancellation Policy',
|
|
29
|
+
// Refund method selector
|
|
30
|
+
'manage-booking.smart-cancel.refund-method.title': 'Select Refund Method',
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
getCurrentLanguage() {
|
|
34
|
+
return this.currentLanguage;
|
|
35
|
+
}
|
|
36
|
+
setLanguage(lang) {
|
|
37
|
+
this.currentLanguage = lang;
|
|
38
|
+
}
|
|
39
|
+
instant(key, params) {
|
|
40
|
+
let translation = this.translations[key] || key;
|
|
41
|
+
// Replace {{param}} placeholders
|
|
42
|
+
if (params) {
|
|
43
|
+
Object.keys(params).forEach(param => {
|
|
44
|
+
translation = translation.replace(`{{${param}}}`, params[param]);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return translation;
|
|
48
|
+
}
|
|
49
|
+
get currentLang() {
|
|
50
|
+
return this.currentLanguage;
|
|
51
|
+
}
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
53
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TranslationService, providedIn: 'root' }); }
|
|
54
|
+
}
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TranslationService, decorators: [{
|
|
56
|
+
type: Injectable,
|
|
57
|
+
args: [{
|
|
58
|
+
providedIn: 'root'
|
|
59
|
+
}]
|
|
60
|
+
}] });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL3RyYW5zbGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0M7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGtCQUFrQjtJQUgvQjtRQUlVLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRXZCLGlCQUFZLEdBQThCO1lBQ2hELG9CQUFvQjtZQUNwQix3REFBd0QsRUFBRSxlQUFlO1lBQ3pFLGdEQUFnRCxFQUFFLGFBQWE7WUFDL0QsOENBQThDLEVBQUUsV0FBVztZQUMzRCxvREFBb0QsRUFBRSx5QkFBeUI7WUFDL0Usc0RBQXNELEVBQUUsbUJBQW1CO1lBQzNFLG1FQUFtRSxFQUFFLG1CQUFtQjtZQUN4RixvRUFBb0UsRUFBRSxvQkFBb0I7WUFDMUYseURBQXlELEVBQUUsU0FBUztZQUNwRSw4Q0FBOEMsRUFBRSxXQUFXO1lBQzNELGtEQUFrRCxFQUFFLGdCQUFnQjtZQUNwRSw2Q0FBNkMsRUFBRSxnQkFBZ0I7WUFFL0QsNkJBQTZCO1lBQzdCLDREQUE0RCxFQUFFLHNCQUFzQjtZQUNwRix3REFBd0QsRUFBRSxzQkFBc0I7WUFDaEYseURBQXlELEVBQUUsc0JBQXNCO1lBRWpGLDRCQUE0QjtZQUM1QiwyQkFBMkIsRUFBRSxxQkFBcUI7WUFFbEQseUJBQXlCO1lBQ3pCLGlEQUFpRCxFQUFFLHNCQUFzQjtTQUMxRSxDQUFDO0tBMEJIO0lBeEJDLGtCQUFrQjtRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVyxFQUFFLE1BQWtDO1FBQ3JELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO1FBRWhELGlDQUFpQztRQUNqQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2xDLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbkUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDOytHQXBEVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFNpbXBsZSB0cmFuc2xhdGlvbiBzZXJ2aWNlIHRoYXQgcHJvdmlkZXMgRW5nbGlzaCB0cmFuc2xhdGlvbnNcbiAqIHdpdGhvdXQgcmVxdWlyaW5nIG5neC10cmFuc2xhdGVcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjdXJyZW50TGFuZ3VhZ2UgPSAnZW4nO1xuXG4gIHByaXZhdGUgdHJhbnNsYXRpb25zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIC8vIFdhbGxldCBhbmQgcmVmdW5kXG4gICAgJ21hbmFnZS1ib29raW5nLnNtYXJ0LWNhbmNlbC5yZXN1bHQud2FsbGV0LXBvaW50cy1sYWJlbCc6ICdXYWxsZXQgUG9pbnRzJyxcbiAgICAnbWFuYWdlLWJvb2tpbmcuc21hcnQtY2FuY2VsLnJlc3VsdC55b3VyLXdhbGxldCc6ICdZb3VyIFdhbGxldCcsXG4gICAgJ21hbmFnZS1ib29raW5nLnNtYXJ0LWNhbmNlbC5yZXN1bHQucmVhZHktbm93JzogJ1JlYWR5IE5vdycsXG4gICAgJ21hbmFnZS1ib29raW5nLnNtYXJ0LWNhbmNlbC5yZWZ1bmQtbWV0aG9kLm9yaWdpbmFsJzogJ09yaWdpbmFsIFBheW1lbnQgTWV0aG9kJyxcbiAgICAnbWFuYWdlLWJvb2tpbmcuc21hcnQtY2FuY2VsLnJlZnVuZC1tZXRob2QuZGF5cy1iYWRnZSc6ICc1LTcgYnVzaW5lc3MgZGF5cycsXG4gICAgJ21hbmFnZS1ib29raW5nLnNtYXJ0LWNhbmNlbC5yZWZ1bmQtbWV0aG9kLmluc3RhbGxtZW50LWJhZGdlLXRhYmJ5JzogJzMtNSBidXNpbmVzcyBkYXlzJyxcbiAgICAnbWFuYWdlLWJvb2tpbmcuc21hcnQtY2FuY2VsLnJlZnVuZC1tZXRob2QuaW5zdGFsbG1lbnQtYmFkZ2UtdGFtYXJhJzogJzctMTAgYnVzaW5lc3MgZGF5cycsXG4gICAgJ21hbmFnZS1ib29raW5nLnNtYXJ0LWNhbmNlbC5yZWZ1bmQtbWV0aG9kLmxveWFsdHktYmFkZ2UnOiAnSW5zdGFudCcsXG4gICAgJ21hbmFnZS1ib29raW5nLnNtYXJ0LWNhbmNlbC5yZXN1bHQubWFkYS1jYXJkJzogJ01hZGEgQ2FyZCcsXG4gICAgJ21hbmFnZS1ib29raW5nLnNtYXJ0LWNhbmNlbC5yZWZ1bmQtbWV0aG9kLndhbGxldCc6ICdBbG1hdGFyIFdhbGxldCcsXG4gICAgJ21hbmFnZS1ib29raW5nLnNtYXJ0LWNhbmNlbC5yZWZ1bmRzLmxveWFsdHknOiAnTG95YWx0eSBQb2ludHMnLFxuXG4gICAgLy8gUmVmdW5kIG1ldGhvZCBkZXNjcmlwdGlvbnNcbiAgICAnbWFuYWdlLWJvb2tpbmcuc21hcnQtY2FuY2VsLnJlZnVuZC1tZXRob2QuaW5zdGFsbG1lbnQtZGVzYyc6ICdSZWZ1bmQgdG8ge3ttZXRob2R9fScsXG4gICAgJ21hbmFnZS1ib29raW5nLnNtYXJ0LWNhbmNlbC5yZWZ1bmQtbWV0aG9kLmxveWFsdHktZGVzYyc6ICdSZWZ1bmQgdG8ge3ttZXRob2R9fScsXG4gICAgJ21hbmFnZS1ib29raW5nLnNtYXJ0LWNhbmNlbC5yZWZ1bmQtbWV0aG9kLm9yaWdpbmFsLWRlc2MnOiAnUmVmdW5kIHRvIHt7bWV0aG9kfX0nLFxuXG4gICAgLy8gSG90ZWwgY2FuY2VsbGF0aW9uIHBvbGljeVxuICAgICdIT1RFTC5jYW5jZWxsYXRpb24tcG9saWN5JzogJ0NhbmNlbGxhdGlvbiBQb2xpY3knLFxuXG4gICAgLy8gUmVmdW5kIG1ldGhvZCBzZWxlY3RvclxuICAgICdtYW5hZ2UtYm9va2luZy5zbWFydC1jYW5jZWwucmVmdW5kLW1ldGhvZC50aXRsZSc6ICdTZWxlY3QgUmVmdW5kIE1ldGhvZCcsXG4gIH07XG5cbiAgZ2V0Q3VycmVudExhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudExhbmd1YWdlO1xuICB9XG5cbiAgc2V0TGFuZ3VhZ2UobGFuZzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPSBsYW5nO1xuICB9XG5cbiAgaW5zdGFudChrZXk6IHN0cmluZywgcGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSk6IHN0cmluZyB7XG4gICAgbGV0IHRyYW5zbGF0aW9uID0gdGhpcy50cmFuc2xhdGlvbnNba2V5XSB8fCBrZXk7XG5cbiAgICAvLyBSZXBsYWNlIHt7cGFyYW19fSBwbGFjZWhvbGRlcnNcbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2gocGFyYW0gPT4ge1xuICAgICAgICB0cmFuc2xhdGlvbiA9IHRyYW5zbGF0aW9uLnJlcGxhY2UoYHt7JHtwYXJhbX19fWAsIHBhcmFtc1twYXJhbV0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyYW5zbGF0aW9uO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRMYW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudExhbmd1YWdlO1xuICB9XG59XG4iXX0=
|