{"version":3,"sources":["webpack:///./src/components/copy.tsx","webpack:///./src/components/product-card-grid.tsx","webpack:///./src/components/image.tsx","webpack:///./src/components/seo.tsx","webpack:///./src/components/product-card.tsx","webpack:///./src/app/search-results/qsm-store/context.tsx","webpack:///./src/components/intro.tsx","webpack:///./src/app/search-results/qsm-store/reducer.ts","webpack:///./node_modules/lodash/sumBy.js","webpack:///./src/components/section.tsx","webpack:///./src/components/hero.tsx","webpack:///./src/components/pricing/index.tsx","webpack:///./src/components/rating.tsx"],"names":["Copy","_ref","title","description","centered","React","createElement","className","buildClassName","dangerouslySetInnerHTML","__html","ProductCardGrid","columns","itemsComponent","actionsComponent","Image","type","count","href","src","alt","onLinkClick","children","Link","internal","data-count","onClick","Seo","seoTitle","seoDescription","seoKeywords","language","Helmet","htmlAttributes","lang","substring","meta","name","content","property","concat","getImageType","cardType","ProductCard","tag","locationNames","badges","rating","price","imageSrc","imageAlt","linkUrl","linkText","hasFlight","hasTransfer","showAllIcons","isExcursion","isNotAvailable","onRequest","minStay","isSearchResult","useOriginalImage","productType","handleClick","event","preventDefault","t","useI18next","setImageParameters","mode","width","map","locationName","index","key","Icon","badge","Rating","Pricing","Object","assign","isTotalPrice","prefix","suffix","_isNil","_isEmpty","Store","createContext","displayName","useQSMStore","useContext","QSMStoreProvider","initialState","reducer","state","dispatch","useReducer","location","useLocation","useEffect","params","URLSearchParams","search","country","getNumberFromParams","region","rooms","getRoomsFromParams","from","getDateFromParams","to","qsmState","setFlexSearch","flexSearch","setFlexibleRange","flexibleRange","setCountryId","setRegionId","setRooms","duration","durationTo","Date","UTC","getFullYear","getMonth","getDate","setDateRange","fromDate","toDate","now","durationFrom","setLoaded","Provider","value","Intro","setProductId","productId","countryId","regionId","setFlight","flight","dateRange","setBookingRooms","bookingRooms","setBookingPackage","bookingPackage","loaded","setIsLoading","isLoading","initialQSMState","undefined","adults","childAges","isVisible","getInitialDateRange","qsmReducer","action","runReducer","_flexSearch","product","baseIteratee","baseSum","module","exports","array","iteratee","length","Section","props","_props$id","id","extraClassName","Hero","titlePrefix","_compact","join","mapNaNToUndefined","isNaN","_prefix","_suffix","defaultPrice","promoPrice","formerPrice","currentPrice","getTotalAmountOfAdults","_sumBy","getTotalAmountOfChildren","formatter","format","getFlightPriceDifference","_qsmState$bookingPack","_qsmState$bookingPack2","_qsmState$bookingPack3","_qsmState$bookingPack4","_qsmState$flight$outw","_qsmState$flight$retu","originalFlightsPrice","desiredFlightsPrice","outwardFlights","find","x","isSelected","returnFlights","outward","return","getRoomPriceDifference","_qsmState$bookingPack5","activeOption","options","originalOptionsPrice","desiredOptionsPrice","_room$options","_originalOption$price","_room$options2","_originalOption$price2","room","originalOption","desiredOption","accommodationCode","regimeCode","numberOfAdults","numberOfChildren","clampedRating","_clamp","_range","Math","floor","i"],"mappings":"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","file":"23434e75e8f7c6bd80ab01d220add6041df3f668-1bb6ae45f8417b4e8993.js","sourcesContent":["import React from \"react\";\nimport { buildClassName } from \"../utils\";\n\ninterface CopyProps {\n title: string;\n description?: string;\n centered?: boolean;\n}\n\nconst Copy: React.FC = ({ title, description, centered }) => {\n return (\n
\n

{title}

\n {description && (\n
\n )}\n
\n );\n};\n\nexport default Copy;\n","import React from \"react\";\nimport { buildClassName } from \"../utils\";\n\ninterface ProductCardGridProps {\n columns?: number;\n itemsComponent?: React.ReactElement;\n actionsComponent?: React.ReactElement;\n}\n\nconst ProductCardGrid: React.FC = ({\n columns,\n itemsComponent,\n actionsComponent,\n}) => {\n const className = buildClassName([\"productcard-grid\", columns && `productcard-grid--${columns}`]);\n return (\n
\n {itemsComponent &&
{itemsComponent}
}\n {actionsComponent &&
{actionsComponent}
}\n
\n );\n};\n\nexport default ProductCardGrid;\n","import React from \"react\";\nimport { buildClassName } from \"../utils\";\nimport Link from \"./link\";\n\ninterface ImageProps {\n type?: \"golden-ratio\" | \"16-9\" | \"9-16\" | \"carousel-highlight\";\n count?: number;\n href?: string;\n title?: string;\n src?: string;\n alt?: string;\n onLinkClick?: React.MouseEventHandler;\n}\n\nconst Image: React.FC = ({\n type,\n count,\n href,\n title,\n src,\n alt,\n onLinkClick,\n children,\n}) => (\n
\n \n {alt}\n {children}\n \n
\n);\n\nexport default Image;\n","import React from \"react\";\nimport { Helmet } from \"react-helmet\";\n\ninterface SEOProps {\n title?: string;\n seoTitle?: string;\n seoDescription?: string;\n seoKeywords?: string;\n language?: string;\n}\n\nconst Seo: React.FC = ({ title, seoTitle, seoDescription, seoKeywords, language }) => {\n return (\n \n );\n};\n\nexport default Seo;\n","import { isEmpty, isNil } from \"lodash\";\nimport React from \"react\";\nimport { buildClassName, setImageParameters } from \"../utils\";\nimport Icon from \"./icon\";\nimport Image from \"./image\";\nimport Link from \"./link\";\nimport Pricing, { Price } from \"./pricing\";\nimport Rating from \"./rating\";\nimport { useI18next } from \"gatsby-plugin-react-i18next\";\n\ninterface ProductCardProps {\n cardType?: \"skyscraper\" | \"horizontal\" | \"landscape\" | \"carousel-highlight\" | \"hotel\" | \"modal\";\n tag?: string;\n locationNames?: string[];\n title: string;\n description?: string;\n badges?: string[];\n rating?: number;\n price?: Price;\n imageSrc?: string;\n imageAlt?: string;\n linkUrl?: string;\n linkText?: string;\n hasFlight?: boolean;\n hasTransfer?: boolean;\n showAllIcons?: boolean;\n isExcursion?: boolean;\n isNotAvailable?: boolean;\n onRequest?: boolean;\n minStay?: string;\n isSearchResult?: boolean;\n useOriginalImage?: boolean;\n productType?: number;\n onClick?: () => void;\n}\n\nconst getImageType = (\n cardType?: \"skyscraper\" | \"horizontal\" | \"landscape\" | \"carousel-highlight\" | \"hotel\" | \"modal\"\n) => {\n switch (cardType) {\n case \"horizontal\":\n return undefined;\n case \"skyscraper\":\n return \"9-16\";\n case \"landscape\":\n return \"carousel-highlight\";\n case \"hotel\":\n default:\n return \"golden-ratio\";\n }\n};\n\nconst ProductCard: React.FC = ({\n cardType,\n tag,\n locationNames,\n title,\n description,\n badges,\n rating,\n price,\n imageSrc,\n imageAlt,\n linkUrl,\n linkText,\n hasFlight,\n hasTransfer,\n showAllIcons,\n isExcursion,\n isNotAvailable,\n onRequest,\n minStay,\n isSearchResult,\n useOriginalImage,\n onClick,\n children,\n productType,\n}) => {\n const handleClick: React.MouseEventHandler = (event) => {\n if (onClick) {\n event.preventDefault();\n onClick();\n }\n };\n const { t } = useI18next();\n\n return (\n
\n
\n {imageSrc && (\n \n {tag && {tag}}\n \n )}\n
\n
\n {locationNames && (\n
\n {locationNames.map((locationName, index) => (\n
\n \n {locationName}\n
\n ))}\n
\n )}\n {badges && (\n
\n {badges.map((badge, index) => (\n
\n {badge}\n
\n ))}\n
\n )}\n {rating && }\n

