{"version":3,"sources":["webpack:///./app/javascript/components/vof/hotels/featured/HotelsCarousel.jsx","webpack:///./app/javascript/components/voc/common/Rating.jsx","webpack:///./app/javascript/components/voc/common/icons/Star.js","webpack:///./app/javascript/components/voc/common/icons/StarSm.js","webpack:///./app/javascript/components/common/hotels/HotelTags.jsx","webpack:///./app/assets/images/vof/logos/vo-ocean.png","webpack:///./app/javascript/components/vof/common/Image.jsx"],"names":["responsive","0","items","765","1024","HotelsCarousel","featuredHotels","rest","useContext","SearchContext","state","dispatch","useState","hotels","setHotels","useEffect","_scrubFeaturedHotels","length","map","scrubHotel","__outputHotelImage","hotel","image","featured_images","hd_size_image_url","_handleHotelClick","isMobileOnly","_mobileActions","_desktopActions","type","SEARCH","CTA_BAR_STEP","SET","payload","ARRIVAL","DEPARTURE","NIGHTS","length_of_stay_in_nights","CTA_BAR_ACTIVE","CTA_BAR_FULLSCREEN","document","querySelector","click","arrivalEl","focus","scrollToEcommerce","Fragment","className","hotelStruc","idx","key","onClick","src","HotelNotFoundImage","imageClassName","data-src","alt","name","onErrorImg","count","rating","small","tags","push","aria-label","dotsDisabled","buttonsDisabled","infinite","mouseDragEnabled","_displayCarousel","Rating","stars","Array","_","i","defaultProps","Star","style","width","viewBox","xmlns","fillRule","points","StarSm","HotelTags","sort","n1","n2","sorting_order","tag","Image","text","onError","children","e","preventImageTheftProps","VoLogo","errorImgSrc","currentTarget","classList","add"],"mappings":"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","file":"js/65-48b272d25d1f30a92827.chunk.js","sourcesContent":["import React, { useState, useEffect, useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport AliceCarousel from 'react-alice-carousel'\nimport { isMobileOnly } from 'react-device-detect'\n\nimport Rating from '../../../voc/common/Rating'\nimport Image from '../../common/Image'\nimport HotelTags from '../../../common/hotels/HotelTags'\nimport { scrubHotel } from '../../helpers/hotelHelper'\nimport { SEARCH, SearchContext } from '../../contexts/SearchContext'\nimport HotelNotFoundImage from '../../../../../assets/images/voc/graphics/hotel-default-image.svg'\nimport {\n scrollToEcommerce\n} from '../../helpers/general'\n\nimport {\n setFullScreenElHeight\n} from '../../helpers/searchHelpers'\n\nconst responsive = {\n 0: { items: 2 },\n 765: { items: 4 },\n 1024: { items: 5 }\n}\n\nconst HotelsCarousel = ({featuredHotels, ...rest}) => {\n const { state, dispatch } = useContext(SearchContext)\n const [hotels, setHotels] = useState([])\n\n useEffect(() => {\n _scrubFeaturedHotels()\n }, [])\n\n const _scrubFeaturedHotels = () => {\n if (featuredHotels.hotels && (featuredHotels.hotels.length > 0)) {\n setHotels(featuredHotels.hotels.map(scrubHotel))\n }\n }\n\n const __outputHotelImage = hotel => {\n return hotel.image\n ? hotel.image\n : hotel.featured_images[0].hd_size_image_url\n ? hotel.featured_images[0].hd_size_image_url\n : ''\n }\n\n // output hotels in carousel\n const _displayCarousel = () => {\n if (hotels && hotels.length > 1) {\n let hotelStruc = hotels.map((hotel, idx) =>\n
\n {hotel.name}\n\n
\n {hotel.name}\n \n {hotel.tags && }\n
\n\n
\n )\n\n // TODO: This link should go to /hotels\n hotelStruc.push(\n
\n \n
\n Click here for more hotel options\n
\n
\n )\n\n return (\n \n {hotelStruc}\n \n )\n }\n }\n\n const _handleHotelClick = () => {\n // open up availability calendar, start booking process\n if(isMobileOnly) _mobileActions()\n else _desktopActions()\n }\n\n const _mobileActions = () => {\n dispatch({ type: SEARCH.CTA_BAR_STEP.SET, payload: 1})\n dispatch({ type: SEARCH.ARRIVAL.SET, payload: null})\n dispatch({ type: SEARCH.DEPARTURE.SET, payload: null})\n dispatch({ type: SEARCH.NIGHTS.SET, payload: state.package.length_of_stay_in_nights})\n dispatch({ type: SEARCH.CTA_BAR_ACTIVE.SET, payload: true})\n dispatch({ type: SEARCH.CTA_BAR_FULLSCREEN.SET, payload: true})\n document.querySelector(\".cta-bar .btn\").click()\n }\n\n const _desktopActions = () => {\n let arrivalEl = document.querySelector(\".cta-bar-desktop #arrival\")\n if(arrivalEl) arrivalEl.focus()\n else scrollToEcommerce()\n }\n\n const _renderContent = () => (\n \n { hotels && hotels.length > 1 &&\n
\n

Featured Hotels — subject to availability

\n
\n {_displayCarousel()}\n {/* See other options */}\n
\n
\n }\n
\n )\n\n return _renderContent()\n}\n\nHotelsCarousel.propTypes = {\n featuredHotels: PropTypes.object.isRequired\n}\n\nexport default HotelsCarousel\n","import React from 'react'\nimport PropTypes from \"prop-types\"\nimport Star from './icons/Star'\nimport StarSm from './icons/StarSm'\n\nconst Rating = ({ count, small }) => {\n const stars = [...Array(count)].map((_, i) => (\n
\n {small ? : }\n
\n ))\n\n return (\n
\n {stars}\n
\n )\n}\n\nRating.defaultProps = {\n count: 3,\n small: false\n}\n\nRating.propTypes = {\n count: PropTypes.number,\n small: PropTypes.bool\n}\n\nexport default Rating\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Star = ({\n style = {},\n width = \"16px\",\n className = \"star\",\n viewBox = \"0 0 16 15\"\n}) => (\n \n \n \n)\n\nStar.propTypes = {\n style: PropTypes.object,\n width: PropTypes.string,\n className: PropTypes.string,\n viewBox: PropTypes.string\n}\n\nexport default Star\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst StarSm = ({\n style = {},\n width = \"14px\",\n className = \"star\",\n viewBox = \"0 0 14 13\"\n}) => (\n \n \n \n)\n\nStarSm.propTypes = {\n style: PropTypes.object,\n width: PropTypes.string,\n className: PropTypes.string,\n viewBox: PropTypes.string\n}\n\nexport default StarSm\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst HotelTags = ({ tags }) => {\n return (\n
\n {tags.sort((n1, n2) =>\n n1.sorting_order - n2.sorting_order\n ).map((tag, i) => {\n return {tag.name}\n })\n }\n
\n )\n}\n\nHotelTags.propTypes = {\n tags: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n sorting_order: PropTypes.number.isRequired\n })).isRequired,\n}\n\nexport default HotelTags\n","export default __webpack_public_path__ + \"media/logos/vo-ocean-d46629e3.png\";","import React from 'react'\nimport PropTypes from 'prop-types'\nimport VoLogo from '../../../../assets/images/vof/logos/vo-ocean.png'\nimport { preventImageTheftProps } from '../../common/helpers/imageHelper'\n\n\nconst errorHandler = (e, errorImgSrc) => {\n e.currentTarget.src = errorImgSrc\n e.currentTarget.classList.add(\"default-image\")\n}\n\nconst Image = ({\n src,\n text,\n className,\n imageClassName,\n alt,\n onError,\n onErrorImg,\n children,\n ...rest\n }) => (\n
\n {alt}\n onError(e, onErrorImg)}\n {...preventImageTheftProps}\n {...rest}\n />\n {text || children &&
{children || text}
}\n
\n)\n\nImage.defaultProps = {\n src: VoLogo,\n text: null,\n className: \"image\",\n imageClassName: \"\",\n onError: errorHandler,\n onErrorImg: VoLogo,\n alt: 'VOF Image'\n}\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n text: PropTypes.string,\n children: PropTypes.node,\n onError: PropTypes.func,\n onErrorImg: PropTypes.string,\n onClick: PropTypes.func,\n className: PropTypes.string,\n imageClassName: PropTypes.string,\n alt: PropTypes.string,\n}\n\nexport default Image\n"],"sourceRoot":""}