{"version":3,"file":"static/chunks/app/page-fb257639954cbc22.js","mappings":"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","sources":["webpack://_N_E/?9aaa","webpack://_N_E/./public/static/icons/index.js","webpack://_N_E/./src/components/search/carousel/EmblaCarouselArrowButton.tsx","webpack://_N_E/./src/components/search/carousel/EmblaCarouselDotButton.tsx","webpack://_N_E/./src/components/search/TourCard.tsx","webpack://_N_E/./src/components/search/carousel/Carousel.tsx","webpack://_N_E/./src/paths.ts","webpack://_N_E/./src/components/search/carousel/css/carousel.css","webpack://_N_E/./src/components/search/css/tourCard.css","webpack://_N_E/./public/static/icons/clock.svg","webpack://_N_E/./public/static/icons/message.svg","webpack://_N_E/./public/static/icons/people.svg","webpack://_N_E/./public/static/icons/pin.svg","webpack://_N_E/./public/static/icons/star.svg","webpack://_N_E/./public/static/images/elephants.svg","webpack://_N_E/./public/static/images/image-corner.svg"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/codebuild/output/src2627177501/src/faunaexplore-frontend/node_modules/next/dist/client/image-component.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src2627177501/src/faunaexplore-frontend/public/static/images/elephants.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src2627177501/src/faunaexplore-frontend/public/static/images/image-corner.svg\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"TourCarousel\"] */ \"/codebuild/output/src2627177501/src/faunaexplore-frontend/src/components/search/carousel/Carousel.tsx\");\n","import clock from './clock.svg';\nimport message from './message.svg';\nimport people from './people.svg';\nimport pin from './pin.svg';\nimport star from './star.svg';\n\nexport { clock, message, people, pin, star };\n","'use client';\n\nimport React, { ComponentPropsWithRef, useCallback, useEffect, useState } from 'react';\n\nimport { EmblaCarouselType } from 'embla-carousel';\nimport chevronLeft from 'public/static/icons/chevron-left.svg';\n\ntype UsePrevNextButtonsType = {\n prevBtnDisabled: boolean;\n nextBtnDisabled: boolean;\n onPrevButtonClick: () => void;\n onNextButtonClick: () => void;\n};\n\nexport const usePrevNextButtons = (emblaApi: EmblaCarouselType | undefined): UsePrevNextButtonsType => {\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true);\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true);\n\n const onPrevButtonClick = useCallback(() => {\n if (!emblaApi) return;\n emblaApi.scrollPrev();\n }, [emblaApi]);\n\n const onNextButtonClick = useCallback(() => {\n if (!emblaApi) return;\n emblaApi.scrollNext();\n }, [emblaApi]);\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setPrevBtnDisabled(!emblaApi.canScrollPrev());\n setNextBtnDisabled(!emblaApi.canScrollNext());\n }, []);\n\n useEffect(() => {\n if (!emblaApi) return;\n\n onSelect(emblaApi);\n emblaApi.on('reInit', onSelect).on('select', onSelect);\n }, [emblaApi, onSelect]);\n\n return {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick,\n };\n};\n\ntype PropType = ComponentPropsWithRef<'button'>;\n\nexport const PrevButton: React.FC<PropType> = (props) => {\n const { children, ...restProps } = props;\n\n return (\n <button className=\"embla__button embla__button--prev border border-gray-800\" type=\"button\" {...restProps}>\n <svg width=\"8\" height=\"14\" viewBox=\"0 0 8 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6.5 12L1.5 7L6.5 2\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"square\" strokeLinejoin=\"round\" />\n </svg>\n\n {children}\n </button>\n );\n};\n\nexport const NextButton: React.FC<PropType> = (props) => {\n const { children, ...restProps } = props;\n\n return (\n <button className=\"embla__button embla__button--next border border-gray-800\" type=\"button\" {...restProps}>\n <svg width=\"8\" height=\"14\" viewBox=\"0 0 8 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1.5 12L6.5 7L1.5 2\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"square\" strokeLinejoin=\"round\" />\n </svg>\n\n {children}\n </button>\n );\n};\n","'use client';\n\nimport React, { ComponentPropsWithRef, useCallback, useEffect, useState } from 'react';\n\nimport { EmblaCarouselType } from 'embla-carousel';\n\ntype UseDotButtonType = {\n selectedIndex: number;\n scrollSnaps: number[];\n onDotButtonClick: (index: number) => void;\n};\n\nexport const useDotButton = (emblaApi: EmblaCarouselType | undefined): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [scrollSnaps, setScrollSnaps] = useState<number[]>([]);\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return;\n emblaApi.scrollTo(index);\n },\n [emblaApi]\n );\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList());\n }, []);\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap());\n }, []);\n\n useEffect(() => {\n if (!emblaApi) return;\n\n onInit(emblaApi);\n onSelect(emblaApi);\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect);\n }, [emblaApi, onInit, onSelect]);\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick,\n };\n};\n\ntype PropType = ComponentPropsWithRef<'button'>;\n\nexport const DotButton: React.FC<PropType> = (props) => {\n const { children, ...restProps } = props;\n\n return (\n <button type=\"button\" {...restProps}>\n {children}\n </button>\n );\n};\n","import Image from 'next/image';\nimport Link from 'next/link';\n\nimport paths from '@/paths';\nimport { TTour } from '@/types';\n\nimport './css/tourCard.css';\n\nimport { clock, message, people, pin, star } from 'public/static/icons';\n\nconst SIZE = 380;\nconst HEIGHT = 280;\nconst DEFAULT_IMG = '/static/images/eagle.svg';\n\nconst getRandomImg = () => {\n const images = [\n '/static/images/baldEagle.svg',\n '/static/images/bear.svg',\n '/static/images/crocodile.svg',\n '/static/images/crocodile2.svg',\n '/static/images/eagle.svg',\n '/static/images/hiking.svg',\n ];\n const randomIndex = Math.floor(Math.random() * images.length);\n return images[randomIndex];\n};\n\nexport default function TourCard({ tour }: { tour: TTour }) {\n const operatedIn = tour.operatedIn ? tour.operatedIn[0].toUpperCase() + tour.operatedIn.slice(1).toLowerCase() : '';\n\n return (\n <Link href={paths.tourShow(tour.id)} className=\"flex tour-card\">\n <div className=\"card-container relative flex flex-col justify-start grow-1\">\n <div className=\"image-container\" style={{ height: `${HEIGHT}px`, width: `${SIZE}px` }}>\n <Image\n src={tour?.photoUrl || DEFAULT_IMG}\n alt={tour.title}\n width={SIZE}\n height={SIZE}\n style={{ objectFit: 'cover', width: `${SIZE}px`, height: `${HEIGHT}px` }}\n />\n <div className=\"gradient-overlay overlay-dark transition duration-200\"></div>\n </div>\n\n <div className=\"flex flex-col grow justify-end pt-3 px-6 pb-4\">\n <div className=\"tour-title\">\n <h3 className=\"mb-2\" role=\"tour-title\">\n {tour.title}\n </h3>\n </div>\n\n <div className=\"tour-content flex flex-col grow justify-end\">\n <div className=\"tour-details border-b border-dotted border-gray-500\">\n <div className=\"flex flex-row items-center mb-2\">\n <div className=\"flex items-center w-4 mr-2\">\n <Image src={people} alt=\"people\" />\n </div>\n <p className=\"inline\">\n {tour.ageEnd && `Up to ${tour.ageEnd} years old · `}Up to {10} people\n </p>\n </div>\n\n <div className=\"flex flex-row items-center mb-2\">\n <div className=\"flex items-center w-4 mr-2\">\n <Image src={pin} alt=\"people\" className=\"inline mr-2\" />\n </div>\n <p className=\"inline\">Destination: {tour.destinations.join(', ')}</p>\n </div>\n\n <div className=\"flex flex-row items-center mb-2\">\n <div className=\"flex items-center w-4 mr-2\">\n <Image src={message} alt=\"people\" className=\"inline mr-2\" />\n </div>\n <p className=\"inline\">Operated in: {operatedIn}</p>\n </div>\n\n <div className=\"flex flex-row items-center mb-2\">\n <div className=\"flex items-center w-4 mr-2\">\n <Image src={clock} alt=\"people\" className=\"inline mr-2\" />\n </div>\n <p className=\"inline\">Duration: {tour.duration}h</p>\n </div>\n </div>\n\n {tour.price && (\n <div className=\"tour-footer flex flex-row items-center justify-between pt-2\">\n <p className=\"\">\n <span className=\"h3\">\n {(tour.price || 0).toLocaleString('en-US', { style: 'currency', currency: 'USD' })}\n </span>{' '}\n / per person\n </p>\n {tour.avarageReview && (\n <div className=\"flex direction-row bg-gray-800 items-center justify-center gap-1 px-1.5 py-0.5 rounded-full\">\n <Image src={star} alt=\"star\" />\n <span className=\"small\">{tour.avarageReview.toFixed(2)}</span>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n </Link>\n );\n}\n","'use client';\n\nimport React from 'react';\nimport useEmblaCarousel from 'embla-carousel-react';\nimport { EmblaOptionsType } from 'embla-carousel';\nimport { NextButton, PrevButton, usePrevNextButtons } from './EmblaCarouselArrowButton';\nimport { DotButton, useDotButton } from './EmblaCarouselDotButton';\nimport TourCard from '../TourCard';\nimport './css/carousel.css';\n\nimport { TTour } from '@/types';\n\ntype PropType = {\n tours: Array<TTour>;\n options?: EmblaOptionsType;\n};\n\nexport const TourCarousel: React.FC<PropType> = (props) => {\n const { tours, options } = props;\n const [emblaRef, emblaApi] = useEmblaCarousel(options);\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } = useDotButton(emblaApi);\n\n const { prevBtnDisabled, nextBtnDisabled, onPrevButtonClick, onNextButtonClick } = usePrevNextButtons(emblaApi);\n\n return (\n <div className=\"embla mt-auto lg:-mt-12\">\n <div className=\"embla__controls\">\n <div className=\"embla__buttons\">\n <PrevButton onClick={onPrevButtonClick} disabled={prevBtnDisabled} />\n <NextButton onClick={onNextButtonClick} disabled={nextBtnDisabled} />\n </div>\n </div>\n\n <div className=\"embla__viewport\" ref={emblaRef}>\n <div className=\"embla__container\">\n {tours.map((tour) => (\n <TourCard tour={tour} key={tour.id} />\n ))}\n </div>\n </div>\n\n <div className=\"embla__dots\">\n {scrollSnaps.map((_, index) => (\n <DotButton\n key={index}\n onClick={() => onDotButtonClick(index)}\n className={'embla__dot'.concat(index === selectedIndex ? ' embla__dot--selected' : '')}\n />\n ))}\n </div>\n </div>\n );\n};\n\nexport default TourCarousel;\n","import { TDraftRoutes, TFilters } from './types';\n\nconst paths = {\n home() {\n return '/';\n },\n addNewTour() {\n return '/tour/add-new';\n },\n draft(draftId: string, pathname: TDraftRoutes) {\n return `/draft/${draftId}/${pathname}`;\n },\n terms() {\n return '/terms-and-conditions';\n },\n privacy() {\n return '/privacy-policy';\n },\n categoryShow(slug: string) {\n return `/category/${slug}`;\n },\n tourAvailability(tourId: string, queryString: string) {\n return `/tours/${tourId}?${queryString.toString()}`;\n },\n tourShow(tourId: number) {\n return `/tours/${tourId}`;\n },\n search() {\n return '/search';\n },\n searchActivity(filters: TFilters) {\n const params = new URLSearchParams();\n for (const [filter, value] of Object.entries(filters)) {\n params.set(filter, value.toString());\n }\n return `/search?${params}`;\n },\n};\n\nexport default paths;\n","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","export default {\"src\":\"/_next/static/media/clock.21687083.svg\",\"height\":14,\"width\":14,\"blurWidth\":0,\"blurHeight\":0};","export default {\"src\":\"/_next/static/media/message.ebcd0540.svg\",\"height\":14,\"width\":14,\"blurWidth\":0,\"blurHeight\":0};","export default {\"src\":\"/_next/static/media/people.0322c986.svg\",\"height\":10,\"width\":16,\"blurWidth\":0,\"blurHeight\":0};","export default {\"src\":\"/_next/static/media/pin.2adc2d38.svg\",\"height\":15,\"width\":12,\"blurWidth\":0,\"blurHeight\":0};","export default {\"src\":\"/_next/static/media/star.77fac78c.svg\",\"height\":12,\"width\":12,\"blurWidth\":0,\"blurHeight\":0};","export default {\"src\":\"/_next/static/media/elephants.d44325e7.svg\",\"height\":640,\"width\":1568,\"blurWidth\":0,\"blurHeight\":0};","export default {\"src\":\"/_next/static/media/image-corner.94f8f2d7.svg\",\"height\":160,\"width\":160,\"blurWidth\":0,\"blurHeight\":0};"],"names":["Promise","resolve","then","__webpack_require__","t","bind","usePrevNextButtons","prevBtnDisabled","setPrevBtnDisabled","useState","nextBtnDisabled","setNextBtnDisabled","onPrevButtonClick","useCallback","emblaApi","scrollPrev","onNextButtonClick","scrollNext","onSelect","canScrollPrev","canScrollNext","useEffect","on","PrevButton","children","restProps","props","jsx_runtime","jsxs","button","className","type","jsx","svg","width","height","viewBox","fill","xmlns","path","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","NextButton","useDotButton","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","onDotButtonClick","scrollTo","index","onInit","scrollSnapList","selectedScrollSnap","DotButton","TourCard","param","tour","operatedIn","toUpperCase","slice","toLowerCase","Link","href","paths","tourShow","id","div","style","concat","Image","src","photoUrl","alt","title","objectFit","h3","role","people","p","ageEnd","pin","destinations","join","message","clock","duration","price","span","toLocaleString","currency","avarageReview","star","toFixed","TourCarousel","tours","options","emblaRef","useEmblaCarousel","onClick","disabled","ref","map","_","__webpack_exports__","Z","home","addNewTour","draft","draftId","pathname","terms","privacy","categoryShow","slug","tourAvailability","tourId","queryString","toString","search","searchActivity","filters","params","URLSearchParams","filter","value","Object","entries","set"],"sourceRoot":""}