\n \n {title}\n \n

\n {description && (\n
\n )}\n {price && (\n
\n
\n {((!isExcursion && showAllIcons) || hasFlight) && (\n
\n \n
\n )}\n {((!isExcursion && showAllIcons) || hasTransfer) && (\n
\n \n
\n )}\n {!isExcursion && !isNotAvailable && (\n
\n \n
\n )}\n
\n
\n )}\n
\n {price && !isNotAvailable && (!onRequest || (onRequest && productType != 1)) && (\n \n )}\n {isNotAvailable && (\n \n )}\n {(!isNil(linkUrl) || !isNil(onClick)) && !isEmpty(linkText) && (\n \n {linkText}\n \n )}\n
\n {children}\n
\n
\n );\n};\n\nexport default ProductCard;\n","import React, { useEffect, useContext, useReducer } from \"react\";\nimport { useLocation } from \"@reach/router\";\nimport { getDateFromParams, getNumberFromParams, getRoomsFromParams } from \"../qsm/utils\";\nimport {\n Action,\n setCountryId,\n setDateRange,\n setRegionId,\n setRooms,\n QSMState,\n setLoaded,\n setFlexSearch,\n setFlexibleRange,\n} from \"./reducer\";\n\ninterface ProviderProps {\n initialState: QSMState;\n duration?: number | null;\n reducer: (state: QSMState, action: Action) => QSMState;\n}\n\nconst Store = React.createContext]>>([]);\nStore.displayName = \"QSMStore\";\n\nexport const useQSMStore = () => useContext(Store)!;\n\nexport const QSMStoreProvider: React.FC = ({ children, initialState, reducer }) => {\n const [state, dispatch] = useReducer(reducer, initialState);\n const location = useLocation();\n\n useEffect(() => {\n const params = new URLSearchParams(location.search);\n const country = getNumberFromParams(params, \"country\");\n const region = getNumberFromParams(params, \"region\");\n const rooms = getRoomsFromParams(params, \"rooms\");\n const from = getDateFromParams(params, \"from\");\n const to = getDateFromParams(params, \"to\");\n\n const qsmState = location.state as QSMState;\n if (qsmState) {\n dispatch(setFlexSearch(qsmState.flexSearch));\n dispatch(setFlexibleRange(qsmState.flexibleRange));\n }\n\n if (country) {\n dispatch(setCountryId(country));\n }\n\n if (region) {\n dispatch(setRegionId(region));\n }\n\n if (rooms) {\n dispatch(setRooms(rooms));\n }\n\n if (from && state.duration) {\n const durationTo = new Date(\n Date.UTC(from.getFullYear(), from.getMonth(), from.getDate() + state.duration)\n );\n\n dispatch(setDateRange({ fromDate: from, toDate: durationTo }));\n } else if (from && to) {\n dispatch(setDateRange({ fromDate: from, toDate: to }));\n } else if (state.duration) {\n const now = new Date();\n\n const durationFrom = new Date(Date.UTC(now.getFullYear(), now.getMonth() + 3, now.getDate()));\n const durationTo = new Date(\n Date.UTC(\n durationFrom.getFullYear(),\n durationFrom.getMonth(),\n durationFrom.getDate() + state.duration\n )\n );\n\n dispatch(setDateRange({ fromDate: durationFrom, toDate: durationTo }));\n }\n\n dispatch(setLoaded(true));\n }, [location]);\n\n return {children};\n};\n","import React from \"react\";\n\ninterface IntroProps {\n title?: string;\n}\n\nconst Intro: React.FC = ({ title, children }) => (\n
\n
\n

