@admin-layout/tailwind-design-pro 10.1.1-alpha.18 → 10.1.1-alpha.19
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/lib/compute.d.ts.map +1 -1
- package/lib/compute.js +0 -12
- package/lib/compute.js.map +1 -1
- package/lib/config/index.d.ts +0 -1
- package/lib/config/index.d.ts.map +1 -1
- package/lib/routes.json +0 -12
- package/package.json +2 -2
- package/lib/components/DeepLinkWaitingPage/DeepLinkWaitingPage.d.ts +0 -8
- package/lib/components/DeepLinkWaitingPage/DeepLinkWaitingPage.d.ts.map +0 -1
- package/lib/components/DeepLinkWaitingPage/DeepLinkWaitingPage.js +0 -277
- package/lib/components/DeepLinkWaitingPage/DeepLinkWaitingPage.js.map +0 -1
- package/lib/config/analytics-config.js +0 -55
- package/lib/config/analytics-config.js.map +0 -1
- package/lib/config/api.config.d.ts +0 -37
- package/lib/config/api.config.d.ts.map +0 -1
- package/lib/config/api.config.js +0 -52
- package/lib/config/api.config.js.map +0 -1
- package/lib/utils/analytics.js +0 -169
- package/lib/utils/analytics.js.map +0 -1
- package/lib/utils/fetchBookingHotelDetails.d.ts +0 -2
- package/lib/utils/fetchBookingHotelDetails.d.ts.map +0 -1
- package/lib/utils/fetchBookingHotelDetails.js +0 -30
- package/lib/utils/fetchBookingHotelDetails.js.map +0 -1
- package/lib/utils/fetchPricelineHotelDetails.d.ts +0 -2
- package/lib/utils/fetchPricelineHotelDetails.d.ts.map +0 -1
- package/lib/utils/fetchPricelineHotelDetails.js +0 -25
- package/lib/utils/fetchPricelineHotelDetails.js.map +0 -1
package/lib/compute.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../src/compute.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../src/compute.ts"],"names":[],"mappings":"AA2BA,QAAA,MAAM,aAAa,0CAA0C,CAAC;AAG9D,QAAA,MAAM,cAAc,0CAA2C,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC"}
|
package/lib/compute.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { getFilteredMenus, getFilteredRoutes } from '@common-stack/client-react/lib/utils/filteredRoutes.js';
|
|
2
2
|
import { config } from './config/env-config.js';
|
|
3
|
-
import { IMenuPosition } from '@common-stack/client-react';
|
|
4
3
|
const key = 'root-layout';
|
|
5
4
|
const tailwindDesignProPage = [{
|
|
6
5
|
key: key,
|
|
@@ -31,17 +30,6 @@ const tailwindDesignProPage = [{
|
|
|
31
30
|
componentPath: "@admin-layout/tailwind-design-pro/lib/components/UpdateSettingsResource/UpdateSettingsResource.js",
|
|
32
31
|
hasLoader: true,
|
|
33
32
|
hasAction: true
|
|
34
|
-
},
|
|
35
|
-
// Add DeepLinkWaitingPage route
|
|
36
|
-
{
|
|
37
|
-
path: `//deep-link/property/:propertyId`,
|
|
38
|
-
key: 'deep-link',
|
|
39
|
-
exact: true,
|
|
40
|
-
hideInMenu: true,
|
|
41
|
-
clientOnly: true,
|
|
42
|
-
position: IMenuPosition.Middle,
|
|
43
|
-
componentPath: "@admin-layout/tailwind-design-pro/lib/components/DeepLinkWaitingPage/DeepLinkWaitingPage.js",
|
|
44
|
-
hasComponent: true
|
|
45
33
|
}];
|
|
46
34
|
// get menus
|
|
47
35
|
getFilteredMenus(tailwindDesignProPage);
|
package/lib/compute.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compute.js","sources":["../src/compute.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compute.js","sources":["../src/compute.ts"],"sourcesContent":[null],"names":[],"mappings":"oJAGA,MAAM,GAAG,GAAG,aAAa;AAEzB,MAAM,qBAAqB,GAAU,CAAA;AACjC,EAAA,GAAA,EAAA,GAAA;AACI,EAAA,IAAA,EAAA,aAAQ;AACR,EAAA,IAAA,EAAA,MAAM,CAAa,WAAA;QACnB,UAAY;AACZ,EAAA,gBAAgB,EAAA,CAAA,GAAA,CAAA;SACA,KAAA;AAChB,EAAA,SAAA,EAAK,MAAO,OAAA,0CAAA;AACZ,CAAA,EAAA;AACH,EAAA,GAAA,EAAA,0BAAA;AACD,EAAA,aAAA,EAAA,IAAA;AACI,EAAA,IAAA,EAAA,wBAA+B;AAC/B,EAAA,eAAA,EAAA,IAAe;AACf,EAAA,IAAA,EAAA;AACA,EAAA,SAAA,EAAA,MAAA,OAAqB,+DAAA,CAAA;AACrB,EAAA,IAAA,EAAA;AACA,CAAA,CAAA;AACA;AACH,gBAAA,CAAA,qBAAA;;AAGO,MAAA,cAAA,GAAA,iBAAA,CAAA,qBAAA"}
|
package/lib/config/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC"}
|
package/lib/routes.json
CHANGED
|
@@ -38,17 +38,5 @@
|
|
|
38
38
|
"hasLoader": true,
|
|
39
39
|
"hasAction": true
|
|
40
40
|
}
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"//deep-link/property/:propertyId": {
|
|
44
|
-
"path": "//deep-link/property/:propertyId",
|
|
45
|
-
"key": "deep-link",
|
|
46
|
-
"exact": true,
|
|
47
|
-
"hideInMenu": true,
|
|
48
|
-
"clientOnly": true,
|
|
49
|
-
"position": "MIDDLE",
|
|
50
|
-
"componentPath": "@admin-layout/tailwind-design-pro/lib/components/DeepLinkWaitingPage/DeepLinkWaitingPage.js",
|
|
51
|
-
"hasComponent": true
|
|
52
|
-
}
|
|
53
41
|
}
|
|
54
42
|
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@admin-layout/tailwind-design-pro",
|
|
3
|
-
"version": "10.1.1-alpha.
|
|
3
|
+
"version": "10.1.1-alpha.19",
|
|
4
4
|
"description": "Sample core for higher packages to depend on",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"typescript": {
|
|
62
62
|
"definition": "lib/index.d.ts"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "275080f5df7c13fd81f9016a180b9d2a71ed24e4"
|
|
65
65
|
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface DeepLinkWaitingPageProps {
|
|
3
|
-
redirectDelay?: number;
|
|
4
|
-
googleAnalyticsId?: string;
|
|
5
|
-
}
|
|
6
|
-
declare const DeepLinkWaitingPage: React.FC<DeepLinkWaitingPageProps>;
|
|
7
|
-
export default DeepLinkWaitingPage;
|
|
8
|
-
//# sourceMappingURL=DeepLinkWaitingPage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeepLinkWaitingPage.d.ts","sourceRoot":"","sources":["../../../src/components/DeepLinkWaitingPage/DeepLinkWaitingPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,UAAU,wBAAwB;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAgW3D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
import {jsx,jsxs}from'react/jsx-runtime';import {useState,useEffect}from'react';import {useSearchParams,useParams}from'react-router-dom';import {initGA,trackPageView,trackEvent}from'../../utils/analytics.js';import {config}from'../../config/env-config.js';import {ANALYTICS_CONFIG,EVENT_CATEGORIES,EVENT_ACTIONS}from'../../config/analytics-config.js';import {PARTNER_LOGOS}from'../../config/api.config.js';import {fetchBookingHotelDetails}from'../../utils/fetchBookingHotelDetails.js';import {fetchPricelineHotelDetails}from'../../utils/fetchPricelineHotelDetails.js';const DeepLinkWaitingPage = ({
|
|
2
|
-
redirectDelay = 5,
|
|
3
|
-
googleAnalyticsId = config.GOOGLE_ANALYTICS_ID
|
|
4
|
-
}) => {
|
|
5
|
-
const [searchParams] = useSearchParams();
|
|
6
|
-
const {
|
|
7
|
-
propertyId
|
|
8
|
-
} = useParams();
|
|
9
|
-
const [countdown, setCountdown] = useState(redirectDelay);
|
|
10
|
-
const [redirectUrl, setRedirectUrl] = useState('');
|
|
11
|
-
const [isPending, setIsPending] = useState(false);
|
|
12
|
-
const [partnerName, setPartnerName] = useState('');
|
|
13
|
-
const [partnerLogo, setPartnerLogo] = useState('');
|
|
14
|
-
const [propertyName, setPropertyName] = useState('');
|
|
15
|
-
// Partner logos from config
|
|
16
|
-
const airbnbLogo = PARTNER_LOGOS.AIRBNB;
|
|
17
|
-
const bookingLogo = PARTNER_LOGOS.BOOKING;
|
|
18
|
-
const pricelineLogo = PARTNER_LOGOS.PRICELINE;
|
|
19
|
-
useEffect(() => {
|
|
20
|
-
// Initialize Google Analytics if enabled
|
|
21
|
-
{
|
|
22
|
-
initGA(googleAnalyticsId);
|
|
23
|
-
}
|
|
24
|
-
// Get the redirect URL from URL parameters
|
|
25
|
-
const url = searchParams.get('redirectUrl');
|
|
26
|
-
const name = searchParams.get('partnerName');
|
|
27
|
-
const logo = searchParams.get('partnerLogo');
|
|
28
|
-
const propName = searchParams.get('propertyName');
|
|
29
|
-
if (propName) {
|
|
30
|
-
setPropertyName(propName);
|
|
31
|
-
}
|
|
32
|
-
if (url === 'pending') {
|
|
33
|
-
setIsPending(true);
|
|
34
|
-
// Extract query parameters for API calls
|
|
35
|
-
const propertyType = searchParams.get('propertyType');
|
|
36
|
-
const checkIn = searchParams.get('checkIn');
|
|
37
|
-
const checkOut = searchParams.get('checkOut');
|
|
38
|
-
const adults = parseInt(searchParams.get('adults') || '1', 10);
|
|
39
|
-
const children = parseInt(searchParams.get('children') || '0', 10);
|
|
40
|
-
// Process API call in the background
|
|
41
|
-
processRedirection(propertyId, propertyType, checkIn, checkOut, adults, children);
|
|
42
|
-
} else if (url) {
|
|
43
|
-
setRedirectUrl(url);
|
|
44
|
-
setPartnerName(name || '');
|
|
45
|
-
setPartnerLogo(logo || '');
|
|
46
|
-
startCountdown(url);
|
|
47
|
-
}
|
|
48
|
-
// Track page view if enabled
|
|
49
|
-
{
|
|
50
|
-
trackPageView(window.location.pathname, `Deep Link Waiting Page - Property: ${propertyId || 'Unknown'}`);
|
|
51
|
-
}
|
|
52
|
-
}, [searchParams, redirectDelay, propertyId, googleAnalyticsId]);
|
|
53
|
-
const processRedirection = async (propertyId, propertyType, checkIn, checkOut, adults, children) => {
|
|
54
|
-
if (!propertyId || !propertyType) {
|
|
55
|
-
console.error('Missing property ID or type');
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
try {
|
|
59
|
-
let redirectUrl = '';
|
|
60
|
-
let partnerName = '';
|
|
61
|
-
let partnerLogo = '';
|
|
62
|
-
let propertyName = '';
|
|
63
|
-
// Handle different property types
|
|
64
|
-
switch (propertyType) {
|
|
65
|
-
case 'AirbnbProperty':
|
|
66
|
-
try {
|
|
67
|
-
// Airbnb doesn't need API call, construct URL directly
|
|
68
|
-
redirectUrl = `https://www.airbnb.com/rooms/${propertyId}?check_in=${checkIn}&check_out=${checkOut}&guests=${adults + children || 1}`;
|
|
69
|
-
partnerName = 'Airbnb.com';
|
|
70
|
-
partnerLogo = airbnbLogo;
|
|
71
|
-
} catch (error) {
|
|
72
|
-
console.error('Error constructing Airbnb URL:', error);
|
|
73
|
-
// Even though this is a direct URL construction, add a fallback just in case
|
|
74
|
-
redirectUrl = `https://www.airbnb.com/rooms/${propertyId}`;
|
|
75
|
-
partnerName = 'Airbnb.com';
|
|
76
|
-
partnerLogo = airbnbLogo;
|
|
77
|
-
}
|
|
78
|
-
break;
|
|
79
|
-
case 'BookingProperty':
|
|
80
|
-
// Call Booking.com API
|
|
81
|
-
const bookingDetails = await fetchBookingHotelDetails(propertyId, checkIn, checkOut, adults, children);
|
|
82
|
-
console.log('bookingDetails---->', bookingDetails);
|
|
83
|
-
if (bookingDetails && bookingDetails?.data?.url) {
|
|
84
|
-
redirectUrl = bookingDetails.data.url;
|
|
85
|
-
partnerName = 'Booking.com';
|
|
86
|
-
partnerLogo = bookingLogo;
|
|
87
|
-
if (bookingDetails.data.name) {
|
|
88
|
-
propertyName = bookingDetails.data.name;
|
|
89
|
-
}
|
|
90
|
-
} else {
|
|
91
|
-
// Fallback URL for Booking.com
|
|
92
|
-
const checkInFormatted = typeof checkIn === 'string' ? checkIn : '';
|
|
93
|
-
const checkOutFormatted = typeof checkOut === 'string' ? checkOut : '';
|
|
94
|
-
const guestsCount = adults + children || 1;
|
|
95
|
-
redirectUrl = `https://www.booking.com/hotel.html?aid=304142&label=gen173nr-1FCAEoggI46AdIM1gEaLYBiAEBmAEhuAEXyAEM2AEB6AEB-AELiAIBqAIDuALxt6-rBsACAdICJDI2NzI4ZDAwLTdhZWQtNDJjOS1iYzRjLTI3ZDRkMzk5MTRlZNgCBuACAQ&sid=d29e889897f5d24d00e4f8d55c8399bd&all_sr_blocks=${propertyId};checkin=${checkInFormatted};checkout=${checkOutFormatted};dest_id=;dest_type=;group_adults=${adults};group_children=${children};hapos=1;highlighted_blocks=${propertyId};no_rooms=1;req_adults=${adults};req_children=${children};room1=A%2CA;sb_price_type=total;sr_order=popularity;sr_pri_blocks=${propertyId};srepoch=1625097600;srpvid=e8c95a7a7f130034;type=total;ucfs=1&#hotelTmpl`;
|
|
96
|
-
partnerName = 'Booking.com';
|
|
97
|
-
partnerLogo = bookingLogo;
|
|
98
|
-
}
|
|
99
|
-
break;
|
|
100
|
-
case 'PricelineProperty':
|
|
101
|
-
// Call Priceline API
|
|
102
|
-
const pricelineDetails = await fetchPricelineHotelDetails(propertyId);
|
|
103
|
-
if (pricelineDetails && pricelineDetails.getHotelHotelDetails) {
|
|
104
|
-
const hotelInfo = pricelineDetails.getHotelHotelDetails?.results?.hotel_data?.hotel_0;
|
|
105
|
-
if (hotelInfo && hotelInfo.priceline_url) {
|
|
106
|
-
redirectUrl = hotelInfo.priceline_url;
|
|
107
|
-
partnerName = 'Priceline.com';
|
|
108
|
-
partnerLogo = pricelineLogo;
|
|
109
|
-
if (hotelInfo.name) {
|
|
110
|
-
propertyName = hotelInfo.name;
|
|
111
|
-
}
|
|
112
|
-
} else {
|
|
113
|
-
// Fallback URL for Priceline
|
|
114
|
-
const cityId = '';
|
|
115
|
-
const checkInDate = typeof checkIn === 'string' ? checkIn : '';
|
|
116
|
-
const checkOutDate = typeof checkOut === 'string' ? checkOut : '';
|
|
117
|
-
const roomCount = 1;
|
|
118
|
-
const adultCount = adults || 1;
|
|
119
|
-
redirectUrl = `https://www.priceline.com/relax/at/${propertyId}/from/${checkInDate}/to/${checkOutDate}/rooms/${roomCount}/adults/${adultCount}?cityId=${cityId}&cur=USD&psl=${propertyId}`;
|
|
120
|
-
partnerName = 'Priceline.com';
|
|
121
|
-
partnerLogo = pricelineLogo;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
break;
|
|
125
|
-
default:
|
|
126
|
-
redirectUrl = `/property/${propertyId}`;
|
|
127
|
-
partnerName = 'Our Website';
|
|
128
|
-
break;
|
|
129
|
-
}
|
|
130
|
-
// If we have a redirect URL, update the state
|
|
131
|
-
if (redirectUrl) {
|
|
132
|
-
if (ANALYTICS_CONFIG.enabled && ANALYTICS_CONFIG.trackEvents.redirections) {
|
|
133
|
-
trackEvent(EVENT_CATEGORIES.REDIRECTION, EVENT_ACTIONS.AUTO_REDIRECT, `Property ID: ${propertyId}, Provider: ${partnerName}, URL: ${redirectUrl}${propertyName ? `, Property Name: ${propertyName}` : ''}`);
|
|
134
|
-
}
|
|
135
|
-
setRedirectUrl(redirectUrl);
|
|
136
|
-
setPartnerName(partnerName);
|
|
137
|
-
setPartnerLogo(partnerLogo);
|
|
138
|
-
if (propertyName) {
|
|
139
|
-
setPropertyName(propertyName);
|
|
140
|
-
}
|
|
141
|
-
setIsPending(false);
|
|
142
|
-
// Start countdown after we have the URL
|
|
143
|
-
startCountdown(redirectUrl);
|
|
144
|
-
} else {
|
|
145
|
-
console.error('Failed to generate redirect URL');
|
|
146
|
-
}
|
|
147
|
-
} catch (error) {
|
|
148
|
-
console.error('Error in processing redirection:', error);
|
|
149
|
-
{
|
|
150
|
-
trackEvent(EVENT_CATEGORIES.ERROR, EVENT_ACTIONS.API_ERROR, `Property ID: ${propertyId}, Type: ${propertyType}`);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
|
-
const startCountdown = url => {
|
|
155
|
-
// Start countdown
|
|
156
|
-
const timer = setInterval(() => {
|
|
157
|
-
setCountdown(prev => {
|
|
158
|
-
if (prev <= 1) {
|
|
159
|
-
clearInterval(timer);
|
|
160
|
-
// Track auto-redirect event if enabled
|
|
161
|
-
{
|
|
162
|
-
trackEvent(EVENT_CATEGORIES.REDIRECTION, EVENT_ACTIONS.AUTO_REDIRECT, `Property ID: ${propertyId}, Provider: ${partnerName}, URL: ${url}${propertyName ? `, Property Name: ${propertyName}` : ''}`);
|
|
163
|
-
}
|
|
164
|
-
// Redirect after countdown finishes
|
|
165
|
-
window.location.href = url || '';
|
|
166
|
-
return 0;
|
|
167
|
-
}
|
|
168
|
-
return prev - 1;
|
|
169
|
-
});
|
|
170
|
-
}, 1000);
|
|
171
|
-
return () => clearInterval(timer);
|
|
172
|
-
};
|
|
173
|
-
const handleManualRedirect = () => {
|
|
174
|
-
if (redirectUrl) {
|
|
175
|
-
// Track manual click event if enabled
|
|
176
|
-
{
|
|
177
|
-
trackEvent(EVENT_CATEGORIES.REDIRECTION, EVENT_ACTIONS.MANUAL_CLICK, `Property ID: ${propertyId}, Provider: ${partnerName}, URL: ${redirectUrl}${propertyName ? `, Property Name: ${propertyName}` : ''}`, countdown);
|
|
178
|
-
}
|
|
179
|
-
window.location.href = redirectUrl;
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
|
-
// Regular waiting page UI once we have the URL
|
|
183
|
-
return jsx("div", {
|
|
184
|
-
className: "flex flex-col items-center justify-center min-h-screen bg-gray-50 p-4",
|
|
185
|
-
children: jsxs("div", {
|
|
186
|
-
className: "max-w-3xl w-full bg-white rounded-lg shadow-lg p-8 text-center",
|
|
187
|
-
children: [jsx("h1", {
|
|
188
|
-
className: "text-2xl font-bold mb-6",
|
|
189
|
-
children: "Thank you, almost there..."
|
|
190
|
-
}), jsxs("div", {
|
|
191
|
-
className: "flex justify-center items-center space-x-8 mb-10",
|
|
192
|
-
children: [jsxs("div", {
|
|
193
|
-
className: "text-center",
|
|
194
|
-
children: [jsx("img", {
|
|
195
|
-
src: "https://pbs.twimg.com/profile_images/1687470682165112833/egFUxwF-_400x400.jpg",
|
|
196
|
-
alt: "Our Logo",
|
|
197
|
-
className: "w-32 h-auto mb-2"
|
|
198
|
-
}), jsx("p", {
|
|
199
|
-
children: "You've found your property"
|
|
200
|
-
})]
|
|
201
|
-
}), jsxs("div", {
|
|
202
|
-
className: "flex items-center",
|
|
203
|
-
children: [jsx("div", {
|
|
204
|
-
className: "w-12 h-12 bg-blue-500 rounded-full flex items-center justify-center text-white",
|
|
205
|
-
children: jsx("svg", {
|
|
206
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
207
|
-
className: "h-6 w-6",
|
|
208
|
-
fill: "none",
|
|
209
|
-
viewBox: "0 0 24 24",
|
|
210
|
-
stroke: "currentColor",
|
|
211
|
-
children: jsx("path", {
|
|
212
|
-
strokeLinecap: "round",
|
|
213
|
-
strokeLinejoin: "round",
|
|
214
|
-
strokeWidth: 2,
|
|
215
|
-
d: "M14 5l7 7m0 0l-7 7m7-7H3"
|
|
216
|
-
})
|
|
217
|
-
})
|
|
218
|
-
}), jsx("div", {
|
|
219
|
-
className: "w-16 h-2 bg-gray-200",
|
|
220
|
-
children: jsx("div", {
|
|
221
|
-
className: "h-full bg-blue-500",
|
|
222
|
-
style: {
|
|
223
|
-
width: `${countdown / redirectDelay * 100}%`
|
|
224
|
-
}
|
|
225
|
-
})
|
|
226
|
-
}), jsx("div", {
|
|
227
|
-
className: "w-12 h-12 bg-gray-200 rounded-full flex items-center justify-center text-gray-500",
|
|
228
|
-
children: jsx("svg", {
|
|
229
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
230
|
-
className: "h-6 w-6",
|
|
231
|
-
fill: "none",
|
|
232
|
-
viewBox: "0 0 24 24",
|
|
233
|
-
stroke: "currentColor",
|
|
234
|
-
children: jsx("path", {
|
|
235
|
-
strokeLinecap: "round",
|
|
236
|
-
strokeLinejoin: "round",
|
|
237
|
-
strokeWidth: 2,
|
|
238
|
-
d: "M14 5l7 7m0 0l-7 7m7-7H3"
|
|
239
|
-
})
|
|
240
|
-
})
|
|
241
|
-
})]
|
|
242
|
-
}), jsxs("div", {
|
|
243
|
-
className: "text-center",
|
|
244
|
-
children: [jsx("img", {
|
|
245
|
-
src: partnerLogo || '/images/partner-logo.png',
|
|
246
|
-
alt: "Partner Logo",
|
|
247
|
-
className: "w-32 h-auto mb-2"
|
|
248
|
-
}), jsxs("p", {
|
|
249
|
-
children: ["Now complete your booking with", jsx("br", {}), "the property provider ", partnerName]
|
|
250
|
-
})]
|
|
251
|
-
})]
|
|
252
|
-
}), jsxs("p", {
|
|
253
|
-
className: "mb-4",
|
|
254
|
-
children: ["You will be redirected in ", jsx("span", {
|
|
255
|
-
className: "font-bold",
|
|
256
|
-
children: countdown
|
|
257
|
-
}), " seconds"]
|
|
258
|
-
}), jsx("button", {
|
|
259
|
-
onClick: handleManualRedirect,
|
|
260
|
-
className: "px-6 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors",
|
|
261
|
-
children: "Continue Now"
|
|
262
|
-
}), jsxs("p", {
|
|
263
|
-
className: "mt-8 text-sm text-gray-500",
|
|
264
|
-
children: ["If you are not redirected to ", partnerName || 'the provider', " in a few seconds, please", ' ', jsx("a", {
|
|
265
|
-
href: redirectUrl,
|
|
266
|
-
className: "text-blue-600 hover:underline",
|
|
267
|
-
onClick: () => {
|
|
268
|
-
{
|
|
269
|
-
trackEvent(EVENT_CATEGORIES.REDIRECTION, EVENT_ACTIONS.LINK_CLICK, `Property ID: ${propertyId}, Provider: ${partnerName}, URL: ${redirectUrl}${propertyName ? `, Property Name: ${propertyName}` : ''}`, countdown);
|
|
270
|
-
}
|
|
271
|
-
},
|
|
272
|
-
children: "click here"
|
|
273
|
-
}), "."]
|
|
274
|
-
})]
|
|
275
|
-
})
|
|
276
|
-
});
|
|
277
|
-
};export{DeepLinkWaitingPage as default};//# sourceMappingURL=DeepLinkWaitingPage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeepLinkWaitingPage.js","sources":["../../../src/components/DeepLinkWaitingPage/DeepLinkWaitingPage.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import {config}from'./env-config.js';/**
|
|
2
|
-
* Google Analytics Configuration
|
|
3
|
-
*/
|
|
4
|
-
// Configuration for analytics tracking
|
|
5
|
-
const ANALYTICS_CONFIG = {
|
|
6
|
-
// Enable or disable analytics tracking
|
|
7
|
-
enabled: true,
|
|
8
|
-
// Enable or disable debugging messages in console
|
|
9
|
-
debug: process.env.NODE_ENV === 'development',
|
|
10
|
-
// GA4 Measurement ID
|
|
11
|
-
GA4_MEASUREMENT_ID: config.GOOGLE_ANALYTICS_ID,
|
|
12
|
-
// Configure what events to track
|
|
13
|
-
trackEvents: {
|
|
14
|
-
pageViews: true,
|
|
15
|
-
clicks: true,
|
|
16
|
-
redirections: true,
|
|
17
|
-
errors: true
|
|
18
|
-
},
|
|
19
|
-
// Configure what user properties to track
|
|
20
|
-
trackUserProperties: {
|
|
21
|
-
userId: true,
|
|
22
|
-
deviceInfo: true,
|
|
23
|
-
location: false // Be careful with privacy regulations like GDPR
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
// Analytics event categories
|
|
27
|
-
const EVENT_CATEGORIES = {
|
|
28
|
-
REDIRECTION: 'Redirection',
|
|
29
|
-
USER_INTERACTION: 'User Interaction',
|
|
30
|
-
SYSTEM: 'System',
|
|
31
|
-
ERROR: 'Error'
|
|
32
|
-
};
|
|
33
|
-
// Analytics event actions
|
|
34
|
-
const EVENT_ACTIONS = {
|
|
35
|
-
// Redirections
|
|
36
|
-
AUTO_REDIRECT: 'Auto Redirect',
|
|
37
|
-
MANUAL_CLICK: 'Manual Click',
|
|
38
|
-
LINK_CLICK: 'Link Click',
|
|
39
|
-
// User interactions
|
|
40
|
-
BUTTON_CLICK: 'Button Click',
|
|
41
|
-
FORM_SUBMIT: 'Form Submit',
|
|
42
|
-
SEARCH: 'Search',
|
|
43
|
-
VIEW_ITEM: 'View Item',
|
|
44
|
-
ADD_TO_CART: 'Add to Cart',
|
|
45
|
-
REMOVE_FROM_CART: 'Remove from Cart',
|
|
46
|
-
BEGIN_CHECKOUT: 'Begin Checkout',
|
|
47
|
-
ADD_PAYMENT_INFO: 'Add Payment Info',
|
|
48
|
-
PURCHASE: 'Purchase',
|
|
49
|
-
// System
|
|
50
|
-
LOAD: 'Load',
|
|
51
|
-
INIT: 'Initialize',
|
|
52
|
-
// Errors
|
|
53
|
-
API_ERROR: 'API Error',
|
|
54
|
-
CLIENT_ERROR: 'Client Error'
|
|
55
|
-
};export{ANALYTICS_CONFIG,EVENT_ACTIONS,EVENT_CATEGORIES};//# sourceMappingURL=analytics-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-config.js","sources":["../../src/config/analytics-config.ts"],"sourcesContent":[null],"names":[],"mappings":"qCAAA;;AAEG;AAIH;AACa,MAAA,gBAAgB,GAAG;;AAE5B,EAAA,OAAA,EAAO,IAAM;;AAGb,EAAA,KAAA,EAAK,OAAS,CAAA,YAAK,kBAA0B;;oBAG3B,EAAA,MAAQ,CAAA,mBAAoB;;AAG9C,EAAA,WAAA,EAAW;AACP,IAAA,SAAA,EAAA,IAAW;AACX,IAAA,MAAA,EAAA,IAAQ;AACR,IAAA,YAAA,EAAA,IAAc;AACd,IAAA,MAAA,EAAA;AACH,GAAA;;AAGD,EAAA,mBAAA,EAAmB;AACf,IAAA,MAAA,EAAA,IAAQ;AACR,IAAA,UAAA,EAAA,IAAY;YACJ,EAAA,KAAO;AAClB;;AAGL;AACa,MAAA,gBAAgB,GAAG;AAC5B,EAAA,WAAA,EAAW,aAAe;AAC1B,EAAA,gBAAA,EAAgB,kBAAoB;AACpC,EAAA,MAAA,EAAM,QAAU;AAChB,EAAA,KAAA,EAAK;;AAGT;AACa,MAAA,aAAa,GAAG;;AAEzB,EAAA,aAAA,EAAa,eAAiB;AAC9B,EAAA,YAAA,EAAY,cAAgB;AAC5B,EAAA,UAAA,EAAU,YAAc;;AAGxB,EAAA,YAAA,EAAY,cAAgB;AAC5B,EAAA,WAAA,EAAW,aAAe;AAC1B,EAAA,MAAA,EAAM,QAAU;AAChB,EAAA,SAAA,EAAS,WAAa;AACtB,EAAA,WAAA,EAAW,aAAe;AAC1B,EAAA,gBAAA,EAAgB,kBAAoB;AACpC,EAAA,cAAA,EAAc,gBAAkB;AAChC,EAAA,gBAAA,EAAgB,kBAAoB;AACpC,EAAA,QAAA,EAAQ,UAAY;;AAGpB,EAAA,IAAA,EAAI,MAAQ;AACZ,EAAA,IAAA,EAAI,YAAc;;AAGlB,EAAA,SAAA,EAAS,WAAa;AACtB,EAAA,YAAA,EAAY;"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* API Configuration
|
|
3
|
-
* Centralized configuration for all API-related settings
|
|
4
|
-
*/
|
|
5
|
-
export declare const RAPID_API_KEY: string;
|
|
6
|
-
export declare const BOOKING_API: {
|
|
7
|
-
BASE_URL: string;
|
|
8
|
-
HOST: string;
|
|
9
|
-
};
|
|
10
|
-
export declare const PRICELINE_API: {
|
|
11
|
-
BASE_URL: string;
|
|
12
|
-
HOST: string;
|
|
13
|
-
DEFAULT_PARAMS: {
|
|
14
|
-
guest_score_breakdown: string;
|
|
15
|
-
videos: string;
|
|
16
|
-
important_info: string;
|
|
17
|
-
sid: string;
|
|
18
|
-
id_lookup: string;
|
|
19
|
-
plugins: string;
|
|
20
|
-
promo: string;
|
|
21
|
-
nearby: string;
|
|
22
|
-
recent: string;
|
|
23
|
-
photos: string;
|
|
24
|
-
reviews: string;
|
|
25
|
-
};
|
|
26
|
-
};
|
|
27
|
-
export declare const PARTNER_LOGOS: {
|
|
28
|
-
AIRBNB: string;
|
|
29
|
-
BOOKING: string;
|
|
30
|
-
PRICELINE: string;
|
|
31
|
-
};
|
|
32
|
-
export declare const formatDate: (date: Date) => string;
|
|
33
|
-
export declare const getDefaultDates: () => {
|
|
34
|
-
arrival: string;
|
|
35
|
-
departure: string;
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=api.config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.config.d.ts","sourceRoot":"","sources":["../../src/config/api.config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,MAAM,aAAa,QAAuB,CAAC;AAGlD,eAAO,MAAM,WAAW;;;CAGvB,CAAC;AAGF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;CAgBzB,CAAC;AAGF,eAAO,MAAM,aAAa;;;;CAMzB,CAAC;AAGF,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,KAAG,MAKvC,CAAC;AAGF,eAAO,MAAM,eAAe;;;CAS3B,CAAC"}
|
package/lib/config/api.config.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import {config}from'./env-config.js';/**
|
|
2
|
-
* API Configuration
|
|
3
|
-
* Centralized configuration for all API-related settings
|
|
4
|
-
*/
|
|
5
|
-
// RapidAPI Key
|
|
6
|
-
const RAPID_API_KEY = config.RAPID_API_KEY;
|
|
7
|
-
// Booking.com API
|
|
8
|
-
const BOOKING_API = {
|
|
9
|
-
BASE_URL: 'https://booking-com15.p.rapidapi.com/api/v1/hotels/getHotelDetails',
|
|
10
|
-
HOST: 'booking-com15.p.rapidapi.com'
|
|
11
|
-
};
|
|
12
|
-
// Priceline API
|
|
13
|
-
const PRICELINE_API = {
|
|
14
|
-
BASE_URL: 'https://priceline-com-provider.p.rapidapi.com/v2/hotels/details',
|
|
15
|
-
HOST: 'priceline-com-provider.p.rapidapi.com',
|
|
16
|
-
DEFAULT_PARAMS: {
|
|
17
|
-
guest_score_breakdown: 'true',
|
|
18
|
-
videos: 'true',
|
|
19
|
-
important_info: 'true',
|
|
20
|
-
sid: 'iSiX639',
|
|
21
|
-
id_lookup: 'true',
|
|
22
|
-
plugins: 'true',
|
|
23
|
-
promo: 'true',
|
|
24
|
-
nearby: 'true',
|
|
25
|
-
recent: 'true',
|
|
26
|
-
photos: 'true',
|
|
27
|
-
reviews: 'true'
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
// Partner Logos
|
|
31
|
-
const PARTNER_LOGOS = {
|
|
32
|
-
AIRBNB: 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/Airbnb_Logo_B%C3%A9lo.svg/512px-Airbnb_Logo_B%C3%A9lo.svg.png',
|
|
33
|
-
BOOKING: 'https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/Booking.com_logo.svg/1920px-Booking.com_logo.svg.png',
|
|
34
|
-
PRICELINE: 'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Priceline.com_logo.svg/1920px-Priceline.com_logo.svg.png'
|
|
35
|
-
};
|
|
36
|
-
// Date formatting helper
|
|
37
|
-
const formatDate = date => {
|
|
38
|
-
const year = date.getFullYear();
|
|
39
|
-
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
40
|
-
const day = String(date.getDate()).padStart(2, '0');
|
|
41
|
-
return `${year}-${month}-${day}`;
|
|
42
|
-
};
|
|
43
|
-
// Get default dates (today and today + 2 days)
|
|
44
|
-
const getDefaultDates = () => {
|
|
45
|
-
const today = new Date();
|
|
46
|
-
const twoDaysLater = new Date(today);
|
|
47
|
-
twoDaysLater.setDate(today.getDate() + 2);
|
|
48
|
-
return {
|
|
49
|
-
arrival: formatDate(today),
|
|
50
|
-
departure: formatDate(twoDaysLater)
|
|
51
|
-
};
|
|
52
|
-
};export{BOOKING_API,PARTNER_LOGOS,PRICELINE_API,RAPID_API_KEY,formatDate,getDefaultDates};//# sourceMappingURL=api.config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.config.js","sources":["../../src/config/api.config.ts"],"sourcesContent":[null],"names":[],"mappings":"qCAAA;;;AAGG;AAIH;AACa,MAAA,aAAa,GAAG,MAAM,CAAC;AAEpC;AACa,MAAA,WAAW,GAAG;AACvB,EAAA,QAAA,EAAQ,oEAAsE;AAC9E,EAAA,IAAA,EAAI;;AAGR;AACa,MAAA,aAAa,GAAG;AACzB,EAAA,QAAA,EAAQ,iEAAmE;AAC3E,EAAA,IAAA,EAAI,uCAAyC;AAC7C,EAAA,cAAA,EAAc;AACV,IAAA,qBAAA,EAAA,MAA6B;AAC7B,IAAA,MAAA,EAAA,MAAc;AACd,IAAA,cAAA,EAAA,MAAsB;AACtB,IAAA,GAAA,EAAA,SAAc;AACd,IAAA,SAAA,EAAA,MAAiB;AACjB,IAAA,OAAA,EAAA,MAAe;AACf,IAAA,KAAA,EAAA,MAAa;AACb,IAAA,MAAA,EAAA,MAAc;AACd,IAAA,MAAA,EAAA,MAAc;AACd,IAAA,MAAA,EAAA,MAAc;AACd,IAAA,OAAA,EAAA;AACH;;AAGL;AACa,MAAA,aAAa,GAAG;AACzB,EAAA,MAAA,EAAM,yHAA2H;AACjI,EAAA,OAAA,EAAO,gHAC6G;AACpH,EAAA,SAAA,EAAS;;AAIb;AACa,MAAA,UAAU,GAAG,IAAC,IAAsB;AAC7C,EAAA,MAAA,OAAa,IAAA,CAAA,WAAK,EAAW;AAC7B,EAAA,MAAA,QAAc,MAAA,CAAA,IAAW,CAAA,UAAS,GAAE,CAAA,CAAG,CAAC,QAAU,CAAA,CAAA,EAAE,GAAE,CAAA;AACtD,EAAA,MAAA,MAAY,MAAA,CAAA,IAAO,CAAA,OAAY,EAAA,CAAA,CAAE,UAAU,EAAE,GAAE,CAAA;AAC/C,EAAA,OAAA,CAAA,MAAc,CAAA,CAAA,EAAA,OAAS,EAAI,GAAA,CAAA,CAAG;AAClC;AAEA;AACO,MAAM,eAAe,GAAG,MAAK;AAChC,EAAA,MAAA,KAAW,GAAA,IAAO,IAAA,EAAI;AACtB,EAAA,MAAA,eAAqB,IAAA,UAAS,CAAA;cAClB,CAAA,OAAQ,CAAA,KAAM,CAAA,SAAQ,GAAE,CAAA,CAAG;SAEhC;AACH,IAAA,OAAA,EAAA,UAAS,CAAA,KAAW,CAAA;AACpB,IAAA,SAAA,EAAA,UAAW,CAAA,YAAW;;AAE9B"}
|
package/lib/utils/analytics.js
DELETED
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import ReactGA from'react-ga4';import {ANALYTICS_CONFIG}from'../config/analytics-config.js';let isInitialized = false;
|
|
2
|
-
/**
|
|
3
|
-
* Initialize Google Analytics
|
|
4
|
-
* @param {string} measurementId - Google Analytics measurement ID (GA4)
|
|
5
|
-
*/
|
|
6
|
-
const initGA = measurementId => {
|
|
7
|
-
if (!measurementId) {
|
|
8
|
-
console.warn('Google Analytics Measurement ID is missing');
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
if (isInitialized) {
|
|
12
|
-
if (ANALYTICS_CONFIG.debug) {
|
|
13
|
-
console.log('Google Analytics already initialized, skipping');
|
|
14
|
-
}
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
try {
|
|
18
|
-
ReactGA.initialize(measurementId, {
|
|
19
|
-
gaOptions: {
|
|
20
|
-
debug_mode: ANALYTICS_CONFIG.debug,
|
|
21
|
-
send_page_view: false // We'll manually track the first page view
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
isInitialized = true;
|
|
25
|
-
if (ANALYTICS_CONFIG.debug) {
|
|
26
|
-
console.log('Google Analytics initialized with ID:', measurementId);
|
|
27
|
-
}
|
|
28
|
-
// Track initial page view
|
|
29
|
-
trackPageView(window.location.pathname, document.title);
|
|
30
|
-
// Set user properties if enabled
|
|
31
|
-
if (ANALYTICS_CONFIG.trackUserProperties.deviceInfo) {
|
|
32
|
-
setDeviceInfo();
|
|
33
|
-
}
|
|
34
|
-
// Listen for analytics events from our XState machines
|
|
35
|
-
window.addEventListener('analytics.event', e => {
|
|
36
|
-
const analyticsEvent = e.detail;
|
|
37
|
-
if (!analyticsEvent || !analyticsEvent.type) return;
|
|
38
|
-
// Process the event based on its type
|
|
39
|
-
switch (analyticsEvent.type) {
|
|
40
|
-
case 'TRACK_EVENT':
|
|
41
|
-
trackEvent(analyticsEvent.params?.event_category || 'User Interaction', analyticsEvent.name, analyticsEvent.params?.event_label, analyticsEvent.params?.value);
|
|
42
|
-
break;
|
|
43
|
-
case 'PAGE_VIEW':
|
|
44
|
-
trackPageView(analyticsEvent.params?.page_path || window.location.pathname, analyticsEvent.page || analyticsEvent.params?.page_title);
|
|
45
|
-
break;
|
|
46
|
-
case 'SEARCH':
|
|
47
|
-
trackGA4Event('search', analyticsEvent.params);
|
|
48
|
-
break;
|
|
49
|
-
case 'VIEW_ITEM':
|
|
50
|
-
trackGA4Event('view_item', analyticsEvent.params);
|
|
51
|
-
break;
|
|
52
|
-
case 'USER_ENGAGEMENT':
|
|
53
|
-
trackGA4Event('user_engagement', analyticsEvent.params);
|
|
54
|
-
break;
|
|
55
|
-
case 'BEGIN_CHECKOUT':
|
|
56
|
-
trackGA4Event('begin_checkout', analyticsEvent.params);
|
|
57
|
-
break;
|
|
58
|
-
case 'ADD_PAYMENT_INFO':
|
|
59
|
-
trackGA4Event('add_payment_info', analyticsEvent.params);
|
|
60
|
-
break;
|
|
61
|
-
case 'PURCHASE':
|
|
62
|
-
trackGA4Event('purchase', analyticsEvent.params);
|
|
63
|
-
break;
|
|
64
|
-
default:
|
|
65
|
-
// For other events, track as a custom event
|
|
66
|
-
if (analyticsEvent.name) {
|
|
67
|
-
trackEvent('Custom', analyticsEvent.name, undefined, undefined);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
} catch (error) {
|
|
72
|
-
console.error('Error initializing Google Analytics:', error);
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
/**
|
|
76
|
-
* Track a GA4 standard event
|
|
77
|
-
* @param {string} eventName - GA4 event name
|
|
78
|
-
* @param {GA4EventParams} eventParams - Event parameters
|
|
79
|
-
*/
|
|
80
|
-
const trackGA4Event = (eventName, eventParams) => {
|
|
81
|
-
if (!isInitialized) {
|
|
82
|
-
if (ANALYTICS_CONFIG.debug) {
|
|
83
|
-
console.warn(`Attempted to track GA4 event ${eventName} before initialization`);
|
|
84
|
-
}
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
try {
|
|
88
|
-
ReactGA.event(eventName, eventParams);
|
|
89
|
-
if (ANALYTICS_CONFIG.debug) {
|
|
90
|
-
console.log(`GA4 event tracked: ${eventName}`, eventParams);
|
|
91
|
-
}
|
|
92
|
-
} catch (error) {
|
|
93
|
-
console.error(`Error tracking GA4 event ${eventName}:`, error);
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
/**
|
|
97
|
-
* Track page views
|
|
98
|
-
* @param {string} path - URL path to track
|
|
99
|
-
* @param {string} title - Page title
|
|
100
|
-
*/
|
|
101
|
-
const trackPageView = (path, title) => {
|
|
102
|
-
if (!isInitialized) {
|
|
103
|
-
if (ANALYTICS_CONFIG.debug) {
|
|
104
|
-
console.warn('Attempted to track page view before initialization:', path);
|
|
105
|
-
}
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
try {
|
|
109
|
-
ReactGA.send({
|
|
110
|
-
hitType: 'pageview',
|
|
111
|
-
page: path,
|
|
112
|
-
title,
|
|
113
|
-
location: window.location.href
|
|
114
|
-
});
|
|
115
|
-
if (ANALYTICS_CONFIG.debug) {
|
|
116
|
-
console.log(`Page view tracked: ${path}${title ? ` (${title})` : ''}`);
|
|
117
|
-
}
|
|
118
|
-
} catch (error) {
|
|
119
|
-
console.error('Error tracking page view:', error);
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
/**
|
|
123
|
-
* Track events
|
|
124
|
-
* @param {string} category - Event category
|
|
125
|
-
* @param {string} action - Event action
|
|
126
|
-
* @param {string} label - Event label (optional)
|
|
127
|
-
* @param {number} value - Event value (optional)
|
|
128
|
-
*/
|
|
129
|
-
const trackEvent = (category, action, label, value) => {
|
|
130
|
-
if (!isInitialized) {
|
|
131
|
-
if (ANALYTICS_CONFIG.debug) {
|
|
132
|
-
console.warn('Attempted to track event before initialization:', category, action);
|
|
133
|
-
}
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
try {
|
|
137
|
-
ReactGA.event({
|
|
138
|
-
category,
|
|
139
|
-
action,
|
|
140
|
-
label,
|
|
141
|
-
value
|
|
142
|
-
});
|
|
143
|
-
if (ANALYTICS_CONFIG.debug) {
|
|
144
|
-
console.log(`Event tracked: ${category} - ${action}${label ? ` - ${label}` : ''}${value !== undefined ? ` (${value})` : ''}`);
|
|
145
|
-
}
|
|
146
|
-
} catch (error) {
|
|
147
|
-
console.error('Error tracking event:', error);
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
/**
|
|
151
|
-
* Set device information as user properties
|
|
152
|
-
*/
|
|
153
|
-
const setDeviceInfo = () => {
|
|
154
|
-
if (!isInitialized) return;
|
|
155
|
-
try {
|
|
156
|
-
const deviceInfo = {
|
|
157
|
-
screenResolution: `${window.screen.width}x${window.screen.height}`,
|
|
158
|
-
viewportSize: `${window.innerWidth}x${window.innerHeight}`,
|
|
159
|
-
userAgent: navigator.userAgent,
|
|
160
|
-
language: navigator.language
|
|
161
|
-
};
|
|
162
|
-
ReactGA.set(deviceInfo);
|
|
163
|
-
if (ANALYTICS_CONFIG.debug) {
|
|
164
|
-
console.log('Device info set:', deviceInfo);
|
|
165
|
-
}
|
|
166
|
-
} catch (error) {
|
|
167
|
-
console.error('Error setting device info:', error);
|
|
168
|
-
}
|
|
169
|
-
};export{initGA,trackEvent,trackGA4Event,trackPageView};//# sourceMappingURL=analytics.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.js","sources":["../../src/utils/analytics.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetchBookingHotelDetails.d.ts","sourceRoot":"","sources":["../../src/utils/fetchBookingHotelDetails.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,GAAU,YAAO,EAAE,YAAO,EAAE,aAAQ,EAAE,WAAM,EAAE,aAAQ,iBAiC1F,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import'../config/env-config.js';import'../config/analytics-config.js';import {getDefaultDates,BOOKING_API,RAPID_API_KEY}from'../config/api.config.js';// Function to fetch hotel details from RapidAPI
|
|
2
|
-
const fetchBookingHotelDetails = async (hotelId, checkIn, checkOut, adults, children) => {
|
|
3
|
-
const url = BOOKING_API.BASE_URL;
|
|
4
|
-
// Get default dates if not provided
|
|
5
|
-
const defaultDates = getDefaultDates();
|
|
6
|
-
const arrivalDate = checkIn || defaultDates.arrival;
|
|
7
|
-
const departureDate = checkOut || defaultDates.departure;
|
|
8
|
-
const params = new URLSearchParams({
|
|
9
|
-
hotel_id: hotelId,
|
|
10
|
-
arrival_date: arrivalDate,
|
|
11
|
-
departure_date: departureDate
|
|
12
|
-
});
|
|
13
|
-
try {
|
|
14
|
-
const response = await fetch(`${url}?${params.toString()}`, {
|
|
15
|
-
method: 'GET',
|
|
16
|
-
headers: {
|
|
17
|
-
'x-rapidapi-host': BOOKING_API.HOST,
|
|
18
|
-
'x-rapidapi-key': RAPID_API_KEY
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
if (!response.ok) {
|
|
22
|
-
throw new Error('Failed to fetch hotel details');
|
|
23
|
-
}
|
|
24
|
-
const data = await response.json();
|
|
25
|
-
return data;
|
|
26
|
-
} catch (error) {
|
|
27
|
-
console.error('Error fetching hotel details:', error);
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
};export{fetchBookingHotelDetails};//# sourceMappingURL=fetchBookingHotelDetails.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetchBookingHotelDetails.js","sources":["../../src/utils/fetchBookingHotelDetails.ts"],"sourcesContent":[null],"names":[],"mappings":"sJAEA;AACa,MAAA,wBAAwB,GAAG,OAAO,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,KAAI;AAC3F,EAAA,MAAA,GAAS,GAAA,WAAc,CAAA;;AAGvB,EAAA,MAAA,YAAkB,GAAA,eAAkB,EAAA;AACpC,EAAA,MAAA,cAAoB,OAAA,gBAAuB,CAAA;AAC3C,EAAA,MAAA,gBAAsB,QAAA,gBAAwB,CAAA;AAE9C,EAAA,MAAA,MAAY,GAAA,IAAO,eAAA,CAAA;AACf,IAAA,QAAA,EAAA,OAAiB;AACjB,IAAA,YAAA,EAAA,WAAyB;AACzB,IAAA,cAAA,EAAA;AACH,GAAA,CAAA;AAED,EAAA,IAAA;AACI,IAAA,MAAA,QAAc,GAAA,MAAS,KAAA,CAAA,CAAA,EAAK,GAAC,CAAG,CAAG,EAAA,MAAU,CAAA,QAAS,EAAA,CAAA,CAAA,EAAE;AACpD,MAAA,MAAA,EAAA;AACA,MAAA,OAAA,EAAA;yBACqB,EAAA,WAAa,CAAA,IAAA;AAC9B,QAAA,gBAAA,EAAA;AACH;AACJ,KAAA,CAAA;AAED,IAAA,IAAA,CAAA,QAAK,CAAA,EAAA,EAAS;AACV,MAAA,MAAA,IAAA,KAAU,CAAA,+BAAM,CAAA;;AAGpB,IAAA,MAAA,IAAM,SAAO,aAAe,EAAA;AAC5B,IAAA,OAAA,IAAO;IACX,OAAC,KAAA,EAAA;IAAC,OAAO,CAAA,MAAO,+BAAC,EAAA,KAAA,CAAA;AACb,IAAA,OAAA,IAAO;AACP;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetchPricelineHotelDetails.d.ts","sourceRoot":"","sources":["../../src/utils/fetchPricelineHotelDetails.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,0BAA0B,GAAU,YAAO,iBA0BvD,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import'../config/env-config.js';import'../config/analytics-config.js';import {PRICELINE_API,RAPID_API_KEY}from'../config/api.config.js';// Function to fetch Priceline property details
|
|
2
|
-
const fetchPricelineHotelDetails = async hotelId => {
|
|
3
|
-
const url = PRICELINE_API.BASE_URL;
|
|
4
|
-
const params = new URLSearchParams({
|
|
5
|
-
hotel_id: hotelId,
|
|
6
|
-
...PRICELINE_API.DEFAULT_PARAMS
|
|
7
|
-
});
|
|
8
|
-
try {
|
|
9
|
-
const response = await fetch(`${url}?${params.toString()}`, {
|
|
10
|
-
method: 'GET',
|
|
11
|
-
headers: {
|
|
12
|
-
'x-rapidapi-host': PRICELINE_API.HOST,
|
|
13
|
-
'x-rapidapi-key': RAPID_API_KEY
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
if (!response.ok) {
|
|
17
|
-
throw new Error('Failed to fetch Priceline property details');
|
|
18
|
-
}
|
|
19
|
-
const data = await response.json();
|
|
20
|
-
return data;
|
|
21
|
-
} catch (error) {
|
|
22
|
-
console.error('Error fetching Priceline property details:', error);
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
};export{fetchPricelineHotelDetails};//# sourceMappingURL=fetchPricelineHotelDetails.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetchPricelineHotelDetails.js","sources":["../../src/utils/fetchPricelineHotelDetails.ts"],"sourcesContent":[null],"names":[],"mappings":"wIAEA;MACa,0BAA0B,GAAG,MAAO,OAAA,IAAW;AACxD,EAAA,MAAA,GAAS,GAAA,aAAgB,CAAA;AACzB,EAAA,MAAA,MAAY,GAAA,IAAO,eAAA,CAAA;AACf,IAAA,QAAA,EAAA,OAAiB;oBACd,CAAA;AACN,GAAA,CAAA;AAED,EAAA,IAAA;AACI,IAAA,MAAA,QAAc,GAAA,MAAS,KAAA,CAAA,CAAA,EAAK,GAAC,CAAG,CAAG,EAAA,MAAU,CAAA,QAAS,EAAA,CAAA,CAAA,EAAE;AACpD,MAAA,MAAA,EAAA;AACA,MAAA,OAAA,EAAA;yBACqB,EAAA,aAAe,CAAA,IAAA;AAChC,QAAA,gBAAA,EAAA;AACH;AACJ,KAAA,CAAA;AAED,IAAA,IAAA,CAAA,QAAK,CAAA,EAAA,EAAS;AACV,MAAA,MAAA,IAAA,KAAU,CAAA,4CAAM,CAAA;;AAGpB,IAAA,MAAA,IAAM,SAAO,aAAe,EAAA;AAC5B,IAAA,OAAA,IAAO;IACX,OAAC,KAAA,EAAA;IAAC,OAAO,CAAA,MAAO,4CAAC,EAAA,KAAA,CAAA;AACb,IAAA,OAAA,IAAO;AACP;"}
|