{"version":3,"sources":["utils/GoogleAnalytics.js","utils/GoogleTags.js","utils/apiUtils.js","hooks/useGeneralRetailers.js","components/UIComponents/Checkbox/index.js","components/UIComponents/Radio/index.js","views/Styling/ExampleModal.js","components/UIComponents/Select/index.js","components/UIComponents/Slider/index.js","views/Styling/index.js","hooks/useModelfamilies.js","hooks/useMediaQuery.js","hooks/useBreakPoints.js","utils/index.js","components/UIComponents/Typography/Title/index.js","components/UIComponents/Typography/Text/index.js","components/Landing/ModelFamilyCard.js","components/Loader/index.js","components/Landing/GridView.js","views/Landing.js","assets/images/Door.svg","hooks/useRetailers.js","hooks/useDebounce.js","components/ModelList/Hero.js","assets/images/Pump.svg","assets/images/CO2.svg","assets/images/Engine.svg","assets/images/Rims.svg","assets/images/Tag.svg","assets/images/Check.svg","components/ModelList/Filters.js","components/PriceBox/index.js","components/LeasingInterest/index.js","components/ModelList/ListCard.js","components/OfferModal.js","components/Disclaimers.js","components/ToyotaStripe/index.js","views/ModelList.js","hooks/useModelFamily.js","hooks/useFilters.js","hooks/useSearch.js","components/DetailView/Leasing.js","hooks/useLeasing.js","components/DetailView/Equipment.js","components/FriendModal.js","components/DetailView/DetailViewHero.js","views/DetailView.js","hooks/useVehicle.js","hooks/useEquipment.js","views/NotFound.js","Routes.js","assets/images/toyota_logo.svg","components/Header/index.js","components/MetaData/index.js","i18n.js","index.js"],"names":["GoogleAnalytics","_ref","location","React","pathname","page","arguments","length","undefined","window","ReactGA","set","origin","pageview","logPageChange","search","RouteTracker","_jsx","Route","component","apiRequest","async","url","options","res","fetch","ok","Error","json","postRequest","body","method","headers","JSON","stringify","useGeneralRetailers","useQuery","refetchOnWindowFocus","CheckBox","onChange","checked","id","props","handleClick","target","value","_jsxs","onClick","children","type","className","role","Radio","ExampleModal","onClose","show","Modal","size","onHide","centered","Header","closeButton","Title","Body","Footer","Button","variant","Option","active","Dropdown","Item","Select","_ref2","activeId","flex","t","useTranslation","Toggle","filter","item","Menu","map","CustomRange","min","max","sliderValue","onSliderChange","step","sliderValuesPrefix","sliderValuesSufix","Range","CustomSlider","Slider","mockOptions","Styling","selectionValue","setSelectionValue","useState","modalOpen","setModalOpen","selectValue","setSelectValue","rangeValue","setRangeValue","setSliderValue","_Fragment","Container","fluid","Row","Col","xs","md","Icon","path","mdiChevronRight","mdiChevronLeft","mdiPencilOutline","htmlFor","Switch","label","Form","Group","controlId","Label","Control","placeholder","Text","as","custom","Badge","InputGroup","FormControl","Append","Tabs","activeKey","Tab","title","eventKey","val","useModelfamilies","useMediaQuery","query","matches","setMatches","mediaQuery","matchMedia","handler","event","addEventListener","removeEventListener","useBreakPoints","isXs","isSm","isMd","isLg","isXl","isXxl","isSmallerThanMd","isSmallerThanLg","isSmallerThanXl","formatDate","date","year","month","day","split","formatPrice","price","toString","replace","compareArrayNumbers","arr1","arr2","every","idx","createMarkup","transCode","__html","isCurrentDate","Date","toISOString","priceSorter","data","sortOrder","sort","a","b","order","CurrentPrice","index","parse","ETA","aDiff","Prices","OriginalPrice","bDiff","removeLastPathSegment","segments","pop","join","rest","Tag","classes","classNames","uppercase","strong","italic","ModelFamilyCard","model","history","useHistory","retailer","useParams","ModelName","LowestPrice","Url","ThumbnailSmall","ModelCodeForGTag","ModelNameForGTag","Card","text","handleCardClick","tngaDataLayer","name","componentName","componentGroup","action","workflow","conversion","product","category","subCategory","productInfo","productId","productName","tmeModelId","modelName","dataLayer","push","Img","src","Loader","Spinner","animation","GridView","models","loading","_chunk","row","xl","lg","sm","Landing","_path","isLoading","isError","useRetailers","useGetLatest","obj","ref","current","Hero","img","handleBackBtn","toUpperCase","alt","_extends","Object","assign","bind","i","source","key","prototype","hasOwnProperty","call","apply","this","SvgDoor","svgRef","titleId","width","height","viewBox","fill","xmlns","fillRule","clipRule","d","ForwardRef","SvgPump","_path2","_path3","_path4","SvgCo2","SvgEngine","SvgRims","SvgTag","SvgCheck","Filters","filters","filterValues","setFilterValues","setHasFilterChanged","filtersToRender","ModelFamilyName","handleFilterChange","prevState","includes","values","renderFilters","filterType","Check","Pump","FuelType","FuelName","Engine","_ref3","Name","Value","Door","_ref4","Id","Rims","_ref5","PriceRange","CO2","keys","Math","round","PriceBox","MonthlyPmt","InterestRate","IsHybrid","SpecialInterest","EuriborText","IsDetailsView","hasDiscount","interest","Trans","i18nKey","LeasingInterest","isDetailView","CampaignIcons","ListCard","car","handleModal","modelFamily","ThumbnailBig","Accessories","ColorName","URN","FiveYearsWarranty","InteriourName","ReservedUntil","availableFrom","isCarAvailable","handleChooseVehicle","urn","string","splitString","setAvailability","block","OfferModal","retailers","vehicle","isValid","setIsValid","isTermsChecked","setIsTermsChecked","isSubmitted","setIsSubmitted","isSomeFieldChanged","setIsSomeFieldChanged","formValues","setFormValues","_models$find$ModelNam","_models$find","find","handleFieldChange","e","form","handleClose","noValidate","validated","onSubmit","preventDefault","currentTarget","isTermsAccepted","Terms","checkValidity","postBody","CarId","CarDescription","Gdpr","then","r","WebServiceId","Number","RetailerId","dealer","dealerId","onKeyUp","required","Feedback","field","MarketingName","rows","dangerouslySetInnerHTML","Disclaimers","modelSpecificDisclaimer","ToyotaStripe","sortOptions","ModelList","_currentData$length","familyUrl","retailersError","filtersLoading","useFilters","setSortOrder","isModalVisible","setIsModalVisible","hasFilterChanged","currentVehicle","setCurrentVehicle","TransmissionTypes","BodyTypes","FuelTypes","DriveTrainTypes","lastSelected","document","getElementById","scrollIntoView","filteredCars","refetch","filteredCarsLoading","searchBody","refetchOnMount","enabled","keepPreviousData","onFetchDataDebounce","defaultFn","defaultWait","debounceRef","getDefaultFn","getDefaultWait","_len","args","Array","_key","promise","Promise","resolve","reject","timeout","clearTimeout","setTimeout","err","useAsyncDebounce","currentData","modelCount","cheapestModel","reduce","prev","curr","mostExpensiveModel","modelId","found","modelcount","handleScrollToTop","scrollTo","handleOtherBtn","handleCreateBtn","open","Boolean","initialState","downp","residual","period","leasingtype","numbersRegex","Leasing","isHybrid","downpNr","residualNr","regBody","useLeasing","handleFormChange","match","nrValue","percentage","slice","defaultValue","iconColor","Equipment","list","columns","subEquipment","pack","entries","SubEquipment","forEach","_subEquipment$type","subEquipmentKey","prevSubs","col","mdiCheck","color","FriendModal","Urn","Comment","DetailViewHero","_VehicleImages$length","handleFriendModal","isOfferModalVisible","handleOfferModal","VehicleImages","CarouselProvider","naturalSlideHeight","naturalSlideWidth","totalSlides","infinite","isIntrinsicHeight","mdiArrowLeft","span","offset","acc","ButtonBack","BigImageUrl","Slide","Image","hasMasterSpinner","ButtonNext","Dot","slide","DetailView","vehicleId","hash","useLocation","vehicleURN","equipmentLoading","equipment","setIsOfferModalVisible","ModelFamilyNameInCarDb","nextPath","Redirect","to","NotFound","Router","modelsLoading","retailerPath","Key","modelsPath","from","exact","firstParamInPath","currentRetailer","handleLanguageChange","href","handleRetailer","HomePageUrl","Navbar","Brand","handleToyotaLogo","ToyotaLogo","Nav","Link","LogoLocation","MetaData","MetaTags","content","languages","i18n","use","Backend","initReactI18next","LanguageDetector","init","backend","loadPath","fallbackLng","debug","interpolation","escapeValue","keySeparator","whitelist","detection","checkWhitelist","possibleLanguages","queryClient","QueryClient","initializeTagManager","tagCode","process","tagManagerArgs","gtmId","TagManager","initialize","ReactDOM","render","createElement","Suspense","fallback","QueryClientProvider","client","BrowserRouter","trackingCode","isGAEnabled","Routes"],"mappings":"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","file":"static/js/main.3d502d3e.chunk.js","sourcesContent":["import * as React from 'react';\nimport ReactGA from 'react-ga';\nimport { Route } from 'react-router-dom';\n\nexport default function GoogleAnalytics({ location }) {\n React.useEffect(() => {\n const logPageChange = (pathname, search = '') => {\n const page = pathname + search;\n const { location } = window;\n\n ReactGA.set({\n page,\n location: `${location.origin}${page}`,\n });\n ReactGA.pageview(page);\n };\n\n logPageChange(location.pathname, location.search);\n }, [location]);\n\n return null;\n}\n\nexport const RouteTracker = () => <Route component={GoogleAnalytics} />;\n\nexport const init = async (options = {}) => {\n const trackingCode = process.env.REACT_APP_TRACKING_CODE;\n const isGAEnabled = !!trackingCode;\n\n if (isGAEnabled) {\n ReactGA.initialize(trackingCode, {\n ...options,\n });\n }\n\n return isGAEnabled;\n};\n","import TagManager from 'react-gtm-module';\n\nexport const initializeTagManager = () => {\n const tagCode = process.env.REACT_APP_GTM_CODE;\n\n if (tagCode) {\n const tagManagerArgs = {\n gtmId: tagCode,\n };\n\n TagManager.initialize(tagManagerArgs);\n }\n};\n","export const apiRequest = async (url, options) => {\n const res = await fetch(url, options);\n\n if (!res.ok) {\n throw new Error('Network Error');\n }\n\n return await res.json();\n};\n\nexport const postRequest = body => ({\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n});\n","import { useQuery } from 'react-query';\n\nimport { apiRequest } from '../utils/apiUtils';\n\nexport default function useGeneralRetailers() {\n return useQuery(\n 'generalRetailers',\n () => apiRequest('/api/configuration/retailers'),\n { refetchOnWindowFocus: false }\n );\n}\n","import './style.scss';\n\nconst CheckBox = ({ onChange, checked = false, id, ...props }) => {\n const handleClick = () => onChange({ target: { id, value: !checked } });\n\n return (\n <span onClick={handleClick}>\n <input onChange={handleClick} type=\"checkbox\" checked={checked} id={id} />\n <span\n className=\"checkbox\"\n role=\"checkbox\"\n aria-checked={checked}\n {...props}\n >\n <span className=\"checkbox__inner\"></span>\n <span className=\"checkbox__deco\"></span>\n </span>\n </span>\n );\n};\n\nexport default CheckBox;\n","import React from 'react';\n\nimport './style.scss';\n\nconst Radio = ({ onClick, checked, id, ...props }) => (\n <span className=\"radio__wrap\" {...props} onClick={onClick}>\n <input type=\"radio\" checked={checked} id={id} />{' '}\n <span className=\"radio\" role=\"radio\" aria-checked={checked}>\n <span className=\"radio__inner\"></span>\n <span className=\"radio__deco\"></span>\n </span>\n </span>\n);\n\nexport default Radio;\n","import React from 'react';\nimport { Button, Modal } from 'react-bootstrap';\n\nconst ExampleModal = ({ onClose, show, props }) => (\n <Modal size=\"lg\" show={show} onHide={onClose} centered {...props}>\n <Modal.Header closeButton>\n <Modal.Title>Modal title</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <h4>Example modal</h4>\n <p>\n Lorem ipsum dolor sit, amet consectetur adipisicing elit.Veniam quos di\n recusandae minus enim, atque ex vel obcaecati fuga vero nulla eligendi\n soluta ipsum voluptatum!\n </p>\n </Modal.Body>\n <Modal.Footer>\n <Button variant=\"secondary\" onClick={onClose} size=\"sm\">\n Close\n </Button>\n <Button onClick={onClose} size=\"sm\">\n Submit\n </Button>\n </Modal.Footer>\n </Modal>\n);\n\nexport default ExampleModal;\n","import { useTranslation } from 'react-i18next';\nimport { Dropdown } from 'react-bootstrap';\n\nimport './style.scss';\n\nconst Option = ({ active, value, onClick }) => (\n <Dropdown.Item className={active ? 'active' : ''} onClick={onClick}>\n {value}\n </Dropdown.Item>\n);\n\nconst Select = ({ activeId, options, onClick, id, flex = false }) => {\n const { t } = useTranslation();\n\n const getSelectValue = () =>\n options !== undefined\n ? options.filter(item => item.id === activeId)[0].value\n : 'toyota.best.offers.select.no.options';\n\n return (\n <Dropdown className={flex ? 'flex' : ''}>\n <Dropdown.Toggle id={id}>{t(getSelectValue())}</Dropdown.Toggle>\n <Dropdown.Menu>\n {options?.map(item => (\n <Option\n key={item.id}\n active={activeId === item.id}\n value={t(item.value)}\n onClick={() => onClick(item.id)}\n />\n ))}\n </Dropdown.Menu>\n </Dropdown>\n );\n};\n\nexport default Select;\n","import Slider, { Range } from 'rc-slider';\n\nimport './style.scss';\n\nexport const CustomRange = ({\n min,\n max,\n sliderValue,\n onSliderChange,\n step = 1,\n sliderValuesPrefix = '',\n sliderValuesSufix = '',\n}) => (\n <div className=\"slider__wrap\">\n <Range\n min={min}\n max={max}\n step={step}\n value={sliderValue}\n onChange={onSliderChange}\n />\n <div className=\"slider__values\">\n <span>{`${sliderValuesPrefix} ${sliderValue[0]} ${sliderValuesSufix}`}</span>\n <span>{`${sliderValuesPrefix} ${sliderValue[1]} ${sliderValuesSufix}`}</span>\n </div>\n </div>\n);\n\nexport const CustomSlider = ({\n min,\n max,\n sliderValue,\n onSliderChange,\n step = 1,\n sliderValuesPrefix = '',\n}) => {\n return (\n <div className=\"slider__wrap\">\n <Slider\n min={min}\n max={max}\n step={step}\n value={sliderValue}\n onChange={onSliderChange}\n />\n <div className=\"slider__values\">\n <span>{`${sliderValuesPrefix} ${sliderValue}`}</span>\n </div>\n </div>\n );\n};\n\nexport default CustomSlider;\n","import React, { useState } from 'react';\nimport {\n Col,\n Container,\n Row,\n Button,\n Form,\n Badge,\n InputGroup,\n FormControl,\n Tabs,\n Tab,\n} from 'react-bootstrap';\nimport { mdiChevronLeft, mdiChevronRight, mdiPencilOutline } from '@mdi/js';\nimport Icon from '@mdi/react';\n\nimport CheckBox from '../../components/UIComponents/Checkbox';\nimport Radio from '../../components/UIComponents/Radio';\nimport Switch from 'react-bootstrap/esm/Switch';\nimport ExampleModal from './ExampleModal';\nimport Select from '../../components/UIComponents/Select';\nimport Slider, { CustomRange } from '../../components/UIComponents/Slider';\n\nconst mockOptions = [\n { id: 1, value: 'Option 1' },\n { id: 2, value: 'Option 2' },\n { id: 3, value: 'Option 3' },\n];\n\nconst Styling = () => {\n const [selectionValue, setSelectionValue] = useState(false);\n const [modalOpen, setModalOpen] = useState(false);\n const [selectValue, setSelectValue] = useState(1);\n const [rangeValue, setRangeValue] = useState([1, 450]);\n const [sliderValue, setSliderValue] = useState(15);\n\n const onSliderChange = val => {\n setRangeValue(val);\n };\n\n return (\n <>\n <Container fluid className=\"mt-4\">\n <Row className=\"mb-4\">\n <Col xs={12} md={3} className=\"d-flex flex-column align-items-start\">\n <h2>Buttons</h2>\n <Button className=\"mb-2\" size=\"sm\">\n Kinnita\n </Button>\n <Button variant=\"secondary\" className=\"mb-2\" size=\"lg\">\n Loobu\n </Button>\n <Button variant=\"functional\">Tagasi</Button>\n </Col>\n <Col xs={12} md={3} className=\"d-flex flex-column align-items-start\">\n <h2>Buttons with icon</h2>\n <Button className=\"mb-2\" size=\"sm\">\n <span>Edasi</span> <Icon path={mdiChevronRight} size={1} />\n </Button>\n <Button variant=\"secondary\" className=\"mb-2\" size=\"lg\">\n <Icon path={mdiChevronLeft} size={1} /> <span>Tagasi</span>\n </Button>\n <Button variant=\"functional\">\n <Icon path={mdiChevronLeft} size={1} /> <span>Tagasi</span>\n </Button>\n </Col>\n <Col xs={12} md={3} className=\"d-flex flex-column align-items-start\">\n <h2>Link button</h2>\n <Button variant=\"link\" className=\"mb-2\">\n <span>Kodulehele</span> <Icon path={mdiChevronRight} size={1} />\n </Button>\n <Button variant=\"link\" className=\"mb-2\">\n <Icon path={mdiPencilOutline} size={1} /> <span>Edit</span>\n </Button>\n <h2>Icon button</h2>\n <Button variant=\"icon\">\n <Icon path={mdiChevronLeft} size={1} />\n </Button>\n </Col>\n <Col xs={12} md={3}>\n <h2>Selection controls</h2>\n <p>\n <CheckBox\n checked={selectionValue}\n onClick={() => setSelectionValue(!selectionValue)}\n ></CheckBox>\n <label htmlFor=\"\">Checkbox</label>\n </p>\n <p>\n <Radio\n checked={selectionValue}\n onClick={() => setSelectionValue(!selectionValue)}\n ></Radio>\n <label htmlFor=\"\">Radio</label>\n </p>\n <p>\n <Switch\n id=\"testSwitch\"\n checked={selectionValue}\n onChange={() => setSelectionValue(!selectionValue)}\n label=\"Switch\"\n />\n </p>\n </Col>\n </Row>\n <Row>\n <Col xs={12} md={3}>\n <h2>Input</h2>\n <Form.Group controlId=\"formBasicEmail1\">\n <Form.Label>Email address</Form.Label>\n <Form.Control type=\"email\" placeholder=\"Enter email\" />\n <Form.Text className=\"error-text show\">\n Please enter valid email\n </Form.Text>\n </Form.Group>\n <Form.Group controlId=\"formBasicEmail2\">\n <Form.Label className=\"required\">Email address</Form.Label>\n <Form.Control type=\"email\" placeholder=\"Enter email\" />\n <Form.Text className=\"error-text\">\n Please enter valid email\n </Form.Text>\n </Form.Group>\n <Form.Group controlId=\"formBasicArea\">\n <Form.Label className=\"required\">Text area</Form.Label>\n <Form.Control as=\"textarea\" placeholder=\"Text...\" />\n <Form.Text className=\"text-muted show\">Type something</Form.Text>\n </Form.Group>\n </Col>\n <Col xs={12} md={3}>\n <h2>Other form elements</h2>\n <Form.Group controlId=\"exampleForm.SelectCustom\">\n <Form.Label>Bootstrap select</Form.Label>\n <Form.Control as=\"select\" custom>\n <option>1</option>\n <option>2</option>\n <option>3</option>\n <option>4</option>\n <option>5</option>\n </Form.Control>\n </Form.Group>\n <Form.Group>\n <Form.Label htmlFor=\"select1\">Custom select</Form.Label>\n <Select\n activeId={selectValue}\n onClick={setSelectValue}\n options={mockOptions}\n id=\"select1\"\n />\n </Form.Group>\n <Form.Group>\n <Form.Label htmlFor=\"select2\">Long custom select</Form.Label>\n <Select\n activeId={selectValue}\n onClick={setSelectValue}\n options={mockOptions}\n id=\"select2\"\n flex\n />\n </Form.Group>\n </Col>\n <Col xs={12} md={3} className=\"d-flex flex-column align-items-start\">\n <h2>Other</h2>\n <Badge className=\"mb-2\">Broneeritud</Badge>\n <Button\n className=\"mb-2\"\n size=\"sm\"\n onClick={() => setModalOpen(true)}\n >\n Modal\n </Button>\n </Col>\n <Col xs={12} md={3}>\n <h2>Other</h2>\n <InputGroup className=\"mb-3\">\n <FormControl\n placeholder=\"Money\"\n aria-label=\"money\"\n aria-describedby=\"basic-addon1\"\n />\n <InputGroup.Append>\n <InputGroup.Text id=\"basic-addon1\">€</InputGroup.Text>\n </InputGroup.Append>\n </InputGroup>\n <Tabs activeKey=\"t1\">\n <Tab title=\"Tab 1\" eventKey=\"t1\" />\n <Tab title=\"Tab 2\" eventKey=\"t2\" />\n </Tabs>\n <CustomRange\n min={1}\n max={1500}\n sliderValue={rangeValue}\n onSliderChange={onSliderChange}\n sliderValuesPrefix={'€'}\n />\n <Slider\n min={1}\n max={150}\n sliderValue={sliderValue}\n onSliderChange={val => setSliderValue(val)}\n sliderValuesPrefix={'€'}\n />\n </Col>\n </Row>\n </Container>\n <ExampleModal show={modalOpen} onClose={() => setModalOpen(false)} />\n </>\n );\n};\n\nexport default Styling;\n","import { useQuery } from 'react-query';\n\nimport { apiRequest } from '../utils/apiUtils';\n\nexport default function useModelfamilies() {\n return useQuery('modelfamilies', () => apiRequest(`/api/modelfamilies`), {\n refetchOnWindowFocus: false,\n });\n}\n","import * as React from 'react';\n\nexport default function useMediaQuery(query) {\n const [matches, setMatches] = React.useState(false);\n\n React.useEffect(() => {\n const mediaQuery = window.matchMedia(query);\n const handler = event => setMatches(event.matches);\n\n setMatches(mediaQuery.matches);\n if (mediaQuery.addEventListener) {\n mediaQuery.addEventListener('change', handler);\n }\n\n return () => {\n if (mediaQuery.removeEventListener) {\n mediaQuery.removeEventListener('change', handler);\n }\n };\n }, []);\n\n return matches;\n}\n","import useMediaQuery from './useMediaQuery';\n\nexport default function useBreakPoints() {\n return {\n isXs: useMediaQuery('(max-width: 575px)'),\n isSm: useMediaQuery('(min-width: 576px) and (max-width: 767px)'),\n isMd: useMediaQuery('(min-width: 768px) and (max-width: 991px)'),\n isLg: useMediaQuery('(min-width: 992px) and (max-width: 1199px)'),\n isXl: useMediaQuery('(min-width: 1200px) and (max-width: 1399px)'),\n isXxl: useMediaQuery('(min-width: 1400px)'),\n isSmallerThanMd: useMediaQuery('(max-width: 767px)'),\n isSmallerThanLg: useMediaQuery('(max-width: 991px)'),\n isSmallerThanXl: useMediaQuery('(max-width: 1199px)'),\n };\n}\n","export const formatDate = date => {\n const [year, month, day] = date.split('T')[0].split('-');\n\n return `${day}.${month}.${year}`;\n};\n\nexport const formatPrice = price =>\n price.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\nexport const roundNumber2Points = number => Math.round(number * 100) / 100;\n\nexport const compareArrayNumbers = (arr1, arr2) =>\n arr1.length === arr2.length && arr1.every((val, idx) => val === arr2[idx]);\n\nexport const createMarkup = transCode => ({ __html: transCode });\n\nexport const isCurrentDate = date => {\n const currentDate = new Date().toISOString().split('T')[0];\n const inputDate = new Date(date).toISOString().split('T')[0];\n\n return currentDate >= inputDate;\n};\n\nexport const priceSorter = (data, sortOrder) => {\n if (!data) return [];\n if (sortOrder === 'asc' || sortOrder === 'desc') {\n return data.sort((a, b) => {\n const order = sortOrder === 'asc' ? [a, b] : [b, a];\n\n if (order[0].CurrentPrice < order[1].CurrentPrice) return -1;\n if (order[0].CurrentPrice > order[1].CurrentPrice) return 1;\n return order[0].index - order[1].index;\n });\n }\n\n if (sortOrder === 'availability') {\n return data.sort((a, b) => {\n if (Date.parse(a.ETA) < Date.parse(b.ETA)) return -1;\n if (Date.parse(a.ETA) > Date.parse(b.ETA)) return 1;\n return a.index - b.index;\n });\n }\n\n if (sortOrder === 'priceDiff') {\n return data.sort((a, b) => {\n const aDiff = a.Prices.CurrentPrice - a.Prices.OriginalPrice;\n const bDiff = b.Prices.CurrentPrice - b.Prices.OriginalPrice;\n\n if (aDiff < bDiff) return -1;\n if (aDiff > bDiff) return 1;\n return a.index - b.index;\n });\n }\n};\n\nexport const removeLastPathSegment = pathname => {\n const segments = pathname.split('/');\n segments.pop();\n return segments.join('/');\n};\n","import PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport './style.scss';\n\nexport const Title = ({ size = 1, children, ...rest }) => {\n const Tag = `h${size}`;\n\n const classes = classNames('title', rest.className, {\n 'title-uppercase': rest.uppercase,\n [`title-${rest.type}`]: rest.type,\n });\n\n return <Tag className={classes}>{children}</Tag>;\n};\n\nTitle.propTypes = {\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n uppercase: PropTypes.bool,\n type: PropTypes.oneOf(['error']),\n children: PropTypes.node.isRequired,\n};\n","import PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport './styles.scss';\n\nexport const Text = ({ children, ...rest }) => {\n const classes = classNames('text', rest.className, {\n 'text-uppercase': rest.uppercase,\n 'text-strong': rest.strong,\n 'text-italic': rest.italic,\n [`text-${rest.type}`]: rest.type,\n [`text-${rest.size}`]: rest.size,\n });\n\n return <span className={classes}>{children}</span>;\n};\n\nText.propTypes = {\n size: PropTypes.oneOf(['xs', 'sm', 'lg', 'xxl']),\n uppercase: PropTypes.bool,\n strong: PropTypes.bool,\n italic: PropTypes.bool,\n type: PropTypes.oneOf(['error', 'disabled', 'info']),\n children: PropTypes.node.isRequired,\n};\n","import { useHistory, useParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport Card from 'react-bootstrap/Card';\nimport { formatPrice } from '../../utils';\n\nimport { Text } from '../UIComponents/Typography';\n\nconst ModelFamilyCard = ({ model }) => {\n const { t } = useTranslation();\n const history = useHistory();\n const { retailer } = useParams();\n const {\n ModelName,\n LowestPrice,\n Url,\n ThumbnailSmall,\n ModelCodeForGTag,\n ModelNameForGTag,\n } = model;\n\n const price = formatPrice(LowestPrice);\n\n const handleCardClick = () => {\n window.tngaDataLayer.event = {\n name: 'workflowevent',\n componentName: 'stock-cars-search',\n componentGroup: 'tools',\n action: 'workflow-step',\n label: 'select-model',\n };\n window.tngaDataLayer.workflow = {\n name: 'stock-cars-search',\n step: 'select-model',\n conversion: '0',\n };\n window.tngaDataLayer.product = [\n {\n category: 'cars',\n subCategory: 'new-cars',\n productInfo: {\n productId: ModelCodeForGTag,\n productName: ModelNameForGTag,\n tmeModelId: ModelCodeForGTag,\n modelName: ModelNameForGTag,\n },\n },\n ];\n window.dataLayer.push({ event: 'workflowevent' });\n history.push(`${retailer ? `/${retailer}` : ''}/${Url}`);\n };\n\n return (\n <Card\n className=\"model-family-card mb-5 mb-xl-4\"\n text=\"muted\"\n onClick={handleCardClick}\n >\n <Card.Img className=\"mx-auto\" variant=\"top\" src={ThumbnailSmall} />\n <Card.Body>\n <Card.Title>{ModelName}</Card.Title>\n <p>\n <Text type=\"disabled\">\n {t('PriceForm')} {price} €\n </Text>\n </p>\n <hr />\n </Card.Body>\n </Card>\n );\n};\n\nexport default ModelFamilyCard;\n","import Spinner from 'react-bootstrap/Spinner';\n\nimport './styles.scss';\n\nexport default function Loader() {\n return (\n <div className=\"loader-container\">\n <Spinner animation=\"border\" />\n </div>\n );\n}\n","import { Container, Row, Col } from 'react-bootstrap';\nimport _chunk from 'lodash.chunk';\n\nimport useBreakPoints from '../../hooks/useBreakPoints';\n\nimport ModelFamilyCard from './ModelFamilyCard';\nimport Loader from '../Loader';\n\nconst GridView = ({ models = [], loading }) => {\n const { isLg } = useBreakPoints();\n\n if (loading) return <Loader />;\n\n return (\n <Container fluid>\n {models &&\n _chunk(models, isLg ? 3 : 4).map((row, idx) => (\n <Row\n key={idx}\n xl={4}\n lg={3}\n md={2}\n sm={2}\n xs={1}\n className=\"mb-xl-5 px-md-6\"\n >\n {row.map(model => (\n <Col key={model.ModelName}>\n <ModelFamilyCard model={model} />\n </Col>\n ))}\n </Row>\n ))}\n </Container>\n );\n};\n\nexport default GridView;\n","import { useTranslation } from 'react-i18next';\n\nimport useModelfamilies from '../hooks/useModelfamilies';\n\nimport GridView from '../components/Landing/GridView';\nimport { Title } from '../components/UIComponents/Typography';\n\nconst Landing = () => {\n const { t } = useTranslation();\n const { isLoading, data, isError } = useModelfamilies();\n\n if (isError)\n return (\n <div className=\"landing py-4\">\n <Title type=\"error\">{t('ErrorTechnical')}</Title>\n </div>\n );\n\n return (\n <div className=\"landing py-4 px-2 px-md-2\">\n <Title>{t('SpecialOffers')}</Title>\n <GridView models={data} loading={isLoading} />\n </div>\n );\n};\n\nexport default Landing;\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgDoor(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 22,\n viewBox: \"0 0 22 22\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.8557 2C12.1021 2 9.85359 2.48481 8.1 3.8C7.19835 4.47624 5.64268 6.14135 4.25071 7.72313C3.56959 8.49713 2.9497 9.22549 2.49986 9.76064C2.42851 9.84552 2.36147 9.92551 2.29918 10L20 10V2H14.8557ZM20 12L2 12V20H20V12ZM0 21C0 21.5523 0.447715 22 1 22H21C21.5523 22 22 21.5523 22 21V1C22 0.447715 21.5523 0 21 0H14.8557C11.8979 0 9.14641 0.515195 6.9 2.2C5.80165 3.02376 4.10732 4.85865 2.74929 6.40187C2.05541 7.19037 1.4253 7.93076 0.968889 8.47374C0.74055 8.74538 0.555365 8.96799 0.427038 9.12297C0.362867 9.20047 0.312893 9.26108 0.278827 9.30248L0.239868 9.34989L0.226353 9.36638C0.226292 9.36646 0.226043 9.36676 1 10L0.226353 9.36638C0.0801746 9.54505 0 9.76916 0 10V21ZM18 15L16 15C15.4477 15 15 14.5523 15 14C15 13.4477 15.4477 13 16 13L18 13C18.5523 13 19 13.4477 19 14C19 14.5523 18.5523 15 18 15Z\",\n fill: \"#8B8C90\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgDoor);\nexport default __webpack_public_path__ + \"static/media/Door.e8e85e21.svg\";\nexport { ForwardRef as ReactComponent };","import { useQuery } from 'react-query';\n\nimport { apiRequest } from '../utils/apiUtils';\n\nexport default function useRetailers(retailer) {\n return useQuery(\n ['retailers', retailer],\n () => apiRequest(`/api/retailers${retailer ? `?code=${retailer}` : ''}`),\n {\n refetchOnWindowFocus: false,\n }\n );\n}\n","import * as React from 'react';\n\nexport default function useAsyncDebounce(defaultFn, defaultWait = 0) {\n const debounceRef = React.useRef({});\n\n const getDefaultFn = useGetLatest(defaultFn);\n const getDefaultWait = useGetLatest(defaultWait);\n\n return React.useCallback(\n async (...args) => {\n if (!debounceRef.current.promise) {\n debounceRef.current.promise = new Promise((resolve, reject) => {\n debounceRef.current.resolve = resolve;\n debounceRef.current.reject = reject;\n });\n }\n\n if (debounceRef.current.timeout) {\n clearTimeout(debounceRef.current.timeout);\n }\n\n debounceRef.current.timeout = setTimeout(async () => {\n delete debounceRef.current.timeout;\n try {\n debounceRef.current.resolve(await getDefaultFn()(...args));\n } catch (err) {\n debounceRef.current.reject(err);\n } finally {\n delete debounceRef.current.promise;\n }\n }, getDefaultWait());\n\n return debounceRef.current.promise;\n },\n [getDefaultFn, getDefaultWait]\n );\n}\n\nfunction useGetLatest(obj) {\n const ref = React.useRef();\n ref.current = obj;\n\n return React.useCallback(() => ref.current, []);\n}\n","import { useHistory, useParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Button, Col, Container, Row } from 'react-bootstrap';\nimport Icon from '@mdi/react';\nimport { mdiChevronLeft } from '@mdi/js';\n\nimport useBreakPoints from '../../hooks/useBreakPoints';\n\nimport { Title } from '../UIComponents/Typography';\n\nexport default function Hero({ img, model, price }) {\n const { t } = useTranslation();\n const history = useHistory();\n const { retailer } = useParams();\n const { isXs } = useBreakPoints();\n\n const handleBackBtn = () => {\n history.push(`/${retailer ? retailer : ''}`);\n };\n\n return (\n <Container fluid className=\"hero px-4 px-lg-6 px-xl-1\">\n <Row>\n <Col\n className=\"d-flex justify-content-lg-end justify-content-start mt-n5 mt-md-n2 pt-md-3 pt-xl-0 mt-xl-0\"\n md={12}\n lg={3}\n >\n <Button variant=\"functional\" onClick={handleBackBtn}>\n <Icon path={mdiChevronLeft} size={1} />\n {!isXs && <span>{t('ButtonBack')}</span>}\n </Button>\n </Col>\n <Col md={12} xl={6} className=\"px-md-5\">\n <Title size=\"1\" uppercase>\n {model}\n </Title>\n <Title size=\"3\">\n {t('PriceForm').toUpperCase()}\n <br /> {price} €\n </Title>\n <img src={img} alt={model} />\n </Col>\n </Row>\n </Container>\n );\n}\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgPump(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 23,\n viewBox: \"0 0 17 23\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6 2C6 0.895431 6.89543 0 8 0C9.10457 0 10 0.895431 10 2C10 3.10457 9.10457 4 8 4C6.89543 4 6 3.10457 6 2ZM2 8C2 6.34315 3.34315 5 5 5H11C12.6569 5 14 6.34315 14 8V21H15C15.5523 21 16 21.4477 16 22C16 22.5523 15.5523 23 15 23H1C0.447715 23 0 22.5523 0 22C0 21.4477 0.447715 21 1 21H2V8ZM4 21H12V8C12 7.44772 11.5523 7 11 7H5C4.44772 7 4 7.44772 4 8V21ZM5 9C5 8.44772 5.44772 8 6 8H10C10.5523 8 11 8.44772 11 9V13C11 13.5523 10.5523 14 10 14H6C5.44772 14 5 13.5523 5 13V9ZM7 10V12H9V10H7ZM16 8C16.5523 8 17 8.44772 17 9V16C17 16.5523 16.5523 17 16 17C15.4477 17 15 16.5523 15 16V9C15 8.44772 15.4477 8 16 8Z\",\n fill: \"#8B8C90\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPump);\nexport default __webpack_public_path__ + \"static/media/Pump.53a6b524.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgCo2(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 18,\n viewBox: \"0 0 24 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.0003 18C4.9003 18 1.3003 15.2 0.300302 11.2C-0.299698 8.9 0.000301719 6.4 1.3003 4.4C2.5003 2.3 4.5003 0.899997 6.8003 0.299997C9.1003 -0.300003 11.6003 -3.21865e-06 13.6003 1.3C15.4003 2.3 16.8003 4 17.5003 6H18.0003C21.3003 6 24.0003 8.7 24.0003 12C24.0003 15.3 21.3003 18 18.0003 18H9.0003ZM9.0003 2C8.4003 2 7.8003 2.1 7.2003 2.2C5.4003 2.7 3.9003 3.8 3.0003 5.4C2.1003 7 1.8003 8.9 2.3003 10.7C3.0003 13.8 5.8003 16 9.0003 16H18.0003C20.2003 16 22.0003 14.2 22.0003 12C22.0003 9.8 20.2003 8 18.0003 8H16.7003C16.2003 8 15.8003 7.7 15.7003 7.2C15.0003 4.1 12.1003 2 9.0003 2Z\",\n fill: \"#8B8C90\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.04888 13C9.65075 13 10.0759 12.867 10.4238 12.6675L10.1367 11.8884C9.89371 12.0167 9.54032 12.1592 9.13723 12.1592C8.46909 12.1592 8.09914 11.7649 8.09914 11.2614C8.09914 10.7341 8.50775 10.373 9.13723 10.373C9.4851 10.373 9.76671 10.487 10.0262 10.6153L10.3631 9.81248C10.0428 9.66522 9.62315 9.53221 9.09306 9.53221C7.87826 9.53221 7.0003 10.221 7.0003 11.2804C7.0003 12.3112 7.82857 13 9.04888 13Z\",\n fill: \"#8B8C90\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.6189 13C13.8171 13 14.7006 12.2969 14.7006 11.2519C14.7006 10.2068 13.8171 9.53221 12.6299 9.53221C11.4427 9.53221 10.5593 10.202 10.5593 11.2661C10.5593 12.3302 11.4483 13 12.6189 13ZM12.6299 12.1497C12.0501 12.1497 11.6581 11.7886 11.6581 11.2661C11.6581 10.7388 12.0501 10.3825 12.6299 10.3825C13.2097 10.3825 13.6018 10.7388 13.6018 11.2661C13.6018 11.7886 13.2097 12.1497 12.6299 12.1497Z\",\n fill: \"#8B8C90\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.2742 11.0522H17.0003V10.6018H16.1588L16.4503 10.3368C16.7088 10.103 16.9175 9.89782 16.9175 9.59855C16.9175 9.24797 16.5862 9 16.0958 9C15.7314 9 15.4432 9.11971 15.2344 9.31067L15.4962 9.71826C15.6718 9.56434 15.8606 9.47029 16.0428 9.47029C16.2052 9.47029 16.3046 9.55294 16.3046 9.6698C16.3046 9.77811 16.2416 9.90067 16.013 10.103L15.2742 10.7586V11.0522Z\",\n fill: \"#8B8C90\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCo2);\nexport default __webpack_public_path__ + \"static/media/CO2.7bae7781.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgEngine(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 17,\n viewBox: \"0 0 22 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10 2L7 2C6.44771 2 6 1.55228 6 1C6 0.447715 6.44771 0 7 0H15C15.5523 0 16 0.447716 16 1C16 1.55229 15.5523 2 15 2L12 2V3L15 3C15.3148 3 15.6111 3.14819 15.8 3.4L18.5 7H20V6C20 5.44772 20.4477 5 21 5C21.5523 5 22 5.44772 22 6V14C22 14.5523 21.5523 15 21 15C20.4477 15 20 14.5523 20 14V13.5H19V15C19 16.1046 18.1046 17 17 17H7.60555C7.01328 17 6.43425 16.8247 5.94145 16.4962L3.4453 14.8321C3.1671 14.6466 3 14.3344 3 14V11H2L2 14C2 14.5523 1.55228 15 1 15C0.447715 15 0 14.5523 0 14V6C0 5.44772 0.447715 5 1 5C1.55228 5 2 5.44772 2 6L2 9H3V7C3 6.44772 3.44772 6 4 6H4.26393C4.6427 6 4.98897 5.786 5.15836 5.44721L6.10557 3.55279C6.27496 3.214 6.62123 3 7 3L10 3V2ZM5 13.4648L7.05085 14.8321C7.21512 14.9416 7.40813 15 7.60555 15H17V13.5C17 12.3954 17.8954 11.5 19 11.5H20V9H18C17.6852 9 17.3889 8.85181 17.2 8.6L14.5 5H7.61803L6.94721 6.34164C6.55161 7.13286 5.83443 7.6972 5 7.9084V13.4648Z\",\n fill: \"#8B8C90\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.5 10C12.5 10.8284 11.8284 11.5 11 11.5C10.1716 11.5 9.5 10.8284 9.5 10C9.5 9.17157 10.1716 8.5 11 8.5C11.8284 8.5 12.5 9.17157 12.5 10Z\",\n fill: \"#8B8C90\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEngine);\nexport default __webpack_public_path__ + \"static/media/Engine.4a27deab.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgRims(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 22,\n viewBox: \"0 0 22 22\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 11C0 4.92487 4.92487 0 11 0C17.0751 0 22 4.92487 22 11C22 17.0751 17.0751 22 11 22C4.92487 22 0 17.0751 0 11ZM11 2C6.02944 2 2 6.02944 2 11C2 15.9706 6.02944 20 11 20C15.9706 20 20 15.9706 20 11C20 6.02944 15.9706 2 11 2ZM4 11C4 7.13401 7.13401 4 11 4C14.866 4 18 7.13401 18 11C18 14.866 14.866 18 11 18C7.13401 18 4 14.866 4 11ZM6.00766 10.7209C6.00257 10.8133 6 10.9064 6 11C6 12.4468 6.61446 13.75 7.59664 14.663L8.64116 12.8538C8.28939 12.4068 8.06194 11.8574 8.01091 11.2577L6.00766 10.7209ZM6.51544 8.78644L8.51302 9.32169C8.86957 8.79436 9.38943 8.38651 10 8.17071V6.10002C8.46764 6.41107 7.18976 7.4229 6.51544 8.78644ZM12 6.10002V8.17071C12.6254 8.39176 13.1556 8.8143 13.5127 9.36033L15.5042 8.82669C14.8353 7.44284 13.5474 6.41412 12 6.10002ZM15.9946 10.7659L13.9847 11.3044C13.9261 11.8859 13.7015 12.4185 13.3588 12.8538L14.4034 14.663C15.3855 13.75 16 12.4468 16 11C16 10.9215 15.9982 10.8435 15.9946 10.7659ZM12.6957 15.7051L11.6681 13.9253C11.4532 13.9742 11.2296 14 11 14C10.7704 14 10.5468 13.9742 10.3319 13.9253L9.30435 15.7051C9.83382 15.896 10.4048 16 11 16C11.5952 16 12.1662 15.896 12.6957 15.7051ZM11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11C12 10.4477 11.5523 10 11 10Z\",\n fill: \"#8B8C90\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgRims);\nexport default __webpack_public_path__ + \"static/media/Rims.008596e7.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgTag(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 21,\n viewBox: \"0 0 21 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 1C0 0.447715 0.447715 0 1 0H11C11.2673 0 11.5234 0.106988 11.7113 0.29709L20.1092 8.795L20.1104 8.79623C21.2718 9.96583 21.272 11.8533 20.111 13.0232L20.1092 13.025L13.1275 20.1202C12.5648 20.6835 11.8012 21 11.005 21C10.2108 21 9.44907 20.6851 8.88677 20.1244L0.300274 11.7144C0.108228 11.5263 0 11.2688 0 11V1ZM2 2V10.5797L10.2975 18.7067C10.4851 18.8944 10.7396 19 11.005 19C11.2694 19 11.5229 18.8953 11.7103 18.709L11.7125 18.7067L18.6872 11.6186L18.6908 11.615C19.0785 11.225 19.0785 10.595 18.6908 10.205L18.6887 10.2029L10.5823 2H2Z\",\n fill: \"#8B8C90\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 6.5C8 7.32843 7.32843 8 6.5 8C5.67157 8 5 7.32843 5 6.5C5 5.67157 5.67157 5 6.5 5C7.32843 5 8 5.67157 8 6.5Z\",\n fill: \"#8B8C90\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgTag);\nexport default __webpack_public_path__ + \"static/media/Tag.551d3824.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgCheck(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 13,\n viewBox: \"0 0 18 13\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.7071 0.292893C18.0976 0.683417 18.0976 1.31658 17.7071 1.70711L6.70711 12.7071C6.31658 13.0976 5.68342 13.0976 5.29289 12.7071L0.292893 7.70711C-0.0976311 7.31658 -0.0976311 6.68342 0.292893 6.29289C0.683417 5.90237 1.31658 5.90237 1.70711 6.29289L6 10.5858L16.2929 0.292893C16.6834 -0.0976311 17.3166 -0.0976311 17.7071 0.292893Z\",\n fill: \"#8B8C90\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheck);\nexport default __webpack_public_path__ + \"static/media/Check.c863cb2e.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Container, Row, Col } from 'react-bootstrap';\nimport Switch from 'react-bootstrap/esm/Switch';\n\nimport { compareArrayNumbers } from '../../utils';\n\nimport Loader from '../Loader';\nimport { CustomRange } from '../UIComponents/Slider';\nimport { Text } from '../UIComponents/Typography';\n\nimport { ReactComponent as Door } from '../../assets/images/Door.svg';\nimport { ReactComponent as Pump } from '../../assets/images/Pump.svg';\nimport { ReactComponent as CO2 } from '../../assets/images/CO2.svg';\nimport { ReactComponent as Engine } from '../../assets/images/Engine.svg';\nimport { ReactComponent as Rims } from '../../assets/images/Rims.svg';\nimport { ReactComponent as Tag } from '../../assets/images/Tag.svg';\nimport { ReactComponent as Check } from '../../assets/images/Check.svg';\n\nconst Filters = ({\n filters,\n isLoading,\n filterValues,\n setFilterValues,\n setHasFilterChanged,\n}) => {\n const { t } = useTranslation();\n\n const filtersToRender = { ...filters };\n\n for (const filter in filtersToRender) {\n if (Object.hasOwnProperty.call(filtersToRender, filter)) {\n if (filtersToRender[filter].length <= 1) delete filtersToRender[filter];\n }\n }\n delete filtersToRender.ModelFamilyName;\n\n const handleFilterChange = (value, filter) => {\n setHasFilterChanged(true);\n if (filter === 'CO2' || filter === 'PriceRange') {\n setFilterValues(prevState => ({ ...prevState, [filter]: value }));\n } else {\n if (!filterValues[filter].length) {\n setFilterValues(prevState => ({ ...prevState, [filter]: [value] }));\n } else {\n if (filterValues[filter].includes(value)) {\n const values = filterValues[filter].filter(val => val !== value);\n setFilterValues(prevState => ({\n ...prevState,\n [filter]: values,\n }));\n } else {\n setFilterValues(prevState => ({\n ...prevState,\n [filter]: [...prevState[filter], value],\n }));\n }\n }\n }\n };\n\n const renderFilters = filterType => {\n switch (filterType) {\n case 'FuelTypes':\n return (\n <>\n <Text className=\"filter-label d-flex align-items-center\">\n {!filterValues?.[filterType].length ? (\n <Pump />\n ) : (\n <Check className=\"checked\" />\n )}{' '}\n {t('FuelType')}\n </Text>\n <Row className=\"justify-content-start mt-3 mb-4 flex-column\">\n {filtersToRender[filterType].map(\n ({ FuelType, FuelName }, idx) => (\n <React.Fragment key={FuelName}>\n <Switch\n className={`custom-switch-lg ${idx === 0 && 'mr-2'}`}\n id={FuelType + '-fuel'}\n label={FuelName}\n onChange={() => handleFilterChange(FuelType, filterType)}\n />\n </React.Fragment>\n )\n )}\n </Row>\n </>\n );\n case 'TransmissionTypes':\n return (\n <>\n <Text className=\"filter-label d-flex align-items-center\">\n {!filterValues?.[filterType].length ? (\n <Engine />\n ) : (\n <Check className=\"checked\" />\n )}{' '}\n {t('Transmission')}\n </Text>\n <Row className=\"justify-content-start mt-3 mb-4 flex-column\">\n {filtersToRender[filterType].map(({ Name, Value }, idx) => (\n <React.Fragment key={Name}>\n <Switch\n className={`custom-switch-lg ${idx === 0 && 'mr-2'}`}\n id={Value + '-transmission'}\n label={Name}\n onChange={() => handleFilterChange(Value, filterType)}\n />\n </React.Fragment>\n ))}\n </Row>\n </>\n );\n case 'BodyTypes':\n return (\n <>\n <Text className=\"filter-label d-flex align-items-start\">\n {!filterValues?.[filterType].length ? (\n <Door />\n ) : (\n <Check className=\"checked\" />\n )}{' '}\n {t('BodyType')}\n </Text>\n <Row className=\"justify-content-start mt-3 mb-4 flex-column\">\n {filtersToRender[filterType].map(({ Id, Value }, idx) => (\n <Col key={Id}>\n <Switch\n className={`custom-switch-lg ${idx === 0 && 'mr-2'}`}\n id={Id + '-body'}\n label={Value}\n onChange={() => handleFilterChange(Id, filterType)}\n />\n </Col>\n ))}\n </Row>\n </>\n );\n case 'DriveTrainTypes':\n return (\n <>\n <Text className=\"filter-label d-flex align-items-center\">\n {!filterValues?.[filterType].length ? (\n <Rims />\n ) : (\n <Check className=\"checked\" />\n )}{' '}\n {t('DriveTrainType')}\n </Text>\n <Row className=\"justify-content-start mt-3 mb-4 flex-column\">\n {filtersToRender[filterType].map(({ Id, Name }, idx) => (\n <Col key={Id}>\n <Switch\n className={`custom-switch-lg ${idx === 0 && 'mr-2'}`}\n id={Id + '-driveTrain'}\n label={Name}\n onChange={() => handleFilterChange(Id, filterType)}\n />\n </Col>\n ))}\n </Row>\n </>\n );\n case 'PriceRange':\n return (\n <>\n <Text className=\"filter-label d-flex align-items-center\">\n {compareArrayNumbers(\n filterValues[filterType],\n filters[filterType]\n ) ? (\n <Tag />\n ) : (\n <Check className=\"checked\" />\n )}{' '}\n {t('Price')}\n </Text>\n <CustomRange\n min={filters[filterType][0]}\n max={filters[filterType][1]}\n sliderValuesSufix={'€'}\n sliderValue={filterValues.PriceRange}\n onSliderChange={value => handleFilterChange(value, filterType)}\n />\n </>\n );\n case 'CO2':\n return (\n <>\n <Text className=\"filter-label d-flex align-items-center\">\n {compareArrayNumbers(\n filterValues[filterType],\n filters[filterType]\n ) ? (\n <CO2 />\n ) : (\n <Check className=\"checked\" />\n )}{' '}\n {t('CoPrefix')}\n <sub className=\"pr-1\">2</sub>\n {t('CO')}\n </Text>\n <CustomRange\n min={filters[filterType][0]}\n max={filters[filterType][1]}\n sliderValue={filterValues.CO2}\n sliderValuesSufix={t('COUnit')}\n onSliderChange={value => handleFilterChange(value, filterType)}\n />\n </>\n );\n default:\n break;\n }\n };\n\n if (isLoading)\n return (\n <Container fluid className=\"filters\">\n <Loader />\n </Container>\n );\n\n return (\n <div className=\"filters\">\n <Container fluid className=\"px-5 py-5 px-xl-10 mt-4 mb-6\">\n <Row className=\"justify-content-around\">\n {filters &&\n Object.keys(filtersToRender).map((filter, idx) => (\n <Col\n xs={12}\n md={6}\n lg={Math.round(12 / Object.keys(filtersToRender).length)}\n key={idx}\n >\n {renderFilters(filter)}\n </Col>\n ))}\n </Row>\n </Container>\n </div>\n );\n};\n\nexport default Filters;\n","import { Trans, useTranslation } from 'react-i18next';\n\nimport { formatPrice } from '../../utils';\n\nimport { Text } from '../UIComponents/Typography';\n\nimport './styles.scss';\n\nexport default function PriceBox({\n MonthlyPmt,\n Prices,\n InterestRate,\n IsHybrid,\n SpecialInterest,\n EuriborText,\n IsDetailsView = false,\n}) {\n const { t } = useTranslation();\n const { CurrentPrice, OriginalPrice } = Prices;\n\n const hasDiscount = CurrentPrice < OriginalPrice;\n\n let interest;\n\n if (!IsDetailsView) {\n interest = (SpecialInterest || InterestRate)\n .toString()\n .split('.')\n .join(',');\n }\n\n return (\n <div className=\"price-box p-3 mb-4\">\n {hasDiscount ? (\n <>\n <Text type=\"disabled\">{`${t('RegularPrice')} ${formatPrice(\n OriginalPrice\n )} €`}</Text>\n <Text>\n {t('SpecialPrice')}{' '}\n <Text size=\"lg\" strong type=\"error\">{`${formatPrice(\n CurrentPrice\n )} €`}</Text>\n </Text>\n </>\n ) : (\n <Text>\n {t('Price')}{' '}\n <Text size=\"lg\" strong>{`${formatPrice(CurrentPrice)} €`}</Text>\n </Text>\n )}\n <Text>\n <Trans i18nKey=\"MonthlyPayment\">Kuumaks {{ MonthlyPmt }} €</Trans>\n </Text>\n <Text type=\"disabled\" size=\"sm\">\n {t('TaxIncluded')}\n </Text>\n {!IsDetailsView && (\n <div className=\"leasing-interest mt-4\">\n <div className={`interest ${IsHybrid && 'hybrid'} ${'list-icon'}`}>\n <Text>{`${interest}%`}</Text>\n </div>\n <div\n className={`interest-text ${IsHybrid && 'hybrid'} ${'list-icon'}`}\n >\n <Text strong className=\"interest-text-capital\">\n {IsHybrid ? t('HybridLeasingInterest') : t('LeasingInterest')}\n </Text>\n <Text>{EuriborText}</Text>\n </div>\n </div>\n )}\n </div>\n );\n}\n","import { Col, Row } from 'react-bootstrap';\nimport './styles.scss';\n\nexport default function LeasingInterest({ isDetailView, CampaignIcons = [] }) {\n if (!isDetailView) {\n return (\n <Row>\n {CampaignIcons.map(src => (\n <Col xs=\"6\" lg=\"6\" md=\"12\" xl=\"6\">\n <img className=\"campaign-icon\" src={src} alt=\"Campaign\" />\n </Col>\n ))}\n </Row>\n );\n }\n return (\n <Row>\n {CampaignIcons.map(src => {\n return (\n <Col xs=\"6\" lg=\"4\" md=\"6\" xl=\"4\">\n <img className=\"campaign-icon\" src={src} alt=\"Campaign\" />\n </Col>\n );\n })}\n </Row>\n );\n}\n","import { Trans, useTranslation } from 'react-i18next';\nimport { useHistory, useParams } from 'react-router-dom';\nimport { Button, Col, Container, Row, Badge } from 'react-bootstrap';\n\nimport useBreakPoints from '../../hooks/useBreakPoints';\n\nimport { formatDate, isCurrentDate } from '../../utils';\n\nimport PriceBox from '../PriceBox';\nimport LeasingInterest from '../LeasingInterest';\nimport { Text, Title } from '../UIComponents/Typography';\n\nexport default function ListCard({ car, handleModal }) {\n const { t } = useTranslation();\n const history = useHistory();\n const { modelFamily, retailer } = useParams();\n const { isSmallerThanMd, isXs } = useBreakPoints();\n const {\n ModelName,\n ThumbnailBig,\n MonthlyPmt,\n Prices,\n ETA,\n SpecialInterest,\n Accessories,\n ColorName,\n IsHybrid,\n URN,\n InterestRate,\n FiveYearsWarranty,\n InteriourName,\n ReservedUntil,\n ModelCodeForGTag,\n ModelNameForGTag,\n CampaignIcons,\n EuriborText,\n } = car;\n\n const availableFrom = formatDate(ETA);\n const isCarAvailable = isCurrentDate(ETA);\n\n const handleChooseVehicle = urn => {\n window.tngaDataLayer.event = {\n name: 'workflowevent',\n componentName: 'stock-cars-search',\n componentGroup: 'tools',\n action: 'workflow-step',\n label: 'offer-details',\n };\n window.tngaDataLayer.workflow = {\n name: 'stock-cars-search',\n step: 'offer-details',\n conversion: '0',\n };\n window.tngaDataLayer.product = [\n {\n category: 'cars',\n subCategory: 'new-cars',\n productInfo: {\n productId: ModelCodeForGTag,\n productName: ModelNameForGTag,\n tmeModelId: ModelCodeForGTag,\n modelName: ModelNameForGTag,\n },\n },\n ];\n window.dataLayer.push({ event: 'workflowevent' });\n history.push(`${retailer ? `/${retailer}` : ''}/${modelFamily}/${urn}`);\n };\n\n const setAvailability = string => {\n const splitString = string.split(':');\n return (\n <>\n {`${splitString[0]}: `}\n <strong>{splitString[1]} </strong>\n </>\n );\n };\n\n return (\n <Container className=\"list-card mb-6\" id={URN} fluid>\n <Row xs={1} md={2}>\n <Col md={5}>\n <Row className=\"justify-content-center align-items-start position-relative\">\n {ReservedUntil ? (\n <Badge className=\"position-absolute\" variant=\"light\">\n {t('Booked')}\n </Badge>\n ) : null}\n <img\n className=\"model-img\"\n src={ThumbnailBig}\n alt=\"model\"\n onClick={() => handleChooseVehicle(URN)}\n />\n </Row>\n <LeasingInterest\n CampaignIcons={CampaignIcons}\n SpecialInterest={SpecialInterest}\n InterestRate={InterestRate}\n IsHybrid={IsHybrid}\n FiveYearsWarranty={FiveYearsWarranty}\n />\n </Col>\n <Col md={7}>\n <Row className=\"px-2\">\n <Title size=\"4\">{ModelName}</Title>\n </Row>\n <Row xs={1} md={2}>\n <Col className=\"details px-4 mt-2\">\n <Row className=\"flex-column\">\n <Text>\n {t('Color')}: <Text strong>{ColorName}</Text>\n </Text>\n {InteriourName ? (\n <Text>\n {t('InteriorColour')} <Text strong>{InteriourName}</Text>\n </Text>\n ) : null}\n {Accessories ? (\n <Text>\n {t('Accessories')}{' '}\n <Text strong>{Accessories.join(', ')}</Text>\n </Text>\n ) : null}\n <Text className=\"mt-md-2 mt-lg-4 mb-3\">\n {isCarAvailable ? (\n <span className=\"text-capitalize\">\n {setAvailability(t('Available'))}\n </span>\n ) : (\n <Trans i18nKey=\"AvailableFrom\">\n Saadavus:\n <strong className=\"text-capitalize\">\n alates {{ availableFrom }}\n </strong>\n </Trans>\n )}\n </Text>\n </Row>\n <Row>\n <Button\n variant=\"secondary\"\n className=\"mb-2\"\n onClick={() => handleChooseVehicle(URN)}\n block={isSmallerThanMd}\n >\n {t('ShowDetails')}\n </Button>\n </Row>\n </Col>\n <Col className=\"p-0 mt-2 d-flex flex-column justify-content-between\">\n <PriceBox\n MonthlyPmt={MonthlyPmt}\n Prices={Prices}\n InterestRate={InterestRate}\n IsHybrid={IsHybrid}\n SpecialInterest={SpecialInterest}\n EuriborText={EuriborText}\n />\n <Button\n className=\"mb-2\"\n block\n size=\"sm\"\n onClick={() => handleModal(URN)}\n >\n {t('RequestInformation')}\n </Button>\n </Col>\n </Row>\n </Col>\n </Row>\n {isXs ? <hr className=\"hr-thick\" /> : null}\n </Container>\n );\n}\n","import * as React from 'react';\nimport { useTranslation, Trans } from 'react-i18next';\nimport { Button, Modal, Row, Col, Form } from 'react-bootstrap';\n\nimport { createMarkup } from '../utils';\nimport { postRequest } from '../utils/apiUtils';\n\nimport CheckBox from './UIComponents/Checkbox';\nimport { Text, Title } from './UIComponents/Typography';\n\nexport default function OfferModal({\n show,\n onClose,\n retailers = [],\n urn,\n models,\n modelName,\n vehicle,\n}) {\n const { t } = useTranslation();\n const [isValid, setIsValid] = React.useState(false);\n const [isTermsChecked, setIsTermsChecked] = React.useState(false);\n const [isSubmitted, setIsSubmitted] = React.useState(false);\n const [isSomeFieldChanged, setIsSomeFieldChanged] = React.useState(false);\n const [formValues, setFormValues] = React.useState(() => {\n const currentModel = modelName\n ? modelName\n : models.find(model => model.URN === urn)?.ModelName ?? '';\n\n return {\n ModelName: currentModel,\n };\n });\n\n const handleFieldChange = e => {\n if (!isSomeFieldChanged) {\n window.tngaDataLayer.event = {\n name: 'formevent',\n componentName: 'offer-request',\n componentGroup: 'forms',\n action: 'form-step',\n label: 'contact-details',\n };\n window.tngaDataLayer.form = {\n name: 'lead-offer-request',\n step: 'contact-details',\n conversion: '0',\n };\n window.tngaDataLayer.product = [\n {\n category: 'cars',\n subCategory: 'new-cars',\n productInfo: {\n productId: vehicle?.ModelCodeForGTag,\n productName: vehicle?.ModelNameForGTag,\n tmeModelId: vehicle?.ModelCodeForGTag,\n modelName: vehicle?.ModelNameForGTag,\n },\n },\n ];\n window.dataLayer.push({ event: 'formevent' });\n }\n setIsSomeFieldChanged(true);\n const id = e.target.id;\n if (id === 'Terms') setIsTermsChecked(e.target.value);\n\n setFormValues(formValues => ({\n ...formValues,\n [id]: e.target.value,\n }));\n };\n\n const handleClose = () => {\n setIsValid(false);\n setFormValues({});\n setIsTermsChecked(false);\n onClose();\n };\n\n const handleSubmit = e => {\n e.preventDefault();\n const form = e.currentTarget;\n const isTermsAccepted = formValues?.Terms;\n\n if (!isTermsAccepted) setIsTermsChecked('notChecked');\n\n if (form.checkValidity() === true && isTermsAccepted) {\n const postBody = {\n ...formValues,\n CarId: urn,\n CarDescription: formValues.ModelName,\n };\n delete postBody.Gdpr;\n delete postBody.Terms;\n\n fetch('/api/offerRequest', postRequest(postBody)).then(res => {\n if (res.ok) {\n const retailer = retailers.find(\n r => r.WebServiceId === Number(formValues.RetailerId)\n );\n\n window.tngaDataLayer.event = {\n name: 'formevent',\n componentName: 'offer-request',\n componentGroup: 'forms',\n action: 'form-step',\n label: 'form-submit',\n };\n window.tngaDataLayer.form = {\n name: 'lead-offer-request',\n step: 'form-submit',\n conversion: '1',\n };\n window.tngaDataLayer.product = [\n {\n category: 'cars',\n subCategory: 'new-cars',\n productInfo: {\n productId: vehicle.ModelCodeForGTag,\n productName: vehicle.ModelNameForGTag,\n tmeModelId: vehicle.ModelCodeForGTag,\n modelName: vehicle.ModelNameForGTag,\n },\n },\n ];\n window.tngaDataLayer.dealer = {\n name: retailer.Name,\n dealerId: retailer.WebServiceId,\n };\n window.dataLayer.push({ event: 'formevent' });\n }\n return res.ok ? setIsSubmitted(true) : setIsSubmitted('error');\n });\n }\n\n setIsValid(true);\n };\n\n return (\n <Modal size=\"lg\" show={show} onHide={handleClose} centered>\n <Modal.Header closeButton>\n {!isSubmitted ? (\n <Modal.Title className=\"mx-auto\">\n {t('WantMoreInformationAboutCar')}\n </Modal.Title>\n ) : isSubmitted === 'error' ? (\n <Modal.Title className=\"mx-auto\">{t('Error')}</Modal.Title>\n ) : (\n <Modal.Title className=\"mx-auto\">\n {t('ThankYouForTheRequest')}\n </Modal.Title>\n )}\n </Modal.Header>\n <Modal.Body className={isSubmitted && 'form-submitted'}>\n {!isSubmitted ? (\n <Form noValidate validated={isValid} onSubmit={handleSubmit}>\n <Row>\n <Col xs={12} md={6}>\n <Form.Group controlId=\"Name\">\n <Form.Label className=\"required\">{t('Firstname')}</Form.Label>\n <Form.Control\n onKeyUp={handleFieldChange}\n required\n type=\"text\"\n />\n <Form.Control.Feedback type=\"invalid\">\n <Trans i18nKey=\"RequiredField\">\n {{ field: t('Firstname') }} on kohustuslik\n </Trans>\n </Form.Control.Feedback>\n </Form.Group>\n </Col>\n <Col xs={12} md={6}>\n <Form.Group controlId=\"Surname\">\n <Form.Label className=\"required\">{t('Surname')}</Form.Label>\n <Form.Control\n onKeyUp={handleFieldChange}\n required\n type=\"text\"\n />\n <Form.Control.Feedback type=\"invalid\">\n <Trans i18nKey=\"RequiredField\">\n {{ field: t('Surname') }} on kohustuslik\n </Trans>\n </Form.Control.Feedback>\n </Form.Group>\n </Col>\n </Row>\n <Row>\n <Col xs={12} md={6}>\n <Form.Group controlId=\"PhoneNo\">\n <Form.Label className=\"required\">{t('Phone')}</Form.Label>\n <Form.Control\n onKeyUp={handleFieldChange}\n required\n type=\"text\"\n />\n <Form.Control.Feedback type=\"invalid\">\n <Trans i18nKey=\"RequiredField\">\n {{ field: t('Phone') }} on kohustuslik\n </Trans>\n </Form.Control.Feedback>\n </Form.Group>\n </Col>\n <Col xs={12} md={6}>\n <Form.Group controlId=\"Email\">\n <Form.Label className=\"required\">{t('Email')}</Form.Label>\n <Form.Control\n onKeyUp={handleFieldChange}\n required\n type=\"email\"\n />\n <Form.Control.Feedback type=\"invalid\">\n <Trans i18nKey=\"RequiredField\">\n {{ field: t('Email') }} on kohustuslik\n </Trans>\n </Form.Control.Feedback>\n </Form.Group>\n </Col>\n </Row>\n <Row>\n <Col xs={12} md={6}>\n <Form.Group controlId=\"RetailerId\">\n <Form.Label className=\"required\">{t('Retailer')}</Form.Label>\n <Form.Control\n required\n onChange={handleFieldChange}\n as=\"select\"\n custom\n >\n <>\n <option value={null}></option>\n {retailers.map(({ MarketingName, WebServiceId }) => (\n <option key={WebServiceId} value={WebServiceId}>\n {MarketingName}\n </option>\n ))}\n </>\n </Form.Control>\n <Form.Control.Feedback type=\"invalid\">\n <Trans i18nKey=\"RequiredField\">\n {{ field: t('Retailer') }} on kohustuslik\n </Trans>\n </Form.Control.Feedback>\n </Form.Group>\n </Col>\n </Row>\n <Row>\n <Col>{formValues.ModelName}</Col>\n </Row>\n <Form.Group controlId=\"Comment\">\n <Form.Label className=\"required\">{t('Comment')}</Form.Label>\n <Form.Control\n required\n onKeyUp={handleFieldChange}\n as=\"textarea\"\n rows={3}\n placeholder={t('UserCommentDefaultText')}\n />\n <Form.Control.Feedback type=\"invalid\">\n <Trans i18nKey=\"RequiredField\">\n {{ field: t('Comment') }} on kohustuslik\n </Trans>\n </Form.Control.Feedback>\n </Form.Group>\n <div dangerouslySetInnerHTML={createMarkup(t('GDPR'))} />\n <Form.Group controlId=\"Terms\">\n <CheckBox\n id=\"Terms\"\n checked={formValues.Terms}\n onChange={handleFieldChange}\n />\n <label\n htmlFor=\"Terms\"\n dangerouslySetInnerHTML={createMarkup(t('Confirmation'))}\n />\n <div\n className={`invalid-feedback ${\n isTermsChecked === 'notChecked' && 'feedback-displayed'\n }`}\n >\n {t('EMailAgreement')}\n </div>\n </Form.Group>\n <Row className=\"footer justify-content-end my-5\">\n <Button\n variant=\"secondary\"\n onClick={handleClose}\n size=\"sm\"\n type=\"button\"\n >\n {t('Close')}\n </Button>\n <Button className=\"ml-4\" size=\"sm\" type=\"submit\">\n {t('Send')}\n </Button>\n </Row>\n </Form>\n ) : isSubmitted === 'error' ? (\n <Title type=\"error\" size=\"4\">\n {t('ErrorUnabelToSendMail')}\n </Title>\n ) : (\n <Text>{t('RetailerWillContactYou')}</Text>\n )}\n </Modal.Body>\n </Modal>\n );\n}\n","import { useTranslation } from 'react-i18next';\n\nimport { createMarkup } from '../utils';\n\nexport default function Disclaimers({ modelFamily }) {\n const { t } = useTranslation();\n\n let modelSpecificDisclaimer = t('ModelSpecificDisclaimer$' + modelFamily);\n if (modelSpecificDisclaimer === 'ModelSpecificDisclaimer$' + modelFamily)\n modelSpecificDisclaimer = '';\n\n return (\n <div className=\"disclaimer mt-4 text-left\">\n <p dangerouslySetInnerHTML={createMarkup(t('PhotosAreIllustrative'))} />\n <p dangerouslySetInnerHTML={createMarkup(t('DisclaimerReservation'))} />\n <p dangerouslySetInnerHTML={createMarkup(modelSpecificDisclaimer)} />\n </div>\n );\n}\n","import './styles.scss';\n\nexport default function ToyotaStripe() {\n return <div className=\"toyota-stripe\" />;\n}\n","import * as React from 'react';\nimport { Button, Container, Row } from 'react-bootstrap';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { useHistory, useParams } from 'react-router-dom';\n\nimport useSearch from '../hooks/useSearch';\nimport useFilters from '../hooks/useFilters';\nimport useRetailers from '../hooks/useRetailers';\nimport useAsyncDebounce from '../hooks/useDebounce';\nimport useModelFamily from '../hooks/useModelFamily';\n\nimport { formatPrice, priceSorter } from '../utils';\n\nimport Hero from '../components/ModelList/Hero';\nimport Filters from '../components/ModelList/Filters';\nimport ListCard from '../components/ModelList/ListCard';\nimport Loader from '../components/Loader';\nimport OfferModal from '../components/OfferModal';\nimport Disclaimers from '../components/Disclaimers';\nimport ToyotaStripe from '../components/ToyotaStripe';\nimport Select from '../components/UIComponents/Select';\nimport { Title } from '../components/UIComponents/Typography';\n\nconst sortOptions = [\n {\n id: 'asc',\n value: 'PriceAscending',\n },\n {\n id: 'desc',\n value: 'PriceDescending',\n },\n {\n id: 'availability',\n value: 'SortByAvailability',\n },\n {\n id: 'priceDiff',\n value: 'BiggestDiscount',\n },\n];\n\nconst ModelList = props => {\n const history = useHistory();\n const { t } = useTranslation();\n const { modelFamily, retailer } = useParams();\n const { isLoading, data, isError } = useModelFamily(modelFamily);\n const { data: retailers, isError: retailersError } = useRetailers(retailer);\n const { data: filters, isLoading: filtersLoading } = useFilters(modelFamily);\n\n const [sortOrder, setSortOrder] = React.useState('asc');\n const [isModalVisible, setIsModalVisible] = React.useState(false);\n const [filterValues, setFilterValues] = React.useState(null);\n const [hasFilterChanged, setHasFilterChanged] = React.useState(false);\n const [currentVehicle, setCurrentVehicle] = React.useState(null);\n\n React.useEffect(() => {\n if (filters) {\n setFilterValues({\n TransmissionTypes: [],\n BodyTypes: [],\n FuelTypes: [],\n DriveTrainTypes: [],\n CO2: filters.CO2,\n PriceRange: filters.PriceRange,\n ModelFamilyName: modelFamily,\n });\n }\n }, [filters, modelFamily]);\n\n React.useEffect(() => {\n if (props.location.search) {\n const lastSelected = document.getElementById(\n props.location.search.split('=')[1]\n );\n lastSelected?.scrollIntoView();\n }\n }, [props.location.search]);\n\n const {\n data: filteredCars,\n refetch,\n isLoading: filteredCarsLoading,\n } = useSearch(filterValues);\n const onFetchDataDebounce = useAsyncDebounce(refetch, 500);\n\n React.useEffect(() => {\n if (hasFilterChanged) onFetchDataDebounce(filterValues);\n }, [filterValues, hasFilterChanged, onFetchDataDebounce, refetch]);\n\n const currentData = hasFilterChanged ? filteredCars : data;\n const modelCount = currentData?.length ?? data?.length;\n const cheapestModel = data?.reduce((prev, curr) => {\n return prev.CurrentPrice < curr.CurrentPrice ? prev : curr;\n });\n const mostExpensiveModel = data?.reduce((prev, curr) => {\n return prev.CurrentPrice > curr.CurrentPrice ? prev : curr;\n });\n\n const handleSortOrder = id => setSortOrder(id);\n\n const handleModal = modelId => {\n const found = data.find(e => e.URN === modelId);\n setCurrentVehicle(found);\n setIsModalVisible(modelId ? modelId : false);\n };\n\n const handleOtherBtn = () => history.push(`/${retailer ? retailer : ''}`);\n\n const handleCreateBtn = () =>\n window.open(\n `${t('ToyotaHomePage')}/new-cars/${modelFamily}/index.json`,\n '_blank'\n );\n\n const handleScrollToTop = () => window.scrollTo(0, 0);\n\n if (isLoading) return <Loader />;\n\n if (isError) {\n history.push(`${retailer ? `/${retailer}` : ''}/404`);\n return null;\n }\n\n return (\n <div className=\"model-list\">\n <ToyotaStripe />\n <Hero\n img={mostExpensiveModel.ThumbnailBig}\n model={cheapestModel.ModelFamilyName}\n price={formatPrice(cheapestModel.CurrentPrice)}\n />\n {filterValues && (\n <Filters\n filters={filters}\n isLoading={filtersLoading}\n filterValues={filterValues}\n setFilterValues={setFilterValues}\n setHasFilterChanged={setHasFilterChanged}\n />\n )}\n <div className=\"list-header px-3 mb-7\">\n {filteredCarsLoading ? (\n <Loader />\n ) : modelCount ? (\n <>\n <Title size=\"1\" uppercase>\n <Trans i18nKey=\"ModelsAvailable\">\n Saadaval on {{ modelcount: modelCount }} autot,\n </Trans>\n </Title>\n <div className=\"d-flex align-items-center flex-wrap justify-content-center\">\n <Title size=\"4\" className=\"mr-2 mb-md-0\">\n {t('SortedBy')}\n </Title>\n <Select\n flex\n id=\"sortOrder\"\n activeId={sortOrder}\n onClick={handleSortOrder}\n options={sortOptions}\n />\n </div>\n </>\n ) : (\n <Title size=\"1\" uppercase>\n {t('NoSuchModelsAvailable')}\n </Title>\n )}\n </div>\n <div className=\"list px-3 mx-xxl-10 mx-xl-8 mx-lg-5 mx-md-1\">\n {priceSorter(currentData, sortOrder).map(model => (\n <ListCard\n key={model.URN}\n car={model}\n handleModal={handleModal}\n retailersError={retailersError}\n />\n ))}\n </div>\n <Container as=\"footer\" className=\"footer mb-7\">\n <Title className=\"mb-45 text-center\" size=\"4\" uppercase>\n {t('NoSuitableCar')}\n </Title>\n <Row className=\"justify-content-md-center flex-column flex-md-row px-4\">\n <Button\n className=\"mr-md-4 mb-3\"\n variant=\"secondary\"\n onClick={handleScrollToTop}\n >\n {t('BackToTop')}\n </Button>\n <Button\n className=\"mr-md-4 mb-3\"\n variant=\"secondary\"\n onClick={handleOtherBtn}\n >\n {t('ShowAllOffers')}\n </Button>\n <Button variant=\"secondary\" onClick={handleCreateBtn}>\n {t('CreateYourOwn')}\n </Button>\n </Row>\n <Disclaimers modelFamily={modelFamily} />\n </Container>\n {isModalVisible ? (\n <OfferModal\n retailers={retailers}\n show={Boolean(isModalVisible)}\n onClose={handleModal}\n urn={isModalVisible}\n models={currentData}\n vehicle={currentVehicle}\n />\n ) : null}\n </div>\n );\n};\n\nexport default ModelList;\n","import { useQuery } from 'react-query';\n\nimport { apiRequest } from '../utils/apiUtils';\n\nexport default function useModelFamily(familyUrl) {\n return useQuery(\n ['modelFamily', familyUrl],\n async () => {\n const data = await apiRequest(`/api/vehicles?modelFamily=${familyUrl}`);\n const indexedData = data.map((vehicle, index) => ({\n index,\n ...vehicle,\n }));\n return indexedData;\n },\n {\n refetchOnWindowFocus: false,\n }\n );\n}\n","import { useQuery } from 'react-query';\n\nimport { apiRequest } from '../utils/apiUtils';\n\nexport default function useFilters(modelFamily) {\n return useQuery(\n ['filters', modelFamily],\n () => apiRequest(`/api/vehicles/${modelFamily}/search`),\n {\n refetchOnWindowFocus: false,\n }\n );\n}\n","import { useQuery } from 'react-query';\n\nimport { apiRequest, postRequest } from '../utils/apiUtils';\n\nexport default function useSearch(searchBody) {\n return useQuery(\n ['search', searchBody],\n async () => {\n const data = await apiRequest(\n `/api/vehicles/search`,\n postRequest(searchBody)\n );\n const indexedData = data.map((vehicle, index) => ({\n index,\n ...vehicle,\n }));\n return indexedData;\n },\n {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n enabled: false,\n keepPreviousData: true,\n }\n );\n}\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Col, Container, Form, FormControl, InputGroup } from 'react-bootstrap';\n\nimport useLeasing from '../../hooks/useLeasing';\n\nimport { Text, Title } from '../UIComponents/Typography';\n\nconst initialState = {\n downp: 15,\n residual: 30,\n period: 5,\n leasingtype: 1,\n};\nconst numbersRegex = /^[0-9]*$/;\nconst MAX_RESIDUAL = 35;\nexport default function Leasing({ price, interest, isHybrid }) {\n const { t } = useTranslation();\n\n const [formValues, setFormValues] = React.useState({\n ...initialState,\n residual: isHybrid ? MAX_RESIDUAL : 30,\n price,\n interest,\n downpNr: Math.round((initialState.downp * price) / 100),\n residualNr: Math.round(((isHybrid ? MAX_RESIDUAL : 30) * price) / 100),\n });\n const { data } = useLeasing(formValues);\n\n const handleFormChange = (value, type) => {\n if (!value.match(numbersRegex)) return;\n if (type === 'residual' && value > MAX_RESIDUAL)\n value = MAX_RESIDUAL;\n if (type === 'downpNr' || type === 'residualNr') {\n const percentage = Math.round((value * 100) / price);\n\n setFormValues(prevState => ({\n ...prevState,\n [type.slice(0, -2)]: percentage,\n [type]: value,\n }));\n return;\n }\n\n if (type === 'downp' || type === 'residual') {\n const nrValue = Math.round((value * price) / 100);\n\n setFormValues(prevState => ({\n ...prevState,\n [type]: value,\n [`${type}Nr`]: nrValue,\n }));\n return;\n }\n\n setFormValues(prevState => ({ ...prevState, [type]: value }));\n };\n\n return (\n <div className=\"leasing\">\n <Container fluid className=\"px-3 px-md-6 px-lg-6 px-xl-8 py-5\">\n <Title className=\"text-center mb-5\" size=\"2\">\n {t('Leaseing')}\n </Title>\n <Form>\n <Form.Row className=\"justify-content-md-center\">\n <Col xs={12} md={6} lg={3} xl={2}>\n <Form.Group controlId=\"leasingtype\">\n <Form.Label className=\"required\">{t('LeasingType')}</Form.Label>\n <Form.Control\n defaultValue={formValues.leasingtype}\n as=\"select\"\n custom\n onChange={e =>\n handleFormChange(e.target.value, 'leasingtype')\n }\n >\n <option value={1}>{t('OperatingLease')}</option>\n <option value={2}>{t('FinanceLease')}</option>\n </Form.Control>\n </Form.Group>\n </Col>\n <Col xs={12} md={6} lg={3} xl={2}>\n <Form.Group controlId=\"period\">\n <Form.Label className=\"required\">{t('LeasePeriod')}</Form.Label>\n <Form.Control\n defaultValue={formValues.period}\n as=\"select\"\n custom\n onChange={e => handleFormChange(e.target.value, 'period')}\n >\n <option value={null}>{t('LeasePeriodChoose')}</option>\n <option value={1}>{t('LeasePeriodChoose1')}</option>\n <option value={2}>{t('LeasePeriodChoose2')}</option>\n <option value={3}>{t('LeasePeriodChoose3')}</option>\n <option value={4}>{t('LeasePeriodChoose4')}</option>\n <option value={5}>{t('LeasePeriodChoose5')}</option>\n </Form.Control>\n </Form.Group>\n </Col>\n <Col xs={12} md={6} lg=\"auto\">\n <Form.Group controlId=\"downp\">\n <Form.Label className=\"required\">{t('DownPayment')}</Form.Label>\n <InputGroup>\n <Form.Control\n value={formValues.downp}\n onChange={e => handleFormChange(e.target.value, 'downp')}\n type=\"text\"\n />\n <InputGroup.Append>\n <InputGroup.Text>%</InputGroup.Text>\n </InputGroup.Append>\n <FormControl\n value={formValues.downpNr}\n onChange={e => handleFormChange(e.target.value, 'downpNr')}\n />\n <InputGroup.Append>\n <InputGroup.Text>€</InputGroup.Text>\n </InputGroup.Append>\n </InputGroup>\n </Form.Group>\n </Col>\n <Col xs={12} md={6} lg=\"auto\">\n <Form.Group controlId=\"residual\">\n <Form.Label className=\"required\">{t('Residiual')}</Form.Label>\n <InputGroup>\n <FormControl\n value={formValues.residual}\n onChange={e => handleFormChange(e.target.value, 'residual')}\n\n />\n <InputGroup.Append>\n <InputGroup.Text>%</InputGroup.Text>\n </InputGroup.Append>\n <FormControl\n value={formValues.residualNr}\n onChange={e =>\n handleFormChange(e.target.value, 'residualNr')\n }\n />\n <InputGroup.Append>\n <InputGroup.Text>€</InputGroup.Text>\n </InputGroup.Append>\n </InputGroup>\n </Form.Group>\n </Col>\n <Col xs={12} md={3} lg=\"auto\">\n <Form.Group controlId=\"interest\">\n <Form.Label className=\"required\">{t('Interest')}</Form.Label>\n <InputGroup>\n <FormControl\n defaultValue={formValues.interest}\n onKeyUp={e => handleFormChange(e.target.value, 'interest')}\n />\n <InputGroup.Append>\n <InputGroup.Text>%</InputGroup.Text>\n </InputGroup.Append>\n </InputGroup>\n </Form.Group>\n </Col>\n <Col\n lg={1}\n xl={1}\n md={2}\n className=\"d-flex flex-column pb-3 align-items-center justify-content-end ml-lg-3\"\n >\n <Text size=\"lg\">€ {data ? Math.round(data) : '-'}</Text>\n <Text size=\"sm\" type=\"disabled\">\n / {t('Month')}\n <div className=\"underline\" />\n </Text>\n </Col>\n </Form.Row>\n </Form>\n </Container>\n </div>\n );\n}\n","import { useQuery } from 'react-query';\n\nimport { apiRequest } from '../utils/apiUtils';\n\nexport default function useLeasing(regBody) {\n const { downp, residual, period, interest, price, leasingtype } = regBody;\n\n return useQuery(\n ['leasing', regBody],\n () =>\n apiRequest(\n `/api/model/leasing/${downp}/${residual}/${period}/${interest}/${price}/${leasingtype}`\n ),\n {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n }\n );\n}\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Row, Col, Container } from 'react-bootstrap';\nimport Icon from '@mdi/react';\nimport { mdiCheck } from '@mdi/js';\n\nimport Loader from '../Loader';\nimport { Text, Title } from '../UIComponents/Typography';\n\nconst iconColor = '#8B8C90';\n\nexport default function Equipment({ list = {}, isLoading }) {\n const { t } = useTranslation();\n\n const columns = [[], []];\n const subEquipment = {};\n\n for (const [idx, pack] of Object.keys(list).entries()) {\n if (idx < Object.keys(list).length / 2) {\n columns[0].push(pack);\n } else {\n columns[1].push(pack);\n }\n }\n\n for (const type in list) {\n if (Object.hasOwnProperty.call(list, type)) {\n const element = list[type];\n const subEquipments = element.filter(\n ({ SubEquipment }) => Object.keys(SubEquipment).length\n );\n subEquipments.forEach(({ SubEquipment }) => {\n const subEquipmentKey = Object.keys(SubEquipment)[0];\n if (!subEquipment.length) {\n subEquipment[type] = SubEquipment;\n }\n if (!subEquipment?.[type]?.[subEquipmentKey]) {\n const prevSubs = { ...subEquipment[type] };\n subEquipment[type] = [...prevSubs, SubEquipment];\n }\n });\n }\n }\n\n if (isLoading) return <Loader />;\n\n return (\n <Container fluid className=\"equipment mb-5 px-2 px-lg-5 px-xl-7\">\n <Title className=\"text-center mt-5 mb-6\" size=\"2\">\n {t('Equipment')}\n </Title>\n <Row xs={1} md={2} className=\"px-2 px-md-5\">\n {columns.map((col, idx) => (\n <Col key={idx}>\n {col.map(pack => (\n <React.Fragment key={pack}>\n <Text strong>\n <Icon\n className=\"mr-3\"\n path={mdiCheck}\n size={1}\n color={iconColor}\n />\n {pack}:\n </Text>\n <div className=\"d-flex flex-column pl-45 ml-2 mt-1\">\n {list[pack].map(({ Name }) => (\n <Text type=\"disabled\" key={Name}>\n {Name}\n </Text>\n ))}\n </div>\n {subEquipment?.[pack]\n ? Object.keys(subEquipment[pack]).map(key => (\n <div className=\"mt-2\" key={key}>\n <Text strong>\n <Icon\n className=\"mr-3\"\n color={iconColor}\n path={mdiCheck}\n size={1}\n />\n {key}\n </Text>\n <div className=\"d-flex flex-column pl-45 ml-2 mt-1\">\n {subEquipment[pack][key].map(({ Name }) => (\n <Text type=\"disabled\" key={Name}>\n {Name}\n </Text>\n ))}\n </div>\n </div>\n ))\n : null}\n <hr />\n </React.Fragment>\n ))}\n </Col>\n ))}\n </Row>\n </Container>\n );\n}\n","import * as React from 'react';\nimport { useTranslation, Trans } from 'react-i18next';\nimport { Button, Modal, Row, Col, Form } from 'react-bootstrap';\n\nimport { postRequest } from '../utils/apiUtils';\n\nimport { Title } from './UIComponents/Typography';\n\nexport default function FriendModal({ show, onClose, urn, modelName }) {\n const { t } = useTranslation();\n\n const [isValid, setIsValid] = React.useState(false);\n const [isSubmitted, setIsSubmitted] = React.useState(false);\n const [formValues, setFormValues] = React.useState({});\n\n const handleFieldChange = e => {\n const id = e.target.id;\n\n setFormValues(formValues => ({\n ...formValues,\n [id]: e.target.value,\n }));\n };\n\n const handleClose = () => {\n setIsValid(false);\n setFormValues({});\n onClose();\n };\n\n const handleSubmit = e => {\n e.preventDefault();\n const form = e.currentTarget;\n\n if (form.checkValidity() === true) {\n const postBody = { ...formValues, Urn: urn };\n\n fetch('/api/shareOffer', postRequest(postBody)).then(res =>\n res.ok ? setIsSubmitted(true) : setIsSubmitted('error')\n );\n }\n\n setIsValid(true);\n };\n\n return (\n <Modal size=\"lg\" show={show} onHide={handleClose} centered>\n <Modal.Header closeButton>\n {isSubmitted ? null : (\n <Modal.Title className=\"mx-auto\">{t('ShareWithFriend')}</Modal.Title>\n )}\n </Modal.Header>\n <Modal.Body className={isSubmitted && 'form-submitted'}>\n {!isSubmitted ? (\n <Form noValidate validated={isValid} onSubmit={handleSubmit}>\n <Row>\n <Col xs={12} md={6} className=\"d-flex align-items-center\">\n {modelName}\n </Col>\n <Col xs={12} md={6}>\n <Form.Group controlId=\"SenderName\">\n <Form.Label className=\"required\">\n {t('SenderName')}\n </Form.Label>\n <Form.Control\n onKeyUp={handleFieldChange}\n required\n type=\"text\"\n />\n <Form.Control.Feedback type=\"invalid\">\n <Trans i18nKey=\"RequiredField\">\n {{ field: t('SenderName') }} on kohustuslik\n </Trans>\n </Form.Control.Feedback>\n </Form.Group>\n </Col>\n </Row>\n <Row>\n <Col xs={12} md={6}>\n <Form.Group controlId=\"FriendEmail\">\n <Form.Label className=\"required\">\n {t('FriendEmail')}\n </Form.Label>\n <Form.Control\n onKeyUp={handleFieldChange}\n required\n type=\"email\"\n />\n <Form.Control.Feedback type=\"invalid\">\n <Trans i18nKey=\"RequiredField\">\n {{ field: t('FriendEmail') }} on kohustuslik\n </Trans>\n </Form.Control.Feedback>\n </Form.Group>\n </Col>\n <Col xs={12} md={6}>\n <Form.Group controlId=\"SenderMail\">\n <Form.Label className=\"required\">\n {t('SenderEmail')}\n </Form.Label>\n <Form.Control\n onKeyUp={handleFieldChange}\n required\n type=\"email\"\n />\n <Form.Control.Feedback type=\"invalid\">\n <Trans i18nKey=\"RequiredField\">\n {{ field: t('SenderEmail') }} on kohustuslik\n </Trans>\n </Form.Control.Feedback>\n </Form.Group>\n </Col>\n </Row>\n <Form.Group controlId=\"SenderComment\">\n <Form.Label className=\"required\">{t('SenderComment')}</Form.Label>\n <Form.Control\n required\n onKeyUp={handleFieldChange}\n as=\"textarea\"\n rows={3}\n defaultValue={formValues.Comment}\n />\n <Form.Control.Feedback type=\"invalid\">\n <Trans i18nKey=\"RequiredField\">\n {{ field: t('SenderComment') }} on kohustuslik\n </Trans>\n </Form.Control.Feedback>\n </Form.Group>\n <Row className=\"footer justify-content-end my-5\">\n <Button\n variant=\"secondary\"\n onClick={handleClose}\n size=\"sm\"\n type=\"button\"\n >\n {t('Close')}\n </Button>\n <Button className=\"ml-4\" size=\"sm\" type=\"submit\">\n {t('Send')}\n </Button>\n </Row>\n </Form>\n ) : isSubmitted === 'error' ? (\n <Title type=\"error\" size=\"4\">\n {t('ErrorUnabelToSendMail')}\n </Title>\n ) : (\n <Title size=\"4\">{t('RequestToFriendSent')}</Title>\n )}\n </Modal.Body>\n </Modal>\n );\n}\n","import { useParams } from 'react-router';\nimport { useTranslation, Trans } from 'react-i18next';\nimport Icon from '@mdi/react';\nimport {\n mdiArrowLeft,\n mdiCheck,\n mdiChevronLeft,\n mdiChevronRight,\n} from '@mdi/js';\nimport {\n CarouselProvider,\n Slider,\n Slide,\n ButtonBack,\n ButtonNext,\n Image,\n Dot,\n} from 'pure-react-carousel';\nimport { Button, Col, Container, Row, Badge } from 'react-bootstrap';\n\nimport useRetailers from '../../hooks/useRetailers';\nimport useBreakPoints from '../../hooks/useBreakPoints';\nimport { formatDate, isCurrentDate } from '../../utils';\n\nimport PriceBox from '../PriceBox';\nimport OfferModal from '../OfferModal';\nimport FriendModal from '../FriendModal';\nimport LeasingInterest from '../LeasingInterest';\nimport { Text, Title } from '../UIComponents/Typography';\n\nimport 'pure-react-carousel/dist/react-carousel.es.css';\n\nconst iconColor = '#6a6b70';\n\nexport default function DetailViewHero({\n vehicle = {},\n isModalVisible,\n handleFriendModal,\n isOfferModalVisible,\n handleOfferModal,\n handleBackBtn,\n}) {\n const {\n VehicleImages = [],\n ModelFamilyName,\n ModelName,\n Accessories,\n Prices,\n MonthlyPmt,\n URN,\n SpecialInterest,\n InterestRate,\n IsHybrid,\n FiveYearsWarranty,\n ColorName,\n ETA,\n ReservedUntil,\n InteriourName,\n CampaignIcons,\n EuriborText,\n } = vehicle;\n const { t } = useTranslation();\n const { retailer } = useParams();\n const { data: retailers } = useRetailers(retailer);\n const { isSmallerThanLg } = useBreakPoints();\n\n const availableFrom = formatDate(ETA);\n const isCarAvailable = isCurrentDate(ETA);\n\n return (\n <>\n <CarouselProvider\n naturalSlideHeight={200}\n naturalSlideWidth={190}\n totalSlides={VehicleImages?.length ?? 0}\n infinite={true}\n isIntrinsicHeight\n >\n <Container fluid className=\"detail-view-hero px-3 px-md-5 px-lg-7 pb-3\">\n <Row>\n <Col\n xl={1}\n className=\"d-flex flex-column align-items-start align-items-xl-center mt-n5 mt-xl-0\"\n >\n <Button variant=\"icon\" onClick={handleBackBtn}>\n <Icon path={mdiArrowLeft} size={1} />\n </Button>\n </Col>\n <Col xl={11} className=\"d-flex justify-content-start\">\n <Title>{ModelFamilyName}</Title>\n </Col>\n </Row>\n <Row className=\"px-3\">\n <Col\n xs={12}\n lg={3}\n xl={{ span: 3, offset: 1 }}\n className=\"mb-2 d-flex flex-column justify-content-between\"\n >\n <Row className=\"flex-column mb-3\">\n <Title size=\"5\">{ModelName}</Title>\n {ReservedUntil ? (\n <Badge className=\"my-1\" variant=\"light\">\n {t('Booked')}\n </Badge>\n ) : null}\n <Text className=\"mt-1\">\n {t('Color')}: <Text>{ColorName}</Text>\n </Text>\n {InteriourName ? (\n <Text>\n {t('InteriorColour')} <Text>{InteriourName}</Text>\n </Text>\n ) : null}\n {Accessories ? (\n <>\n <Text className=\"mt-2\">{t('Accessories')}</Text>\n {Accessories.map(acc => (\n <Text key={acc} className=\"detail-view-accessory\">\n <Icon color={iconColor} path={mdiCheck} size={1} />{' '}\n <span>{acc}</span>\n </Text>\n ))}\n </>\n ) : null}\n <Text className=\"pt-3\">\n {isCarAvailable ? (\n <span className=\"text-capitalize\">{t('Available')}</span>\n ) : (\n <Trans i18nKey=\"AvailableFrom\">\n Saadavus:\n <span className=\"text-capitalize\">\n alates {{ availableFrom }}\n </span>\n </Trans>\n )}\n </Text>\n </Row>\n <Row>\n {isSmallerThanLg && (\n <LeasingInterest\n SpecialInterest={SpecialInterest}\n InterestRate={InterestRate}\n IsHybrid={IsHybrid}\n FiveYearsWarranty={FiveYearsWarranty}\n CampaignIcons={CampaignIcons}\n isDetailView\n />\n )}\n </Row>\n </Col>\n <Col\n xs={12}\n lg={6}\n xl={5}\n className=\"mb-2 mt-2 mt-lg-5 px-1 px-md-2\"\n >\n <Row className=\"flex-nowrap align-items-center\">\n {isSmallerThanLg ? (\n <Col xs={2} className=\"px-0 d-flex justify-content-end\">\n <ButtonBack className=\"carousel-btn\">\n <Icon color={iconColor} path={mdiChevronLeft} size={2} />\n </ButtonBack>\n </Col>\n ) : null}\n <Col xs={isSmallerThanLg ? 8 : 12} className=\"px-3\">\n <Slider>\n {VehicleImages.map(({ BigImageUrl }, idx) => (\n <Slide key={idx} index={idx}>\n <Image hasMasterSpinner src={BigImageUrl} />\n </Slide>\n ))}\n </Slider>\n </Col>\n {isSmallerThanLg ? (\n <Col xs={2} className=\"px-0 d-flex justify-content-start\">\n <ButtonNext className=\"carousel-btn\">\n <Icon color={iconColor} path={mdiChevronRight} size={2} />\n </ButtonNext>\n </Col>\n ) : null}\n </Row>\n </Col>\n <Col\n xs={12}\n lg={3}\n xl={3}\n className=\"d-flex flex-column flex-md-row flex-lg-column justify-content-around px-0\"\n >\n <PriceBox\n Prices={Prices}\n MonthlyPmt={MonthlyPmt}\n InterestRate={InterestRate}\n IsHybrid={IsHybrid}\n SpecialInterest={SpecialInterest}\n EuriborText={EuriborText}\n />\n <div className=\"d-flex flex-column align-items-center align-items-lg-end\">\n <Button onClick={handleOfferModal} className=\"mb-3\">\n {t('RequestInformation')}\n </Button>\n <Button onClick={handleFriendModal} className=\"btn-secondary\">\n {t('ShareWithFriend')}\n </Button>\n </div>\n </Col>\n </Row>\n {!isSmallerThanLg && (\n <Row>\n <Col md={11} lg={11} xl={{ span: 11, offset: 1 }}>\n <LeasingInterest\n SpecialInterest={SpecialInterest}\n InterestRate={InterestRate}\n IsHybrid={IsHybrid}\n FiveYearsWarranty={FiveYearsWarranty}\n CampaignIcons={CampaignIcons}\n isDetailView\n />\n </Col>\n </Row>\n )}\n {isSmallerThanLg ? null : (\n <Row className=\"mt-5\">\n <Col xs={1}>\n <ButtonBack className=\"carousel-btn\">\n <Icon color={iconColor} path={mdiChevronLeft} size={3} />\n </ButtonBack>\n </Col>\n <Col xs={10} className=\"d-flex\">\n {VehicleImages.map(({ BigImageUrl }, idx) => (\n <Dot key={idx} className=\"carousel-dot flex-fill\" slide={idx}>\n <Image src={BigImageUrl} />\n </Dot>\n ))}\n </Col>\n <Col xs={1}>\n <ButtonNext className=\"carousel-btn\">\n <Icon color={iconColor} path={mdiChevronRight} size={3} />\n </ButtonNext>\n </Col>\n </Row>\n )}\n </Container>\n </CarouselProvider>\n <FriendModal\n show={isModalVisible}\n onClose={handleFriendModal}\n urn={URN}\n modelName={ModelName}\n />\n {isOfferModalVisible ? (\n <OfferModal\n retailers={retailers}\n show={isOfferModalVisible}\n onClose={handleOfferModal}\n urn={URN}\n modelName={ModelName}\n vehicle={vehicle}\n />\n ) : null}\n </>\n );\n}\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Redirect, useHistory, useParams, useLocation } from 'react-router-dom';\nimport { Button, Container, Row } from 'react-bootstrap';\n\nimport useVehicle from '../hooks/useVehicle';\nimport useEquipment from '../hooks/useEquipment';\n\nimport Leasing from '../components/DetailView/Leasing';\nimport Equipment from '../components/DetailView/Equipment';\nimport DetailViewHero from '../components/DetailView/DetailViewHero';\nimport Loader from '../components/Loader';\nimport Disclaimers from '../components/Disclaimers';\nimport ToyotaStripe from '../components/ToyotaStripe';\nimport { removeLastPathSegment } from '../utils';\n\nconst DetailView = () => {\n const { vehicleId, retailer } = useParams();\n const history = useHistory();\n const { t } = useTranslation();\n let { pathname, search, hash } = useLocation();\n const { isLoading, data = {} } = useVehicle(vehicleId);\n const { isLoading: equipmentLoading, data: equipment } =\n useEquipment(vehicleId);\n\n const [isModalVisible, setIsModalVisible] = React.useState(false);\n const [isOfferModalVisible, setIsOfferModalVisible] = React.useState(false);\n\n const handleFriendModal = () => setIsModalVisible(!isModalVisible);\n\n const handleOfferModal = () => setIsOfferModalVisible(!isOfferModalVisible);\n\n const handleOtherBtn = () => history.push(`/${retailer ? retailer : ''}`);\n\n if (isLoading) return <Loader />;\n\n if (data && !isLoading) {\n const {\n CurrentPrice,\n SpecialInterest,\n InterestRate,\n ModelFamilyNameInCarDb,\n } = data;\n\n const handleBackBtn = () =>\n history.push(\n `${\n retailer ? `/${retailer}` : ''\n }/${ModelFamilyNameInCarDb}?selected=${vehicleId}`\n );\n\n return (\n <div className=\"detail-view\">\n <ToyotaStripe />\n <DetailViewHero\n vehicle={data}\n isModalVisible={isModalVisible}\n handleFriendModal={handleFriendModal}\n isOfferModalVisible={isOfferModalVisible}\n handleOfferModal={handleOfferModal}\n handleBackBtn={handleBackBtn}\n />\n <Leasing\n price={CurrentPrice}\n interest={SpecialInterest || InterestRate}\n isHybrid={data?.IsHybrid}\n />\n <Equipment list={equipment} isLoading={equipmentLoading} />\n <Container as=\"footer\" className=\"footer mb-7\">\n <Row className=\"justify-content-md-center flex-column flex-md-row px-4\">\n <Button onClick={handleOfferModal} className=\"mb-3 mr-md-3\">\n {t('RequestInformation')}\n </Button>\n <Button\n onClick={handleFriendModal}\n className=\"btn-secondary mr-md-3 mb-3\"\n >\n {t('ShareWithFriend')}\n </Button>\n <Button\n variant=\"secondary\"\n onClick={handleBackBtn}\n className=\"mb-3 mr-md-3\"\n >\n {t('BackToModels')}\n </Button>\n <Button variant=\"secondary\" onClick={handleOtherBtn}>\n {t('BackToAllModels')}\n </Button>\n <Disclaimers modelFamily={ModelFamilyNameInCarDb} />\n </Row>\n </Container>\n </div>\n );\n } else {\n const nextPath = removeLastPathSegment(pathname);\n return <Redirect to={`${nextPath}${search}${hash}`} />;\n }\n};\n\nexport default DetailView;\n","import { useQuery } from 'react-query';\n\nimport { apiRequest } from '../utils/apiUtils';\n\nexport default function useVehicle(vehicleURN) {\n return useQuery(\n ['vehicle', vehicleURN],\n () => apiRequest(`/api/vehicle/${vehicleURN}`),\n {\n refetchOnWindowFocus: false,\n }\n );\n}\n","import { useQuery } from 'react-query';\n\nimport { apiRequest } from '../utils/apiUtils';\n\nexport default function useEquipment(urn) {\n return useQuery(\n 'equipment',\n () => apiRequest(`/api/vehicle/${urn}/equipment`),\n {\n refetchOnWindowFocus: false,\n }\n );\n}\n","import { Redirect, useLocation } from 'react-router-dom';\nimport { removeLastPathSegment } from '../utils';\n\nconst NotFound = () => {\n let { pathname, search, hash } = useLocation();\n const nextPath = removeLastPathSegment(pathname);\n return <Redirect to={`${nextPath}${search}${hash}`} />;\n};\n\nexport default NotFound;\n","import { Switch, Route, Redirect, useLocation } from 'react-router-dom';\n\nimport useGeneralRetailers from './hooks/useGeneralRetailers';\n\nimport Styling from './views/Styling';\nimport Landing from './views/Landing';\nimport ModelList from './views/ModelList';\nimport DetailView from './views/DetailView';\nimport NotFound from './views/NotFound';\nimport Loader from './components/Loader';\nimport useModelfamilies from './hooks/useModelfamilies';\n\nconst Router = () => {\n const { pathname } = useLocation();\n const { data, isLoading } = useGeneralRetailers();\n const { data: models, isLoading: modelsLoading } = useModelfamilies();\n\n const retailerPath = data?.map(({ Key }) => Key).join('|');\n const modelsPath = models?.map(({ Url }) => Url).join('|');\n\n if (isLoading || modelsLoading) <Loader />;\n\n return (\n <Switch>\n <Redirect from=\"/:url*(/+)\" to={pathname.slice(0, -1)} />\n <Route exact path={`/:retailer(${retailerPath})?`} component={Landing} />\n <Route exact path=\"/styling\" component={Styling} />\n <Route path={`/:retailer(${retailerPath})?/404`} component={NotFound} />\n <Route\n exact\n path={`/:retailer(${retailerPath})?/:modelFamily(${modelsPath})`}\n component={ModelList}\n />\n <Route\n exact\n path={`/:retailer(${retailerPath})?/:modelFamily(${modelsPath})/:vehicleId`}\n component={DetailView}\n />\n {!isLoading && !modelsLoading && <Route component={NotFound} />}\n </Switch>\n );\n};\n\nexport default Router;\n","export default __webpack_public_path__ + \"static/media/toyota_logo.0fe412b2.svg\";","import { useLocation } from 'react-router';\nimport { Nav, Navbar } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport useBreakPoints from '../../hooks/useBreakPoints';\nimport useGeneralRetailers from '../../hooks/useGeneralRetailers';\n\nimport ToyotaLogo from '../../assets/images/toyota_logo.svg';\n\nimport './styles.scss';\n\nconst Header = () => {\n const { t } = useTranslation();\n const { pathname } = useLocation();\n const { data } = useGeneralRetailers();\n const { isSmallerThanMd } = useBreakPoints();\n\n const firstParamInPath = pathname.split('/')[1];\n const currentRetailer = data?.find(({ Key }) => Key === firstParamInPath);\n\n const handleLanguageChange = () =>\n (window.location.href = t('AlternateCountryUrl'));\n\n const handleToyotaLogo = () => (window.location.href = t('ToyotaHomePage'));\n\n const handleRetailer = () =>\n (window.location.href = currentRetailer?.HomePageUrl);\n\n return (\n <>\n <Navbar>\n <Navbar.Brand>\n <div className=\"logo-wrap\" onClick={handleToyotaLogo}>\n <img src={ToyotaLogo} alt=\"Toyota logo\" />\n </div>\n </Navbar.Brand>\n <Nav className=\"justify-content-between w-100\">\n <Nav.Item>\n <Nav.Link\n href={`/${currentRetailer ? currentRetailer.Key : ''}`}\n eventKey={`/${currentRetailer ? currentRetailer.Key : ''}`}\n active\n >\n {t('SpecialOffers')}\n </Nav.Link>\n </Nav.Item>\n </Nav>\n {!isSmallerThanMd ? (\n <div className=\"d-flex\">\n {t('AlternateCountryUrl') === '-' ? null : (\n <div\n onClick={handleLanguageChange}\n className={`language ${\n currentRetailer ? 'with-retailer' : 'mr-md-5'\n }`}\n >\n {t('AlternativeCountryText')}\n </div>\n )}\n {currentRetailer ? (\n <Navbar.Brand className=\"retailer\">\n <div onClick={handleRetailer} className=\"logo-wrap\">\n <img src={currentRetailer.LogoLocation} alt=\"retailerImg\" />\n </div>\n </Navbar.Brand>\n ) : null}\n </div>\n ) : (\n <>\n {t('AlternateCountryUrl') === '-' ? null : (\n <div\n onClick={handleLanguageChange}\n className={`language ${currentRetailer ? '' : 'mr-md-5'}`}\n >\n {t('AlternativeCountryText')}\n </div>\n )}\n </>\n )}\n </Navbar>\n {isSmallerThanMd && currentRetailer ? (\n <Navbar className=\"sm-retailer-logo\">\n <Navbar.Brand className=\"retailer\">\n <div onClick={handleRetailer} className=\"logo-wrap-sm\">\n <img src={currentRetailer.LogoLocation} alt=\"retailerImg\" />\n </div>\n </Navbar.Brand>\n </Navbar>\n ) : null}\n </>\n );\n};\n\nexport default Header;\n","import React from 'react';\nimport MetaTags from 'react-meta-tags';\nimport { useTranslation } from 'react-i18next';\n\nconst MetaData = () => {\n const { t } = useTranslation();\n\n return (\n <MetaTags>\n <title>{t('MetaTitle')}</title>\n <meta name=\"description\" content={t('MetaDescription')} />\n <meta name=\"keywords\" content={t('MetaKeywords')} />\n </MetaTags>\n );\n};\n\nexport default MetaData;\n","import i18n from 'i18next';\nimport Backend from 'i18next-http-backend';\nimport { initReactI18next } from 'react-i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\n\nconst languages = ['ee', 'ru', 'lv', 'lt'];\n\nfunction createLanguageBackendPath() {\n return {\n loadPath: '/api/resources',\n };\n}\n\ni18n\n .use(Backend)\n .use(initReactI18next)\n .use(LanguageDetector)\n .init({\n backend: createLanguageBackendPath(),\n fallbackLng: languages[0],\n debug: false,\n interpolation: {\n escapeValue: false,\n },\n keySeparator: false,\n whitelist: languages,\n detection: {\n order: ['localstorage'],\n checkWhitelist: true,\n possibleLanguages: languages,\n },\n });\n\nexport default i18n;\n","/** @jsxRuntime classic */\nimport 'idempotent-babel-polyfill';\nimport 'react-app-polyfill/ie11';\n\nimport React, { Suspense } from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport { QueryClient, QueryClientProvider } from 'react-query';\n\nimport { init, RouteTracker } from './utils/GoogleAnalytics';\nimport { initializeTagManager } from './utils/GoogleTags';\n\nimport Routes from './Routes';\nimport Header from './components/Header';\nimport MetaData from './components/MetaData';\n\nimport i18n from './i18n.js';\n\nimport './assets/scss/main.scss';\n\nwindow.i18n = i18n;\n\nconst queryClient = new QueryClient();\n\ninitializeTagManager();\n\nReactDOM.render(\n <Suspense fallback=\"\">\n <div className=\"app\">\n <QueryClientProvider client={queryClient}>\n <MetaData />\n <BrowserRouter>\n {init() && <RouteTracker />}\n <Header />\n <Routes />\n </BrowserRouter>\n </QueryClientProvider>\n </div>\n </Suspense>,\n document.getElementById('root')\n);\n"],"sourceRoot":""}