{title}

\n
\n
{children}
\n
\n);\n\nexport default Intro;\n","import { BookingPackage, BookingPackageRoom } from \"@qite/tide-client/build/types\";\nimport { Maybe, TideItemForHotel, TideItemForRoundtrip } from \"../../../types\";\nimport { DateRange } from \"../qsm/date-picker\";\nimport { Room } from \"../qsm/room-picker\";\nimport { flightPair } from \"../../../components/fly-in/fly-in-flights\";\n\nexport interface QSMState {\n product?: TideItemForHotel | TideItemForRoundtrip;\n productId?: string;\n countryId?: number;\n regionId?: number;\n rooms: Room[];\n flight?: flightPair;\n dateRange: DateRange;\n bookingRooms?: BookingPackageRoom[];\n bookingPackage?: BookingPackage;\n loaded?: boolean;\n isLoading?: boolean;\n duration?: number;\n flexSearch: boolean;\n flexibleRange?: number;\n}\n\nconst actionPrefix = \"APP/QSM\";\n\nexport const SET_PRODUCT = `${actionPrefix}/SET_PRODUCT`;\nexport const setProduct = (product?: TideItemForHotel) => ({\n type: SET_PRODUCT,\n product,\n});\n\nexport const SET_PRODUCT_ID = `${actionPrefix}/SET_PRODUCT_ID`;\nexport const setProductId = (productId?: string) => ({\n type: SET_PRODUCT_ID,\n productId,\n});\n\nexport const SET_COUNTRY_ID = `${actionPrefix}/SET_COUNTRY_ID`;\nexport const setCountryId = (countryId?: number) => ({\n type: SET_COUNTRY_ID,\n countryId,\n});\n\nexport const SET_REGION_ID = `${actionPrefix}/SET_REGION_ID`;\nexport const setRegionId = (regionId?: number) => ({\n type: SET_REGION_ID,\n regionId,\n});\n\nexport const SET_ROOMS = `${actionPrefix}/SET_ROOMS`;\nexport const setRooms = (rooms: Room[]) => ({\n type: SET_ROOMS,\n rooms,\n});\n\nexport const SET_FLIGHT = `${actionPrefix}/SET_FLIGHT`;\nexport const setFlight = (flight?: flightPair) => ({\n type: SET_FLIGHT,\n flight,\n});\n\nexport const SET_DATE_RANGE = `${actionPrefix}/SET_DATE_RANGE`;\nexport const setDateRange = (dateRange: DateRange) => ({\n type: SET_DATE_RANGE,\n dateRange,\n});\n\nexport const SET_BOOKING_ROOMS = `${actionPrefix}/SET_BOOKING_ROOMS`;\nexport const setBookingRooms = (bookingRooms?: BookingPackageRoom[]) => ({\n type: SET_BOOKING_ROOMS,\n bookingRooms,\n});\n\nexport const SET_BOOKING_PACKAGE = `${actionPrefix}/SET_BOOKING_PACKAGE`;\nexport const setBookingPackage = (bookingPackage?: BookingPackage) => ({\n type: SET_BOOKING_PACKAGE,\n bookingPackage,\n});\n\nexport const SET_LOADED = `${actionPrefix}/SET_LOADED`;\nexport const setLoaded = (loaded?: boolean) => ({\n type: SET_LOADED,\n loaded,\n});\n\nexport const SET_IS_LOADING = `${actionPrefix}/SET_IS_LOADING`;\nexport const setIsLoading = (isLoading?: boolean) => ({\n type: SET_IS_LOADING,\n isLoading,\n});\n\nexport const SET_DURATION = `${actionPrefix}/SET_DURATION`;\nexport const setDuration = (duration?: number) => ({\n type: SET_DURATION,\n duration,\n});\n\nexport const SET_FLEXSEARCH = `${actionPrefix}/SET_FLEXSEARCH`;\nexport const setFlexSearch = (flexSearch?: boolean) => ({\n type: SET_FLEXSEARCH,\n flexSearch,\n});\n\nexport const SET_FLEXIBLE_RANGE = `${actionPrefix}/SET_FLEXIBLE_RANGE`;\nexport const setFlexibleRange = (flexibleRange?: number) => ({\n type: SET_FLEXIBLE_RANGE,\n flexibleRange,\n});\n\nexport type Action =\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType;\n\nfunction getInitialRooms(): Room[] {\n return [\n {\n adults: 2,\n children: 0,\n childAges: [],\n isVisible: false,\n },\n ];\n}\n\nfunction getInitialDateRange(): DateRange {\n const now = new Date();\n\n const from = new Date(Date.UTC(now.getFullYear(), now.getMonth() + 3, now.getDate()));\n const to = new Date(Date.UTC(from.getFullYear(), from.getMonth(), from.getDate() + 7));\n\n return {\n fromDate: from,\n toDate: to,\n };\n}\n\nexport const initialQSMState: QSMState = {\n countryId: undefined,\n regionId: undefined,\n rooms: getInitialRooms(),\n dateRange: getInitialDateRange(),\n flexSearch: false,\n};\n\nconst runReducer = (state: QSMState, action: Action): QSMState => {\n switch (action.type) {\n case SET_PRODUCT:\n return {\n ...state,\n product: (action as ReturnType).product,\n };\n case SET_PRODUCT_ID:\n return {\n ...state,\n productId: (action as ReturnType).productId,\n };\n case SET_COUNTRY_ID:\n return {\n ...state,\n countryId: (action as ReturnType).countryId,\n regionId: undefined,\n };\n case SET_REGION_ID:\n return {\n ...state,\n regionId: (action as ReturnType).regionId,\n countryId: undefined,\n };\n case SET_ROOMS:\n return { ...state, rooms: (action as ReturnType).rooms };\n case SET_FLIGHT:\n return { ...state, flight: (action as ReturnType).flight };\n case SET_DATE_RANGE:\n return { ...state, dateRange: (action as ReturnType).dateRange };\n case SET_BOOKING_ROOMS:\n return {\n ...state,\n bookingRooms: (action as ReturnType).bookingRooms,\n };\n case SET_BOOKING_PACKAGE:\n return {\n ...state,\n bookingPackage: (action as ReturnType).bookingPackage,\n };\n case SET_LOADED:\n return {\n ...state,\n loaded: (action as ReturnType).loaded,\n };\n case SET_IS_LOADING:\n return {\n ...state,\n isLoading: (action as ReturnType).isLoading,\n };\n case SET_DURATION:\n return {\n ...state,\n duration: (action as ReturnType).duration,\n };\n case SET_FLEXSEARCH:\n return {\n ...state,\n flexSearch: (action as ReturnType).flexSearch ?? false,\n };\n case SET_FLEXIBLE_RANGE:\n return {\n ...state,\n flexibleRange: (action as ReturnType).flexibleRange,\n };\n default:\n return state;\n }\n};\n\nexport const qsmReducer = (state: QSMState = initialQSMState, action: Action): QSMState => {\n const newState = runReducer(state, action);\n\n /*\n console.groupCollapsed(action.type);\n console.info(\"action:\", action);\n console.info(\"new state:\", newState);\n console.info(\"old state:\", state);\n console.groupEnd();\n */\n\n return newState;\n};\n","var baseIteratee = require('./_baseIteratee'),\n baseSum = require('./_baseSum');\n\n/**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\nfunction sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, baseIteratee(iteratee, 2))\n : 0;\n}\n\nmodule.exports = sumBy;\n","import React from \"react\";\nimport { buildClassName } from \"../utils\";\n\ninterface SectionProps {\n id?: string;\n extraClassName?: string;\n}\n\nconst Section: React.FC = (props) => {\n return (\n \n {props.children}\n \n );\n};\n\nexport default Section;\n","import React from \"react\";\nimport { compact, isEmpty } from \"lodash\";\nimport { buildClassName, setImageParameters } from \"../utils\";\n\ninterface HeroProps {\n type?: \"qsm\" | \"product\" | \"compact\";\n imageSrc?: string;\n title?: string;\n titlePrefix?: string;\n}\n\nconst Hero: React.FC = ({ type, imageSrc, title, titlePrefix, children }) => (\n
\n {imageSrc && (\n \n )}\n
\n

