@roomstay/frontend 2.6.63 → 2.6.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/839.bundle.js +1 -1
  2. package/dist/main.bundle.js +1 -1
  3. package/dist/src/api/BaseAPI.js +5 -10
  4. package/dist/src/api/BaseAPI.js.map +1 -1
  5. package/dist/src/components/steps/room/LargeRoomCard.js +7 -0
  6. package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
  7. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +1 -1
  8. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  9. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js +12 -7
  10. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js.map +1 -1
  11. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextTypes.d.ts +5 -4
  12. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextTypes.js.map +1 -1
  13. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +32 -14
  14. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  15. package/dist/src/models/Api/HotelDTO.d.ts +1 -0
  16. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  17. package/dist/src/models/AppQueryParameters.d.ts +2 -1
  18. package/dist/src/models/AppQueryParameters.js +1 -0
  19. package/dist/src/models/AppQueryParameters.js.map +1 -1
  20. package/dist/src/models/Client/Hotel/Hotel.d.ts +1 -0
  21. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  22. package/dist/src/providers/CurrencyProvider.js +1 -1
  23. package/dist/src/providers/CurrencyProvider.js.map +1 -1
  24. package/dist/src/translations/Translation.d.ts +1 -0
  25. package/dist/src/translations/Translation.js +1 -0
  26. package/dist/src/translations/Translation.js.map +1 -1
  27. package/dist/src/translations/languages/en-gb.js +1 -0
  28. package/dist/src/translations/languages/en-gb.js.map +1 -1
  29. package/dist/src/util/CurrencyHelper.js +1 -1
  30. package/dist/src/util/CurrencyHelper.js.map +1 -1
  31. package/dist/test.bundle.js +1 -1
  32. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"FullPageEngineContextWrapper.js","sourceRoot":"/","sources":["src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n BasketContext,\n BookingEngineContext,\n CompanyContext,\n FullPageBookingEngineUrlParameters,\n FullPageEngineContext,\n FullPageEngineContextType,\n ModalContextWrapper,\n} from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport dayjs from 'dayjs';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { Navigate, Route, Routes, useLocation, useMatch } from 'react-router-dom';\nimport StepRoute from 'routes/NaturallyProgressedStepRoute';\n\nimport { API_DATE_FORMAT } from '@/api/BaseAPI';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport { RoomstayMark } from '@/components/generic/RoomstayMark';\nimport ScrollToTop from '@/components/generic/ScrollToTop';\nimport Header from '@/components/navigation/Header';\nimport { PrivateRoute } from '@/containers/PrivateRoute';\nimport { useHistoryConsistentPush } from '@/hooks/HistoryConsistentPush';\nimport { EAppQueryParameters } from '@/models/AppQueryParameters';\nimport BasketRow from '@/models/BasketRow';\nimport RateTypeFilter from '@/models/Room/Filters/RateTypeFilter';\nimport RoomTypeFilter from '@/models/Room/Filters/RoomTypeFilter';\nimport FindReservation, { EFindReservationPath } from '@/pages/findReservation/FindReservation';\nimport FindReservationResults from '@/pages/findReservation/FindReservationResults';\nimport HotelInfo from '@/pages/hotel/HotelInfo';\nimport HotelInfoPlaceholder from '@/pages/hotel/HotelInfoPlaceholder';\nimport Step from '@/pages/steps/Step';\nimport StepHotel from '@/pages/steps/StepHotel/StepHotel';\nimport FeaturedPromoFeature from '@/providers/feature/FeaturedPromoFeature';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport FeatureProvider from '@/providers/FeatureProvider';\nimport getStepRoom from '@/util/GetStepRoom';\nimport { ROUTES } from '@/util/RouteManager';\nimport StepManager from '@/util/StepManager';\n\nimport { EngineBodyLayout } from './EngineBodyLayout';\nimport { EnginePageLayout } from './EnginePageLayout';\n\nconst AccountRouter = React.lazy(() =>\n import('@/pages/account/AccountRouter').then(({ AccountRouter }) => ({\n default: AccountRouter,\n }))\n);\n\nexport function FullPageEngineContextWrapper() {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const beContext = useContext(BookingEngineContext);\n\n const [engineReady, setEngineReady] = useState(false);\n const [urlFlagsParsed, setUrlFlagsParsed] = useState(false);\n const [urlParameters, setUrlParameters] = useState<FullPageBookingEngineUrlParameters>({});\n\n const [currentStep, setCurrentStep] = useState<Step>(StepManager.getStepFromName(beContext.engine.getInitialSession()?.step as string) ?? StepManager.getFirstStep());\n const [initialStep, setInitialStep] = useState<Step>(StepManager.getFirstStep());\n\n const { hotel } = useCurrentHotel();\n\n const location = useLocation();\n const historyConsistentPush = useHistoryConsistentPush();\n\n const isInStepRoot = useMatch(StepManager.STEP_BASE);\n\n useEffect(() => {\n beContext.sessionProvider?.updateSession({ step: currentStep.getName() });\n\n if (currentStep === StepHotel) {\n ccx.changeHotel(null);\n }\n }, [currentStep]);\n\n useEffect(() => {\n const currentBasketRows = basketContext.currentBasketRows;\n\n let addXRooms = 1;\n\n // TODO: this probably needs to be the only place this is set, and listen for URL changes\n if (currentBasketRows.length === 0) {\n const urlParameterBuilder: FullPageBookingEngineUrlParameters = {};\n // The Choose Hotel step should not apply the room filter\n const shouldEnableRoomCodeFilter = currentStep.getName() !== StepHotel.getName();\n\n if (location.search) {\n const query = new URLSearchParams(location.search);\n\n const format = API_DATE_FORMAT;\n\n let start = dayjs(query.get(EAppQueryParameters.Arrive), format);\n let end = dayjs(query.get(EAppQueryParameters.Depart), format);\n\n const promoCode = query.get(EAppQueryParameters.PromoCode);\n const promoOnly = query.get(EAppQueryParameters.PromoOnly);\n\n const promoFeatured = query.get(EAppQueryParameters.PromoFeatured);\n\n if (promoCode) {\n urlParameterBuilder.promoCode = promoCode;\n }\n\n if (promoOnly && promoOnly.toLowerCase() !== 'false') {\n urlParameterBuilder.promoOnly = Boolean(promoOnly);\n }\n\n if (promoFeatured && promoFeatured.toLowerCase() !== 'false') {\n FeatureProvider.load(FeaturedPromoFeature);\n urlParameterBuilder.promoFeatured = true;\n }\n\n const updatedCurrentFilters = { ...beContext.currentFilters };\n const roomCode = query.get(EAppQueryParameters.Room);\n\n if (roomCode && shouldEnableRoomCodeFilter) {\n // TODO: Refactor this to come from this context instead.\n updatedCurrentFilters['RoomType'] = new RoomTypeFilter([roomCode]);\n }\n\n const rateCode = query.get(EAppQueryParameters.Rate);\n if (rateCode) {\n // TODO: Refactor this to come from this context instead.\n updatedCurrentFilters['RateType'] = new RateTypeFilter([rateCode]);\n }\n beContext.setCurrentFilters(updatedCurrentFilters);\n\n const hotelId = query.get(EAppQueryParameters.Hotel);\n\n if (hotelId) {\n if (ccx.changeHotel(hotelId)) {\n if (!start.isValid()) {\n start = dayjs().add(1, 'day');\n }\n\n if (!end.isValid()) {\n end = start.add(1, 'day');\n }\n\n setInitialStep(getStepRoom());\n }\n\n urlParameterBuilder.hotelId = hotelId;\n }\n\n const defaultCity = query.get(EAppQueryParameters.DefaultCity);\n if (defaultCity) {\n urlParameterBuilder.defaultCity = defaultCity;\n }\n\n // We're doing dates last, as other properties, like hotelID might change them if they're not already set\n if (start.isValid() && end.isValid()) {\n if (start.isBefore(dayjs())) {\n start = dayjs();\n }\n\n if (end.isBefore(start)) {\n end = start.add(1, 'day');\n } else if (end.isBefore(dayjs().add(1, 'day'))) {\n end = dayjs().add(1, 'day');\n }\n\n urlParameterBuilder.startDate = start;\n urlParameterBuilder.endDate = end;\n }\n\n const adults = Number.parseInt(query.get(EAppQueryParameters.Adults) as string, 10);\n if (!isNaN(adults) && adults > 1) {\n if (!hotel || (hotel.maxOccupancy as number) >= adults) {\n urlParameterBuilder.adults = adults;\n }\n }\n\n const children = Number.parseInt(query.get(EAppQueryParameters.Children) as string, 10);\n if (!isNaN(children) && children > 0) {\n if (!hotel || (hotel.maxOccupancy as number) + (isNaN(adults) ? 0 : adults) >= children) {\n urlParameterBuilder.children = children;\n }\n }\n\n const roomCount = Number.parseInt(query.get(EAppQueryParameters.Rooms) as string, 10);\n if (!isNaN(roomCount) && roomCount > 1) {\n urlParameterBuilder.rooms = addXRooms = roomCount;\n }\n\n setUrlParameters(urlParameterBuilder);\n }\n\n let firstBasketRow: BasketRow | undefined = undefined;\n const { startDate, endDate, promoCode, promoOnly, adults, children, infants } = urlParameterBuilder;\n for (let i = 0; i < addXRooms; i++) {\n const basketRow = new BasketRow(undefined, undefined, shouldEnableRoomCodeFilter);\n\n if (startDate) {\n basketRow.setStartDate(startDate);\n }\n\n if (endDate) {\n basketRow.setEndDate(endDate);\n }\n\n if (promoCode) {\n basketRow.setPromoCode(promoCode);\n }\n\n if (promoOnly) {\n basketRow.setPromoOnly(promoOnly);\n }\n\n if (adults) {\n basketRow.setAdults(adults);\n }\n\n if (children) {\n basketRow.setChildren(children);\n }\n\n if (infants) {\n basketRow.setInfants(infants);\n }\n\n basketContext.addBasketRow(basketRow);\n\n if (i === 0) {\n firstBasketRow = basketRow;\n }\n }\n\n if (firstBasketRow?.getStartDate() && firstBasketRow.getEndDate() && StepManager.getFirstStep() !== StepHotel) {\n setInitialStep(getStepRoom());\n }\n } else {\n const initialSession = beContext.engine.getInitialSession();\n if (initialSession) {\n setInitialStep(StepManager.getStepFromName(initialSession.step) as Step);\n }\n }\n\n setUrlFlagsParsed(true);\n }, []);\n\n /**\n * Engine Ready useEffect, used to deffer loading the UI until everything engine wise is set up properly\n */\n useEffect(() => {\n if (!engineReady) {\n if (ccx.hotels.length > 0 && urlFlagsParsed) {\n setEngineReady(true);\n }\n }\n }, [ccx.hotels, urlFlagsParsed]);\n\n useEffect(() => {\n if (engineReady) {\n if (isInStepRoot && initialStep) {\n // We want to respect the browsers pathname, and only redirect to a defined step if\n // the pathname isn't set, or matches an unknown page.\n\n // Is the current location in the path? i.e does the user want to be somewhere specific\n let pathInLoadedSteps = false;\n for (const step of StepManager.getSteps()) {\n // Using match instead of equals as some clients have skipped the trailing slash\n // We also want to make sure to only match the start of the path, in case step contains nested paths.\n if (location.pathname.match(new RegExp(`${step.getStepUrl()}.+`, 'ig'))) {\n pathInLoadedSteps = true;\n break;\n }\n }\n\n // We're in /step/ but on a not recognized one.\n if (!pathInLoadedSteps) {\n historyConsistentPush(initialStep.getStepUrl());\n }\n }\n }\n }, [engineReady]);\n\n useEffect(() => {\n if (hotel?.currentRoomSort) {\n beContext.setCurrentRoomSort(hotel?.currentRoomSort);\n }\n }, [hotel?.currentRoomSort]);\n\n const workingContext: FullPageEngineContextType = { urlParameters, currentStep, setCurrentStep };\n\n return (\n <FullPageEngineContext.Provider value={workingContext}>\n <ModalContextWrapper>\n <ScrollToTop />\n <header className=\"engine-header\">\n <Header />\n </header>\n\n {engineReady && (\n <Routes>\n <Route path=\"/\" element={<Navigate to={StepManager.getFirstStep().getStepUrl()} replace />} />\n\n <Route path=\"/step\" element={<EngineBodyLayout />}>\n {StepManager.getSteps().map((step: Step) => (\n <Route key={step.getName()} path={`${step.getStepUrl()}*`} element={<StepRoute step={step} />} />\n ))}\n </Route>\n\n {/**\n * We aren't on a /step/ path, or the root path, so it's probably one of the engine-page paths.\n * If no matching path is found, we'll redirect back to the first step.\n */}\n <Route path=\"/*\" element={<EnginePageLayout />}>\n {/* TODO: This startsWith('/') check should be temporary. We should update the Route in client config after this is merged. */}\n <Route\n path={ROUTES.HOTEL_INFO.startsWith('/') ? ROUTES.HOTEL_INFO.substring(1) : ROUTES.HOTEL_INFO}\n element={\n <React.Suspense fallback={<HotelInfoPlaceholder />}>\n <HotelInfo />\n </React.Suspense>\n }\n />\n\n {Object.values(EFindReservationPath)\n .filter((path) => MemberPortalFeature.isActive() || path === EFindReservationPath.FindReservation)\n .map((path) => (\n <Route\n key={path}\n path={path}\n element={\n <React.Suspense fallback={<div>Loading...</div>}>\n <FindReservation />\n </React.Suspense>\n }\n />\n ))}\n\n <Route\n path=\"find-reservation/:ref/:email\"\n element={\n <React.Suspense fallback={<div>Loading...</div>}>\n <FindReservationResults />\n </React.Suspense>\n }\n />\n\n <Route\n path=\"account/*\"\n element={\n <PrivateRoute>\n {MemberPortalFeature.isActive() && (\n <React.Suspense\n fallback={\n <div>\n <LargeLoader />\n </div>\n }\n >\n <AccountRouter />\n </React.Suspense>\n )}\n </PrivateRoute>\n }\n />\n\n {/* We haven't found a matching path, so just redirect to the first step. */}\n <Route path=\"*\" element={<Navigate to={StepManager.getFirstStep().getStepUrl()} replace />} />\n </Route>\n </Routes>\n )}\n\n <RoomstayMark />\n </ModalContextWrapper>\n </FullPageEngineContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"FullPageEngineContextWrapper.js","sourceRoot":"/","sources":["src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n BasketContext,\n BookingEngineContext,\n CompanyContext,\n FullPageBookingEngineUrlParameters,\n FullPageEngineContext,\n FullPageEngineContextType,\n ModalContextWrapper,\n} from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport dayjs from 'dayjs';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { Navigate, Route, Routes, useLocation, useMatch, useNavigate } from 'react-router-dom';\nimport StepRoute from 'routes/NaturallyProgressedStepRoute';\n\nimport { API_DATE_FORMAT } from '@/api/BaseAPI';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport { RoomstayMark } from '@/components/generic/RoomstayMark';\nimport ScrollToTop from '@/components/generic/ScrollToTop';\nimport Header from '@/components/navigation/Header';\nimport { PrivateRoute } from '@/containers/PrivateRoute';\nimport { useHistoryConsistentPush } from '@/hooks/HistoryConsistentPush';\nimport { EAppQueryParameters } from '@/models/AppQueryParameters';\nimport BasketRow from '@/models/BasketRow';\nimport RateTypeFilter from '@/models/Room/Filters/RateTypeFilter';\nimport RoomTypeFilter from '@/models/Room/Filters/RoomTypeFilter';\nimport FindReservation, { EFindReservationPath } from '@/pages/findReservation/FindReservation';\nimport FindReservationResults from '@/pages/findReservation/FindReservationResults';\nimport HotelInfo from '@/pages/hotel/HotelInfo';\nimport HotelInfoPlaceholder from '@/pages/hotel/HotelInfoPlaceholder';\nimport Step from '@/pages/steps/Step';\nimport StepHotel from '@/pages/steps/StepHotel/StepHotel';\nimport FeaturedPromoFeature from '@/providers/feature/FeaturedPromoFeature';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport FeatureProvider from '@/providers/FeatureProvider';\nimport getStepRoom from '@/util/GetStepRoom';\nimport { ROUTES } from '@/util/RouteManager';\nimport StepManager from '@/util/StepManager';\n\nimport { EngineBodyLayout } from './EngineBodyLayout';\nimport { EnginePageLayout } from './EnginePageLayout';\n\nconst AccountRouter = React.lazy(() =>\n import('@/pages/account/AccountRouter').then(({ AccountRouter }) => ({\n default: AccountRouter,\n }))\n);\n\nexport function FullPageEngineContextWrapper() {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const beContext = useContext(BookingEngineContext);\n\n const [engineReady, setEngineReady] = useState(false);\n const [urlFlagsParsed, setUrlFlagsParsed] = useState(false);\n const [urlParameters, setUrlParameters] = useState<FullPageBookingEngineUrlParameters>({});\n\n const [currentStep, setCurrentStep] = useState<Step>(StepManager.getStepFromName(beContext.engine.getInitialSession()?.step as string) ?? StepManager.getFirstStep());\n const [initialStep, setInitialStep] = useState<Step>(StepManager.getFirstStep());\n\n const { hotel } = useCurrentHotel();\n\n const location = useLocation();\n const historyConsistentPush = useHistoryConsistentPush();\n const navigate = useNavigate();\n\n const isInStepRoot = useMatch(StepManager.STEP_BASE);\n\n useEffect(() => {\n beContext.sessionProvider?.updateSession({ step: currentStep.getName() });\n\n if (currentStep === StepHotel) {\n ccx.changeHotel(null);\n }\n }, [currentStep]);\n\n useEffect(() => {\n const currentBasketRows = basketContext.currentBasketRows;\n\n let addXRooms = 1;\n\n // TODO: this probably needs to be the only place this is set, and listen for URL changes\n if (currentBasketRows.length === 0) {\n const urlParameterBuilder: FullPageBookingEngineUrlParameters = {};\n // The Choose Hotel step should not apply the room filter\n const shouldEnableRoomCodeFilter = currentStep.getName() !== StepHotel.getName();\n\n if (location.search) {\n const query = new URLSearchParams(location.search);\n\n const format = API_DATE_FORMAT;\n\n let start = dayjs(query.get(EAppQueryParameters.Arrive), format);\n let end = dayjs(query.get(EAppQueryParameters.Depart), format);\n\n const promoCode = query.get(EAppQueryParameters.PromoCode);\n const promoOnly = query.get(EAppQueryParameters.PromoOnly);\n\n const promoFeatured = query.get(EAppQueryParameters.PromoFeatured);\n\n if (promoCode) {\n urlParameterBuilder.promoCode = promoCode;\n }\n\n if (promoOnly && promoOnly.toLowerCase() !== 'false') {\n urlParameterBuilder.promoOnly = Boolean(promoOnly);\n }\n\n if (promoFeatured && promoFeatured.toLowerCase() !== 'false') {\n FeatureProvider.load(FeaturedPromoFeature);\n urlParameterBuilder.promoFeatured = true;\n }\n\n const updatedCurrentFilters = { ...beContext.currentFilters };\n const roomCode = query.get(EAppQueryParameters.Room);\n\n if (roomCode && shouldEnableRoomCodeFilter) {\n // TODO: Refactor this to come from this context instead.\n updatedCurrentFilters['RoomType'] = new RoomTypeFilter([roomCode]);\n }\n\n const rateCode = query.get(EAppQueryParameters.Rate);\n if (rateCode) {\n // TODO: Refactor this to come from this context instead.\n updatedCurrentFilters['RateType'] = new RateTypeFilter([rateCode]);\n }\n beContext.setCurrentFilters(updatedCurrentFilters);\n\n const hotelId = query.get(EAppQueryParameters.Hotel);\n\n if (hotelId) {\n if (ccx.changeHotel(hotelId)) {\n if (!start.isValid()) {\n start = dayjs().add(1, 'day');\n }\n\n if (!end.isValid()) {\n end = start.add(1, 'day');\n }\n\n setInitialStep(getStepRoom());\n }\n\n urlParameterBuilder.hotelId = hotelId;\n }\n\n const defaultCity = query.get(EAppQueryParameters.DefaultCity);\n if (defaultCity) {\n urlParameterBuilder.defaultCity = defaultCity;\n }\n\n // We're doing dates last, as other properties, like hotelID might change them if they're not already set\n if (start.isValid() && end.isValid()) {\n if (start.isBefore(dayjs())) {\n start = dayjs();\n }\n\n if (end.isBefore(start)) {\n end = start.add(1, 'day');\n } else if (end.isBefore(dayjs().add(1, 'day'))) {\n end = dayjs().add(1, 'day');\n }\n\n urlParameterBuilder.startDate = start;\n urlParameterBuilder.endDate = end;\n }\n\n const parseQueryInt = (key: string, min = 0): number | undefined => {\n const value = Number.parseInt(query.get(key) ?? '', 10);\n return Number.isNaN(value) || value < min ? undefined : value;\n };\n\n addXRooms = parseQueryInt(EAppQueryParameters.Rooms, 1) ?? 1;\n const globalAdults = parseQueryInt(EAppQueryParameters.Adults, 1);\n const globalChildren = parseQueryInt(EAppQueryParameters.Children);\n const globalInfants = parseQueryInt(EAppQueryParameters.Infants);\n\n urlParameterBuilder.rooms = [];\n\n for (let i = 0; i < addXRooms; i++) {\n let roomOccupancy = 1;\n\n let adults = parseQueryInt(`adults-${i + 1}`, 1) ?? globalAdults;\n query.delete(`adults-${i + 1}`);\n\n if (adults && hotel?.maxOccupancy && (roomOccupancy = adults) > hotel.maxOccupancy) {\n adults = undefined;\n }\n\n let children = parseQueryInt(`children-${i + 1}`) ?? globalChildren;\n query.delete(`children-${i + 1}`);\n\n if (children && hotel?.maxOccupancy && (roomOccupancy += children) > hotel.maxOccupancy) {\n children = undefined;\n }\n\n let infants = parseQueryInt(`infants-${i + 1}`) ?? globalInfants;\n query.delete(`infants-${i + 1}`);\n\n if (infants && hotel?.maxOccupancy && hotel.countInfantsInOccupancy && (roomOccupancy += infants) > hotel.maxOccupancy) {\n infants = undefined;\n }\n\n urlParameterBuilder.rooms[i] = { adults, children, infants };\n }\n\n navigate({ search: query.toString() }, { replace: true });\n setUrlParameters(urlParameterBuilder);\n }\n\n let firstBasketRow: BasketRow | undefined = undefined;\n const { startDate, endDate, promoCode, promoOnly, rooms } = urlParameterBuilder;\n for (let i = 0; i < addXRooms; i++) {\n const { adults, children, infants } = rooms?.[i] ?? {};\n const basketRow = new BasketRow(undefined, undefined, shouldEnableRoomCodeFilter);\n\n if (startDate) {\n basketRow.setStartDate(startDate);\n }\n\n if (endDate) {\n basketRow.setEndDate(endDate);\n }\n\n if (promoCode) {\n basketRow.setPromoCode(promoCode);\n }\n\n if (promoOnly) {\n basketRow.setPromoOnly(promoOnly);\n }\n\n if (adults) {\n basketRow.setAdults(adults);\n }\n\n if (children) {\n basketRow.setChildren(children);\n }\n\n if (infants) {\n basketRow.setInfants(infants);\n }\n\n basketContext.addBasketRow(basketRow);\n\n if (i === 0) {\n firstBasketRow = basketRow;\n }\n }\n\n if (firstBasketRow?.getStartDate() && firstBasketRow.getEndDate() && StepManager.getFirstStep() !== StepHotel) {\n basketContext.selectBasketRow(firstBasketRow);\n setInitialStep(getStepRoom());\n }\n } else {\n const initialSession = beContext.engine.getInitialSession();\n if (initialSession) {\n setInitialStep(StepManager.getStepFromName(initialSession.step) as Step);\n }\n }\n\n setUrlFlagsParsed(true);\n }, []);\n\n /**\n * Engine Ready useEffect, used to deffer loading the UI until everything engine wise is set up properly\n */\n useEffect(() => {\n if (!engineReady) {\n if (ccx.hotels.length > 0 && urlFlagsParsed) {\n setEngineReady(true);\n }\n }\n }, [ccx.hotels, urlFlagsParsed]);\n\n useEffect(() => {\n if (engineReady) {\n if (isInStepRoot && initialStep) {\n // We want to respect the browsers pathname, and only redirect to a defined step if\n // the pathname isn't set, or matches an unknown page.\n\n // Is the current location in the path? i.e does the user want to be somewhere specific\n let pathInLoadedSteps = false;\n for (const step of StepManager.getSteps()) {\n // Using match instead of equals as some clients have skipped the trailing slash\n // We also want to make sure to only match the start of the path, in case step contains nested paths.\n if (location.pathname.match(new RegExp(`${step.getStepUrl()}.+`, 'ig'))) {\n pathInLoadedSteps = true;\n break;\n }\n }\n\n // We're in /step/ but on a not recognized one.\n if (!pathInLoadedSteps) {\n historyConsistentPush(initialStep.getStepUrl());\n }\n }\n }\n }, [engineReady]);\n\n useEffect(() => {\n if (hotel?.currentRoomSort) {\n beContext.setCurrentRoomSort(hotel?.currentRoomSort);\n }\n }, [hotel?.currentRoomSort]);\n\n const workingContext: FullPageEngineContextType = { urlParameters, currentStep, setCurrentStep };\n\n return (\n <FullPageEngineContext.Provider value={workingContext}>\n <ModalContextWrapper>\n <ScrollToTop />\n <header className=\"engine-header\">\n <Header />\n </header>\n\n {engineReady && (\n <Routes>\n <Route path=\"/\" element={<Navigate to={StepManager.getFirstStep().getStepUrl()} replace />} />\n\n <Route path=\"/step\" element={<EngineBodyLayout />}>\n {StepManager.getSteps().map((step: Step) => (\n <Route key={step.getName()} path={`${step.getStepUrl()}*`} element={<StepRoute step={step} />} />\n ))}\n </Route>\n\n {/**\n * We aren't on a /step/ path, or the root path, so it's probably one of the engine-page paths.\n * If no matching path is found, we'll redirect back to the first step.\n */}\n <Route path=\"/*\" element={<EnginePageLayout />}>\n {/* TODO: This startsWith('/') check should be temporary. We should update the Route in client config after this is merged. */}\n <Route\n path={ROUTES.HOTEL_INFO.startsWith('/') ? ROUTES.HOTEL_INFO.substring(1) : ROUTES.HOTEL_INFO}\n element={\n <React.Suspense fallback={<HotelInfoPlaceholder />}>\n <HotelInfo />\n </React.Suspense>\n }\n />\n\n {Object.values(EFindReservationPath)\n .filter((path) => MemberPortalFeature.isActive() || path === EFindReservationPath.FindReservation)\n .map((path) => (\n <Route\n key={path}\n path={path}\n element={\n <React.Suspense fallback={<div>Loading...</div>}>\n <FindReservation />\n </React.Suspense>\n }\n />\n ))}\n\n <Route\n path=\"find-reservation/:ref/:email\"\n element={\n <React.Suspense fallback={<div>Loading...</div>}>\n <FindReservationResults />\n </React.Suspense>\n }\n />\n\n <Route\n path=\"account/*\"\n element={\n <PrivateRoute>\n {MemberPortalFeature.isActive() && (\n <React.Suspense\n fallback={\n <div>\n <LargeLoader />\n </div>\n }\n >\n <AccountRouter />\n </React.Suspense>\n )}\n </PrivateRoute>\n }\n />\n\n {/* We haven't found a matching path, so just redirect to the first step. */}\n <Route path=\"*\" element={<Navigate to={StepManager.getFirstStep().getStepUrl()} replace />} />\n </Route>\n </Routes>\n )}\n\n <RoomstayMark />\n </ModalContextWrapper>\n </FullPageEngineContext.Provider>\n );\n}\n"]}
@@ -53,6 +53,7 @@ export type HotelRoomDTO = {
53
53
  roomSize?: number;
54
54
  prePerkDisclaimer?: string;
55
55
  perks?: ConfigHotel['perks'];
56
+ petFriendly?: boolean;
56
57
  };
57
58
  export type HotelDTO = {
58
59
  id: number;
@@ -1 +1 @@
1
- {"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAAiH;AA6IjH,IAAY,WAOX;AAPD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,wCAAyB,CAAA;IACzB,0BAAW,CAAA;IACX,wCAAyB,CAAA;IACzB,uCAAwB,CAAA;IACxB,oCAAqB,CAAA;AACzB,CAAC,EAPW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAOtB;AAEY,QAAA,0BAA0B,GAAsD;IACzF,CAAC,wBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI;IACzC,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG;IACvC,CAAC,wBAAgB,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,eAAe;IAC/D,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ;CACpD,CAAC","sourcesContent":["import { EnvironmentName } from '@planpay/web/src/lib/shared-lib-duplicates';\nimport type { EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, IAuxiliaryFilter } from '@roomstay/core';\nimport { DeepPartial } from 'react-hook-form';\n\nimport ColorProfile from '@/models/Client/Hotel/ColorProfile';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { AdminHotelConfig, ClientHotelConfig, ConfigHotel, EPaymentCardType } from '@/models/Client/Hotel/Hotel';\nimport HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\nexport type HotelServiceDTO = {\n detail: string;\n included: boolean;\n name: string;\n onsite: boolean;\n};\n\nexport type HotelRoomsDTO = {\n [roomTypeCode: string]: HotelRoomDTO;\n};\n\nexport type HotelRoomGroupsDTO = {\n groupName: string;\n id: string;\n filters: {\n [id: string]: {\n name: string;\n type: 'select';\n includeAllAbove: boolean;\n requireInput: boolean;\n options: IAuxiliaryFilter['options'];\n };\n };\n}[];\n\nexport type HotelRoomAmenitiesDTO = {\n type: string;\n description: string;\n};\n\nexport type HotelRoomDTO = {\n code: string;\n name: string;\n shortDescription: string;\n longDescription: string;\n images: string[];\n quantity: number;\n maxOccupancy: number;\n bedQuantity: number;\n showBedType?: boolean;\n standardNumBeds: number;\n maxRollaways: number;\n bedType: string;\n amenities: HotelRoomAmenitiesDTO[];\n features: HotelRoomAmenitiesDTO[];\n bedTypeOverride?: string;\n roomGroupId?: string;\n roomSize?: number;\n prePerkDisclaimer?: string;\n perks?: ConfigHotel['perks'];\n};\n\nexport type HotelDTO = {\n id: number;\n name: string;\n chainId: number;\n chainName: string;\n\n address: HotelAddress;\n phone: string;\n\n latitude: string;\n longitude: string;\n\n utcOffset: string;\n timeZone: string;\n\n languageCode: string;\n currencyCode: string;\n\n checkInTime: string;\n checkOutTime: string;\n\n paymentCardTypes: EPaymentCardType[];\n\n description: string;\n locationDescription: string;\n policies: string;\n\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n\n rooms: { [roomTypeCode: string]: HotelRoomDTO };\n dataSource: HotelDataSource;\n\n // Following fields are only present if dataSource = 'roomstay'\n logo?: string;\n colors: DeepPartial<ColorProfile>;\n distanceUnitType?: DistanceUnitType;\n weekdayStartsOn?: WeekdayStartsOn;\n\n crossSellHotelIds?: string[];\n paymentMethods: EBookingPaymentMethod[];\n cardProcessor: EHotelCardProcessor;\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n\n email?: string;\n hotelUrl?: string;\n heroImage?: string;\n images?: string[];\n integrations?: EIntegration[];\n roomGroups: HotelRoomGroupsDTO;\n requireDeposit?: boolean;\n /** @deprecated Use the new Fees model instead */\n enableCreditCardSurcharge?: boolean;\n availableCountries?: { name: string; value: string }[];\n preventCancellation?: boolean;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n itineraryNote: string;\n} & Pick<\n AdminHotelConfig,\n | 'childConfiguration'\n | 'perks'\n | 'perkTitle'\n | 'countryPrefix'\n | 'quoteImageDesktop'\n | 'quoteImageMobile'\n | 'memberOnlyImage'\n | 'captureChildAge'\n | 'company'\n | 'fees'\n | 'addDepositFeeToBookingTotal'\n | 'minAdultAge'\n | 'maxAdultAge'\n | 'countInfantsInOccupancy'\n | 'preferProviderBookingId'\n> &\n Pick<ClientHotelConfig, 'memberOnlyRenderRateLast'>;\n\nexport enum VGSCardName {\n Visa = 'visa',\n Mastercard = 'mastercard',\n JCB = 'jcb',\n DinersClub = 'dinersclub',\n AmericanExpress = 'amex',\n UnionPay = 'unionpay',\n}\n\nexport const SynxisToVGSCardNameMapping: { [synxisName in EPaymentCardType]: VGSCardName } = {\n [EPaymentCardType.Visa]: VGSCardName.Visa,\n [EPaymentCardType.Mastercard]: VGSCardName.Mastercard,\n [EPaymentCardType.JCB]: VGSCardName.JCB,\n [EPaymentCardType.AmericanExpress]: VGSCardName.AmericanExpress,\n [EPaymentCardType.DinersClub]: VGSCardName.DinersClub,\n [EPaymentCardType.UnionPay]: VGSCardName.UnionPay,\n};\n"]}
1
+ {"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAAiH;AA8IjH,IAAY,WAOX;AAPD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,wCAAyB,CAAA;IACzB,0BAAW,CAAA;IACX,wCAAyB,CAAA;IACzB,uCAAwB,CAAA;IACxB,oCAAqB,CAAA;AACzB,CAAC,EAPW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAOtB;AAEY,QAAA,0BAA0B,GAAsD;IACzF,CAAC,wBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI;IACzC,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG;IACvC,CAAC,wBAAgB,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,eAAe;IAC/D,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ;CACpD,CAAC","sourcesContent":["import { EnvironmentName } from '@planpay/web/src/lib/shared-lib-duplicates';\nimport type { EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, IAuxiliaryFilter } from '@roomstay/core';\nimport { DeepPartial } from 'react-hook-form';\n\nimport ColorProfile from '@/models/Client/Hotel/ColorProfile';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { AdminHotelConfig, ClientHotelConfig, ConfigHotel, EPaymentCardType } from '@/models/Client/Hotel/Hotel';\nimport HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\nexport type HotelServiceDTO = {\n detail: string;\n included: boolean;\n name: string;\n onsite: boolean;\n};\n\nexport type HotelRoomsDTO = {\n [roomTypeCode: string]: HotelRoomDTO;\n};\n\nexport type HotelRoomGroupsDTO = {\n groupName: string;\n id: string;\n filters: {\n [id: string]: {\n name: string;\n type: 'select';\n includeAllAbove: boolean;\n requireInput: boolean;\n options: IAuxiliaryFilter['options'];\n };\n };\n}[];\n\nexport type HotelRoomAmenitiesDTO = {\n type: string;\n description: string;\n};\n\nexport type HotelRoomDTO = {\n code: string;\n name: string;\n shortDescription: string;\n longDescription: string;\n images: string[];\n quantity: number;\n maxOccupancy: number;\n bedQuantity: number;\n showBedType?: boolean;\n standardNumBeds: number;\n maxRollaways: number;\n bedType: string;\n amenities: HotelRoomAmenitiesDTO[];\n features: HotelRoomAmenitiesDTO[];\n bedTypeOverride?: string;\n roomGroupId?: string;\n roomSize?: number;\n prePerkDisclaimer?: string;\n perks?: ConfigHotel['perks'];\n petFriendly?: boolean;\n};\n\nexport type HotelDTO = {\n id: number;\n name: string;\n chainId: number;\n chainName: string;\n\n address: HotelAddress;\n phone: string;\n\n latitude: string;\n longitude: string;\n\n utcOffset: string;\n timeZone: string;\n\n languageCode: string;\n currencyCode: string;\n\n checkInTime: string;\n checkOutTime: string;\n\n paymentCardTypes: EPaymentCardType[];\n\n description: string;\n locationDescription: string;\n policies: string;\n\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n\n rooms: { [roomTypeCode: string]: HotelRoomDTO };\n dataSource: HotelDataSource;\n\n // Following fields are only present if dataSource = 'roomstay'\n logo?: string;\n colors: DeepPartial<ColorProfile>;\n distanceUnitType?: DistanceUnitType;\n weekdayStartsOn?: WeekdayStartsOn;\n\n crossSellHotelIds?: string[];\n paymentMethods: EBookingPaymentMethod[];\n cardProcessor: EHotelCardProcessor;\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n\n email?: string;\n hotelUrl?: string;\n heroImage?: string;\n images?: string[];\n integrations?: EIntegration[];\n roomGroups: HotelRoomGroupsDTO;\n requireDeposit?: boolean;\n /** @deprecated Use the new Fees model instead */\n enableCreditCardSurcharge?: boolean;\n availableCountries?: { name: string; value: string }[];\n preventCancellation?: boolean;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n itineraryNote: string;\n} & Pick<\n AdminHotelConfig,\n | 'childConfiguration'\n | 'perks'\n | 'perkTitle'\n | 'countryPrefix'\n | 'quoteImageDesktop'\n | 'quoteImageMobile'\n | 'memberOnlyImage'\n | 'captureChildAge'\n | 'company'\n | 'fees'\n | 'addDepositFeeToBookingTotal'\n | 'minAdultAge'\n | 'maxAdultAge'\n | 'countInfantsInOccupancy'\n | 'preferProviderBookingId'\n> &\n Pick<ClientHotelConfig, 'memberOnlyRenderRateLast'>;\n\nexport enum VGSCardName {\n Visa = 'visa',\n Mastercard = 'mastercard',\n JCB = 'jcb',\n DinersClub = 'dinersclub',\n AmericanExpress = 'amex',\n UnionPay = 'unionpay',\n}\n\nexport const SynxisToVGSCardNameMapping: { [synxisName in EPaymentCardType]: VGSCardName } = {\n [EPaymentCardType.Visa]: VGSCardName.Visa,\n [EPaymentCardType.Mastercard]: VGSCardName.Mastercard,\n [EPaymentCardType.JCB]: VGSCardName.JCB,\n [EPaymentCardType.AmericanExpress]: VGSCardName.AmericanExpress,\n [EPaymentCardType.DinersClub]: VGSCardName.DinersClub,\n [EPaymentCardType.UnionPay]: VGSCardName.UnionPay,\n};\n"]}
@@ -10,5 +10,6 @@ export declare enum EAppQueryParameters {
10
10
  DefaultCity = "defaultCity",
11
11
  Adults = "adults",
12
12
  Children = "children",
13
- Rooms = "rooms"
13
+ Rooms = "rooms",
14
+ Infants = "infants"
14
15
  }
@@ -15,5 +15,6 @@ var EAppQueryParameters;
15
15
  EAppQueryParameters["Adults"] = "adults";
16
16
  EAppQueryParameters["Children"] = "children";
17
17
  EAppQueryParameters["Rooms"] = "rooms";
18
+ EAppQueryParameters["Infants"] = "infants";
18
19
  })(EAppQueryParameters = exports.EAppQueryParameters || (exports.EAppQueryParameters = {}));
19
20
  //# sourceMappingURL=AppQueryParameters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppQueryParameters.js","sourceRoot":"/","sources":["src/models/AppQueryParameters.ts"],"names":[],"mappings":";;;AAAA,IAAY,mBAaX;AAbD,WAAY,mBAAmB;IAC3B,wCAAiB,CAAA;IACjB,wCAAiB,CAAA;IACjB,8CAAuB,CAAA;IACvB,8CAAuB,CAAA;IACvB,sDAA+B,CAAA;IAC/B,oCAAa,CAAA;IACb,oCAAa,CAAA;IACb,sCAAe,CAAA;IACf,kDAA2B,CAAA;IAC3B,wCAAiB,CAAA;IACjB,4CAAqB,CAAA;IACrB,sCAAe,CAAA;AACnB,CAAC,EAbW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAa9B","sourcesContent":["export enum EAppQueryParameters {\n Arrive = 'arrive',\n Depart = 'depart',\n PromoCode = 'promocode',\n PromoOnly = 'promoonly',\n PromoFeatured = 'promofeatured',\n Room = 'room',\n Rate = 'rate',\n Hotel = 'hotel',\n DefaultCity = 'defaultCity',\n Adults = 'adults',\n Children = 'children',\n Rooms = 'rooms',\n}\n"]}
1
+ {"version":3,"file":"AppQueryParameters.js","sourceRoot":"/","sources":["src/models/AppQueryParameters.ts"],"names":[],"mappings":";;;AAAA,IAAY,mBAcX;AAdD,WAAY,mBAAmB;IAC3B,wCAAiB,CAAA;IACjB,wCAAiB,CAAA;IACjB,8CAAuB,CAAA;IACvB,8CAAuB,CAAA;IACvB,sDAA+B,CAAA;IAC/B,oCAAa,CAAA;IACb,oCAAa,CAAA;IACb,sCAAe,CAAA;IACf,kDAA2B,CAAA;IAC3B,wCAAiB,CAAA;IACjB,4CAAqB,CAAA;IACrB,sCAAe,CAAA;IACf,0CAAmB,CAAA;AACvB,CAAC,EAdW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAc9B","sourcesContent":["export enum EAppQueryParameters {\n Arrive = 'arrive',\n Depart = 'depart',\n PromoCode = 'promocode',\n PromoOnly = 'promoonly',\n PromoFeatured = 'promofeatured',\n Room = 'room',\n Rate = 'rate',\n Hotel = 'hotel',\n DefaultCity = 'defaultCity',\n Adults = 'adults',\n Children = 'children',\n Rooms = 'rooms',\n Infants = 'infants',\n}\n"]}
@@ -183,6 +183,7 @@ export interface ClientHotelConfig {
183
183
  onLoad?: () => void;
184
184
  currentRoomSort?: RoomSort;
185
185
  maxAdults?: number;
186
+ mobileDefaultRatesClosed?: boolean;
186
187
  }
187
188
  export interface ConfigHotel extends ClientHotelConfig, AdminHotelConfig, HasDatalayerTags {
188
189
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":";;;AAmBA,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,8BAAU,CAAA;IACV,0CAAsB,CAAA;IACtB,qCAAiB,CAAA;IACjB,mCAAe,CAAA;AACnB,CAAC,EAPW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAO3B","sourcesContent":["import { EnvironmentName } from '@planpay/web/src/lib/shared-lib-duplicates';\nimport { EBookingFlow, EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, IHotelColorScheme } from '@roomstay/core';\nimport { Property } from 'csstype';\nimport type { ReactChild } from 'react';\n\nimport type { InternalMemberSignInInputs } from '@/components/members/SignInModal/InternalMemberSignInModal.types';\nimport type { HotelRoomGroupsDTO, HotelRoomsDTO, HotelServiceDTO } from '@/models/Api/HotelDTO';\nimport type { TransportDistances } from '@/models/Api/HotelOverrideDTO';\nimport type { HasDatalayerTags } from '@/models/Client/Hotel/Company';\nimport type { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport type HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport type { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport type { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport type { HotelRoomOverwrite } from '@/models/Client/Hotel/HotelRoomOverwrite';\nimport type { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\nimport { HotelFee } from '@/models/Fee';\nimport type { Language } from '@/providers/LanguageProvider';\nimport { RoomSort } from '@/providers/RoomSortProvider';\n\nexport enum EPaymentCardType {\n Visa = 'VI',\n Mastercard = 'MC',\n JCB = 'JC',\n AmericanExpress = 'AX',\n DinersClub = 'DN',\n UnionPay = 'UP',\n}\n\nexport interface IVGSVaultNames {\n standard: string;\n members: string;\n}\n\n/**\n * This config comes from admin -- TODO: Move to Roomstay Core\n */\nexport interface AdminHotelConfig {\n hotelID: string;\n name: string;\n address?: HotelAddress;\n latitude?: number;\n longitude?: number;\n phone?: string;\n email?: string;\n checkInTime?: string;\n checkOutTime?: string;\n paymentCardTypes?: EPaymentCardType[];\n description?: string;\n locationDescription?: string;\n policies?: string;\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n rooms: HotelRoomsDTO;\n hasLoadedDetails?: boolean;\n dataSource: HotelDataSource;\n defaultCurrency: string;\n paymentMethods: EBookingPaymentMethod[];\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n hotelUrl: string;\n heroImage: string;\n memberOnlyModalImage?: string;\n memberOnlyModalImageSize: Property.ObjectFit;\n images?: string[];\n logo: string | ReactChild;\n colors: IHotelColorScheme;\n distanceUnitType: DistanceUnitType;\n startsWeekOnDay?: WeekdayStartsOn;\n crossSellHotelIds?: string[];\n maxOccupancy?: number;\n minAdultAge?: number;\n maxAdultAge?: number;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n countInfantsInOccupancy?: boolean;\n hideByLine?: boolean;\n transportDistances?: TransportDistances;\n roomGroups: HotelRoomGroupsDTO;\n cardProcessor: EHotelCardProcessor;\n\n requireDeposit?: boolean;\n bookingFlow: EBookingFlow;\n\n /** @deprecated Use the new Fees model instead */\n enableCreditCardSurcharge?: boolean;\n availableCountries?: { name: string; value: string }[];\n\n childConfiguration?: {\n supportChildren?: boolean;\n supportInfants: boolean;\n childRange: { min: number; max: number };\n infantRange: { min: number; max: number };\n };\n preventCancellation?: boolean;\n\n perks?: HotelPerk[];\n perkTitle?: string;\n\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n\n countryPrefix?: string;\n quoteImageDesktop?: string;\n quoteImageMobile?: string;\n memberOnlyImage?: string;\n captureChildAge?: boolean;\n itineraryNote: string;\n\n fees?: HotelFee[];\n addDepositFeeToBookingTotal?: boolean;\n\n company: {\n url?: string;\n logo?: string;\n };\n\n facebookUrl: string;\n instagramUrl: string;\n linkedinUrl: string;\n preferProviderBookingId: boolean;\n}\n\n/**\n * This config comes from hard static local file\n */\nexport interface ClientHotelConfig {\n providerHotelID: string;\n shortName?: string;\n defaultDatepickerType?: 'Month' | 'Week';\n // TODO: need to do magic to see if we need to append / prepend stuff, for now we assume that it's only used while on the site.\n checkoutUrl?: string;\n defaultLanguage: Language;\n privacyPolicyUrl: string;\n bookNowPayLaterUrl?: string;\n bestRateNoBSUrl?: string;\n\n memberOnlyRates?: string[];\n memberOnlyPromoCode?: string;\n memberOnlyRenderRateLast?: boolean;\n memberOnlySignupInputs?: InternalMemberSignInInputs;\n googleMapsImage?: string;\n /**\n * Whether to show the Breakfast / Lunch / Dinner included\n */\n showMealPill?: boolean;\n perks?: HotelPerk[];\n perkTitle?: string;\n /**\n * Hide perks on room row\n */\n perksHideOnRoomRow?: boolean;\n /**\n * Hide perks on room detail modal\n */\n perksHideOnRoomDetail?: boolean;\n perksShowDisclaimer?: boolean;\n /** @deprecated Use the vgs.vaultNames.standard property now */\n vgsVaultName?: string;\n vgs?: {\n vaultNames: IVGSVaultNames;\n };\n showAddonLoader: boolean;\n overwrites?: { [code: string]: Partial<HotelRoomOverwrite> };\n forwardFindReservationToSynxis?: boolean;\n additionalOptions?: { [name: string]: any };\n googleReCaptcha?: {\n loadForMembers?: boolean;\n siteKey?: string;\n };\n /**\n * Show description on RoomDetails\n */\n showDescriptionOnRoomDetails?: boolean;\n /**\n * Customize the Member modal colours. Specifically replacing the green (success) with the primary color of hotel (accent)\n */\n memberOnlyModalUsePrimaryColor?: boolean;\n /**\n * Callback to trigger specific events on load of a hotel.\n *\n * This is where you can specify custom fields, language overrides, feature toggles etc.\n */\n onLoad?: () => void;\n currentRoomSort?: RoomSort; //override default room sort\n maxAdults?: number; //fixed from frontend\n}\n\nexport interface ConfigHotel extends ClientHotelConfig, AdminHotelConfig, HasDatalayerTags {}\n\nexport type Hotel = ConfigHotel & {\n lowestPrice?: {\n value: number;\n isLoading: boolean;\n };\n integrations?: EIntegration[];\n};\n\n/**\n * Used for DetailsHotel event\n */\nexport type InitialHotelDetailsEventPayload = {\n name: string;\n hotelID: number | string;\n hotelUrl: string;\n currency: string;\n language: Language;\n address?: HotelAddress;\n};\n"]}
1
+ {"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":";;;AAmBA,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,8BAAU,CAAA;IACV,0CAAsB,CAAA;IACtB,qCAAiB,CAAA;IACjB,mCAAe,CAAA;AACnB,CAAC,EAPW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAO3B","sourcesContent":["import { EnvironmentName } from '@planpay/web/src/lib/shared-lib-duplicates';\nimport { EBookingFlow, EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, IHotelColorScheme } from '@roomstay/core';\nimport { Property } from 'csstype';\nimport type { ReactChild } from 'react';\n\nimport type { InternalMemberSignInInputs } from '@/components/members/SignInModal/InternalMemberSignInModal.types';\nimport type { HotelRoomGroupsDTO, HotelRoomsDTO, HotelServiceDTO } from '@/models/Api/HotelDTO';\nimport type { TransportDistances } from '@/models/Api/HotelOverrideDTO';\nimport type { HasDatalayerTags } from '@/models/Client/Hotel/Company';\nimport type { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport type HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport type { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport type { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport type { HotelRoomOverwrite } from '@/models/Client/Hotel/HotelRoomOverwrite';\nimport type { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\nimport { HotelFee } from '@/models/Fee';\nimport type { Language } from '@/providers/LanguageProvider';\nimport { RoomSort } from '@/providers/RoomSortProvider';\n\nexport enum EPaymentCardType {\n Visa = 'VI',\n Mastercard = 'MC',\n JCB = 'JC',\n AmericanExpress = 'AX',\n DinersClub = 'DN',\n UnionPay = 'UP',\n}\n\nexport interface IVGSVaultNames {\n standard: string;\n members: string;\n}\n\n/**\n * This config comes from admin -- TODO: Move to Roomstay Core\n */\nexport interface AdminHotelConfig {\n hotelID: string;\n name: string;\n address?: HotelAddress;\n latitude?: number;\n longitude?: number;\n phone?: string;\n email?: string;\n checkInTime?: string;\n checkOutTime?: string;\n paymentCardTypes?: EPaymentCardType[];\n description?: string;\n locationDescription?: string;\n policies?: string;\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n rooms: HotelRoomsDTO;\n hasLoadedDetails?: boolean;\n dataSource: HotelDataSource;\n defaultCurrency: string;\n paymentMethods: EBookingPaymentMethod[];\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n hotelUrl: string;\n heroImage: string;\n memberOnlyModalImage?: string;\n memberOnlyModalImageSize: Property.ObjectFit;\n images?: string[];\n logo: string | ReactChild;\n colors: IHotelColorScheme;\n distanceUnitType: DistanceUnitType;\n startsWeekOnDay?: WeekdayStartsOn;\n crossSellHotelIds?: string[];\n maxOccupancy?: number;\n minAdultAge?: number;\n maxAdultAge?: number;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n countInfantsInOccupancy?: boolean;\n hideByLine?: boolean;\n transportDistances?: TransportDistances;\n roomGroups: HotelRoomGroupsDTO;\n cardProcessor: EHotelCardProcessor;\n\n requireDeposit?: boolean;\n bookingFlow: EBookingFlow;\n\n /** @deprecated Use the new Fees model instead */\n enableCreditCardSurcharge?: boolean;\n availableCountries?: { name: string; value: string }[];\n\n childConfiguration?: {\n supportChildren?: boolean;\n supportInfants: boolean;\n childRange: { min: number; max: number };\n infantRange: { min: number; max: number };\n };\n preventCancellation?: boolean;\n\n perks?: HotelPerk[];\n perkTitle?: string;\n\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n\n countryPrefix?: string;\n quoteImageDesktop?: string;\n quoteImageMobile?: string;\n memberOnlyImage?: string;\n captureChildAge?: boolean;\n itineraryNote: string;\n\n fees?: HotelFee[];\n addDepositFeeToBookingTotal?: boolean;\n\n company: {\n url?: string;\n logo?: string;\n };\n\n facebookUrl: string;\n instagramUrl: string;\n linkedinUrl: string;\n preferProviderBookingId: boolean;\n}\n\n/**\n * This config comes from hard static local file\n */\nexport interface ClientHotelConfig {\n providerHotelID: string;\n shortName?: string;\n defaultDatepickerType?: 'Month' | 'Week';\n // TODO: need to do magic to see if we need to append / prepend stuff, for now we assume that it's only used while on the site.\n checkoutUrl?: string;\n defaultLanguage: Language;\n privacyPolicyUrl: string;\n bookNowPayLaterUrl?: string;\n bestRateNoBSUrl?: string;\n\n memberOnlyRates?: string[];\n memberOnlyPromoCode?: string;\n memberOnlyRenderRateLast?: boolean;\n memberOnlySignupInputs?: InternalMemberSignInInputs;\n googleMapsImage?: string;\n /**\n * Whether to show the Breakfast / Lunch / Dinner included\n */\n showMealPill?: boolean;\n perks?: HotelPerk[];\n perkTitle?: string;\n /**\n * Hide perks on room row\n */\n perksHideOnRoomRow?: boolean;\n /**\n * Hide perks on room detail modal\n */\n perksHideOnRoomDetail?: boolean;\n perksShowDisclaimer?: boolean;\n /** @deprecated Use the vgs.vaultNames.standard property now */\n vgsVaultName?: string;\n vgs?: {\n vaultNames: IVGSVaultNames;\n };\n showAddonLoader: boolean;\n overwrites?: { [code: string]: Partial<HotelRoomOverwrite> };\n forwardFindReservationToSynxis?: boolean;\n additionalOptions?: { [name: string]: any };\n googleReCaptcha?: {\n loadForMembers?: boolean;\n siteKey?: string;\n };\n /**\n * Show description on RoomDetails\n */\n showDescriptionOnRoomDetails?: boolean;\n /**\n * Customize the Member modal colours. Specifically replacing the green (success) with the primary color of hotel (accent)\n */\n memberOnlyModalUsePrimaryColor?: boolean;\n /**\n * Callback to trigger specific events on load of a hotel.\n *\n * This is where you can specify custom fields, language overrides, feature toggles etc.\n */\n onLoad?: () => void;\n currentRoomSort?: RoomSort; //override default room sort\n maxAdults?: number; //fixed from frontend\n mobileDefaultRatesClosed?: boolean;\n}\n\nexport interface ConfigHotel extends ClientHotelConfig, AdminHotelConfig, HasDatalayerTags {}\n\nexport type Hotel = ConfigHotel & {\n lowestPrice?: {\n value: number;\n isLoading: boolean;\n };\n integrations?: EIntegration[];\n};\n\n/**\n * Used for DetailsHotel event\n */\nexport type InitialHotelDetailsEventPayload = {\n name: string;\n hotelID: number | string;\n hotelUrl: string;\n currency: string;\n language: Language;\n address?: HotelAddress;\n};\n"]}
@@ -114,6 +114,7 @@ CurrencyProvider.currencies = {
114
114
  // ILS: new Currency("₪", "New Israeli Shekels"),
115
115
  // KRW: new Currency("₩", "South Korean Won"),
116
116
  // PLN: new Currency("zł", "Polish Złoty"),
117
+ FJD: new Currency_1.Currency('FJ$', 'Fiji Dollar', '$'),
117
118
  /*
118
119
  * The following currencies are currently excluded as the exchange rate API doesn't return them
119
120
  AED: new Currency("د.إ", "UAE Dirham"),
@@ -149,7 +150,6 @@ DZD: new Currency("د.ج", "Algerian Dinar"),
149
150
  EGP: new Currency("£", "Egyptian Pound"),
150
151
  ERN: new Currency("Nfk", "Nakfa"),
151
152
  ETB: new Currency("", "Ethiopian Birr"),
152
- FJD: new Currency("$", "Fiji Dollar"),
153
153
  FKP: new Currency("£", "Falkland Islands Pound"),
154
154
  GEL: new Currency("ლ", "Lari"),
155
155
  GHS: new Currency("₵", "Cedi"),
@@ -1 +1 @@
1
- {"version":3,"file":"CurrencyProvider.js","sourceRoot":"/","sources":["src/providers/CurrencyProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import API from '@/api/BookingAPI';\nimport { FullPageBookingEngineElementEvents } from '@/engines/FullPageBookingEngine/FullPageBookingEngineElementEvents';\nimport { Currency } from '@/models/Currency';\n\nexport default class CurrencyProvider {\n public static labelOverrides: { [code: string]: { short: string; long: string } } = {};\n private static currencies: { [code: string]: Currency } = {\n CAD: new Currency('CA$', 'Canadian Dollars', '$'),\n HKD: new Currency('HK$', 'Hong Kong Dollars', '$'),\n // ISK: new Currency(\"Kr\", \"Iceland Kronur\"),\n // PHP: new Currency(\"₱\", \"Philippine Pesos\"),\n // DKK: new Currency(\"kr\", \"Danish Kroner\"),\n // HUF: new Currency(\"Ft\", \"Hungarian Forint\"),\n // CZK: new Currency(\"Kč\", \"Czech Koruna\"),\n GBP: new Currency('£', 'British Pounds'),\n // RON: new Currency(\"L\", \"Romania New Lei\"),\n // SEK: new Currency(\"kr\", \"Swedish Kronor\"),\n IDR: new Currency('Rp', 'Indonesian Rupiahs'),\n INR: new Currency('₹', 'Indian Rupees'),\n // BRL: new Currency(\"R$\", \"Brazilian Reals\"),\n // RUB: new Currency(\"р.\", \"Russian Rubles\"),\n // HRK: new Currency(\"Kn\", \"Croatian Kuna\"),\n JPY: new Currency('¥', 'Japanese Yen'),\n // THB: new Currency(\"฿\", \"Thai Baht\"),\n // CHF: new Currency(\"₣\", \"Swiss Francs\"),\n EUR: new Currency('€', 'Euros'),\n // BGN: new Currency(\"Лв\", \"Bulgarian Leva\"),\n // TRY: new Currency(\"₺\", \"Turkish Lira\"),\n CNY: new Currency('¥', 'Chinese Yuan'),\n // NOK: new Currency(\"kr\", \"Norwegian Kroner\"),\n NZD: new Currency('NZ$', 'New Zealand Dollars', '$'),\n // ZAR: new Currency(\"R\", \"South African Rand\"),\n USD: new Currency('$', 'US Dollars'),\n // MXN: new Currency(\"MX$\", \"Mexican Pesos\", \"$\"),\n SGD: new Currency('S$', 'Singapore Dollars', '$'),\n AUD: new Currency('A$', 'Australian Dollars', '$'),\n // ILS: new Currency(\"₪\", \"New Israeli Shekels\"),\n // KRW: new Currency(\"₩\", \"South Korean Won\"),\n // PLN: new Currency(\"zł\", \"Polish Złoty\"),\n /*\n * The following currencies are currently excluded as the exchange rate API doesn't return them\n AED: new Currency(\"د.إ\", \"UAE Dirham\"),\n AFN: new Currency(\"Af\", \"Afghani\"),\n ALL: new Currency(\"L\", \"Lek\"),\n AMD: new Currency(\"Դ\", \"Armenian Dram\"),\n AOA: new Currency(\"Kz\", \"Kwanza\"),\n ARS: new Currency(\"$\", \"Argentine Peso\"),\n AWG: new Currency(\"ƒ\", \"Aruban Guilder/Florin\"),\n AZN: new Currency(\"ман\", \"Azerbaijanian Manat\"),\n BAM: new Currency(\"КМ\", \"Konvertibilna Marka\"),\n BBD: new Currency(\"$\", \"Barbados Dollar\"),\n BDT: new Currency(\"৳\", \"Taka\"),\n BHD: new Currency(\"ب.د\", \"Bahraini Dinar\"),\n BIF: new Currency(\"₣\", \"Burundi Franc\"),\n BMD: new Currency(\"$\", \"Bermudian Dollar\"),\n BND: new Currency(\"$\", \"Brunei Dollar\"),\n BOB: new Currency(\"Bs.\", \"Boliviano\"),\n BSD: new Currency(\"$\", \"Bahamian Dollar\"),\n BTN: new Currency(\"\", \"Ngultrum\"),\n BWP: new Currency(\"P\", \"Pula\"),\n BYN: new Currency(\"Br\", \"Belarusian Ruble\"),\n BZD: new Currency(\"$\", \"Belize Dollar\"),\n CDF: new Currency(\"₣\", \"Congolese Franc\"),\n CLP: new Currency(\"$\", \"Chilean Peso\"),\n COP: new Currency(\"$\", \"Colombian Peso\"),\n CRC: new Currency(\"₡\", \"Costa Rican Colon\"),\n CUP: new Currency(\"$\", \"Cuban Peso\"),\n CVE: new Currency(\"$\", \"Cape Verde Escudo\"),\n DJF: new Currency(\"₣\", \"Djibouti Franc\"),\n DOP: new Currency(\"$\", \"Dominican Peso\"),\n DZD: new Currency(\"د.ج\", \"Algerian Dinar\"),\n EGP: new Currency(\"£\", \"Egyptian Pound\"),\n ERN: new Currency(\"Nfk\", \"Nakfa\"),\n ETB: new Currency(\"\", \"Ethiopian Birr\"),\n FJD: new Currency(\"$\", \"Fiji Dollar\"),\n FKP: new Currency(\"£\", \"Falkland Islands Pound\"),\n GEL: new Currency(\"ლ\", \"Lari\"),\n GHS: new Currency(\"₵\", \"Cedi\"),\n GIP: new Currency(\"£\", \"Gibraltar Pound\"),\n GMD: new Currency(\"D\", \"Dalasi\"),\n GNF: new Currency(\"₣\", \"Guinea Franc\"),\n GTQ: new Currency(\"Q\", \"Quetzal\"),\n GYD: new Currency(\"$\", \"Guyana Dollar\"),\n HNL: new Currency(\"L\", \"Lempira\"),\n HTG: new Currency(\"G\", \"Gourde\"),\n IQD: new Currency(\"ع.د\", \"Iraqi Dinar\"),\n IRR: new Currency(\"﷼\", \"Iranian Rial\"),\n JMD: new Currency(\"$\", \"Jamaican Dollar\"),\n JOD: new Currency(\"د.ا\", \"Jordanian Dinar\"),\n KES: new Currency(\"Sh\", \"Kenyan Shilling\"),\n KGS: new Currency(\"\", \"Som\"),\n KHR: new Currency(\"៛\", \"Riel\"),\n KPW: new Currency(\"₩\", \"North Korean Won\"),\n KWD: new Currency(\"د.ك\", \"Kuwaiti Dinar\"),\n KYD: new Currency(\"$\", \"Cayman Islands Dollar\"),\n KZT: new Currency(\"〒\", \"Tenge\"),\n LAK: new Currency(\"₭\", \"Kip\"),\n LBP: new Currency(\"ل.ل\", \"Lebanese Pound\"),\n LKR: new Currency(\"Rs\", \"Sri Lanka Rupee\"),\n LRD: new Currency(\"$\", \"Liberian Dollar\"),\n LSL: new Currency(\"L\", \"Loti\"),\n LYD: new Currency(\"ل.د\", \"Libyan Dinar\"),\n MAD: new Currency(\"د.م.\", \"Moroccan Dirham\"),\n MDL: new Currency(\"L\", \"Moldovan Leu\"),\n MGA: new Currency(\"\", \"Malagasy Ariary\"),\n MKD: new Currency(\"ден\", \"Denar\"),\n MMK: new Currency(\"K\", \"Kyat\"),\n MNT: new Currency(\"₮\", \"Tugrik\"),\n MOP: new Currency(\"P\", \"Pataca\"),\n MRU: new Currency(\"UM\", \"Ouguiya\"),\n MUR: new Currency(\"₨\", \"Mauritius Rupee\"),\n MVR: new Currency(\"ރ.\", \"Rufiyaa\"),\n MWK: new Currency(\"MK\", \"Kwacha\"),\n MYR: new Currency(\"RM\", \"Malaysian Ringgit\"),\n MZN: new Currency(\"MTn\", \"Metical\"),\n NAD: new Currency(\"$\", \"Namibia Dollar\"),\n NGN: new Currency(\"₦\", \"Naira\"),\n NIO: new Currency(\"C$\", \"Cordoba Oro\"),\n NPR: new Currency(\"₨\", \"Nepalese Rupee\"),\n OMR: new Currency(\"ر.ع.\", \"Rial Omani\"),\n PAB: new Currency(\"B/.\", \"Balboa\"),\n PEN: new Currency(\"S/.\", \"Nuevo Sol\"),\n PGK: new Currency(\"K\", \"Kina\"),\n PKR: new Currency(\"₨\", \"Pakistan Rupee\"),\n PYG: new Currency(\"₲\", \"Guarani\"),\n QAR: new Currency(\"ر.ق\", \"Qatari Rial\"),\n RSD: new Currency(\"din\", \"Serbian Dinar\"),\n RWF: new Currency(\"₣\", \"Rwanda Franc\"),\n SAR: new Currency(\"ر.س\", \"Saudi Riyal\"),\n SBD: new Currency(\"$\", \"Solomon Islands Dollar\"),\n SCR: new Currency(\"₨\", \"Seychelles Rupee\"),\n SDG: new Currency(\"£\", \"Sudanese Pound\"),\n SHP: new Currency(\"£\", \"Saint Helena Pound\"),\n SLL: new Currency(\"Le\", \"Leone\"),\n SOS: new Currency(\"Sh\", \"Somali Shilling\"),\n SRD: new Currency(\"$\", \"Suriname Dollar\"),\n STN: new Currency(\"Db\", \"Dobra\"),\n SYP: new Currency(\"ل.س\", \"Syrian Pound\"),\n SZL: new Currency(\"L\", \"Lilangeni\"),\n TJS: new Currency(\"ЅМ\", \"Somoni\"),\n TMT: new Currency(\"m\", \"Manat\"),\n TND: new Currency(\"د.ت\", \"Tunisian Dinar\"),\n TOP: new Currency(\"T$\", \"Pa’anga\"),\n TTD: new Currency(\"$\", \"Trinidad and Tobago Dollar\"),\n TWD: new Currency(\"$\", \"Taiwan Dollar\"),\n TZS: new Currency(\"Sh\", \"Tanzanian Shilling\"),\n UAH: new Currency(\"₴\", \"Hryvnia\"),\n UGX: new Currency(\"Sh\", \"Uganda Shilling\"),\n UYU: new Currency(\"$\", \"Peso Uruguayo\"),\n UZS: new Currency(\"\", \"Uzbekistan Sum\"),\n VEF: new Currency(\"Bs F\", \"Bolivar Fuerte\"),\n VND: new Currency(\"₫\", \"Dong\"),\n VUV: new Currency(\"Vt\", \"Vatu\"),\n WST: new Currency(\"T\", \"Tala\"),\n XAF: new Currency(\"₣\", \"CFA Franc BCEAO\"),\n XCD: new Currency(\"$\", \"East Caribbean Dollar\"),\n XPF: new Currency(\"₣\", \"CFP Franc\"),\n YER: new Currency(\"﷼\", \"Yemeni Rial\"),\n ZMW: new Currency(\"ZK\", \"Zambian Kwacha\"),\n ZWL: new Currency(\"$\", \"Zimbabwe Dollar\"),\n */\n };\n\n public static convertPrice(price: number, includeDecimalPlaces: boolean, to: string, from: string): number {\n const amount = CurrencyProvider._convertPrice(price, to, from);\n return includeDecimalPlaces ? CurrencyProvider.preciseRound(amount, 2) : Math.round(amount);\n }\n\n static async loadExchangeRates(currencyCode: string) {\n const currency = CurrencyProvider.currencies[currencyCode];\n if (!currency) {\n throw new Error(currencyCode + ' is not a supported currency code');\n }\n if (currency.rates) {\n return;\n }\n\n await API.ExchangeRate.fetchData(currencyCode).then((rates) => {\n currency.rates = rates;\n });\n\n FullPageBookingEngineElementEvents.reload(); // HMM\n }\n\n static getRatesForCurrencyCode(code: string) {\n return CurrencyProvider.currencies[code]?.rates;\n }\n\n static getCurrencyItems() {\n const currencies: { text: string; value: string }[] = Object.keys(CurrencyProvider.currencies).map((code) => ({\n text: code + ' - ' + CurrencyProvider.currencies[code].name,\n value: code,\n }));\n\n return currencies.sort((a, b) => a.value.localeCompare(b.value));\n }\n\n static getSymbol(currencyCode: string) {\n if (CurrencyProvider.labelOverrides[currencyCode]?.long) {\n return CurrencyProvider.labelOverrides[currencyCode]?.long;\n }\n\n return CurrencyProvider.currencies[currencyCode]?.symbol ?? '';\n }\n\n static getShortSymbol(currencyCode: string) {\n if (CurrencyProvider.labelOverrides[currencyCode]?.short) {\n return CurrencyProvider.labelOverrides[currencyCode]?.short;\n }\n\n return CurrencyProvider.currencies[currencyCode]?.shortSymbol ?? '';\n }\n\n private static preciseRound(num: number, decimals: number): number {\n const factor = Math.pow(10, decimals);\n const sign = num < 0 ? -1 : num > 0 ? 1 : 0;\n return Math.round(num * factor + (decimals > 0 ? 1 : 0) * (sign * (10 / Math.pow(100, decimals)))) / factor;\n }\n\n private static _convertPrice(price: number, to: string, from: string) {\n if (typeof price !== 'number') {\n price = parseFloat(price);\n }\n\n if (to === from) {\n return price;\n }\n\n if (!CurrencyProvider.currencies[from]?.rates) {\n this.loadExchangeRates(from);\n }\n\n return price * (CurrencyProvider.currencies[from]?.rates?.[to] ?? 1);\n }\n}\n"]}
1
+ {"version":3,"file":"CurrencyProvider.js","sourceRoot":"/","sources":["src/providers/CurrencyProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import API from '@/api/BookingAPI';\nimport { FullPageBookingEngineElementEvents } from '@/engines/FullPageBookingEngine/FullPageBookingEngineElementEvents';\nimport { Currency } from '@/models/Currency';\n\nexport default class CurrencyProvider {\n public static labelOverrides: { [code: string]: { short: string; long: string } } = {};\n private static currencies: { [code: string]: Currency } = {\n CAD: new Currency('CA$', 'Canadian Dollars', '$'),\n HKD: new Currency('HK$', 'Hong Kong Dollars', '$'),\n // ISK: new Currency(\"Kr\", \"Iceland Kronur\"),\n // PHP: new Currency(\"₱\", \"Philippine Pesos\"),\n // DKK: new Currency(\"kr\", \"Danish Kroner\"),\n // HUF: new Currency(\"Ft\", \"Hungarian Forint\"),\n // CZK: new Currency(\"Kč\", \"Czech Koruna\"),\n GBP: new Currency('£', 'British Pounds'),\n // RON: new Currency(\"L\", \"Romania New Lei\"),\n // SEK: new Currency(\"kr\", \"Swedish Kronor\"),\n IDR: new Currency('Rp', 'Indonesian Rupiahs'),\n INR: new Currency('₹', 'Indian Rupees'),\n // BRL: new Currency(\"R$\", \"Brazilian Reals\"),\n // RUB: new Currency(\"р.\", \"Russian Rubles\"),\n // HRK: new Currency(\"Kn\", \"Croatian Kuna\"),\n JPY: new Currency('¥', 'Japanese Yen'),\n // THB: new Currency(\"฿\", \"Thai Baht\"),\n // CHF: new Currency(\"₣\", \"Swiss Francs\"),\n EUR: new Currency('€', 'Euros'),\n // BGN: new Currency(\"Лв\", \"Bulgarian Leva\"),\n // TRY: new Currency(\"₺\", \"Turkish Lira\"),\n CNY: new Currency('¥', 'Chinese Yuan'),\n // NOK: new Currency(\"kr\", \"Norwegian Kroner\"),\n NZD: new Currency('NZ$', 'New Zealand Dollars', '$'),\n // ZAR: new Currency(\"R\", \"South African Rand\"),\n USD: new Currency('$', 'US Dollars'),\n // MXN: new Currency(\"MX$\", \"Mexican Pesos\", \"$\"),\n SGD: new Currency('S$', 'Singapore Dollars', '$'),\n AUD: new Currency('A$', 'Australian Dollars', '$'),\n // ILS: new Currency(\"₪\", \"New Israeli Shekels\"),\n // KRW: new Currency(\"₩\", \"South Korean Won\"),\n // PLN: new Currency(\"zł\", \"Polish Złoty\"),\n FJD: new Currency('FJ$', 'Fiji Dollar', '$'),\n\n /*\n * The following currencies are currently excluded as the exchange rate API doesn't return them\n AED: new Currency(\"د.إ\", \"UAE Dirham\"),\n AFN: new Currency(\"Af\", \"Afghani\"),\n ALL: new Currency(\"L\", \"Lek\"),\n AMD: new Currency(\"Դ\", \"Armenian Dram\"),\n AOA: new Currency(\"Kz\", \"Kwanza\"),\n ARS: new Currency(\"$\", \"Argentine Peso\"),\n AWG: new Currency(\"ƒ\", \"Aruban Guilder/Florin\"),\n AZN: new Currency(\"ман\", \"Azerbaijanian Manat\"),\n BAM: new Currency(\"КМ\", \"Konvertibilna Marka\"),\n BBD: new Currency(\"$\", \"Barbados Dollar\"),\n BDT: new Currency(\"৳\", \"Taka\"),\n BHD: new Currency(\"ب.د\", \"Bahraini Dinar\"),\n BIF: new Currency(\"₣\", \"Burundi Franc\"),\n BMD: new Currency(\"$\", \"Bermudian Dollar\"),\n BND: new Currency(\"$\", \"Brunei Dollar\"),\n BOB: new Currency(\"Bs.\", \"Boliviano\"),\n BSD: new Currency(\"$\", \"Bahamian Dollar\"),\n BTN: new Currency(\"\", \"Ngultrum\"),\n BWP: new Currency(\"P\", \"Pula\"),\n BYN: new Currency(\"Br\", \"Belarusian Ruble\"),\n BZD: new Currency(\"$\", \"Belize Dollar\"),\n CDF: new Currency(\"₣\", \"Congolese Franc\"),\n CLP: new Currency(\"$\", \"Chilean Peso\"),\n COP: new Currency(\"$\", \"Colombian Peso\"),\n CRC: new Currency(\"₡\", \"Costa Rican Colon\"),\n CUP: new Currency(\"$\", \"Cuban Peso\"),\n CVE: new Currency(\"$\", \"Cape Verde Escudo\"),\n DJF: new Currency(\"₣\", \"Djibouti Franc\"),\n DOP: new Currency(\"$\", \"Dominican Peso\"),\n DZD: new Currency(\"د.ج\", \"Algerian Dinar\"),\n EGP: new Currency(\"£\", \"Egyptian Pound\"),\n ERN: new Currency(\"Nfk\", \"Nakfa\"),\n ETB: new Currency(\"\", \"Ethiopian Birr\"),\n FKP: new Currency(\"£\", \"Falkland Islands Pound\"),\n GEL: new Currency(\"ლ\", \"Lari\"),\n GHS: new Currency(\"₵\", \"Cedi\"),\n GIP: new Currency(\"£\", \"Gibraltar Pound\"),\n GMD: new Currency(\"D\", \"Dalasi\"),\n GNF: new Currency(\"₣\", \"Guinea Franc\"),\n GTQ: new Currency(\"Q\", \"Quetzal\"),\n GYD: new Currency(\"$\", \"Guyana Dollar\"),\n HNL: new Currency(\"L\", \"Lempira\"),\n HTG: new Currency(\"G\", \"Gourde\"),\n IQD: new Currency(\"ع.د\", \"Iraqi Dinar\"),\n IRR: new Currency(\"﷼\", \"Iranian Rial\"),\n JMD: new Currency(\"$\", \"Jamaican Dollar\"),\n JOD: new Currency(\"د.ا\", \"Jordanian Dinar\"),\n KES: new Currency(\"Sh\", \"Kenyan Shilling\"),\n KGS: new Currency(\"\", \"Som\"),\n KHR: new Currency(\"៛\", \"Riel\"),\n KPW: new Currency(\"₩\", \"North Korean Won\"),\n KWD: new Currency(\"د.ك\", \"Kuwaiti Dinar\"),\n KYD: new Currency(\"$\", \"Cayman Islands Dollar\"),\n KZT: new Currency(\"〒\", \"Tenge\"),\n LAK: new Currency(\"₭\", \"Kip\"),\n LBP: new Currency(\"ل.ل\", \"Lebanese Pound\"),\n LKR: new Currency(\"Rs\", \"Sri Lanka Rupee\"),\n LRD: new Currency(\"$\", \"Liberian Dollar\"),\n LSL: new Currency(\"L\", \"Loti\"),\n LYD: new Currency(\"ل.د\", \"Libyan Dinar\"),\n MAD: new Currency(\"د.م.\", \"Moroccan Dirham\"),\n MDL: new Currency(\"L\", \"Moldovan Leu\"),\n MGA: new Currency(\"\", \"Malagasy Ariary\"),\n MKD: new Currency(\"ден\", \"Denar\"),\n MMK: new Currency(\"K\", \"Kyat\"),\n MNT: new Currency(\"₮\", \"Tugrik\"),\n MOP: new Currency(\"P\", \"Pataca\"),\n MRU: new Currency(\"UM\", \"Ouguiya\"),\n MUR: new Currency(\"₨\", \"Mauritius Rupee\"),\n MVR: new Currency(\"ރ.\", \"Rufiyaa\"),\n MWK: new Currency(\"MK\", \"Kwacha\"),\n MYR: new Currency(\"RM\", \"Malaysian Ringgit\"),\n MZN: new Currency(\"MTn\", \"Metical\"),\n NAD: new Currency(\"$\", \"Namibia Dollar\"),\n NGN: new Currency(\"₦\", \"Naira\"),\n NIO: new Currency(\"C$\", \"Cordoba Oro\"),\n NPR: new Currency(\"₨\", \"Nepalese Rupee\"),\n OMR: new Currency(\"ر.ع.\", \"Rial Omani\"),\n PAB: new Currency(\"B/.\", \"Balboa\"),\n PEN: new Currency(\"S/.\", \"Nuevo Sol\"),\n PGK: new Currency(\"K\", \"Kina\"),\n PKR: new Currency(\"₨\", \"Pakistan Rupee\"),\n PYG: new Currency(\"₲\", \"Guarani\"),\n QAR: new Currency(\"ر.ق\", \"Qatari Rial\"),\n RSD: new Currency(\"din\", \"Serbian Dinar\"),\n RWF: new Currency(\"₣\", \"Rwanda Franc\"),\n SAR: new Currency(\"ر.س\", \"Saudi Riyal\"),\n SBD: new Currency(\"$\", \"Solomon Islands Dollar\"),\n SCR: new Currency(\"₨\", \"Seychelles Rupee\"),\n SDG: new Currency(\"£\", \"Sudanese Pound\"),\n SHP: new Currency(\"£\", \"Saint Helena Pound\"),\n SLL: new Currency(\"Le\", \"Leone\"),\n SOS: new Currency(\"Sh\", \"Somali Shilling\"),\n SRD: new Currency(\"$\", \"Suriname Dollar\"),\n STN: new Currency(\"Db\", \"Dobra\"),\n SYP: new Currency(\"ل.س\", \"Syrian Pound\"),\n SZL: new Currency(\"L\", \"Lilangeni\"),\n TJS: new Currency(\"ЅМ\", \"Somoni\"),\n TMT: new Currency(\"m\", \"Manat\"),\n TND: new Currency(\"د.ت\", \"Tunisian Dinar\"),\n TOP: new Currency(\"T$\", \"Pa’anga\"),\n TTD: new Currency(\"$\", \"Trinidad and Tobago Dollar\"),\n TWD: new Currency(\"$\", \"Taiwan Dollar\"),\n TZS: new Currency(\"Sh\", \"Tanzanian Shilling\"),\n UAH: new Currency(\"₴\", \"Hryvnia\"),\n UGX: new Currency(\"Sh\", \"Uganda Shilling\"),\n UYU: new Currency(\"$\", \"Peso Uruguayo\"),\n UZS: new Currency(\"\", \"Uzbekistan Sum\"),\n VEF: new Currency(\"Bs F\", \"Bolivar Fuerte\"),\n VND: new Currency(\"₫\", \"Dong\"),\n VUV: new Currency(\"Vt\", \"Vatu\"),\n WST: new Currency(\"T\", \"Tala\"),\n XAF: new Currency(\"₣\", \"CFA Franc BCEAO\"),\n XCD: new Currency(\"$\", \"East Caribbean Dollar\"),\n XPF: new Currency(\"₣\", \"CFP Franc\"),\n YER: new Currency(\"﷼\", \"Yemeni Rial\"),\n ZMW: new Currency(\"ZK\", \"Zambian Kwacha\"),\n ZWL: new Currency(\"$\", \"Zimbabwe Dollar\"),\n */\n };\n\n public static convertPrice(price: number, includeDecimalPlaces: boolean, to: string, from: string): number {\n const amount = CurrencyProvider._convertPrice(price, to, from);\n return includeDecimalPlaces ? CurrencyProvider.preciseRound(amount, 2) : Math.round(amount);\n }\n\n static async loadExchangeRates(currencyCode: string) {\n const currency = CurrencyProvider.currencies[currencyCode];\n if (!currency) {\n throw new Error(currencyCode + ' is not a supported currency code');\n }\n if (currency.rates) {\n return;\n }\n\n await API.ExchangeRate.fetchData(currencyCode).then((rates) => {\n currency.rates = rates;\n });\n\n FullPageBookingEngineElementEvents.reload(); // HMM\n }\n\n static getRatesForCurrencyCode(code: string) {\n return CurrencyProvider.currencies[code]?.rates;\n }\n\n static getCurrencyItems() {\n const currencies: { text: string; value: string }[] = Object.keys(CurrencyProvider.currencies).map((code) => ({\n text: code + ' - ' + CurrencyProvider.currencies[code].name,\n value: code,\n }));\n\n return currencies.sort((a, b) => a.value.localeCompare(b.value));\n }\n\n static getSymbol(currencyCode: string) {\n if (CurrencyProvider.labelOverrides[currencyCode]?.long) {\n return CurrencyProvider.labelOverrides[currencyCode]?.long;\n }\n\n return CurrencyProvider.currencies[currencyCode]?.symbol ?? '';\n }\n\n static getShortSymbol(currencyCode: string) {\n if (CurrencyProvider.labelOverrides[currencyCode]?.short) {\n return CurrencyProvider.labelOverrides[currencyCode]?.short;\n }\n\n return CurrencyProvider.currencies[currencyCode]?.shortSymbol ?? '';\n }\n\n private static preciseRound(num: number, decimals: number): number {\n const factor = Math.pow(10, decimals);\n const sign = num < 0 ? -1 : num > 0 ? 1 : 0;\n return Math.round(num * factor + (decimals > 0 ? 1 : 0) * (sign * (10 / Math.pow(100, decimals)))) / factor;\n }\n\n private static _convertPrice(price: number, to: string, from: string) {\n if (typeof price !== 'number') {\n price = parseFloat(price);\n }\n\n if (to === from) {\n return price;\n }\n\n if (!CurrencyProvider.currencies[from]?.rates) {\n this.loadExchangeRates(from);\n }\n\n return price * (CurrencyProvider.currencies[from]?.rates?.[to] ?? 1);\n }\n}\n"]}
@@ -268,6 +268,7 @@ export declare const Translation: {
268
268
  MoreDetails: string;
269
269
  ExcludingTaxes: string;
270
270
  Sleeps: string;
271
+ PetFriendly: string;
271
272
  RateTypeFilterLabel: string;
272
273
  ChooseRoomBelow: string;
273
274
  EditThisRoom: string;
@@ -271,6 +271,7 @@ exports.Translation = {
271
271
  MoreDetails: 'Step.Room.MoreDetails',
272
272
  ExcludingTaxes: 'Step.Room.ExcludingTaxes',
273
273
  Sleeps: 'Step.Room.Sleeps',
274
+ PetFriendly: 'Step.Room.PetFriendly',
274
275
  RateTypeFilterLabel: 'Step.Room.RateTypeFilterLabel',
275
276
  ChooseRoomBelow: 'Step.Room.ChooseRoomBelow',
276
277
  EditThisRoom: 'Step.Room.EditThisRoom',