@admin-layout/tailwind-travel-pro 12.0.16-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/lib/components/CardList.d.ts +61 -0
- package/lib/components/CardList.d.ts.map +1 -0
- package/lib/components/CardList.js +43 -0
- package/lib/components/CardList.js.map +1 -0
- package/lib/components/CategoriesTypeList.d.ts +29 -0
- package/lib/components/CategoriesTypeList.d.ts.map +1 -0
- package/lib/components/CategoriesTypeList.js +139 -0
- package/lib/components/CategoriesTypeList.js.map +1 -0
- package/lib/components/LazyLoadingGoogleMarker.d.ts +83 -0
- package/lib/components/LazyLoadingGoogleMarker.d.ts.map +1 -0
- package/lib/components/LazyLoadingGoogleMarker.js +107 -0
- package/lib/components/LazyLoadingGoogleMarker.js.map +1 -0
- package/lib/components/Pagination.d.ts +6 -0
- package/lib/components/Pagination.d.ts.map +1 -0
- package/lib/components/Pagination.js +56 -0
- package/lib/components/Pagination.js.map +1 -0
- package/lib/components/ParamSearchResultContainer.d.ts +99 -0
- package/lib/components/ParamSearchResultContainer.d.ts.map +1 -0
- package/lib/components/ParamSearchResultContainer.js +120 -0
- package/lib/components/ParamSearchResultContainer.js.map +1 -0
- package/lib/components/PropertyCard.d.ts +24 -0
- package/lib/components/PropertyCard.d.ts.map +1 -0
- package/lib/components/PropertyCard.js +423 -0
- package/lib/components/PropertyCard.js.map +1 -0
- package/lib/components/PropertyCardOnMap.d.ts +10 -0
- package/lib/components/PropertyCardOnMap.d.ts.map +1 -0
- package/lib/components/PropertyCardOnMap.js +108 -0
- package/lib/components/PropertyCardOnMap.js.map +1 -0
- package/lib/components/VehicleCard/PricePopover.d.ts +8 -0
- package/lib/components/VehicleCard/PricePopover.d.ts.map +1 -0
- package/lib/components/VehicleCard/PricePopover.js +98 -0
- package/lib/components/VehicleCard/PricePopover.js.map +1 -0
- package/lib/components/VehicleCard/VehicleBadge.d.ts +7 -0
- package/lib/components/VehicleCard/VehicleBadge.d.ts.map +1 -0
- package/lib/components/VehicleCard/VehicleFeature.d.ts +9 -0
- package/lib/components/VehicleCard/VehicleFeature.d.ts.map +1 -0
- package/lib/components/VehicleCard/VehicleFeature.js +22 -0
- package/lib/components/VehicleCard/VehicleFeature.js.map +1 -0
- package/lib/components/VehicleCard/types.d.ts +59 -0
- package/lib/components/VehicleCard/types.d.ts.map +1 -0
- package/lib/components/VehicleCard.d.ts +15 -0
- package/lib/components/VehicleCard.d.ts.map +1 -0
- package/lib/components/VehicleCard.js +166 -0
- package/lib/components/VehicleCard.js.map +1 -0
- package/lib/components/VehicleCardList.d.ts +14 -0
- package/lib/components/VehicleCardList.d.ts.map +1 -0
- package/lib/components/VehicleCardList.js +38 -0
- package/lib/components/VehicleCardList.js.map +1 -0
- package/lib/components/VehicleParamSearchResultContainer.d.ts +90 -0
- package/lib/components/VehicleParamSearchResultContainer.d.ts.map +1 -0
- package/lib/components/icons/LocationIcon.d.ts +7 -0
- package/lib/components/icons/LocationIcon.d.ts.map +1 -0
- package/lib/components/icons/LocationIcon.js +18 -0
- package/lib/components/icons/LocationIcon.js.map +1 -0
- package/lib/components/icons/index.d.ts +2 -0
- package/lib/components/icons/index.d.ts.map +1 -0
- package/lib/components/index.d.ts +10 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/config/analytics-config.d.ts +59 -0
- package/lib/config/analytics-config.d.ts.map +1 -0
- package/lib/config/constants.d.ts +7 -0
- package/lib/config/constants.d.ts.map +1 -0
- package/lib/config/constants.js +6 -0
- package/lib/config/constants.js.map +1 -0
- package/lib/config/env-config.d.ts +19 -0
- package/lib/config/env-config.d.ts.map +1 -0
- package/lib/config/env-config.js +70 -0
- package/lib/config/env-config.js.map +1 -0
- package/lib/config/index.d.ts +3 -0
- package/lib/config/index.d.ts.map +1 -0
- package/lib/hooks/index.d.ts +2 -0
- package/lib/hooks/index.d.ts.map +1 -0
- package/lib/hooks/use-get-current-lat-long.d.ts +18 -0
- package/lib/hooks/use-get-current-lat-long.d.ts.map +1 -0
- package/lib/hooks/use-get-current-lat-long.js +29 -0
- package/lib/hooks/use-get-current-lat-long.js.map +1 -0
- package/lib/hooks/useWindowSize.d.ts +5 -0
- package/lib/hooks/useWindowSize.d.ts.map +1 -0
- package/lib/hooks/useWindowSize.js +20 -0
- package/lib/hooks/useWindowSize.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -0
- package/lib/interfaces/travel.d.ts +6 -0
- package/lib/interfaces/travel.d.ts.map +1 -0
- package/lib/interfaces/travel.js +6 -0
- package/lib/interfaces/travel.js.map +1 -0
- package/lib/middlewares/airbnbDatasourcesMiddleware.d.ts +6 -0
- package/lib/middlewares/airbnbDatasourcesMiddleware.d.ts.map +1 -0
- package/lib/middlewares/airbnbDatasourcesMiddleware.js +121 -0
- package/lib/middlewares/airbnbDatasourcesMiddleware.js.map +1 -0
- package/lib/middlewares/bookingCarRentalMiddleware.d.ts +6 -0
- package/lib/middlewares/bookingCarRentalMiddleware.d.ts.map +1 -0
- package/lib/middlewares/bookingCarRentalMiddleware.js +109 -0
- package/lib/middlewares/bookingCarRentalMiddleware.js.map +1 -0
- package/lib/middlewares/bookingDatasourcesMiddleware.d.ts +7 -0
- package/lib/middlewares/bookingDatasourcesMiddleware.d.ts.map +1 -0
- package/lib/middlewares/bookingDatasourcesMiddleware.js +137 -0
- package/lib/middlewares/bookingDatasourcesMiddleware.js.map +1 -0
- package/lib/middlewares/datasourcesMiddleware.d.ts +6 -0
- package/lib/middlewares/datasourcesMiddleware.d.ts.map +1 -0
- package/lib/middlewares/datasourcesMiddleware.js +29 -0
- package/lib/middlewares/datasourcesMiddleware.js.map +1 -0
- package/lib/middlewares/index.d.ts +6 -0
- package/lib/middlewares/index.d.ts.map +1 -0
- package/lib/middlewares/pricelineDatasourcesMiddleware.d.ts +7 -0
- package/lib/middlewares/pricelineDatasourcesMiddleware.d.ts.map +1 -0
- package/lib/middlewares/pricelineDatasourcesMiddleware.js +95 -0
- package/lib/middlewares/pricelineDatasourcesMiddleware.js.map +1 -0
- package/lib/routes.json +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Analytics Configuration
|
|
3
|
+
*/
|
|
4
|
+
export declare const ANALYTICS_CONFIG: {
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
debug: boolean;
|
|
7
|
+
GA4_MEASUREMENT_ID: string;
|
|
8
|
+
trackEvents: {
|
|
9
|
+
pageViews: boolean;
|
|
10
|
+
clicks: boolean;
|
|
11
|
+
redirections: boolean;
|
|
12
|
+
errors: boolean;
|
|
13
|
+
};
|
|
14
|
+
trackUserProperties: {
|
|
15
|
+
userId: boolean;
|
|
16
|
+
deviceInfo: boolean;
|
|
17
|
+
location: boolean;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export declare const EVENT_CATEGORIES: {
|
|
21
|
+
REDIRECTION: string;
|
|
22
|
+
USER_INTERACTION: string;
|
|
23
|
+
SYSTEM: string;
|
|
24
|
+
ERROR: string;
|
|
25
|
+
};
|
|
26
|
+
export declare const EVENT_ACTIONS: {
|
|
27
|
+
AUTO_REDIRECT: string;
|
|
28
|
+
MANUAL_CLICK: string;
|
|
29
|
+
LINK_CLICK: string;
|
|
30
|
+
BUTTON_CLICK: string;
|
|
31
|
+
FORM_SUBMIT: string;
|
|
32
|
+
SEARCH: string;
|
|
33
|
+
VIEW_ITEM: string;
|
|
34
|
+
ADD_TO_CART: string;
|
|
35
|
+
REMOVE_FROM_CART: string;
|
|
36
|
+
BEGIN_CHECKOUT: string;
|
|
37
|
+
ADD_PAYMENT_INFO: string;
|
|
38
|
+
PURCHASE: string;
|
|
39
|
+
LOAD: string;
|
|
40
|
+
INIT: string;
|
|
41
|
+
API_ERROR: string;
|
|
42
|
+
CLIENT_ERROR: string;
|
|
43
|
+
};
|
|
44
|
+
export declare const GA4_EVENTS: {
|
|
45
|
+
PAGE_VIEW: string;
|
|
46
|
+
SEARCH: string;
|
|
47
|
+
VIEW_ITEM: string;
|
|
48
|
+
VIEW_ITEM_LIST: string;
|
|
49
|
+
SELECT_ITEM: string;
|
|
50
|
+
ADD_TO_CART: string;
|
|
51
|
+
REMOVE_FROM_CART: string;
|
|
52
|
+
BEGIN_CHECKOUT: string;
|
|
53
|
+
ADD_PAYMENT_INFO: string;
|
|
54
|
+
PURCHASE: string;
|
|
55
|
+
LOGIN: string;
|
|
56
|
+
SIGN_UP: string;
|
|
57
|
+
USER_ENGAGEMENT: string;
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=analytics-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics-config.d.ts","sourceRoot":"","sources":["../../src/config/analytics-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;CAwB5B,CAAC;AAGF,eAAO,MAAM,gBAAgB;;;;;CAK5B,CAAC;AAGF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;CAwBzB,CAAC;AAGF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;CActB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB;;;;;CAKnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../src/config/constants.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAa,MAAA,gBAAgB,GAAG;AAC5B,EAAA,GAAA,EAAG;AACH,EAAA,GAAA,EAAG,IAAM;AACT,EAAA,IAAA,EAAI,EAAE;AACN,EAAA,OAAA,EAAO;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const config: Readonly<{
|
|
2
|
+
ENABLE_PROPERTY_PRICE_COMPARISON: boolean;
|
|
3
|
+
SCROLL_THRESHOLD: string;
|
|
4
|
+
BOOKING_CAR_RENTAL_API_KEY: string;
|
|
5
|
+
AIRBNB_API_KEY: string;
|
|
6
|
+
BOOKING_COM_API_KEY: string;
|
|
7
|
+
SEARCH_LAYOUT: string;
|
|
8
|
+
GOOGLE_MAPS_API_KEY: string;
|
|
9
|
+
PROPERTY_SEARCH_DEFAULT_PAGE_SIZE: number;
|
|
10
|
+
PROPERTY_COUPONS_DEFAULT_PAGE_SIZE: number;
|
|
11
|
+
DEFAULT_NEARBY_PROPERTY_RADIUS: number;
|
|
12
|
+
AIRBNB_DEFAULT_TOTAL_PAGES: number;
|
|
13
|
+
BOOKING_COM_DEFAULT_PAGE_SIZE: number;
|
|
14
|
+
PRICELINE_API_KEY: string;
|
|
15
|
+
DEFAULT_COORDINATES: string;
|
|
16
|
+
GOOGLE_ANALYTICS_ID: string;
|
|
17
|
+
RAPID_API_KEY: string;
|
|
18
|
+
} & import("envalid").CleanedEnvAccessors>;
|
|
19
|
+
//# sourceMappingURL=env-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-config.d.ts","sourceRoot":"","sources":["../../src/config/env-config.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;0CAoCjB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import {cleanEnv,str,num,bool}from'envalid';import {getEnvironment}from'@common-stack/core';import {SCROLL_THRESHOLD}from'./constants.js';const env = getEnvironment();
|
|
2
|
+
const defaultScrollThreshold = JSON.stringify({
|
|
3
|
+
MIN: SCROLL_THRESHOLD.MIN,
|
|
4
|
+
MAX: SCROLL_THRESHOLD.MAX,
|
|
5
|
+
STEP: SCROLL_THRESHOLD.STEP,
|
|
6
|
+
DEFAULT: SCROLL_THRESHOLD.DEFAULT
|
|
7
|
+
});
|
|
8
|
+
const config = cleanEnv(env, {
|
|
9
|
+
ENABLE_PROPERTY_PRICE_COMPARISON: bool({
|
|
10
|
+
default: false,
|
|
11
|
+
desc: 'Enable property price comparison section'
|
|
12
|
+
}),
|
|
13
|
+
SCROLL_THRESHOLD: str({
|
|
14
|
+
default: defaultScrollThreshold,
|
|
15
|
+
desc: 'Scroll threshold configuration'
|
|
16
|
+
}),
|
|
17
|
+
BOOKING_CAR_RENTAL_API_KEY: str({
|
|
18
|
+
default: '',
|
|
19
|
+
desc: 'Booking car rental API key'
|
|
20
|
+
}),
|
|
21
|
+
AIRBNB_API_KEY: str({
|
|
22
|
+
default: '',
|
|
23
|
+
desc: 'Airbnb API key'
|
|
24
|
+
}),
|
|
25
|
+
BOOKING_COM_API_KEY: str({
|
|
26
|
+
default: '',
|
|
27
|
+
desc: 'Booking com API key'
|
|
28
|
+
}),
|
|
29
|
+
SEARCH_LAYOUT: str({
|
|
30
|
+
default: '/search',
|
|
31
|
+
desc: 'Layout Search route'
|
|
32
|
+
}),
|
|
33
|
+
GOOGLE_MAPS_API_KEY: str({
|
|
34
|
+
default: 'AIzaSyCtMaqd4AQayEx4-QTbuM_uL91pQrUsbK8'
|
|
35
|
+
}),
|
|
36
|
+
PROPERTY_SEARCH_DEFAULT_PAGE_SIZE: num({
|
|
37
|
+
default: 10,
|
|
38
|
+
desc: 'Number of property to fetch in each request'
|
|
39
|
+
}),
|
|
40
|
+
PROPERTY_COUPONS_DEFAULT_PAGE_SIZE: num({
|
|
41
|
+
default: 10,
|
|
42
|
+
desc: 'Number of coupons to fetch in each request'
|
|
43
|
+
}),
|
|
44
|
+
DEFAULT_NEARBY_PROPERTY_RADIUS: num({
|
|
45
|
+
default: 160934,
|
|
46
|
+
// The value is in meter so its actually 100 miles
|
|
47
|
+
desc: 'Sets the default distance for searching nearby properties'
|
|
48
|
+
}),
|
|
49
|
+
AIRBNB_DEFAULT_TOTAL_PAGES: num({
|
|
50
|
+
default: 8,
|
|
51
|
+
desc: 'Number of property to fetch in each request'
|
|
52
|
+
}),
|
|
53
|
+
BOOKING_COM_DEFAULT_PAGE_SIZE: num({
|
|
54
|
+
default: 20,
|
|
55
|
+
desc: 'Number of property to fetch in each request'
|
|
56
|
+
}),
|
|
57
|
+
PRICELINE_API_KEY: str({
|
|
58
|
+
default: ''
|
|
59
|
+
}),
|
|
60
|
+
DEFAULT_COORDINATES: str({
|
|
61
|
+
default: '{"lat":40.7127281,"lng":-74.0060152}',
|
|
62
|
+
desc: 'Default coordinates for property search'
|
|
63
|
+
}),
|
|
64
|
+
GOOGLE_ANALYTICS_ID: str({
|
|
65
|
+
default: 'G-L5J3SYZ69C'
|
|
66
|
+
}),
|
|
67
|
+
RAPID_API_KEY: str({
|
|
68
|
+
default: '7c2d15ba29msh468be2f129d847cp183e95jsnc7c279116f6e'
|
|
69
|
+
})
|
|
70
|
+
});export{config};//# sourceMappingURL=env-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-config.js","sources":["../../src/config/env-config.ts"],"sourcesContent":[null],"names":[],"mappings":"0IAIA,MAAM,GAAG,GAAG,cAAc,EAAE;AAE5B,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC;KACvC,EAAA,gBAAkB,CAAA,GAAI;KACtB,EAAA,gBAAkB,CAAA,GAAI;MACrB,EAAA,gBAAkB,CAAA,IAAK;SACpB,EAAA,gBAAkB,CAAA;AAC5B,CAAA,CAAC;AAEW,MAAA,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE;AAChC,EAAA,gCAAA,EAAgC,IAAE,CAAA;AAClC,IAAA,OAAA,EAAA,KAAA;AACA,IAAA,IAAA,EAAA;AACA,GAAA,CAAA;AACA,EAAA,gBAAA,EAAA,GAAmB,CAAE;AAErB,IAAA,OAAA,EAAA,sBAAuC;IACvC,IAAmB,EAAA;IACnB;AACI,EAAA,0BAAW,EAAA,GAAA,CAAA;AACX,IAAA,OAAA,IAAmD;QACrD,EAAA;IACF;AACI,EAAA,gBAAW,GAAA,CAAA;AACX,IAAA,OAAA,IAAkD;QACpD,EAAA;IACF;qBACmB,EAAA,GAAoD,CAAA;AACnE,IAAA,OAAA,IAAiE;QACnE,EAAA;IACF;AACI,EAAA,aAAO,EAAE,GAAC,CAAA;AACV,IAAA,OAAA,WAAmD;QACrD,EAAA;IACF;AACI,EAAA,mBAAW,EAAA,GAAA,CAAA;AACX,IAAA,OAAA;;qCAE8B,GAAE;IACpC,OAAmB,EAAA,EAAA;AACf,IAAA,IAAA,EAAA;AACA,GAAA,CAAA;oCACF,EAAA,GAAA,CAAA;IACF,OAAmB,EAAA,EAAA;IACnB,IAAa,EAAA;AAChB,GAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* Gets the current Ip address details of user by calling the geolocation
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
interface CurrentLocationLongLatInterface {
|
|
7
|
+
loading: boolean;
|
|
8
|
+
error: Error;
|
|
9
|
+
fetchCurrentLatLong: () => void;
|
|
10
|
+
permissionDenied: boolean;
|
|
11
|
+
location: {
|
|
12
|
+
latitude: number;
|
|
13
|
+
longitude: number;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export declare function useGetCurrentLongLat(): CurrentLocationLongLatInterface;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=use-get-current-lat-long.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-get-current-lat-long.d.ts","sourceRoot":"","sources":["../../src/hooks/use-get-current-lat-long.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,UAAU,+BAA+B;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC;CACL;AAED,wBAAgB,oBAAoB,IAAI,+BAA+B,CA6BtE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import {reject}from'lodash-es';import originalAsyncFunc from'react-use/lib/useAsyncFn.js';import {useState}from'react';const useAsyncFn = originalAsyncFunc?.default || originalAsyncFunc;
|
|
2
|
+
function useGetCurrentLongLat() {
|
|
3
|
+
const [permissionDenied, setPermissionDenied] = useState(false);
|
|
4
|
+
// const { toastError } = Toast();
|
|
5
|
+
const [state, fetchCurrentLatLong] = useAsyncFn(() => new Promise(resolve => {
|
|
6
|
+
navigator.geolocation.getCurrentPosition(position => {
|
|
7
|
+
setPermissionDenied(false);
|
|
8
|
+
resolve({
|
|
9
|
+
latitude: position.coords.latitude,
|
|
10
|
+
longitude: position.coords.longitude
|
|
11
|
+
});
|
|
12
|
+
}, err => {
|
|
13
|
+
setPermissionDenied(true);
|
|
14
|
+
// toastError(err.message);
|
|
15
|
+
reject(err);
|
|
16
|
+
}, {
|
|
17
|
+
maximumAge: 60000,
|
|
18
|
+
timeout: 5000,
|
|
19
|
+
enableHighAccuracy: true
|
|
20
|
+
});
|
|
21
|
+
}));
|
|
22
|
+
return {
|
|
23
|
+
loading: state.loading,
|
|
24
|
+
location: state.value,
|
|
25
|
+
error: state.error,
|
|
26
|
+
permissionDenied,
|
|
27
|
+
fetchCurrentLatLong
|
|
28
|
+
};
|
|
29
|
+
}export{useGetCurrentLongLat};//# sourceMappingURL=use-get-current-lat-long.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-get-current-lat-long.js","sources":["../../src/hooks/use-get-current-lat-long.ts"],"sourcesContent":[null],"names":[],"mappings":"uHAIA,MAAM,UAAU,GAAI,iBAAyB,EAAE,OAAO,IAAI,iBAAiB;SAiB3D,oBAAoB,GAAA;QAC1B,CAAA,gBAAiB,EAAA,mBAAqB,CAAA,WAAY,CAAA,KAAM,CAAA;;AAG9D,EAAA,MAAA,CAAA,KAAY,EAAA,mBAAqB,CAAA,aAAc,CAAA,MACxC,IACK,OAAA,CAAA,OAAS;aACA,CAAA,8BAAa,CAAA,QACjB,IAAA;yBACsB,CAAA,KAAA,CAAC;AACpB,MAAA,OAAA,CAAA;AACJ,QAAA,QACI,EAAI,QAAA,CAAA,MAAA,CAAA,QAAA;iBACe,EAAA,QAAA,CAAA,MAAK,CAAA;;cAElB;AACV,MAAA,mBACc,KAAK,CAAE;;MAK9B,MAAA,CAAA,GAAA,CAAA;;gBAEK,EAAE,KAAK;aACV,EAAE,IAAK;wBACI,EAAA;;KAEnB;AACL,EAAC,OAAA;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWindowSize.d.ts","sourceRoot":"","sources":["../../src/hooks/useWindowSize.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa;;;EAsB5B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {useState,useEffect}from'react';function useWindowSize() {
|
|
2
|
+
const [windowSize, setWindowSize] = useState({
|
|
3
|
+
width: typeof window !== 'undefined' ? window.innerWidth : 0,
|
|
4
|
+
// Check if window is defined
|
|
5
|
+
height: typeof window !== 'undefined' ? window.innerHeight : 0 // Check if window is defined
|
|
6
|
+
});
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
function handleResize() {
|
|
9
|
+
setWindowSize({
|
|
10
|
+
width: window.innerWidth,
|
|
11
|
+
height: window.innerHeight
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
// Add event listener for window resize
|
|
15
|
+
window.addEventListener('resize', handleResize);
|
|
16
|
+
// Cleanup the event listener on component unmount
|
|
17
|
+
return () => window.removeEventListener('resize', handleResize);
|
|
18
|
+
}, []);
|
|
19
|
+
return windowSize;
|
|
20
|
+
}export{useWindowSize};//# sourceMappingURL=useWindowSize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWindowSize.js","sources":["../../src/hooks/useWindowSize.ts"],"sourcesContent":[null],"names":[],"mappings":"gDAEgB,aAAa,GAAA;AACzB,EAAA,MAAA,CAAA,UAAiB,EAAA,iBAAgB;AAC7B,IAAA,KAAA,EAAA,OAAc,MAAA,KAAW,WAAA,GAAA,MAAoB,CAAA,cAAW;AACxD;AACH,IAAA,MAAE,EAAA,OAAA,MAAA,KAAA,WAAA,GAAA,MAAA,CAAA,WAAA,GAAA,CAAA;IAEH;AACI,EAAA,SAAA,CAAA,MAAqB;AACjB,IAAA,SAAA,YAAa,GAAC;mBACL,CAAA;qBACC,CAAA,UAAoB;AAC7B,QAAA,MAAC,EAAC,MAAA,CAAA;QACP;;AAGA;UAEkD,CAAA,gBAAA,CAAA,QAAA,EAAA,YAAA,CAAA;;IAEtD,OAAO,MAAA,MAAA,CAAA,mBAAA,CAAA,QAAA,EAAA,YAAA,CAAA;AAEP,GAAA,EAAA,EAAA,CAAA;AACJ,EAAC,OAAA,UAAA;"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{CategoriesTypeList}from'./components/CategoriesTypeList.js';export{PropertyCardOnMap}from'./components/PropertyCardOnMap.js';export{LazyLoadingGoogleMarker}from'./components/LazyLoadingGoogleMarker.js';export{ParamSearchResultContainer}from'./components/ParamSearchResultContainer.js';export{CardList}from'./components/CardList.js';export{PropertyCard}from'./components/PropertyCard.js';export{Pagination}from'./components/Pagination.js';import'react/jsx-runtime';import'@react-icons/all-files/ai/AiFillHeart.js';import'@react-icons/all-files/ai/AiFillStar.js';import'@react-icons/all-files/ai/AiOutlineHeart.js';import'@react-icons/all-files/fa/FaAward.js';import'@react-icons/all-files/fa/FaShieldAlt.js';import'@react-icons/all-files/fi/FiMapPin.js';import'@admin-layout/tailwind-ui';import'@admin-layout/tailwind-design-pro/lib/helpers/DynamicIcon.js';import'react';import'@react-icons/all-files/bi/BiTag.js';export{VehicleCardList}from'./components/VehicleCardList.js';export{middleware as airbnbDatasourcesMiddleware}from'./middlewares/airbnbDatasourcesMiddleware.js';export{middleware as bookingCarRentalDatasourcesMiddleware}from'./middlewares/bookingCarRentalMiddleware.js';export{middleware as bookingDatasourcesMiddleware}from'./middlewares/bookingDatasourcesMiddleware.js';export{middleware as datasourcesMiddleware}from'./middlewares/datasourcesMiddleware.js';export{middleware as pricelineDatasourcesMiddleware}from'./middlewares/pricelineDatasourcesMiddleware.js';export{useGetCurrentLongLat}from'./hooks/use-get-current-lat-long.js';//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"travel.d.ts","sourceRoot":"","sources":["../../src/interfaces/travel.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IAClB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"travel.js","sources":["../../src/interfaces/travel.ts"],"sourcesContent":[null],"names":[],"mappings":"IAAY;AAAZ,CAAA,UAAY,UAAU,EAAA;AAClB,EAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AACA,EAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AACA,EAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AACJ,CAAC,EAJW,UAAU,KAAV,UAAU,GAIrB,EAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"airbnbDatasourcesMiddleware.d.ts","sourceRoot":"","sources":["../../src/middlewares/airbnbDatasourcesMiddleware.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,UAAU,GAAU;;;;CAA4B,EAAE,eAAU,EAAE,SAAI,kBAsI9E,CAAC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import {config}from'../config/env-config.js';const middleware = async ({
|
|
2
|
+
context,
|
|
3
|
+
request,
|
|
4
|
+
params
|
|
5
|
+
}, dataLoader, next) => {
|
|
6
|
+
const {
|
|
7
|
+
apolloClient,
|
|
8
|
+
logger
|
|
9
|
+
} = context;
|
|
10
|
+
let airbnbQuery;
|
|
11
|
+
try {
|
|
12
|
+
const url = new URL(request.url);
|
|
13
|
+
const searchParams = url.searchParams;
|
|
14
|
+
// Parse basic parameters
|
|
15
|
+
const from = searchParams.get('from') ? new Date(searchParams.get('from')) : null;
|
|
16
|
+
const to = searchParams.get('to') ? new Date(searchParams.get('to')) : null;
|
|
17
|
+
const adults = parseInt(searchParams.get('adults') || '0', 10);
|
|
18
|
+
const children = parseInt(searchParams.get('children') || '0', 10);
|
|
19
|
+
const infants = parseInt(searchParams.get('infants') || '0', 10);
|
|
20
|
+
// Parse viewport coordinates
|
|
21
|
+
let viewport = {};
|
|
22
|
+
try {
|
|
23
|
+
viewport = searchParams.get('viewport') ? JSON.parse(searchParams.get('viewport')) : null;
|
|
24
|
+
} catch (e) {
|
|
25
|
+
logger.warn('Failed to parse viewport parameter');
|
|
26
|
+
}
|
|
27
|
+
// Validate total passengers
|
|
28
|
+
const totalPassengers = adults + children + infants;
|
|
29
|
+
if (totalPassengers > 16) {
|
|
30
|
+
throw new Error('Maximum total number of passengers cannot exceed 16');
|
|
31
|
+
}
|
|
32
|
+
// Validate infants range
|
|
33
|
+
if (infants < 0 || infants > 5) {
|
|
34
|
+
throw new Error('Number of infants must be between 0 and 5');
|
|
35
|
+
}
|
|
36
|
+
// Parse additional parameters
|
|
37
|
+
const minBeds = parseInt(searchParams.get('minBeds') || '0', 10);
|
|
38
|
+
const minBedrooms = parseInt(searchParams.get('minBedrooms') || '0', 10);
|
|
39
|
+
const page = parseInt(searchParams.get('page') || '1', 10);
|
|
40
|
+
// Create a promise that will fetch the Airbnb data
|
|
41
|
+
airbnbQuery = new Promise(async (resolve, reject) => {
|
|
42
|
+
try {
|
|
43
|
+
// Create apiParams with the defined type
|
|
44
|
+
const apiParams = {
|
|
45
|
+
checkin: from ? from.toISOString().split('T')[0] : '',
|
|
46
|
+
checkout: to ? to.toISOString().split('T')[0] : '',
|
|
47
|
+
adults: adults.toString(),
|
|
48
|
+
children: children.toString(),
|
|
49
|
+
infants: infants.toString(),
|
|
50
|
+
page: page.toString(),
|
|
51
|
+
currency: 'USD' // You might want to make this configurable
|
|
52
|
+
};
|
|
53
|
+
// Add viewport parameters if available
|
|
54
|
+
if (viewport && viewport.northeast && viewport.southwest) {
|
|
55
|
+
apiParams.ne_lat = viewport.northeast.lat.toString();
|
|
56
|
+
apiParams.ne_lng = viewport.northeast.lng.toString();
|
|
57
|
+
apiParams.sw_lat = viewport.southwest.lat.toString();
|
|
58
|
+
apiParams.sw_lng = viewport.southwest.lng.toString();
|
|
59
|
+
}
|
|
60
|
+
// Add optional parameters if they exist
|
|
61
|
+
if (minBeds > 0) apiParams.min_beds = minBeds.toString();
|
|
62
|
+
if (minBedrooms > 0) apiParams.min_bedrooms = minBedrooms.toString();
|
|
63
|
+
const rapidApiKey = config.AIRBNB_API_KEY;
|
|
64
|
+
const response = await fetch('https://airbnb13.p.rapidapi.com/search-geo?' + new URLSearchParams(apiParams), {
|
|
65
|
+
headers: {
|
|
66
|
+
'x-rapidapi-host': 'airbnb13.p.rapidapi.com',
|
|
67
|
+
'x-rapidapi-key': rapidApiKey
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
const responseData = await response.json();
|
|
71
|
+
// Restructure the response data
|
|
72
|
+
const results = responseData.results || [];
|
|
73
|
+
const resultsPerPage = 40; // Assuming each page can have up to 40 results
|
|
74
|
+
const totalResults = (page - 1) * resultsPerPage + results.length; // Calculate total results seen so far
|
|
75
|
+
// Determine if there might be a next page
|
|
76
|
+
const hasNextPage = results.length === resultsPerPage;
|
|
77
|
+
const totalPages = hasNextPage ? page + 1 : page; // If current page is full, assume next page exists
|
|
78
|
+
const restructuredData = {
|
|
79
|
+
...responseData,
|
|
80
|
+
data: results,
|
|
81
|
+
pagination: {
|
|
82
|
+
currentPage: page,
|
|
83
|
+
totalPages: totalPages,
|
|
84
|
+
// Use the calculated totalPages
|
|
85
|
+
totalCount: totalResults // Use the calculated totalResults
|
|
86
|
+
},
|
|
87
|
+
metadata: {
|
|
88
|
+
viewport: viewport,
|
|
89
|
+
filters: {
|
|
90
|
+
adults,
|
|
91
|
+
children,
|
|
92
|
+
infants,
|
|
93
|
+
minBeds,
|
|
94
|
+
minBedrooms
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
resolve(restructuredData);
|
|
99
|
+
} catch (error) {
|
|
100
|
+
logger.error(error, 'Failed to load Airbnb properties data:');
|
|
101
|
+
resolve({
|
|
102
|
+
pagination: {
|
|
103
|
+
currentPage: page,
|
|
104
|
+
totalCount: 0,
|
|
105
|
+
totalPages: 0
|
|
106
|
+
},
|
|
107
|
+
data: []
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
logger.info('Airbnb properties data loaded and cached');
|
|
112
|
+
// Ensure componentData is initialized
|
|
113
|
+
dataLoader.componentData = dataLoader.componentData || {};
|
|
114
|
+
// Store as an async function that returns the promise
|
|
115
|
+
dataLoader.componentData.airbnbResults = async () => await airbnbQuery;
|
|
116
|
+
await next();
|
|
117
|
+
} catch (error) {
|
|
118
|
+
logger.error(error, 'Failed to load Airbnb properties data:');
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
121
|
+
};export{middleware};//# sourceMappingURL=airbnbDatasourcesMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"airbnbDatasourcesMiddleware.js","sources":["../../src/middlewares/airbnbDatasourcesMiddleware.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bookingCarRentalMiddleware.d.ts","sourceRoot":"","sources":["../../src/middlewares/bookingCarRentalMiddleware.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,UAAU,GAAU;;;;CAA4B,EAAE,eAAU,EAAE,SAAI,kBAwH9E,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import {config}from'../config/env-config.js';const middleware = async ({
|
|
2
|
+
context,
|
|
3
|
+
request,
|
|
4
|
+
params
|
|
5
|
+
}, dataLoader, next) => {
|
|
6
|
+
const {
|
|
7
|
+
logger
|
|
8
|
+
} = context;
|
|
9
|
+
let carRentalQuery;
|
|
10
|
+
try {
|
|
11
|
+
const url = new URL(request.url);
|
|
12
|
+
const searchParams = url.searchParams;
|
|
13
|
+
// Parse and validate parameters
|
|
14
|
+
const currency = searchParams.get('currency') || 'USD';
|
|
15
|
+
const locale = searchParams.get('locale') || 'en-gb';
|
|
16
|
+
const pickUpDateTime = searchParams.get('pick_up_datetime');
|
|
17
|
+
const dropOffDateTime = searchParams.get('drop_off_datetime');
|
|
18
|
+
const pickUpLongitude = parseFloat(searchParams.get('pick_up_longitude') || '0');
|
|
19
|
+
const dropOffLongitude = parseFloat(searchParams.get('drop_off_longitude') || '0');
|
|
20
|
+
const pickUpLatitude = parseFloat(searchParams.get('pick_up_latitude') || '0');
|
|
21
|
+
const dropOffLatitude = parseFloat(searchParams.get('drop_off_latitude') || '0');
|
|
22
|
+
const fromCountry = searchParams.get('from_country') || 'us';
|
|
23
|
+
const sortBy = searchParams.get('sort_by') || 'recommended';
|
|
24
|
+
// Validate required parameters
|
|
25
|
+
if (!dropOffDateTime) {
|
|
26
|
+
throw new Error('Drop-off date is required');
|
|
27
|
+
}
|
|
28
|
+
// Validate coordinates
|
|
29
|
+
if (isNaN(pickUpLongitude) || isNaN(dropOffLongitude) || isNaN(pickUpLatitude) || isNaN(dropOffLatitude)) {
|
|
30
|
+
throw new Error('Invalid coordinates provided');
|
|
31
|
+
}
|
|
32
|
+
// Create a promise that will fetch the car rental data
|
|
33
|
+
carRentalQuery = new Promise(async (resolve, reject) => {
|
|
34
|
+
try {
|
|
35
|
+
// Create carRentalParams with the defined type
|
|
36
|
+
const carRentalParams = {
|
|
37
|
+
currency,
|
|
38
|
+
locale,
|
|
39
|
+
pick_up_longitude: pickUpLongitude.toString(),
|
|
40
|
+
from_country: fromCountry,
|
|
41
|
+
drop_off_datetime: dropOffDateTime,
|
|
42
|
+
drop_off_longitude: dropOffLongitude.toString(),
|
|
43
|
+
sort_by: sortBy,
|
|
44
|
+
drop_off_latitude: dropOffLatitude.toString(),
|
|
45
|
+
pick_up_latitude: pickUpLatitude.toString()
|
|
46
|
+
};
|
|
47
|
+
// Add pick_up_datetime only if it exists
|
|
48
|
+
if (pickUpDateTime) {
|
|
49
|
+
carRentalParams.pick_up_datetime = pickUpDateTime;
|
|
50
|
+
}
|
|
51
|
+
const rapidApiKey = config.BOOKING_CAR_RENTAL_API_KEY;
|
|
52
|
+
const response = await fetch('https://booking-com.p.rapidapi.com/v1/car-rental/search?' + new URLSearchParams(carRentalParams), {
|
|
53
|
+
headers: {
|
|
54
|
+
'X-RapidAPI-Key': rapidApiKey,
|
|
55
|
+
'X-RapidAPI-Host': 'booking-com.p.rapidapi.com'
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
if (!response.ok) {
|
|
59
|
+
throw new Error(`API request failed with status ${response.status}`);
|
|
60
|
+
}
|
|
61
|
+
const responseData = await response.json();
|
|
62
|
+
// const formattedData = formatCarRentalResponse(responseData);
|
|
63
|
+
const results = responseData.search_results || [];
|
|
64
|
+
const restructuredData = {
|
|
65
|
+
...responseData,
|
|
66
|
+
data: results,
|
|
67
|
+
metadata: {
|
|
68
|
+
filters: {
|
|
69
|
+
currency,
|
|
70
|
+
locale,
|
|
71
|
+
fromCountry,
|
|
72
|
+
sortBy,
|
|
73
|
+
pickUpDateTime,
|
|
74
|
+
dropOffDateTime,
|
|
75
|
+
coordinates: {
|
|
76
|
+
pickUp: {
|
|
77
|
+
latitude: pickUpLatitude,
|
|
78
|
+
longitude: pickUpLongitude
|
|
79
|
+
},
|
|
80
|
+
dropOff: {
|
|
81
|
+
latitude: dropOffLatitude,
|
|
82
|
+
longitude: dropOffLongitude
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
resolve(restructuredData);
|
|
89
|
+
} catch (error) {
|
|
90
|
+
logger.error(error, 'Failed to load car rental data:');
|
|
91
|
+
resolve({
|
|
92
|
+
data: [],
|
|
93
|
+
metadata: {
|
|
94
|
+
filters: {}
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
logger.info('Car rental data loaded and cached');
|
|
100
|
+
// Ensure componentData is initialized
|
|
101
|
+
dataLoader.componentData = dataLoader.componentData || {};
|
|
102
|
+
// Store as an async function that returns the promise
|
|
103
|
+
dataLoader.componentData.bookingCarRentalResults = async () => await carRentalQuery;
|
|
104
|
+
await next();
|
|
105
|
+
} catch (error) {
|
|
106
|
+
logger.error(error, 'Failed to load car rental data:');
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
};export{middleware};//# sourceMappingURL=bookingCarRentalMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bookingCarRentalMiddleware.js","sources":["../../src/middlewares/bookingCarRentalMiddleware.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bookingDatasourcesMiddleware.d.ts","sourceRoot":"","sources":["../../src/middlewares/bookingDatasourcesMiddleware.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,UAAU,GAAU;;;;CAA4B,EAAE,eAAU,EAAE,SAAI,kBAmIvE,CAAC;AACF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|