\n {!isEmpty(titlePrefix) && {titlePrefix}}\n {title}\n

\n {children}\n
\n
\n);\n\nexport default Hero;\n","import { sumBy } from \"lodash\";\nimport React from \"react\";\nimport { useQSMStore } from \"../../app/search-results/qsm-store/context\";\nimport { formatter } from \"../../utils\";\nimport { useI18next } from \"gatsby-plugin-react-i18next\";\n\nexport interface Price {\n defaultPrice?: number;\n promoPrice?: number;\n}\n\ninterface PricingProps extends Price {\n isTotalPrice?: boolean;\n prefix?: string;\n suffix?: string;\n}\n\nconst mapNaNToUndefined = (price?: number) => (price && !isNaN(price) ? price : undefined);\n\nconst Pricing: React.FC = ({\n isTotalPrice,\n defaultPrice,\n promoPrice,\n prefix,\n suffix,\n}) => {\n const { t } = useI18next();\n prefix = prefix ?? t(\"STARTING_FROM_SHORT\");\n suffix = suffix ?? t(\"PER_PERSON_SHORT\");\n const [qsmState] = useQSMStore();\n const formerPrice = mapNaNToUndefined(promoPrice && defaultPrice ? defaultPrice : undefined);\n const currentPrice = mapNaNToUndefined(promoPrice ?? defaultPrice);\n\n const getFlightPriceDifference = () => {\n if (qsmState?.bookingPackage && qsmState.flight) {\n let originalFlightsPrice = 0;\n let desiredFlightsPrice = 0;\n\n originalFlightsPrice +=\n qsmState?.bookingPackage.outwardFlights.find((x) => x.isSelected)?.price ?? 0;\n originalFlightsPrice +=\n qsmState?.bookingPackage.returnFlights.find((x) => x.isSelected)?.price ?? 0;\n\n desiredFlightsPrice += qsmState.flight.outward.price ?? 0;\n desiredFlightsPrice += qsmState.flight.return.price ?? 0;\n\n if (desiredFlightsPrice && originalFlightsPrice) {\n return desiredFlightsPrice - originalFlightsPrice;\n }\n }\n return 0;\n };\n\n const getRoomPriceDifference = () => {\n const activeOption = qsmState?.bookingPackage?.options.find((x) => x.isSelected);\n if (activeOption?.rooms && qsmState?.rooms) {\n let originalOptionsPrice = 0;\n let desiredOptionsPrice = 0;\n for (let index = 0; index < qsmState?.rooms.length; index++) {\n const room = activeOption.rooms[index];\n\n const originalOption = room?.options?.find((x) => x.isSelected);\n originalOptionsPrice += originalOption?.price ?? 0;\n\n const desiredOption = room?.options?.find(\n (x) =>\n x.accommodationCode == qsmState?.rooms[index].accommodationCode &&\n x.regimeCode == qsmState?.rooms[index].regimeCode\n );\n desiredOptionsPrice += desiredOption ? desiredOption.price : originalOption?.price ?? 0;\n }\n if (desiredOptionsPrice && originalOptionsPrice) {\n return desiredOptionsPrice - originalOptionsPrice;\n }\n }\n return 0;\n };\n\n const getTotalPriceDifference = () => {\n const flightPriceDifference = getFlightPriceDifference();\n const roomPriceDifference = getRoomPriceDifference();\n\n return flightPriceDifference + roomPriceDifference;\n };\n\n const getTotalAmountOfAdults = () => {\n return sumBy(qsmState?.rooms, \"adults\");\n };\n\n const getTotalAmountOfChildren = () => {\n return sumBy(qsmState?.rooms, \"children\");\n };\n\n return currentPrice ? (\n
\n
\n {/* {isTotalPrice && (\n \n {translations.SEARCH_RESULTS.PRODUCT_CARD.TOTAL_PRICE}\n \n )} */}\n {!isTotalPrice && {prefix}}\n {formerPrice && (\n
{formatter.format(formerPrice)}
\n )}\n
\n
\n {formatter.format(currentPrice + getTotalPriceDifference())}\n
\n {!isTotalPrice && {suffix}}\n
\n {isTotalPrice && (\n
\n {getTotalAmountOfChildren() > 0\n ? t(\"PRICE_FOR_X_ADULTS_AND_Y_CHILDREN\", {\n numberOfAdults: getTotalAmountOfAdults(),\n numberOfChildren: getTotalAmountOfChildren(),\n })\n : t(\"PRICE_FOR_X_ADULTS\", { numberOfAdults: getTotalAmountOfAdults() })}\n
\n )}\n
\n ) : null;\n};\n\nexport default Pricing;\n","import React from \"react\";\nimport { clamp, range } from \"lodash\";\nimport Icon from \"./icon\";\n\ninterface RatingProps {\n rating: number;\n}\n\nconst Rating: React.FC = ({ rating }) => {\n const clampedRating = clamp(rating, 0, 5);\n return (\n
\n {range(0, Math.floor(clampedRating)).map((i) => (\n \n ))}\n {clampedRating % 1 > 0 && }\n
\n );\n};\n\nexport default Rating;\n"],"sourceRoot":""}