{"version":3,"sources":["webpack:///./src/stories/Components/Tag/Tag.styles.ts","webpack:///./src/stories/Components/Tag/Tag.tsx","webpack:///./src/redux/middleware/persist.ts","webpack:///./src/stories/Components/UsedCar/UsedCar.styles.ts","webpack:///./src/stories/Components/UsedCar/UsedCar.tsx","webpack:///./src/img/icons/shortlist.svg","webpack:///./src/img/icons/location-pin.svg","webpack:///./src/img/icons/shortlist-remove.svg","webpack:///./src/img/icons/door.svg","webpack:///./src/img/icons/fuel.svg","webpack:///./src/img/icons/mileage.svg","webpack:///./src/img/icons/transmission.svg","webpack:///./src/img/icons/type.svg","webpack:///./src/img/icons/camera.svg","webpack:///./src/redux/reducers/index.ts","webpack:///./src/redux/store.ts","webpack:///./src/stories/Components/CarouselButtons/CarouselButtons.tsx","webpack:///./src/stories/Components/CarouselButtons/CarouselButtons.styles.ts","webpack:///./src/hoc/withRedux.tsx","webpack:///./src/redux/reducers/shortlist/index.ts","webpack:///./src/redux/reducers/enquiry/index.ts","webpack:///./src/redux/reducers/quote/index.ts"],"names":["TagStyles","Container","styled","span","fonts","inter","extraBold","brand","primary","blue","base","fluid","white","Tag","title","React","S","PersistedSelectors","persistMiddleware","store","next","action","result","state","getState","forEach","selector","localStorage","setItem","getKey","JSON","stringify","get","load","defaultValue","key","value","getItem","parse","error","ImageContainer","div","CarouselButtonsStyles","transition","until","Device","TabletLarge","CarouselButtonPrev","CarouselButtonNext","CarouselDotsContainer","CarouselDot","grey","active","css","Image","img","ContentContainer","Title","h3","black","Subtitle","sofiaPro","regular","Strapline","PriceContainer","PriceItem","PriceLabel","medium","Price","semiBold","FeaturesContainer","light","Features","from","Feature","FeatureIconImage","DesktopSmall","DesktopLarge","FeatureText","between","Desktop","LocationContainer","LocationTooltip","LocationIcon","LinkContainer","ShortlistContainer","added","Link","a","UnstyledLink","colourWithTransparency","listView","ImageCount","p","UsedCarStyles","withRedux","id","bikeType","carType","disableImageProcessing","doors","doorsIconUrl","Door","carTypeIconUrl","Type","fuelType","fuelTypeIconUrl","Fuel","images","imageRatio","altText","location","mileage","mileageIconUrl","Mileage","monthlyPrice","monthlyPriceLabel","price","priceLabel","reserved","sold","strapline","subtitle","tag","transmission","transmissionIconUrl","Transmission","url","dispatch","useAppDispatch","items","useAppSelector","shortlist","persisted","activeImageIndex","setActiveImageIndex","useState","maxIndex","length","swipeHandlers","useSwipeable","onSwipedLeft","handleNextClick","onSwipedRight","handlePreviousClick","isInShortlist","some","item","toString","createElement","ref","r","renderTag","SvgCamera","as","href","undefined","map","image","i","prevIndex","nextIndex","renderImage","CarouselButtons","prevDisabled","prevClicked","nextDisabled","nextClicked","src","LocationPin","onClick","toggle","name","ShortlistRemove","Shortlist","ControlArrow","index","ratioValue","imageSrc","getImageUrl","mode","width","heightratio","srcs","loading","alt","role","srcSet","join","clamp","_circle","_circle2","_path","_extends","Object","assign","target","arguments","source","prototype","hasOwnProperty","call","apply","this","SvgShortlist","props","xmlns","viewBox","cx","cy","fill","strokeWidth","stroke","d","strokeMiterlimit","SvgLocationPin","fillRule","_defs","_g","SvgShortlistRemove","className","rootReducer","combineReducers","enquiry","quote","configureStore","middleware","getDefaultMiddleware","concat","preloadedState","reducer","useDispatch","useSelector","children","disabled","section","CarouselButtonStyles","ButtonReset","Tablet","button","WrappedComponent","displayName","ComponentWithRedux","ReduxProvider","initialState","slice","createSlice","reducers","add","filter","payload","push","clear","remove","find","actions","postcode","email","phoneNumber","updateQuote"],"mappings":"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","file":"default~FeaturedCards~ProductListing~ShortlistCarousel~VehicleSummary-486cc10a8825fbce1de9.js","sourcesContent":["import brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport styled from 'styled-components';\r\nconst Container = styled.span `\r\n ${fonts.inter.extraBold};\r\n\r\n display: inline-flex;\r\n align-items: center;\r\n background: ${brand.primary.blue.base};\r\n border: ${fluid(1, 2)} solid ${brand.white};\r\n border-left-width: 0;\r\n border-bottom-width: 0;\r\n border-radius: 0 20px 0 0;\r\n color: ${brand.white};\r\n font-size: 13px;\r\n line-height: 1em;\r\n min-width: 120px;\r\n padding: 10px 40px 10px 25px;\r\n text-transform: uppercase;\r\n white-space: nowrap;\r\n width: auto;\r\n`;\r\nconst TagStyles = {\r\n Container,\r\n};\r\nexport default TagStyles;\r\n","import * as React from 'react';\r\nimport S from './Tag.styles';\r\nconst Tag = ({ title }) => {\r\n return React.createElement(S.Container, null, title);\r\n};\r\nexport default Tag;\r\n","import get from 'lodash/get';\r\n/**\r\n * The state selector paths to be persisted.\r\n */\r\nexport const PersistedSelectors = [\r\n 'shortlist.persisted',\r\n 'enquiry.persisted',\r\n 'quote.persisted',\r\n];\r\n/**\r\n * Persists all selectors in PersistedSelectors in local storage.\r\n * @param store\r\n * @returns\r\n */\r\nexport const persistMiddleware = (store) => (next) => (action) => {\r\n // Ensure state is updated.\r\n const result = next(action);\r\n // Retrieve updated state.\r\n const state = store.getState();\r\n // Save all selector values to local storage.\r\n PersistedSelectors.forEach((selector) => {\r\n localStorage.setItem(getKey(selector), JSON.stringify(get(state, selector)));\r\n });\r\n return result;\r\n};\r\n/**\r\n * Generate local storage key for selector.\r\n * @param selector\r\n * @returns\r\n */\r\nexport function getKey(selector) {\r\n return `lmg::${selector}`;\r\n}\r\n/**\r\n * Load value for selector from local storage.\r\n * @param selector\r\n * @param defaultValue\r\n * @returns\r\n */\r\nexport function load(selector, defaultValue) {\r\n const key = getKey(selector);\r\n try {\r\n const value = localStorage.getItem(key);\r\n if (!value) {\r\n return defaultValue;\r\n }\r\n return JSON.parse(value);\r\n }\r\n catch (error) {\r\n return defaultValue;\r\n }\r\n}\r\n","import { transition } from '@helpers/animation';\r\nimport brand, { colourWithTransparency } from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { between, Device, from, until } from '@helpers/media';\r\nimport TagStyles from '@stories/Components/Tag/Tag.styles';\r\nimport styled, { css } from 'styled-components';\r\nimport CarouselButtonsStyles from '../CarouselButtons/CarouselButtons.styles';\r\nconst ImageContainer = styled.div `\r\n position: relative;\r\n border-radius: 5px 5px 0 0;\r\n height: 0;\r\n width: 100%;\r\n\r\n [data-image-ratio='4:3'] & {\r\n padding-bottom: calc(100% * (3 / 4));\r\n }\r\n\r\n [data-image-ratio='16:9'] & {\r\n padding-bottom: calc(100% * (9 / 16));\r\n }\r\n\r\n ${TagStyles.Container} {\r\n ${fonts.inter.extraBold};\r\n\r\n position: absolute;\r\n top: 0;\r\n bottom: auto;\r\n left: 0;\r\n border-width: 0 ${fluid(1, 2)} ${fluid(1, 2)} 0;\r\n border-radius: 4px 0 20px 0;\r\n z-index: 2;\r\n }\r\n\r\n ${CarouselButtonsStyles.Container} {\r\n ${transition('opacity', 0.5)};\r\n\r\n opacity: 0;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n display: none;\r\n }\r\n }\r\n\r\n &:focus-within,\r\n &:hover {\r\n ${CarouselButtonsStyles.Container} {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n ${CarouselButtonsStyles.CarouselButtonPrev},\r\n ${CarouselButtonsStyles.CarouselButtonNext} {\r\n position: absolute;\r\n top: 50%;\r\n width: 40px;\r\n height: 40px;\r\n\r\n svg {\r\n width: 10px;\r\n height: 16px;\r\n }\r\n }\r\n\r\n ${CarouselButtonsStyles.CarouselButtonPrev} {\r\n left: 8px;\r\n transform: translateY(-50%) scale(-1);\r\n }\r\n\r\n ${CarouselButtonsStyles.CarouselButtonNext} {\r\n right: 8px;\r\n transform: translateY(-50%);\r\n }\r\n`;\r\nconst CarouselDotsContainer = styled.div `\r\n position: absolute;\r\n bottom: 10px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n display: flex;\r\n`;\r\nconst CarouselDot = styled.div `\r\n width: 15px;\r\n height: 5px;\r\n border-radius: 5px;\r\n background-color: ${brand.primary.grey.base};\r\n margin-right: 10px;\r\n cursor: pointer;\r\n\r\n ${({ active }) => active &&\r\n css `\r\n background-color: ${brand.primary.blue.base};\r\n `}\r\n`;\r\nconst Image = styled.img `\r\n ${transition('opacity', 0.5)};\r\n\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n display: block;\r\n border-radius: 5px 5px 0 0;\r\n height: 100%;\r\n object-fit: cover;\r\n object-position: center;\r\n width: 100%;\r\n opacity: 0;\r\n\r\n &[data-active='true'] {\r\n opacity: 1;\r\n }\r\n`;\r\nconst ContentContainer = styled.div `\r\n padding: 20px 20px 0;\r\n background-color: ${brand.white};\r\n display: flex;\r\n flex-direction: column;\r\n height: 100%;\r\n`;\r\nconst Title = styled.h3 `\r\n ${fonts.inter.extraBold};\r\n\r\n display: block;\r\n color: ${brand.black};\r\n font-size: 16px;\r\n line-height: 26px;\r\n margin-bottom: 8px;\r\n`;\r\nconst Subtitle = styled.span `\r\n display: block;\r\n color: ${brand.black};\r\n ${fonts.sofiaPro.regular};\r\n font-size: 18px;\r\n line-height: 26px;\r\n margin-bottom: 16px;\r\n`;\r\nconst Strapline = styled.span `\r\n display: block;\r\n color: ${brand.black};\r\n ${fonts.sofiaPro.regular};\r\n font-size: 18px;\r\n line-height: 28px;\r\n margin-bottom: 16px;\r\n`;\r\nconst PriceContainer = styled.div `\r\n display: flex;\r\n margin-bottom: 16px;\r\n margin-top: auto;\r\n`;\r\nconst PriceItem = styled.div `\r\n margin-right: 48px;\r\n\r\n &:last-child {\r\n margin-right: 0;\r\n }\r\n`;\r\nconst PriceLabel = styled.div `\r\n ${fonts.sofiaPro.medium};\r\n font-size: 16px;\r\n color: ${brand.primary.grey.base};\r\n margin-bottom: 5px;\r\n`;\r\nconst Price = styled.div `\r\n ${fonts.sofiaPro.semiBold};\r\n font-size: 16px;\r\n color: ${brand.black};\r\n`;\r\nconst FeaturesContainer = styled.div `\r\n padding: 10px 0 20px;\r\n background-color: ${brand.white};\r\n border-radius: 0 0 5px 5px;\r\n margin-top: auto;\r\n margin-left: 20px;\r\n margin-right: 20px;\r\n border-top: 1px solid ${brand.primary.grey.light};\r\n`;\r\nconst Features = styled.div `\r\n display: grid;\r\n flex-wrap: wrap;\r\n border-bottom: 1px solid ${brand.primary.grey.light};\r\n grid-template-columns: repeat(2, 1fr);\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-template-columns: repeat(3, 1fr);\r\n }\r\n`;\r\nconst Feature = styled.div `\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 8px;\r\n margin-right: 8px;\r\n`;\r\nconst FeatureIconImage = styled.img `\r\n margin-right: 8px;\r\n width: 30px;\r\n height: 30px;\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n width: 25px;\r\n height: 25px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n width: 35px;\r\n height: 35px;\r\n }\r\n`;\r\nconst FeatureText = styled.div `\r\n ${fonts.sofiaPro.medium};\r\n font-size: 14px;\r\n color: ${brand.black};\r\n\r\n @media ${between(Device.Desktop, Device.DesktopLarge)} {\r\n font-size: 12px;\r\n }\r\n`;\r\nconst LocationContainer = styled.div `\r\n flex: 1 0 30%;\r\n display: flex;\r\n align-items: center;\r\n`;\r\nconst LocationTooltip = styled.div `\r\n ${fonts.sofiaPro.regular};\r\n font-size: 14px;\r\n line-height: 18px;\r\n display: none;\r\n position: absolute;\r\n background-color: ${brand.black};\r\n color: ${brand.white};\r\n padding: 10px;\r\n text-align: center;\r\n top: 40px;\r\n min-width: 170px;\r\n z-index: 10;\r\n border-radius: 5px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n`;\r\nconst LocationIcon = styled.div `\r\n margin-left: 8px;\r\n margin-bottom: 8px;\r\n color: ${brand.black};\r\n position: relative;\r\n cursor: pointer;\r\n\r\n svg {\r\n width: 15px;\r\n height: 22px;\r\n }\r\n\r\n &:hover {\r\n svg {\r\n color: ${brand.primary.blue.base};\r\n }\r\n\r\n ${LocationTooltip} {\r\n display: block;\r\n }\r\n }\r\n`;\r\nconst LinkContainer = styled.div `\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: 16px;\r\n`;\r\nconst ShortlistContainer = styled.div `\r\n color: ${brand.white};\r\n cursor: pointer;\r\n\r\n svg {\r\n width: 35px;\r\n height: 35px;\r\n --background-color: ${brand.black};\r\n --heart-color: ${brand.white};\r\n\r\n ${({ added }) => added &&\r\n css `\r\n --heart-color: ${brand.primary.blue.light};\r\n `}\r\n }\r\n\r\n &:hover {\r\n svg {\r\n --heart-color: ${brand.primary.blue.light};\r\n\r\n ${({ added }) => added &&\r\n css `\r\n --heart-color: ${brand.white};\r\n `}\r\n }\r\n }\r\n`;\r\nconst Link = styled.a `\r\n ${fonts.inter.extraBold};\r\n\r\n font-size: 14px;\r\n color: ${brand.primary.blue.base};\r\n text-decoration: none;\r\n display: flex;\r\n gap: 8px;\r\n align-items: baseline;\r\n\r\n span& {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n }\r\n\r\n svg {\r\n width: 7px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 20px;\r\n align-items: flex-end;\r\n\r\n svg {\r\n width: 9px;\r\n }\r\n }\r\n`;\r\nconst UnstyledLink = styled.a `\r\n text-decoration: none;\r\n height: 100%;\r\n`;\r\nconst Container = styled.div `\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n box-shadow: 0 0 4px ${colourWithTransparency(brand.black, 0.25)};\r\n border-radius: 4px;\r\n text-decoration: none;\r\n height: 100%;\r\n\r\n ${({ listView }) => listView &&\r\n css `\r\n @media ${from(Device.TabletLarge)} {\r\n display: flex;\r\n flex-direction: row;\r\n box-shadow: 0 0 4px ${colourWithTransparency(brand.black, 0.25)};\r\n\r\n ${ImageContainer} {\r\n max-width: 410px;\r\n height: 100%;\r\n max-height: 231px;\r\n padding-bottom: 0;\r\n border-radius: 5px 0 0 5px;\r\n }\r\n\r\n ${ContentContainer},\r\n ${FeaturesContainer} {\r\n padding: 20px;\r\n }\r\n\r\n ${FeaturesContainer} {\r\n display: flex;\r\n flex-direction: column;\r\n border-radius: 0 5px 5px 0;\r\n padding: 0;\r\n margin-top: unset;\r\n margin-right: 0;\r\n margin-left: auto;\r\n border-left: 1px solid ${brand.primary.grey.light};\r\n border-top: 0;\r\n width: 100%;\r\n max-width: 260px;\r\n }\r\n\r\n ${Subtitle} {\r\n margin-bottom: 32px;\r\n }\r\n\r\n ${PriceContainer} {\r\n border-bottom: none;\r\n margin-bottom: 0;\r\n }\r\n\r\n ${PriceLabel}, ${Price} {\r\n font-size: 18px;\r\n }\r\n\r\n ${Price} {\r\n ${fonts.inter.extraBold};\r\n\r\n font-size: 14px;\r\n }\r\n\r\n ${Features} {\r\n grid-template-columns: repeat(2, 1fr);\r\n padding: 20px 20px 16px;\r\n }\r\n\r\n ${Feature} {\r\n flex: 1 1 50%;\r\n }\r\n\r\n ${LocationContainer} {\r\n flex: 1 1 50%;\r\n }\r\n\r\n ${Image} {\r\n height: 100%;\r\n max-height: 231px;\r\n border-radius: 5px 0 0 5px;\r\n\r\n &[data-active='true'] {\r\n position: relative;\r\n }\r\n }\r\n\r\n ${LinkContainer} {\r\n height: 100%;\r\n align-items: center;\r\n padding: 20px;\r\n margin-top: 0;\r\n }\r\n }\r\n\r\n @media ${from(Device.Desktop)} and ${until(Device.DesktopLarge)} {\r\n ${ContentContainer},\r\n ${FeaturesContainer} {\r\n padding: 15px;\r\n }\r\n }\r\n `}\r\n`;\r\nconst ImageCount = styled.p `\r\n ${fonts.sofiaPro.medium};\r\n\r\n display: flex;\r\n align-items: center;\r\n gap: ${fluid(6, 8)};\r\n position: absolute;\r\n top: ${fluid(4, 8)};\r\n right: ${fluid(8, 10)};\r\n padding: 6px 8px;\r\n border-radius: 8px;\r\n background-color: ${brand.primary.blue.base};\r\n color: ${brand.white};\r\n font-size: ${fluid(14, 16)};\r\n margin: 0;\r\n z-index: 1;\r\n\r\n svg {\r\n color: currentColor;\r\n display: block;\r\n height: ${fluid(12, 14)};\r\n }\r\n\r\n span:nth-child(2) {\r\n transform: translateY(-10%);\r\n }\r\n`;\r\nexport const UsedCarStyles = {\r\n CarouselDot,\r\n CarouselDotsContainer,\r\n Container,\r\n ContentContainer,\r\n Feature,\r\n FeatureIconImage,\r\n Features,\r\n FeaturesContainer,\r\n FeatureText,\r\n Image,\r\n ImageContainer,\r\n ImageCount,\r\n Link,\r\n LinkContainer,\r\n LocationContainer,\r\n LocationIcon,\r\n LocationTooltip,\r\n Price,\r\n PriceContainer,\r\n PriceItem,\r\n PriceLabel,\r\n ShortlistContainer,\r\n Strapline,\r\n Subtitle,\r\n Title,\r\n UnstyledLink,\r\n};\r\n","import Door from '!url-loader!@img/icons/door.svg';\r\nimport Fuel from '!url-loader!@img/icons/fuel.svg';\r\nimport Mileage from '!url-loader!@img/icons/mileage.svg';\r\nimport Transmission from '!url-loader!@img/icons/transmission.svg';\r\nimport Type from '!url-loader!@img/icons/type.svg';\r\nimport { getImageUrl } from '@helpers/image';\r\nimport { clamp } from '@helpers/utils';\r\nimport { withRedux } from '@hoc/withRedux';\r\nimport { ReactComponent as SvgCamera } from '@img/icons/camera.svg';\r\nimport { ReactComponent as ControlArrow } from '@img/icons/cta-chevron.svg';\r\nimport { ReactComponent as LocationPin } from '@img/icons/location-pin.svg';\r\nimport { ReactComponent as ShortlistRemove } from '@img/icons/shortlist-remove.svg';\r\nimport { ReactComponent as Shortlist } from '@img/icons/shortlist.svg';\r\nimport { toggle } from '@redux/reducers/shortlist';\r\nimport { useAppDispatch, useAppSelector } from '@redux/store';\r\nimport Tag from '@stories/Components/Tag/Tag';\r\nimport React, { useState } from 'react';\r\nimport { useSwipeable } from 'react-swipeable';\r\nimport CarouselButtons from '../CarouselButtons/CarouselButtons';\r\nimport { UsedCarStyles as S } from './UsedCar.styles';\r\nconst UsedCar = ({ id, bikeType, carType, disableImageProcessing = false, doors, doorsIconUrl = Door, carTypeIconUrl = Type, fuelType, fuelTypeIconUrl = Fuel, images, imageRatio = '4:3', altText, listView = false, location, mileage, mileageIconUrl = Mileage, monthlyPrice, monthlyPriceLabel = 'Monthly Price', price, priceLabel = 'Price', reserved, sold = false, strapline, subtitle, tag, title, transmission, transmissionIconUrl = Transmission, url, }) => {\r\n const dispatch = useAppDispatch();\r\n const { items } = useAppSelector((state) => state.shortlist.persisted);\r\n const [activeImageIndex, setActiveImageIndex] = useState(0);\r\n const maxIndex = images ? images.length - 1 : 0;\r\n const swipeHandlers = useSwipeable({\r\n onSwipedLeft: () => handleNextClick(),\r\n onSwipedRight: () => handlePreviousClick(),\r\n });\r\n const isInShortlist = items.some((item) => item.id.toString() === id.toString());\r\n return (React.createElement(S.Container, { listView: listView, \"data-image-ratio\": imageRatio },\r\n images && images.length > 0 && (React.createElement(S.ImageContainer, { ...swipeHandlers, ref: (r) => {\r\n swipeHandlers.ref(r);\r\n } },\r\n renderTag(),\r\n images.length > 1 && (React.createElement(S.ImageCount, null,\r\n React.createElement(\"span\", null,\r\n React.createElement(SvgCamera, null)),\r\n React.createElement(\"span\", null,\r\n activeImageIndex + 1,\r\n \" / \",\r\n images.length))),\r\n React.createElement(S.UnstyledLink, { as: sold ? 'span' : 'a', href: sold ? undefined : url, title: sold ? undefined : `View This ${bikeType ? 'Bike' : 'Car'}` }, images.map((image, i) => {\r\n const prevIndex = activeImageIndex - 1;\r\n const nextIndex = activeImageIndex + 1;\r\n if (activeImageIndex === i) {\r\n return renderImage(image, i);\r\n }\r\n if (prevIndex >= 0 && i === prevIndex) {\r\n return renderImage(image, prevIndex);\r\n }\r\n if (nextIndex < images.length && i === nextIndex) {\r\n return renderImage(image, nextIndex);\r\n }\r\n return null;\r\n })),\r\n images.length > 1 && (React.createElement(CarouselButtons, { prevDisabled: activeImageIndex === 0, prevClicked: handlePreviousClick, nextDisabled: activeImageIndex === maxIndex, nextClicked: handleNextClick })))),\r\n React.createElement(S.UnstyledLink, { as: sold ? 'span' : 'a', href: sold ? undefined : url, title: sold ? undefined : `View This ${bikeType ? 'Bike' : 'Car'}` },\r\n React.createElement(S.ContentContainer, null,\r\n title && React.createElement(S.Title, null, title),\r\n subtitle && React.createElement(S.Subtitle, null, subtitle),\r\n strapline && React.createElement(S.Strapline, null, strapline),\r\n React.createElement(S.PriceContainer, null,\r\n (reserved || sold || price) && (React.createElement(S.PriceItem, null,\r\n React.createElement(S.PriceLabel, null, priceLabel),\r\n reserved || sold ? React.createElement(S.Price, null, \"Not Available\") : React.createElement(S.Price, null, price))),\r\n (reserved || sold || monthlyPrice) && (React.createElement(S.PriceItem, null,\r\n React.createElement(S.PriceLabel, null, monthlyPriceLabel),\r\n reserved || sold ? (React.createElement(S.Price, null, \"Not Available\")) : (React.createElement(S.Price, null, monthlyPrice))))))),\r\n React.createElement(S.FeaturesContainer, null,\r\n React.createElement(S.Features, null,\r\n fuelType && (React.createElement(S.Feature, null,\r\n React.createElement(S.FeatureIconImage, { src: fuelTypeIconUrl ?? '' }),\r\n React.createElement(S.FeatureText, null, fuelType))),\r\n transmission && (React.createElement(S.Feature, null,\r\n React.createElement(S.FeatureIconImage, { src: transmissionIconUrl ?? '' }),\r\n React.createElement(S.FeatureText, null, transmission))),\r\n doors && (React.createElement(S.Feature, null,\r\n React.createElement(S.FeatureIconImage, { src: doorsIconUrl ?? '' }),\r\n React.createElement(S.FeatureText, null, doors))),\r\n mileage && (React.createElement(S.Feature, null,\r\n React.createElement(S.FeatureIconImage, { src: mileageIconUrl ?? '' }),\r\n React.createElement(S.FeatureText, null, mileage))),\r\n carType && (React.createElement(S.Feature, null,\r\n React.createElement(S.FeatureIconImage, { src: carTypeIconUrl ?? '' }),\r\n React.createElement(S.FeatureText, null, carType))),\r\n bikeType && (React.createElement(S.Feature, null,\r\n React.createElement(S.FeatureIconImage, { src: carTypeIconUrl ?? '' }),\r\n React.createElement(S.FeatureText, null, bikeType))),\r\n !sold && location && (React.createElement(S.LocationContainer, null,\r\n React.createElement(S.LocationIcon, null,\r\n React.createElement(LocationPin, null),\r\n React.createElement(S.LocationTooltip, null,\r\n \"Currently at \",\r\n location))))),\r\n React.createElement(S.LinkContainer, null,\r\n React.createElement(S.ShortlistContainer, { added: isInShortlist, onClick: () => {\r\n dispatch(toggle({ id: id, name: title, image: images?.[0] }));\r\n } }, isInShortlist ? React.createElement(ShortlistRemove, null) : React.createElement(Shortlist, null)),\r\n React.createElement(S.Link, { as: sold ? 'span' : 'a', href: sold ? undefined : url },\r\n \"View This \",\r\n bikeType ? 'Bike' : 'Car',\r\n \" \",\r\n React.createElement(ControlArrow, null))))));\r\n function renderImage(image, index) {\r\n const ratioValue = imageRatio === '16:9' ? 9 / 16 : 3 / 4;\r\n const imageSrc = disableImageProcessing\r\n ? image\r\n : getImageUrl(image, { mode: 'crop', width: 420, heightratio: ratioValue });\r\n const srcs = [\r\n `${imageSrc} 1x`,\r\n `${getImageUrl(image, { mode: 'crop', width: 840, heightratio: ratioValue })} 2x`,\r\n ];\r\n return (React.createElement(S.Image, { loading: \"lazy\", alt: altText ?? '', role: altText ? undefined : 'presentation', src: imageSrc, ...(disableImageProcessing ? {} : { srcSet: srcs.join(',') }), \"data-active\": index === activeImageIndex }));\r\n }\r\n function renderTag() {\r\n if (tag) {\r\n return React.createElement(Tag, { title: tag });\r\n }\r\n if (sold) {\r\n return React.createElement(Tag, { title: \"Sold\" });\r\n }\r\n if (reserved) {\r\n return React.createElement(Tag, { title: \"Reserved\" });\r\n }\r\n return null;\r\n }\r\n function handleNextClick() {\r\n if (activeImageIndex === maxIndex) {\r\n setActiveImageIndex(0);\r\n }\r\n else {\r\n setActiveImageIndex(clamp(activeImageIndex + 1, maxIndex));\r\n }\r\n }\r\n function handlePreviousClick() {\r\n if (activeImageIndex === 0) {\r\n setActiveImageIndex(maxIndex);\r\n }\r\n else {\r\n setActiveImageIndex(clamp(activeImageIndex - 1, maxIndex));\r\n }\r\n }\r\n};\r\nexport default withRedux(UsedCar);\r\n","var _circle, _circle2, _path;\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nimport * as React from \"react\";\n\nfunction SvgShortlist(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 50 50\"\n }, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 25,\n cy: 25,\n r: 25,\n fill: \"#feffff\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 25,\n cy: 25,\n r: 24,\n fill: \"none\",\n strokeWidth: 2,\n stroke: \"#191919\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.13 15.59h-.06c-2.1.01-4.06 1.08-5.2 2.85a6.222 6.222 0 00-5.2-2.85h-.06c-3.4.03-6.13 2.79-6.13 6.19.14 2.63 1.05 5.16 2.62 7.27 2.54 3.19 5.49 6.04 8.77 8.45 3.29-2.41 6.24-5.26 8.77-8.45 1.57-2.11 2.48-4.64 2.62-7.27 0-3.4-2.74-6.16-6.13-6.19z\",\n stroke: \"#000\",\n strokeMiterlimit: 10,\n fill: \"none\",\n strokeWidth: 2\n })));\n}\n\nexport default __webpack_public_path__ + \"1ef020cb55d898254f8afaa8725d6cab.svg\";\nexport { SvgShortlist as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nimport * as React from \"react\";\n\nfunction SvgLocationPin(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16.566 24.85\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.283 11.907a3.624 3.624 0 113.624-3.624 3.628 3.628 0 01-3.624 3.624M8.283 0A8.292 8.292 0 000 8.283c0 4.394 7.531 15.849 7.851 16.333a.517.517 0 00.864 0c.321-.485 7.851-11.939 7.851-16.333A8.292 8.292 0 008.283 0\",\n fill: \"currentcolor\",\n fillRule: \"evenodd\"\n })));\n}\n\nexport default __webpack_public_path__ + \"6026eacfaffa4b2952fcb79a59d61bf6.svg\";\nexport { SvgLocationPin as ReactComponent };","var _defs, _g;\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nimport * as React from \"react\";\n\nfunction SvgShortlistRemove(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"shortlist-remove_svg__Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 50 50\"\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".shortlist-remove_svg__cls-2{fill:#01346b}\"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"shortlist-remove_svg__Group_33759\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"shortlist-remove_svg__Group_32888\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"shortlist-remove_svg__Ellipse_338\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 25,\n cy: 25,\n r: 25,\n fill: \"#feffff\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 25,\n cy: 25,\n r: 24,\n fill: \"none\",\n stroke: \"#191919\",\n strokeWidth: 2\n })), /*#__PURE__*/React.createElement(\"path\", {\n id: \"shortlist-remove_svg__Icon_ionic-ios-heart-empty\",\n className: \"shortlist-remove_svg__cls-2\",\n d: \"M30.13 15.59h-.06c-2.1.01-4.06 1.08-5.2 2.85a6.222 6.222 0 00-5.2-2.85h-.06c-3.4.03-6.13 2.79-6.13 6.19.14 2.63 1.05 5.16 2.62 7.27 2.54 3.19 5.49 6.04 8.77 8.45 3.29-2.41 6.24-5.26 8.77-8.45 1.57-2.11 2.48-4.64 2.62-7.27 0-3.4-2.74-6.16-6.13-6.19zm-10.5 1.54H30.1s-11.7.01-10.47 0z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"shortlist-remove_svg__Icon_ionic-ios-heart-empty-2\",\n className: \"shortlist-remove_svg__cls-2\",\n d: \"M30.13 15.59h-.06c-2.1.01-4.06 1.08-5.2 2.85a6.222 6.222 0 00-5.2-2.85h-.06c-3.4.03-6.13 2.79-6.13 6.19.14 2.63 1.05 5.16 2.62 7.27 2.54 3.19 5.49 6.04 8.77 8.45 3.29-2.41 6.24-5.26 8.77-8.45 1.57-2.11 2.48-4.64 2.62-7.27 0-3.4-2.74-6.16-6.13-6.19zm2.28 12.55a42.367 42.367 0 01-7.53 7.43 42.035 42.035 0 01-7.53-7.43 11.829 11.829 0 01-2.32-6.36c0-2.55 2.06-4.63 4.61-4.65h.05c.79 0 1.56.2 2.25.59.67.38 1.24.91 1.66 1.56a1.535 1.535 0 002.57 0c.42-.65.99-1.18 1.66-1.56.69-.39 1.46-.59 2.25-.59h.05c2.55.02 4.61 2.1 4.61 4.65-.15 2.3-.96 4.51-2.33 6.36z\"\n })))));\n}\n\nexport default __webpack_public_path__ + \"5098b51aae0ab99eb2c15cf8a9d15089.svg\";\nexport { SvgShortlistRemove as ReactComponent };","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNSAzNSI+DQoJPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEyNTIgLTQ0MikiPg0KCQk8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjUyIDQ0MikiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzE5MTkxOSIgc3Ryb2tlLXdpZHRoPSIxIj4NCgkJCTxjaXJjbGUgY3g9IjE3LjUiIGN5PSIxNy41IiByPSIxNy41IiBzdHJva2U9Im5vbmUiIC8+DQoJCQk8Y2lyY2xlIGN4PSIxNy41IiBjeT0iMTcuNSIgcj0iMTciIGZpbGw9Im5vbmUiIC8+DQoJCTwvZz4NCgkJPHBhdGggZD0iTTEyLjAyOSw2LjI4N2MtLjAzMSwwLS4wNjEsMC0uMDkyLDBhMS4zNzksMS4zNzksMCwwLDAtLjk2Ni40MTVsLS4wMy4wMjZMNi45MDYsMTAuNzA1bC0uMDc0LjEyOWExLjYyLDEuNjIsMCwwLDAtLjIzLjg4OWgwdjcuNjg5SDE5Ljk5MVY2LjI4N1pNMTguMzcsMTQuNmgtMS41YS4zMTUuMzE1LDAsMSwxLDAtLjYzaDEuNWEuMzE1LjMxNSwwLDAsMSwwLC42M1ptLjU0Ni0yLjUyM0g4LjA2NWMtLjQxMy0uMTYzLS40NjktLjQxLS4zLS43MTFsMy45LTMuODQ5Yy4wODgtLjA3NS4xNTctLjE3OC4zMS0uMTU1aDYuOTM2djQuNzE1WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTI1Ni40IDQ0Ni43MTcpIiBmaWxsPSIjMTkxOTE5IiAvPg0KCTwvZz4NCjwvc3ZnPg0K\"","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNSAzNSI+DQoJPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTU4NSAtMTU3NCkiPg0KCQk8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1ODUgMTU3NCkiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzE5MTkxOSIgc3Ryb2tlLXdpZHRoPSIxIj4NCgkJCTxjaXJjbGUgY3g9IjE3LjUiIGN5PSIxNy41IiByPSIxNy41IiBzdHJva2U9Im5vbmUiIC8+DQoJCQk8Y2lyY2xlIGN4PSIxNy41IiBjeT0iMTcuNSIgcj0iMTciIGZpbGw9Im5vbmUiIC8+DQoJCTwvZz4NCgkJPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTk1Ljc2NCAxNTg0LjMwMykiPg0KCQkJPHBhdGggZD0iTTc0Ljk1Miw0OC40M2g2LjQ4NGEuODk0Ljg5NCwwLDAsMSwuODkyLjg5MnY2LjE5YTEuNDExLDEuNDExLDAsMCwxLDEuNDE2LDEuNTI2djIuMjA2YS4zMTEuMzExLDAsMSwwLC42MTItLjFWNTUuM2gtLjMyYS40MzkuNDM5LDAsMCwxLS40MzktLjQzOXYtMi44OWEuNDM5LjQzOSwwLDAsMSwuNDM5LS40MzloLjMyVjUwLjM5bC0xLjA3NC0xLjA0NmEuNDM4LjQzOCwwLDAsMSwuNjEtLjYyN2wxLjM0MSwxLjMwN3YxLjUwOWguMzJhLjQzOS40MzksMCwwLDEsLjQzOS40Mzl2Mi44OWEuNDM5LjQzOSwwLDAsMS0uNDM5LjQzOWgtLjMydjMuODQyYTEuMTg1LDEuMTg1LDAsMSwxLTIuMzY4LjFWNTcuMDM3YzAtLjQ1My0uMi0uNi0uNTM4LS42NDh2NC40MjZoLjQ1MWExLjA5MywxLjA5MywwLDAsMSwxLjA5LDEuMDl2LjkyM0g3Mi41MlY2MS45YTEuMDkzLDEuMDkzLDAsMCwxLDEuMDktMS4wOWguNDVWNDkuMzIyQS44OTQuODk0LDAsMCwxLDc0Ljk1Miw0OC40M1ptMTAuMTYyLDMuOThoLS42NHYyLjAxM2guNjRabS05Ljc2OS0yLjQ1NGg1Ljd2My40NjhoLTUuN1oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC03Mi41MiAtNDguNDMpIiBmaWxsPSIjMTkxOTE5IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIC8+DQoJCTwvZz4NCgk8L2c+DQo8L3N2Zz4NCg==\"","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNSAzNSI+DQoJPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTExMzYgLTQ0MikiPg0KCQk8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTM2IDQ0MikiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzE5MTkxOSIgc3Ryb2tlLXdpZHRoPSIxIj4NCgkJCTxjaXJjbGUgY3g9IjE3LjUiIGN5PSIxNy41IiByPSIxNy41IiBzdHJva2U9Im5vbmUiIC8+DQoJCQk8Y2lyY2xlIGN4PSIxNy41IiBjeT0iMTcuNSIgcj0iMTciIGZpbGw9Im5vbmUiIC8+DQoJCTwvZz4NCgkJPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTE0Mi44NTQgNDUxLjkwNikiPg0KCQkJPHBhdGggZD0iTTEzLjM3OSwyMy4zODlhNi44NjQsNi44NjQsMCwwLDEsMS4zLS4zNDUuMzE4LjMxOCwwLDAsMC0uMS0uNjI3LDcuNSw3LjUsMCwwLDAtMS40My4zODFxLS4zNDguMTMtLjY4MS4yOTRhNy42NzIsNy42NzIsMCwwLDAtMS44NjYsMS4yOXEtLjI3LjI1My0uNTE2LjUzM2E3LjU2Nyw3LjU2NywwLDAsMC0uNTU3LjcxNi4zMTguMzE4LDAsMSwwLC41MjQuMzU5LDcuMDIyLDcuMDIyLDAsMCwxLDEtMS4xNTgsNyw3LDAsMCwxLDIuMzMyLTEuNDQzbTUuMzMxLjIyOGMtLjAyNy4wMjgtMy4wMjEsMy4wNTMtMy4xNDcsMy4xOGEzLjIsMy4yLDAsMCwwLTMuMTc5LDMuMTk0LDMuMTk1LDMuMTk1LDAsMSwwLDUuODU0LTEuNzY5bDEuMTI1LTQuMjMxYS4zOS4zOSwwLDAsMC0uNjU0LS4zNzRtNy41ODQsMS4xNDQtMi44NjcsMS4zNzFhOC43MTYsOC43MTYsMCwwLDAtMS40NDctMi4xMzdsMS4wMS0xLjAxMS0uNTI0LS41MjQtMS4wMSwxLjAxYTguNzY1LDguNzY1LDAsMCwwLTEuMTg2LS45MTUsOC42NjIsOC42NjIsMCwwLDAtLjkyNy0uNTE3bC41NjMtMS4zMDgtLjY4MS0uMjkzLS41NjMsMS4zMDhhOC42ODcsOC42ODcsMCwwLDAtMi43MjItLjU1OFYxOS43NTdIMTUuMnYxLjQyOWE4LjcxNyw4LjcxNywwLDAsMC0yLjUwOC40NzhsLS41MjgtMS4zMjctLjY4OS4yNzRMMTIsMjEuOTM4YTguNjUxLDguNjUxLDAsMCwwLTIuMzIxLDEuNTNMOC42NzUsMjIuNDZsLS41MjQuNTI0LDEuMDA4LDEuMDA4YTguNzc0LDguNzc0LDAsMCwwLTEuMzMzLDEuOTE1TDUsMjQuNDU1YTExLjg4MywxMS44ODMsMCwwLDEsMjEuMjk0LjMwNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUgLTE4KSIgZmlsbD0iIzE5MTkxOSIgZmlsbC1ydWxlPSJldmVub2RkIiAvPg0KCQk8L2c+DQoJPC9nPg0KPC9zdmc+DQo=\"","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNSAzNSI+DQoJPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTgzNyAtMTU3NCkiPg0KCQk8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4MzcgMTU3NCkiIGZpbGw9Im5vbmUiPg0KCQkJPHBhdGggZD0iTTE3LjUsMEExNy41LDE3LjUsMCwxLDEsMCwxNy41LDE3LjUsMTcuNSwwLDAsMSwxNy41LDBaIiBzdHJva2U9Im5vbmUiIC8+DQoJCQk8cGF0aCBkPSJNIDE3LjUgMSBDIDEzLjA5MjY4OTUxNDE2MDE2IDEgOC45NDkxODA2MDMwMjczNDQgMi43MTYzMDA5NjQzNTU0NjkgNS44MzI3NDA3ODM2OTE0MDYgNS44MzI3NDA3ODM2OTE0MDYgQyAyLjcxNjMwMDk2NDM1NTQ2OSA4Ljk0OTE4MDYwMzAyNzM0NCAxIDEzLjA5MjY4OTUxNDE2MDE2IDEgMTcuNSBDIDEgMjEuOTA3MzEwNDg1ODM5ODQgMi43MTYzMDA5NjQzNTU0NjkgMjYuMDUwODE5Mzk2OTcyNjYgNS44MzI3NDA3ODM2OTE0MDYgMjkuMTY3MjU5MjE2MzA4NTkgQyA4Ljk0OTE4MDYwMzAyNzM0NCAzMi4yODM2OTkwMzU2NDQ1MyAxMy4wOTI2ODk1MTQxNjAxNiAzNCAxNy41IDM0IEMgMjEuOTA3MzEwNDg1ODM5ODQgMzQgMjYuMDUwODE5Mzk2OTcyNjYgMzIuMjgzNjk5MDM1NjQ0NTMgMjkuMTY3MjU5MjE2MzA4NTkgMjkuMTY3MjU5MjE2MzA4NTkgQyAzMi4yODM2OTkwMzU2NDQ1MyAyNi4wNTA4MTkzOTY5NzI2NiAzNCAyMS45MDczMTA0ODU4Mzk4NCAzNCAxNy41IEMgMzQgMTMuMDkyNjg5NTE0MTYwMTYgMzIuMjgzNjk5MDM1NjQ0NTMgOC45NDkxODA2MDMwMjczNDQgMjkuMTY3MjU5MjE2MzA4NTkgNS44MzI3NDA3ODM2OTE0MDYgQyAyNi4wNTA4MTkzOTY5NzI2NiAyLjcxNjMwMDk2NDM1NTQ2OSAyMS45MDczMTA0ODU4Mzk4NCAxIDE3LjUgMSBNIDE3LjUgMCBDIDI3LjE2NDk3OTkzNDY5MjM4IDAgMzUgNy44MzUwMjAwNjUzMDc2MTcgMzUgMTcuNSBDIDM1IDI3LjE2NDk3OTkzNDY5MjM4IDI3LjE2NDk3OTkzNDY5MjM4IDM1IDE3LjUgMzUgQyA3LjgzNTAyMDA2NTMwNzYxNyAzNSAwIDI3LjE2NDk3OTkzNDY5MjM4IDAgMTcuNSBDIDAgNy44MzUwMjAwNjUzMDc2MTcgNy44MzUwMjAwNjUzMDc2MTcgMCAxNy41IDAgWiIgc3Ryb2tlPSJub25lIiBmaWxsPSIjMTkxOTE5IiAvPg0KCQk8L2c+DQoJCTxwYXRoIGQ9Ik0yNy4xODYsNDAuMjMzYTEuMTg2LDEuMTg2LDAsMCwwLDEuMTg2LTEuMTg2VjM0LjNIMzEuOTN2NC43NDRhMS4xODYsMS4xODYsMCwwLDAsMi4zNzIsMFYzNC4zaDIuMzcyYTMuNTU4LDMuNTU4LDAsMCwwLDMuNTU4LTMuNTU4VjI3LjE4NmExLjE4NiwxLjE4NiwwLDEsMC0yLjM3MiwwdjMuNTU4YTEuMTg2LDEuMTg2LDAsMCwxLTEuMTg2LDEuMTg2SDM0LjNWMjcuMTg2YTEuMTg2LDEuMTg2LDAsMSwwLTIuMzcyLDBWMzEuOTNIMjguMzcyVjI3LjE4NmExLjE4NiwxLjE4NiwwLDEsMC0yLjM3MiwwVjM5LjA0N0ExLjE4NiwxLjE4NiwwLDAsMCwyNy4xODYsNDAuMjMzWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODIxLjM4MyAxNTU4LjM4MykiIGZpbGw9IiMxOTE5MTkiIC8+DQoJPC9nPg0KPC9zdmc+DQo=\"","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNSAzNSI+DQoJPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTExOTQgLTQ0MikiPg0KCQk8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTk0IDQ0MikiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzE5MTkxOSIgc3Ryb2tlLXdpZHRoPSIxIj4NCgkJCTxjaXJjbGUgY3g9IjE3LjUiIGN5PSIxNy41IiByPSIxNy41IiBzdHJva2U9Im5vbmUiIC8+DQoJCQk8Y2lyY2xlIGN4PSIxNy41IiBjeT0iMTcuNSIgcj0iMTciIGZpbGw9Im5vbmUiIC8+DQoJCTwvZz4NCgkJPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTE5Ny40MjUgMTQzLjM2MSkiPg0KCQkJPHBhdGggZD0iTTEzLjg2MSwyOTIuNUg2LjQzYTEuMjUxLDEuMjUxLDAsMCwwLS45NTEuNDM2bC0xLjUsMS43NTJhMi4wODIsMi4wODIsMCwwLDEtMS41ODIuNzI4bC0xLjMxNywwYS40MS40MSwwLDAsMC0uNDE3LjQxNXYyLjVhMi4wNzUsMi4wNzUsMCwwLDAsMi4wODIsMi4wODJoLjg3OGEyLjQ5MiwyLjQ5MiwwLDAsMSw0LjkxNywwaDguNDJhMi40OTEsMi40OTEsMCwwLDEsNC45MTUsMGguODc2QTEuMjQzLDEuMjQzLDAsMCwwLDI0LDI5OS4xN3YtMS42MTVhMS4yNDcsMS4yNDcsMCwwLDAtLjk0OC0xLjIxM2wtMy4zNDQtLjgzN2EyLjkxNiwyLjkxNiwwLDAsMS0uODU4LS4zNjlsLTMuNDI0LTIuMTc3YTIuOTE5LDIuOTE5LDAsMCwwLTEuNTY2LS40NTZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjkxMyAxOS4xMzYpIiBmaWxsPSIjMTkxOTE5IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIC8+DQoJCQk8cGF0aCBkPSJNNy43NTMsMjk0LjYxOWExLjY2NywxLjY2NywwLDEsMS0xLjY2NywxLjY2N0ExLjY2MSwxLjY2MSwwLDAsMSw3Ljc1MywyOTQuNjE5Wm0uMDI5LDEuMjUySDcuNzUzYS40LjQsMCwxLDAsLjAyOSwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMuNTc4IDIzLjY4NSkiIGZpbGw9IiMxOTE5MTkiIGZpbGwtcnVsZT0iZXZlbm9kZCIgLz4NCgkJCTxwYXRoIGQ9Ik0zLjUyLDI5NC42MTlhMS42NjcsMS42NjcsMCwxLDEtMS42NjcsMS42NjdBMS42NjEsMS42NjEsMCwwLDEsMy41MiwyOTQuNjE5Wm0uMDI5LDEuMjUySDMuNTJhLjQuNCwwLDEsMCwuMDI5LDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjQ3NCAyMy42ODUpIiBmaWxsPSIjMTkxOTE5IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIC8+DQoJCTwvZz4NCgk8L2c+DQo8L3N2Zz4NCg==\"","var _path;\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nimport * as React from \"react\";\n\nfunction SvgCamera(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 22.876 19.757\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.223 3.12H3.12A3.121 3.121 0 000 6.239v10.4a3.121 3.121 0 003.12 3.12h16.637a3.121 3.121 0 003.12-3.12v-10.4a3.121 3.121 0 00-3.12-3.12h-1.691L16.73 1.341A2.079 2.079 0 0014.785 0H8.091a2.081 2.081 0 00-1.978 1.436l-.89 1.684zm6.215 2.6a5.2 5.2 0 105.2 5.2 5.2 5.2 0 00-5.2-5.201zm0 2.08a3.12 3.12 0 11-3.12 3.12 3.121 3.121 0 013.12-3.12z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\"\n })));\n}\n\nexport default __webpack_public_path__ + \"018a61d5d5d69e667ea56fa97821b9d8.svg\";\nexport { SvgCamera as ReactComponent };","import { combineReducers } from '@reduxjs/toolkit';\r\nimport * as enquiry from './enquiry';\r\nimport * as quote from './quote';\r\nimport * as shortlist from './shortlist';\r\nconst rootReducer = combineReducers({\r\n [shortlist.name]: shortlist.reducer,\r\n [enquiry.name]: enquiry.reducer,\r\n [quote.name]: quote.reducer,\r\n});\r\nexport default rootReducer;\r\n","import { configureStore } from '@reduxjs/toolkit';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { persistMiddleware } from './middleware/persist';\r\nimport rootReducer from './reducers';\r\nconst store = configureStore({\r\n middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat([persistMiddleware]),\r\n preloadedState: undefined,\r\n reducer: rootReducer,\r\n});\r\nexport const useAppDispatch = () => useDispatch();\r\nexport const useAppSelector = (selector) => useSelector(selector);\r\nexport default store;\r\n","import { ReactComponent as ControlArrow } from '@img/icons/cta-chevron.svg';\r\nimport * as React from 'react';\r\nimport S from './CarouselButtons.styles';\r\nconst CarouselButtons = ({ prevDisabled, nextDisabled, prevClicked, nextClicked, children, }) => {\r\n return (React.createElement(S.Container, { \"data-inactive\": prevDisabled && nextDisabled },\r\n React.createElement(S.CarouselButtonPrev, { disabled: prevDisabled, onClick: () => prevClicked() },\r\n React.createElement(ControlArrow, null)),\r\n children,\r\n React.createElement(S.CarouselButtonNext, { disabled: nextDisabled, onClick: () => nextClicked() },\r\n React.createElement(ControlArrow, null))));\r\n};\r\nexport default CarouselButtons;\r\n","import { transition } from '@helpers/animation';\r\nimport brand from '@helpers/brand';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, until } from '@helpers/media';\r\nimport styled, { css } from 'styled-components';\r\nconst Container = styled.section `\r\n ${transition('opacity')};\r\n\r\n display: flex;\r\n\r\n &[data-inactive='true'] {\r\n opacity: 0;\r\n }\r\n`;\r\nconst CarouselButtonStyles = css `\r\n ${ButtonReset};\r\n ${transition('background-color', 0.2)};\r\n\r\n width: 60px;\r\n height: 60px;\r\n border-radius: 50%;\r\n background-color: ${brand.primary.blue.base};\r\n color: ${brand.white};\r\n cursor: pointer;\r\n margin-right: 10px;\r\n position: relative;\r\n aspect-ratio: 1;\r\n\r\n @media ${until(Device.Tablet)} {\r\n width: 37px;\r\n height: 37px;\r\n }\r\n\r\n svg {\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n width: 15px;\r\n height: 24px;\r\n transform: translate(-50%, -50%);\r\n\r\n @media ${until(Device.Tablet)} {\r\n width: 10px;\r\n height: 16px;\r\n }\r\n }\r\n\r\n &:focus-visible,\r\n &:hover {\r\n background-color: ${brand.primary.blue.light};\r\n }\r\n\r\n &[disabled] {\r\n background-color: ${brand.primary.blue.light};\r\n opacity: 0.75;\r\n pointer-events: none;\r\n }\r\n`;\r\nconst CarouselButtonPrev = styled.button `\r\n ${CarouselButtonStyles};\r\n\r\n transform: scale(-1);\r\n`;\r\nconst CarouselButtonNext = styled.button `\r\n ${CarouselButtonStyles};\r\n`;\r\nconst CarouselButtonsStyles = {\r\n Container,\r\n CarouselButtonNext,\r\n CarouselButtonPrev,\r\n};\r\nexport default CarouselButtonsStyles;\r\n","import React from 'react';\r\nimport { Provider as ReduxProvider } from 'react-redux';\r\nimport store from '@redux/store';\r\nexport function withRedux(WrappedComponent) {\r\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n const ComponentWithRedux = (props) => {\r\n return (React.createElement(ReduxProvider, { store: store },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithRedux.displayName = `withRedux(${displayName})`;\r\n return ComponentWithRedux;\r\n}\r\n","import { load } from '@redux/middleware/persist';\r\nimport { createSlice } from '@reduxjs/toolkit';\r\nconst persistedValue = load('shortlist.persisted', {\r\n items: [],\r\n});\r\nexport const initialState = {\r\n persisted: persistedValue,\r\n};\r\nconst slice = createSlice({\r\n initialState,\r\n name: 'shortlist',\r\n reducers: {\r\n add: (state, action) => {\r\n state.persisted.items = state.persisted.items.filter((r) => r.id !== action.payload.id);\r\n state.persisted.items.push(action.payload);\r\n },\r\n clear: (state) => {\r\n state.persisted.items = [];\r\n },\r\n remove: (state, action) => {\r\n state.persisted.items = state.persisted.items.filter((r) => r.id !== action.payload);\r\n },\r\n toggle: (state, action) => {\r\n if (state.persisted.items.find((r) => r.id === action.payload.id)) {\r\n state.persisted.items = state.persisted.items.filter((r) => r.id !== action.payload.id);\r\n }\r\n else {\r\n state.persisted.items.push(action.payload);\r\n }\r\n },\r\n },\r\n});\r\nexport const { add, clear, remove, toggle } = slice.actions;\r\nexport const name = slice.name;\r\nexport const reducer = slice.reducer;\r\n","import { load } from '@redux/middleware/persist';\r\nimport { createSlice } from '@reduxjs/toolkit';\r\nconst persistedValue = load('enquiry.persisted', {\r\n name: '',\r\n postcode: '',\r\n email: '',\r\n phoneNumber: '',\r\n});\r\nexport const initialState = {\r\n persisted: persistedValue,\r\n};\r\nconst slice = createSlice({\r\n initialState,\r\n name: 'enquiry',\r\n reducers: {\r\n add: (state, action) => {\r\n state.persisted.name = action.payload.name;\r\n state.persisted.email = action.payload.email;\r\n state.persisted.postcode = action.payload.postcode;\r\n state.persisted.phoneNumber = action.payload.phoneNumber;\r\n },\r\n },\r\n});\r\nexport const { add } = slice.actions;\r\nexport const name = slice.name;\r\nexport const reducer = slice.reducer;\r\n","import { load } from '@redux/middleware/persist';\r\nimport { createSlice } from '@reduxjs/toolkit';\r\nconst persistedValue = load('quote.persisted', {\r\n id: '',\r\n quote: undefined,\r\n});\r\nexport const initialState = {\r\n persisted: persistedValue,\r\n};\r\nconst slice = createSlice({\r\n initialState,\r\n name: 'quote',\r\n reducers: {\r\n updateQuote: (state, action) => {\r\n state.persisted = { ...state.persisted, ...action.payload };\r\n },\r\n },\r\n});\r\nexport const { updateQuote } = slice.actions;\r\nexport const name = slice.name;\r\nexport const reducer = slice.reducer;\r\n"],"sourceRoot":""}