{"version":3,"sources":["assets/images/icons/ArrowLeft.svg","store/entities/config/index.js","store/entities/app/index.js","store/entities/data/index.js","store/reducer.js","store/index.js","components/LoadingSpinner/index.js","translations.js","components/LocalizedLink/index.js","assets/images/icons/ArrowUp.svg","assets/images/icons/Filter.svg","components/NavBar/index.js","components/Footer/index.js","assets/images/icons/Close.svg","assets/images/icons/Search.svg","assets/images/icons/Check.svg","components/Accessories/AccessoriesFilter.js","hooks/useMediaQuery.js","hooks/useBreakPoints.js","components/Price/index.js","assets/images/icons/ArrowRight.svg","components/Accessories/AccessoryItem.js","assets/images/placeholder-accessory.png","components/Accessories/AccessoriesCategory.js","components/Accessories/index.js","components/Packages/index.js","components/Swatch/index.js","components/AssemblySliderSelectors/FeatureCarousel.js","assets/images/placeholder-alloy-wheel.png","assets/images/placeholder-interior.png","components/AssemblySliderSelectors/index.js","assets/images/icons/Rewind.svg","assets/images/placeholder-color.png","assets/images/icons/Cart.svg","components/RewindButton/index.js","assets/images/icons/Fullscreen.svg","hooks/useAllAccessories.js","hooks/useAccessoriesPrice.js","hooks/useExtraPackagesPrice.js","hooks/useTotalPrice.js","components/BottomBar/SelectedAccessories.js","components/BottomBar/SelectedPackages.js","components/BottomBar/Cart.js","components/BottomBar/index.js","hooks/useDisableBodyScroll.js","components/modals/SaveCarConfigModal/FinishScreen.js","components/modals/SaveCarConfigModal/ErrorScreen.js","api/requests.js","api/cache.js","components/modals/SaveCarConfigModal/index.js","components/modals/TechDataModal/index.js","hooks/useSalesFrontConfig.js","utils/accessoryUtils.js","hooks/useSelectedAccessory.js","components/modals/OfferModal/OfferForm.js","components/modals/OfferModal/index.js","components/modals/PdfModal/index.js","components/modals/PackagesModal/index.js","components/NotFound.js","components/360Viewer/index.js","utils/dataUtils.js","hooks/useLocale.js","assets/images/icons/ExitFullscreen.svg","assets/images/icons/Info.svg","assets/images/placeholder-car.png","views/Assemble.js","components/Cards/CarPartCard/index.js","components/Cards/GradeCard/index.js","views/CarPartSelection.js","components/StickyAside/index.js","views/Conclusion/SelectedAccessories.js","views/Conclusion/SelectedPackages.js","views/Conclusion/TireLabels.js","views/Conclusion/TechData.js","views/Conclusion/index.js","views/GradeSelection.js","views/ModelSelection.js","views/Config/ConfigLoadingPlaceholder.js","views/Config/ConfigFailedLoading.js","views/Config/index.js","utils/scrollToTop.js","Router.js","i18n.js","App.js","reportWebVitals.js","index.js"],"names":["_path","initialState","gradeId","model","code","specification","engine","body","colorCode","wheels","interior","extraPackages","accessories","slice","createSlice","name","reducers","setModel","state","payload","setCode","setSpecification","setEngine","setBody","setColor","setWheels","setInterior","addAccessory","push","removeAccessory","filter","item","updateAccessories","addExtraPackage","removeExtraPackage","updateExtraPackages","setGrade","setConfig","actions","filters","selectedCategories","searchValue","selectedTab","pdfModal","saveConfigModal","offerModal","offerModalType","addFilter","removeFilter","setSelectedCategory","setSearchValue","setSelectedTab","setModalState","modal","newState","type","hasOwnProperty","resetAppState","specificationsData","rawBuilderData","builderData","bodyData","tireLabelsData","compatibilityData","locationsData","consentsData","modelsData","errorData","setSpecificationsData","reduce","res","input","grade","id","setRawBuilderData","setBuilderData","techdata","newPayload","obj","el","categoryName","setBodyData","sort","a","b","price","mapped","engines","some","eic","title","setTireLabelsData","setCompatibilityData","setLocationsData","setConsentsData","toLowerCase","includes","setModelsData","setErrorData","resetBuilderData","combineReducers","config","app","data","persistConfig","key","storage","blacklist","persistedReducer","persistReducer","reducer","store","configureStore","devTools","process","middleware","getDefaultMiddleware","serializableCheck","LoadingSpinner","className","Spinner","animation","role","navTrans","links","href","label","footerTrans","LocalizedLink","to","children","i18n","useTranslation","language","_excluded","_extends","Object","assign","target","i","arguments","length","source","prototype","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgArrowLeft","_ref","svgRef","titleId","props","viewBox","ref","fill","d","ForwardRef","SvgArrowUp","_rect","_rect2","_rect3","_circle","_circle2","_circle3","_circle4","_circle5","_circle6","NavBar","t","location","useLocation","React","useState","open","setOpen","modelId","useSelector","pathname","split","pop","isPageGrades","showBackButton","useMemo","values","brand","togglerProps","variant","onClick","Container","Button","Collapse","in","map","link","idx","Footer","SvgFilter","width","height","xmlns","x","y","rx","cx","cy","r","transform","SvgClose","SvgSearch","AccessoriesFilter","dispatch","useDispatch","Stack","gap","Dropdown","onSelect","eventKey","event","autoClose","Toggle","count","Badge","renderCount","Menu","Header","isFilterActive","itemProps","active","Item","Form","Group","Control","placeholder","value","onChange","e","useMediaQuery","query","matches","setMatches","useEffect","mediaQuery","window","matchMedia","handler","addEventListener","removeEventListener","useBreakPoints","isXs","isSm","isMd","isLg","isXl","isXxl","isSmallerThanMd","isSmallerThanLg","isSmallerThanXl","Price","Number","quantity","currency","pattern","group","SvgCheck","AccessoryItem","onZoom","pictures","Card","Figure","main","stopPropagation","Img","src","thumb","Body","Title","Text","AccessoriesCategory","category","isConclusion","isShowingAll","setIsShowingAll","isItemSelected","useCallback","filteredData","filteredCount","showingLimit","isShowMore","ListGroup","index","isChecked","option","check","Accessories","zoomShow","setZoomShow","noData","handleZoom","img","direction","Alert","Modal","centered","show","onHide","closeButton","fluid","Packages","options","equipment","categories","Set","Tabs","defaultActiveKey","opts","eqpt","Tab","Row","Col","sm","lg","size","md","Swatch","selectedValue","setSelected","isSelected","ToggleButton","replace","checked","undefined","SvgArrowRight","FeatureCarousel","activeItem","setActiveItem","placeholderImage","find","mappedData","cssMode","slidesPerView","navigation","prevEl","nextEl","mousewheel","keyboard","modules","Navigation","Mousewheel","Keyboard","radio","SwiperCore","use","AssemblySliderSelectors","tabsData","dataKey","PlaceholderWheels","PlaceholderInterior","activeKey","k","tab","SvgRewind","RewindButton","text","SvgCart","useAllAccessories","concat","useAccessoriesPrice","allAccessories","forEach","accessory","foundAccessory","useExtraPackagesPrice","selectedPackage","foundItem","useTotalPrice","specialPrice","exteriors","interiors","wheelsData","priceResolved","accessoriesPrice","extraPackagesPrice","findItemPrice","foundItems","SelectedAccessories","accessoriesData","accessoriesSelected","Accordion","flush","pill","bg","SelectedPackages","packages","Cart","selectedExterior","selectedInterior","selectedWheel","BottomBar","isDisabled","action","totalPrice","isExpanded","setIsExpanded","document","style","overflow","FinishScreen","configUrl","origin","xs","span","offset","ErrorScreen","onReset","instance","axios","create","baseURL","useQueryRequest","queryCache","queryFn","params","success","error","useQuery","queryKeys","onSuccess","onError","err","useMutationRequest","useMutation","useBuilderDataRequest","get","useConfigRequest","post","SaveCarConfigModal","savedConfigId","setSavedConfigId","hasError","setHasError","isOpen","saveConfig","result","configId","mutate","resetState","isFetching","TechDataModal","onClose","mappedEquipmentData","useSalesFrontConfig","Math","random","priceExVat","purchasePrice","make","_omit","bodies","bodyStyle","seatsNumber","seats","doorsNumber","doors","grades","bigPicture","exterior","tilePicture","discountedPrice","priceAdjustment","vat","endItemCode","equipments","eq","included","_pick","services","defaultOptions","valueKey","getSelectedAccessory","ReturnComponent","useSelectedAccessory","OfferForm","onSubmit","useFormContext","register","handleSubmit","watch","setValue","salesfrontConfig","builderModel","shortName","createTestDriveDescription","firstName","lastName","email","phoneNr","consents","description","customer","phoneNumber","createActivity","consent","isSigned","modelFamilyName","familyName","Label","htmlFor","required","Select","Check","iri","inline","formDefaultValues","OfferModal","step","setStep","setError","methods","useForm","defaultValues","dataOffer","message","modalProps","handleStepChange","PdfModal","pdf","setPdf","dataPdf","enabled","blob","Blob","responseType","isLoading","showActions","Heading","saveAs","fileURL","URL","createObjectURL","PackagesModal","onConfirm","onCancel","requiredOptions","incompatible","incompatibleOptions","set","priceBefore","NotFound","onRefetch","redirect","as","refetch","route","React360Viewer","startDragging","evt","dragging","mozUserSelect","webkitUserSelect","userSelect","setLastPositions","dragStart","ctx","transformedPoint","lastX","lastY","doDragging","pt","translate","redraw","stopDragging","prev","spinReverse","turnRight","turnLeft","next","resetPosition","currentScale","activeImage","setImage","zoomImage","setState","offsetX","pageX","canvas","offsetLeft","offsetY","pageY","offsetTop","delta","wheelDelta","deltaY","zoom","zoomIn","centerX","centerY","zoomOut","startMoving","movement","movementStart","viewPortElementRef","cursor","doMoving","onMove","clientX","stopMoving","touchStart","touches","touchMove","touchEnd","play","loopTimeoutId","setInterval","loopImages","togglePlay","playing","togglePanMode","panmode","toggleFullScreen","isFullScreen","pinchOut","viewPercentageRef","createRef","isMobile","imageData","images","loadedImages","viewerPercentage","currentImage","currentLeftPosition","currentTopPosition","currentCanvasImage","speedFactor","stopAtEdges","minScale","maxScale","scale","customOffset","selectMenuOption","viewPortElementWidth","dragSpeed","currentLoop","imagesLoaded","disableZoomin","current","viewerContainerRef","getElementsByClassName","fetchData","clearTimeout","preloadImages","str","padString","toString","addImage","console","log","resultSrc","image","Image","onload","onImageLoad","bind","onerror","percentage","round","amount","updatePercentageInLoader","onAllImagesLoaded","innerHTML","initData","imageContainerRef","getContext","attachEvents","checkMobile","loadInitialImage","autoplay","bindPanModeEvents","bind360ModeEvents","navigator","msMaxTouchPoints","cached","viewportElement","getBoundingClientRect","trackTransforms","crossOrigin","p1","p2","hRatio","vRatio","ratio","min","centerShift_x","centerShift_y","clearRect","drawImage","Promise","resolve","svg","createElementNS","xform","createSVGMatrix","getTransform","savedTransforms","save","restore","sx","sy","scaleNonUniform","rotate","radians","PI","dx","dy","c","f","m2","multiply","setTransform","createSVGPoint","matrixTransform","inverse","moveActiveIndexDown","moveActiveIndexUp","itemsSkipped","update","clicks","factor","pow","preventDefault","itemsSkippedRight","floor","itemsSkippedLeft","stop","loop","prevProps","prevState","classList","add","remove","inputEl","onPinchEnd","recognizers","pinch","enable","boxShadow","buttonClass","Component","getActiveInteriorPicture","found","useLocale","languageTags","join","domain","hostname","supportedLngs","fallbackLng","toUpperCase","SvgFullscreen","SvgExitFullscreen","_path2","Assemble","locale","setOption","setResolve","setPictures","ENV","default","handleFullScreen","useFullScreenHandle","packagesData","selectedPackages","selectedAccessories","imageMain","isInteriorTab","resolveConfirm","resolvedPackages","resolvedAccessories","apperance","updateArray","array","splice","updateOptions","dataSpecification","BRAND_NAME","pics","dataCompatibility","useCompatibilityDataRequest","packagesModalProps","threeSixtyProps","isThreeSixtyShow","handle","exit","enter","PlaceholderCar","SvgInfo","CarPartCard","engineData","onDetails","buttonText","info","badge","isActive","buttonProps","firstEngine","engineEic","engineId","renderToString","transmission","GradeCard","gradeData","gradeName","gradeImg","bodyName","engineType","alt","CarPartSelection","isModalOpen","setIsModalOpen","modalType","setModalType","handleSelectEngine","handleSelectBody","bodyId","handleModal","dataBuilder","swiperProps","pagination","clickable","Pagination","StickyAside","TireLabels","pic","rel","TechData","techdataCount","Conclusion","limit","useTiresDataRequest","useLocationsDataRequest","GradeSelection","navigate","useNavigate","queryString","parse","search","gradesData","selectGrade","gradeConfig","dataSpecs","firstGradeId","handleGradeSelect","ModelSelection","dataModels","localeCompare","ConfigLoadingPlaceholder","Placeholder","ConfigFailedLoading","Config","isConfigLoading","setIsConfigLoading","fetchedConfig","setFetchedConfig","saveBuilderData","dataConfig","saveSpecification","minHeight","ScrollToTop","scrollTo","Router","path","element","languages","Backend","initReactI18next","LanguageDetector","init","backend","loadPath","JSON","debug","interpolation","escapeValue","keySeparator","nonExplicitSupportedLngs","detection","order","checkWhitelist","possibleLanguages","persistor","persistStore","queryClient","QueryClient","queries","refetchOnWindowFocus","refetchOnmount","refetchOnReconnect","retry","App","fallback","client","loading","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.59153196.chunk.js","sourcesContent":["var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\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\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgArrowLeft(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 30 30\",\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 fill: \"currentColor\",\n d: \"m18.029 6.875 1.346 1.264L12.067 15l7.308 6.861-1.346 1.264-7.308-6.861L9.375 15l1.346-1.264z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowLeft);\nexport default __webpack_public_path__ + \"static/media/ArrowLeft.853436f5.svg\";\nexport { ForwardRef as ReactComponent };","import { createSlice } from '@reduxjs/toolkit';\n\nconst initialState = {\n gradeId: null,\n model: null,\n code: null,\n specification: null,\n engine: null,\n body: null,\n colorCode: null,\n wheels: null,\n interior: null,\n extraPackages: [],\n accessories: [],\n};\n\nconst slice = createSlice({\n name: 'config',\n initialState,\n reducers: {\n setModel: (state, { payload }) => {\n state.model = payload;\n },\n setCode: (state, { payload }) => {\n state.code = payload;\n },\n setSpecification: (state, { payload }) => {\n state.specification = payload;\n },\n setEngine: (state, { payload }) => {\n state.engine = payload;\n },\n setBody: (state, { payload }) => {\n state.body = payload;\n },\n setColor: (state, { payload }) => {\n state.colorCode = payload;\n },\n setWheels: (state, { payload }) => {\n state.wheels = payload;\n },\n setInterior: (state, { payload }) => {\n state.interior = payload;\n },\n addAccessory: (state, { payload }) => {\n state.accessories.push(payload);\n },\n removeAccessory: (state, { payload }) => {\n state.accessories = state.accessories.filter(item => item !== payload);\n },\n updateAccessories: (state, { payload }) => {\n state.accessories = payload;\n },\n addExtraPackage: (state, { payload }) => {\n state.extraPackages.push(payload);\n },\n removeExtraPackage: (state, { payload }) => {\n state.extraPackages = state.extraPackages.filter(item => item !== payload);\n },\n updateExtraPackages: (state, { payload }) => {\n state.extraPackages = payload;\n },\n setGrade: (state, { payload }) => ({ ...initialState, ...payload }),\n setConfig: (state, { payload }) => ({ ...state, ...payload }),\n },\n});\n\nexport const {\n setModel,\n setEngine,\n setBody,\n setColor,\n setWheels,\n setInterior,\n setGrade,\n addAccessory,\n removeAccessory,\n updateAccessories,\n addExtraPackage,\n removeExtraPackage,\n updateExtraPackages,\n setConfig,\n setSpecification,\n} = slice.actions;\n\nexport default slice.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\n\nconst initialState = {\n filters: [],\n selectedCategories: 'all',\n searchValue: '',\n selectedTab: 'exteriors',\n pdfModal: false,\n saveConfigModal: false,\n offerModal: false,\n offerModalType: 'offer',\n};\n\nconst slice = createSlice({\n name: 'app',\n initialState,\n reducers: {\n addFilter: (state, { payload }) => {\n state.filters = [...state.filters, payload];\n },\n removeFilter: (state, { payload }) => {\n state.filters = state.filters.filter(item => item !== payload);\n },\n setSelectedCategory: (state, { payload }) => {\n state.selectedCategories = payload;\n },\n setSearchValue: (state, { payload }) => {\n state.searchValue = payload;\n },\n setSelectedTab: (state, { payload }) => {\n state.selectedTab = payload;\n },\n setModalState: (state, { payload }) => {\n const { modal, newState, type } = payload;\n if (type) state.offerModalType = type;\n if (state.hasOwnProperty(modal)) {\n state[modal] = newState;\n }\n },\n resetAppState: state => initialState,\n },\n});\n\nexport const {\n addFilter,\n removeFilter,\n setSearchValue,\n resetAppState,\n setSelectedTab,\n setModalState,\n //setLocations,\n} = slice.actions;\n\nexport default slice.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\n\nconst initialState = {\n specificationsData: [],\n rawBuilderData: {},\n builderData: {},\n bodyData: {},\n tireLabelsData: [],\n compatibilityData: {},\n locationsData: [],\n consentsData: [],\n modelsData: [],\n errorData: {}\n};\n\nconst slice = createSlice({\n name: 'data',\n initialState,\n reducers: {\n setSpecificationsData: (state, { payload }) => {\n state.specificationsData = payload.reduce((res, input) => {\n res[input.grade.id] = res[input.grade.id] || [];\n res[input.grade.id].push(input);\n return res;\n }, {});\n },\n setRawBuilderData: (state, { payload }) => {\n state.rawBuilderData = payload;\n },\n setBuilderData: (state, { payload }) => {\n const { accessories = [], techdata = [] } = payload;\n let newPayload = { ...payload };\n newPayload.accessories = accessories.reduce((obj, el) => {\n obj[el.categoryName] = [...(obj[el.categoryName] || []), el];\n return obj;\n }, {});\n newPayload.techdata = techdata.reduce((obj, el) => {\n obj[el.categoryName] = [...(obj[el.categoryName] || []), el];\n return obj;\n }, {});\n //const defaultWheels = wheels.find(item => !item.code);\n //newPayload.wheels = [defaultWheels, ...wheels.filter(item => !!item.code)];\n state.builderData = newPayload;\n },\n setBodyData: (state, { payload }) => ({...initialState,\n specificationsData: state.specificationsData,\n bodyData: [...payload].sort((a, b) => // sort asc by price\n a.price - b.price\n ).reduce((mapped, item) => { // group engines by body\n mapped[item.body.id] = mapped[item.body.id] || {...item.body, engines: []};\n if (!mapped[item.body.id].engines.some(engine => engine.eic === item.eic)) { // check duplicates by eic value\n mapped[item.body.id].engines.push({...item.engine, eic: item.eic, title: item.name, price: item.price});\n }\n return mapped;\n }, {})\n }),\n setTireLabelsData: (state, { payload }) => {\n state.tireLabelsData = payload;\n },\n setCompatibilityData: (state, { payload }) => {\n state.compatibilityData = payload;\n },\n setLocationsData: (state, { payload }) => {\n state.locationsData = payload;\n },\n setConsentsData: (state, { payload }) => {\n state.consentsData = payload.filter(item =>\n [\n 'configurator consent email',\n 'configurator consent phone',\n 'configurator consent sms'\n ].some(el =>\n item.title.toLowerCase().includes(el)\n )\n );\n },\n setModelsData: (state, { payload }) => {\n state.modelsData = payload;\n },\n setErrorData: (state, { payload }) => {\n state.errorData = payload;\n },\n resetBuilderData: state => initialState,\n },\n});\n\nexport const {\n setSpecificationsData,\n setRawBuilderData,\n setBuilderData,\n setBodyData,\n setTireLabelsData,\n setCompatibilityData,\n setLocationsData,\n setConsentsData,\n setModelsData,\n setErrorData,\n resetBuilderData\n} = slice.actions;\n\nexport default slice.reducer;\n","import { combineReducers } from 'redux';\n\nimport config from './entities/config';\nimport app from './entities/app';\nimport data from './entities/data';\n\nexport default combineReducers({\n config,\n app,\n data,\n});\n","import { configureStore } from '@reduxjs/toolkit';\nimport { persistReducer } from 'redux-persist';\nimport storage from 'redux-persist/lib/storage';\n\nimport reducer from 'store/reducer';\n\nconst persistConfig = {\n key: 'root',\n storage,\n blacklist: ['app', 'data', 'config'],\n};\n\nconst persistedReducer = persistReducer(persistConfig, reducer);\n\nconst store = configureStore({\n reducer: persistedReducer,\n devTools: process.env.NODE_ENV !== 'production',\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware({\n serializableCheck: false,\n }),\n});\n\nexport default store;\n","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport './style.scss';\n\nconst LoadingSpinner = () => {\n return (\n
\n \n Loading...\n \n
\n );\n};\n\nexport default LoadingSpinner;\n","export const asideTrans = {\n payment: 'Payment method',\n yourCar: 'Sinu auto',\n btn: 'Kokkuvõte',\n url: '/conclusion',\n popover: [\n {\n body: 'Kütusekulu ja CO2 heitkogus on mõõdetud seeriatootmise mudelil kontrollitud keskkonnas Euroopa Liidu uue kergsõidukite ülemaailmset ühtlustatud katsemenetlust (WLTP) käsitleva määruse (EL) 2017/1151 ja selle kehtivate muudatuste nõuete kohaselt.',\n },\n {\n link: 'Lisateave uue WLTP katsemeetodi kohta',\n },\n { url: 'somewhere' },\n ],\n};\n\nexport const navTrans = {\n links: [\n {\n href: '/select',\n label: 'header_step_one',\n },\n {\n href: '/assemble',\n label: 'header_step_two',\n },\n {\n href: '/conclusion',\n label: 'header_step_three',\n },\n ],\n};\n\nexport const assembleTrans = {\n popIdx: 'popover-0',\n popBody:\n 'Kütusekulu ja CO2 heitkogus on mõõdetud seeriatootmise mudelil kontrollitud keskkonnas Euroopa Liidu uue kergsõidukite ülemaailmset ühtlustatud katsemenetlust (WLTP) käsitleva määruse (EL) 2017/1151 ja selle kehtivate muudatuste nõuete kohaselt.',\n\n popLink: 'Lisateave uue WLTP katsemeetodi kohta',\n\n popUrl: 'somewhere',\n};\n\nexport const footerTrans = {\n heading: 'consent_title',\n body: 'consent_text',\n bg: 'bg-light',\n};\n","import React from 'react';\nimport { Link, NavLink } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\n\nconst LocalizedLink = ({ to, className, type = 'link', children }) => {\n const { i18n } = useTranslation();\n\n return type === 'navlink' ? (\n \n {children}\n \n ) : (\n \n {children}\n \n );\n};\n\nexport default LocalizedLink;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\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\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgArrowUp(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 30 30\",\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 fill: \"currentColor\",\n d: \"M28.177 22.473a1.058 1.058 0 0 0 1.46-1.532L15.253 7.234.377 20.93a1.058 1.058 0 1 0 1.433 1.557l13.419-12.353 12.948 12.339z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowUp);\nexport default __webpack_public_path__ + \"static/media/ArrowUp.70f0e609.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _rect2, _rect3, _circle, _circle2, _circle3, _circle4, _circle5, _circle6;\n\nvar _excluded = [\"title\", \"titleId\"];\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\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgFilter(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n fill: \"currentColor\",\n height: 24,\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, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 3,\n y: 5,\n width: 18,\n height: 2,\n rx: 1\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 3,\n y: 11,\n width: 18,\n height: 2,\n rx: 1\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 3,\n y: 17,\n width: 18,\n height: 2,\n rx: 1\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 9,\n cy: 6,\n r: 3\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n r: 1,\n transform: \"matrix(-1 0 0 1 9 6)\",\n fill: \"#fff\"\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 15,\n cy: 12,\n r: 3\n })), _circle4 || (_circle4 = /*#__PURE__*/React.createElement(\"circle\", {\n r: 1,\n transform: \"matrix(-1 0 0 1 15 12)\",\n fill: \"#fff\"\n })), _circle5 || (_circle5 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 9,\n cy: 18,\n r: 3\n })), _circle6 || (_circle6 = /*#__PURE__*/React.createElement(\"circle\", {\n r: 1,\n transform: \"matrix(-1 0 0 1 9 18)\",\n fill: \"#fff\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFilter);\nexport default __webpack_public_path__ + \"static/media/Filter.190a91d5.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\n\nimport { navTrans } from 'translations';\n\nimport { Container, Button, Collapse } from 'react-bootstrap';\n\nimport LocalizedLink from 'components/LocalizedLink';\n\nimport { ReactComponent as ArrowLeft } from 'assets/images/icons/ArrowLeft.svg';\nimport { ReactComponent as ArrowUp } from 'assets/images/icons/ArrowUp.svg';\n\nconst NavBar = () => {\n const { t } = useTranslation();\n const location = useLocation();\n\n const [open, setOpen] = React.useState(false);\n const { model: modelId } = useSelector(state => state.config);\n const { modelsData, builderData, specificationsData, errorData } = useSelector(state => state.data);\n\n const { model } = builderData;\n\n const pathname = location.pathname.split('/').pop();\n const isPageGrades = pathname === 'grade';\n const showBackButton = React.useMemo(() =>\n ['grade', 'select', 'assemble', 'conclusion'].includes(pathname) && !errorData?.type,\n [pathname, errorData]\n );\n\n const title = !showBackButton ? modelsData[0]?.brand :\n Object.values(specificationsData)[0]?.[0].model.name ||\n model?.name ||\n t('first_step_title');\n\n const togglerProps = {\n className: `c-steps__toggler${open ? ' is-active' : ''}`,\n variant: 'link',\n onClick: () => setOpen(!open)\n };\n\n return (<>\n
\n \n {showBackButton && (\n \n \n \n {isPageGrades ? t('header_back_homepage') : t('header_back')}\n \n \n )}\n

{title}

\n
\n
\n \n );\n};\n\nexport default NavBar;\n","import { useTranslation } from 'react-i18next';\nimport { footerTrans } from 'translations';\nimport { Container } from 'react-bootstrap';\n\nconst Footer = () => {\n const { t } = useTranslation();\n\n return (\n
\n \n

\n {t(footerTrans.heading)}
\n {t(footerTrans.body)}\n

\n
\n
\n );\n};\n\nexport default Footer;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\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\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgClose(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\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 fill: \"currentColor\",\n d: \"M11.41 10l3.3-3.29a1 1 0 10-1.42-1.42L10 8.59l-3.29-3.3a1 1 0 00-1.42 1.42L8.59 10l-3.3 3.29a1 1 0 000 1.42 1 1 0 001.42 0l3.29-3.3 3.29 3.3a1 1 0 001.42 0 1 1 0 000-1.42z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClose);\nexport default __webpack_public_path__ + \"static/media/Close.dcf163bd.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\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\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSearch(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\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: \"M6 0a6 6 0 014.675 9.761l4.632 4.632a1 1 0 01-1.32 1.497l-.094-.083-4.717-4.716A6 6 0 116 0zm0 2a4 4 0 100 8 4 4 0 000-8z\",\n fill: \"currentColor\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSearch);\nexport default __webpack_public_path__ + \"static/media/Search.9902faa2.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\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\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCheck(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\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 fill: \"currentColor\",\n d: \"M7.9 15a1 1 0 01-.71-.29l-3.9-3.9a1 1 0 011.42-1.42l3.19 3.2 7.4-7.3a1 1 0 011.4 1.42l-8.1 8a1 1 0 01-.7.29z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheck);\nexport default __webpack_public_path__ + \"static/media/Check.310cf433.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport { Badge, Button, Dropdown, Form, Stack } from 'react-bootstrap';\n\nimport { ReactComponent as Filter } from 'assets/images/icons/Filter.svg';\nimport { ReactComponent as Close } from 'assets/images/icons/Close.svg';\nimport { ReactComponent as Search } from 'assets/images/icons/Search.svg';\n\nimport { addFilter, removeFilter, setSearchValue } from 'store/entities/app';\n\nconst AccessoriesFilter = () => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n\n const { filters, selectedCategories, searchValue } = useSelector(state => state.app);\n const { builderData } = useSelector(state => state.data);\n\n const accessories = builderData?.accessories || {};\n\n const handleFilter = (eventKey, event) => filters.includes(eventKey) ?\n dispatch(removeFilter(eventKey)) :\n dispatch(addFilter(eventKey));\n\n const renderCount = () => {\n const count = filters.length + (selectedCategories !== 'all' ? 1 : 0);\n return count ? {count} : null;\n };\n\n const renderFilters = () => Object.keys(accessories).map(key => {\n const isFilterActive = filters.includes(key);\n const itemProps = {\n key: `filter-${key}`,\n eventKey: key,\n active: isFilterActive,\n className: 'c-filter__item'\n };\n return (\n \n {key} {isFilterActive && }\n \n );\n });\n\n return (\n \n \n \n {t('accessories_filter_default')} {renderCount()}\n \n \n {t('accessories_filter_category')}\n {renderFilters()}\n \n \n \n dispatch(setSearchValue(e.target.value))}\n className=\"c-search-form__input\"\n />\n \n {searchValue && (\n \n )}\n \n \n );\n};\n\nexport default AccessoriesFilter;\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { useEffect, useState } from 'react';\n\nconst useMediaQuery = query => {\n const [matches, setMatches] = useState(false);\n\n 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\nexport default useMediaQuery;\n","import useMediaQuery from './useMediaQuery';\n\nconst useBreakPoints = () => ({\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\nexport default useBreakPoints;\n","import Currency from 'react-currency-formatter';\n\nconst Price = ({ price = 0, placeholder }) => typeof placeholder !== 'undefined' && !Number(price) ?\n placeholder : ;\n\nexport default Price;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\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\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgArrowRight(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 30 30\",\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 fill: \"currentColor\",\n d: \"m11.971 6.875-1.346 1.264L17.933 15l-7.308 6.861 1.346 1.264 7.308-6.861L20.625 15l-1.346-1.264z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowRight);\nexport default __webpack_public_path__ + \"static/media/ArrowRight.4e83a2c8.svg\";\nexport { ForwardRef as ReactComponent };","import { Card, Figure } from 'react-bootstrap';\n\nimport Price from 'components/Price';\nimport Placeholder from 'assets/images/placeholder-accessory.png';\nimport { ReactComponent as CheckIco } from 'assets/images/icons/Check.svg';\n\nexport const AccessoryItem = ({ data, onZoom }) => {\n const { pictures } = data || {};\n\n const handleZoom = (e) => {\n e.stopPropagation();\n onZoom(pictures?.main);\n }\n\n return (\n \n \n
\n \n
\n \n \n {data?.name}\n \n \n \n \n \n
\n );\n};\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWgAAAFoCAMAAABNO5HnAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMi1jMDAwIDc5LjFiNjVhNzliNCwgMjAyMi8wNi8xMy0yMjowMTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REI5RDMzNzlDQTAzMTFFRkFGMjJFOUZBQ0E5OEIxODkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REI5RDMzN0FDQTAzMTFFRkFGMjJFOUZBQ0E5OEIxODkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEQjlEMzM3N0NBMDMxMUVGQUYyMkU5RkFDQTk4QjE4OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEQjlEMzM3OENBMDMxMUVGQUYyMkU5RkFDQTk4QjE4OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Plc1YxIAAACoUExURf///8jIyMrKysnJycvLy8zMzNHR0f7+/s/Pz83Nzf39/dDQ0M7Ozvz8/Pv7+/n5+fr6+tLS0uLi4vf399XV1fDw8Nra2tfX19TU1PT09Pb29uvr6/j4+N/f3+np6dPT0/Ly8tbW1urq6uXl5djY2PX19e3t7eDg4O/v7+7u7uTk5Nvb2/Pz8/Hx8d3d3dnZ2eHh4dzc3OPj4+fn5+jo6N7e3uzs7Obm5hF6PpIAABFzSURBVHja7J0Hd+I8sIY9Ki7Y9N57Cy2UJP//n11JNgQSEup+uff6fc5ZQsDLnn0tRjPSzMiyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN5PctaVknDMps7sk9Pg3zEtEJClCqD+lOVR5OqNCqK6Qrm27UoSaF0YOpHmqzdgScbsyaCUOr7QGhSwn2sKCPJNJwL1Z8euri5nHvQnUeSJZCobnXp/KIAt1nohHlDZPjk2yMhqJQAZQ53nklYXOnRnS6RwRq0Gfp6GmQuLuOH/6anWpHQ/2An2eg3I0CsSE8Z4LH/NGStGYj20v6+uXZBsSPQfHSnBesN64DIwnzYRgRAExNZ5zVkFwSPQsqkR99aPlq/CbhYEhI+Fnt+ouKKvSgUJPGtCjg5jp9/54PZutx/1ibX8T2A4iPQmXvMyPDolLFSj0JBgVfn6zTBIKPYch0ebnd3OM8tDoKSyJqj+/WxTK9wDPQHkav4fnHjR6CsR+XTiqEEGjZ9Aj2v72fp/oHSo9AT+gzG/7KHnicPCeYjkEu3ABh+14AmrAln+/YsDh4D2BHKf671eMiL9Cp8dNNNGF/dcEkQ+dHjfRJC5dIuDgPc6caHbpmhLREEo9Hn8vLl2zIFpCqQeRXFy+iBGDUo+RJLIvXxUQT0CrhxhJervCBSQaQauHWHneFXkbKclL0OohxHVroMSQsPQQDVJOR/XCRc6iSD5PQ60HaJEkIWxPZHPbaf7LhJfIT7e5tmCSBxQQ9sIfoczJlZy4EpIzITgdwYVgnDyd5CEKxLpQ6xETzYNG8VXYStZQXLaXmUUvKJWz/W3K9bAX/gBpX44jf7r6umsGgRRqaAdEPgkZFFabTjFK+CgJ2YFed1MvyGrqXBjzdT2vkSb+Ab3uN9ED17GsF9nfj3D158saf7o00vmmDicY6QcWOtory2q6kS+dWGdNBofSvpyNvLmUS9xEND4hq/ReEhkpPvSCdDvMkGlyk/2lJO4K+jCCD9vKXicsZV6ajJD6fyfO1KW5Zb1RaDmWypebmMqVApFrophahSib0jpbRY9gpO+l5Lna/CZ01n9yrNTtmZfbJIVZ6G8ot8/NWOHMGPyWCQl+X8E4muCWREGYJ+Mq99k4dU6bPHHwPwKGpdI7GZI8WIMZkQxXQrsqRGloA53h+6S8tN4z/JBIOriTJvGoqj6zZEyEOpeoQsa1TrjCbNumrIUgFa1UicbQ7M74O9rFcpqCuAr80gllNwrhKM4o+1xp6GdTIUhnQTJkpN9rokWYouS8EXnvppqlTYLC6lkZkJ/Rr1WVzS5p69xlSDq4i3fGt6HOkqTSOaPLKIg5SW0uuIoEzYzYIEmuuX5LvA7V7qAruHaW02o8t42CajwHomNCQ700amLDvCQqJ80grxGDg3cPjHyt31rZ3nCkurxN2kYklFGRtPcAxWr/F1wkHdwVFyrTq70Mvtc5IJP55Zg8XRH5dWI/ipVBGUDoe8j5NLUyOh6MxrMkFq4kKelDxWtK8bDq4l2wibXYh47gFto6oa6udG6Z4eoL8k1AkmHSjNy0NaUgKuaseURF3WxiDd1u96JpYFkTpjNjlLVwA4oSPKQXJelOfI+CsFVKimhpmiCg08HN1Ihe1bw3b+xlD70MZYipG4baK/osTu7vHBNKMmSV3spGBrlwwcjEJ9VSJ3zez7rhTos1twuHGiLzJDWWHlL/b4+/lXkuv21OWoNp5c3UmIoe9lkz6XnubaCX9bDNcqtzx0UQdW10C8tNqxaZkMZXC9OZvAyyfmDSEXSrFEh3m85DollvxZgKtYVuN6Me3axr26XSYPm2nq1mha7HbU93SGH7XI9yb0a0wKL0TZRJ6vg70VkWhMmeOUlSinJndBNNrn+IbrOjBR5K7aqAG5Akjqpl8/Vcpe1LPXSNsOEjZ55dee0dLfc7DAX4t5H8saItk8mk0+rh/LtqPkxBvRuoE7+rnd2GCFH4bSb6vpGZ5FSGeteipjV2bx29WddDT+lrqdK9A3Pwa1sgcOJDm14n0/v+8ohYH0P6alx5d4RHng39rh7T3v2ZAx55GM/XMpX358LkiBWh4JW8PpCCWyOGNnjXe9EP7LIKpP5fS8Z7JAO3TBK1nVeaaHqkOrN1t2sYO/r7/cG7yHOk/l/vRT+wBJckDwX4V5EKU5TuiSj3UTg86WtY7HPO72TEGZY7rmFJlHtkSPbv/EbEjIQpBhJu9a5T3VJzV5BEsuNVENmeVFqXezdqnayXBTHOs0g6uIaeoI+XNumNWOaue1caEae3DsxfoWyuzz00lL5MhcmMlcg3s9GJp6Iy7s3TPw7uZHreG1e0vdD5B/bb0LIaTCIKv8Jy+FH8XW29CbFviCLs7mz8+tGqdyaT+XwynUzr/VxzPfDVMJYmS4nag34qvB8+jPQVCx1S7H2GjGW9d96yxN2w54w+PpnrqgpipunPZ+cfUVj2rM8g5034OCD1onPGqRW6H9so087JF3fjgYxykzjxwAt/aoX91Wtv6HwJWXpoKH2ZQ7ton8rfJsL55L1X375uWvWP+mR4mvC4+cypaQiOhtKXnTtjolNqvBZSOvNgt754fK++M5JE2OfAUSbEhoN3iTnTif5WqkDSnHGa3tnR4nS6/m1RLt3aD+Oazahrvgmtit2wmuQuoOWvlAR1lG4rCkw5bKaqrLHZP8zMTDduNcQ7jC+MOU70RRRsZ0rKXJtkx6mrEzumiMIvWw71pXd8ckMHbaLctqZ51iUKjF/RaRN/MdZ7I6OzDBNd8pgZ20NB9tIYEjh4v0R3Rmg1kuW+9euWmQWmhLa6HhX1k6HcH7r3IqNT4TI2BaFNngiP6Ub1mTKM9Pm5LDHZvJUGg8KaxE5nOZfM4N35nF7MSPUqHtWUzo4+IbwUjmePuMkcTdhq2CdCnf1o/DcFrcur8mC5KTqWBad6P6kViKtwJKxZUaoUd8be1m2SY9MCrBwQ1bSWDpn+droZnkfCONypAiNu7kYrK+glLCQayjB+1xnrXezV7gM5YiUyMgd0lAvWkiRNikZ6pcJskxVTdM2xCY7l9Pel+Bn1UhDpTHRIqlaWRn+g+rMS1/RUjwHDgNpEO5MxU5WfiQbbwOimBu9KyTXX9rmaJW9tekZsGDEzntMVIi+ljcNE6RzajdxChzthr9JqX/njFKAlnpVUkh2OydtIWY+qqlou8bCiU0kpG1rnYpZkWJPcVHbDjOd0Vw3ahg7VJ0KEOidyjBxrKuR+dI908XjszXSafF3AnTnE39HrRcFZmH/nB+FxNo7jkgyzpnMiPCjcahSUHU4bZ0TNg6GyS2Ux8mb74LA01WU2xd1QK7Mw+KwMpH1bpAWZUnCFWwgL4bR0UR7BWPDwO5Cs6BZLxrlWNjnUeabsTOP4ozRr8lax9pqtqWk3uld6sj8LpKWGbNO82mXkm2g6Q/sqgLFyJ8IjOyvkhn5dh4vwvjhrSX4xnGG9z6xSx2My3jmm2WM5rNeoLmIRUGBGYHpAkc5D5aeFUXXOI7aN/OfI0rwLO8rznR36alb3U2P4DfFYrIuIGnSSztiOOvgUpR6fGdNi0Dc9BqsB8a4ZvMqvc03c7SidvYz+OrTsILIbOWVBJtGXRZ407+jKWFvppvRaRw6I2J8RWZxGuhEz43mknOWBCUVeOXkf+llK+YS2mUN7KjL8CJs7bl3ar0rXicmjsvA6E3HeC1A29ui3iWlQMKunIhPujKltcpYWWeIlEyx+qCvCuLvCdEsaJeW0zXSHn3CToBoO2/eu7nRFxZN/Ks4dJkgeH+32Gu4OcrHa592OwoYyLXOmoWPGs+4LaxaZSObNLLpiX066z5dMvwP/tFcpEzFeZlK2OGd9bvVlWVDsC1NZL7xW+tM3ScmwV2NS+cgfkXEPKGVGvZWRm+ObVQj3Fllr7p7sZ+WIxTdt2veOT9ZMkdTT16QrRbgiVDnpvaElb9jTSPvc9y4GqfeZPhhHyzzQzkvbO87+zZMX331EdrJqPDqcWN+ZMZOpxEkE613jCu9ltxbCpCMwEmH3JcvadqlzbKbiuxcwZCd1PWv69MCSydeSb5I5TJMOr7TpjRa1L+npqXxnVN+UvKjJj3rMzsafOU217ImR7sa3hVhOnBz36H6t4qzVm22hRdSZMiw6s0lGmMYoQlt0bh5lu/meP4087ZMi2hGJuNbFVU4cgWFw7rjkxHy0WdmSHc4hOyQnCXMmmVJb+oPNqHomxF/Z7nH/FBKVmArtnZjofvBLNVVmuJj0XpqlctePqJRn435vWqz9XO7S8rP1EyMd0zZAC37SaarCTYrSE8tPGr5/vGY3IB7PZI8xnXgF/6DidSCPx3AnrqctFE4sR4qz+ueC6XPYRLvjB9sRy47pidMTv3MyePry2oh4/9it4bFsIVbc76FEJpo9fw8kzVj7JArnnRgK/caO42/rzv5rv31l9N07tk7peHrSHjsOiavE/sHZHk1+0sqKixgudyTp5Gu9JO8flLsWiS2Pp18Ww+LliWnndUCS+y804Pw4rN8xit8W7YydbOJRdDzQkwlOXMgMZ/E7bUFKOvaaif2T3g9fimjJFXHTOWWyFb+M6ISVeaJv931E68kxEzOh3zltj39fe/+iTe6IvBNbsTvsLcSGARcnq8c1FR8/PRExOYjOsj78Kyx2tS3sayPuSpQM/TSUE5NjX3vJ+iJmS6X5b2VTeZ+8J8dtOY/cLya5xHi8Dqb9IN76Zk9JPNX5UjH+N7e5xfk2VkJXznQB1Cn+g86TFkqTnRlR8PVmWhnJ47WfdfashJ2QxF6eonQyJ4h5Z/yYOBUvOzrRiDfPvFNrE2f0hFW8F50WUjlXuKI86caz9xf+F/NGdL7j2lYNREGrxL13UJNYkWBRDvUZz5qacbIc8sdltLIgYZPfufejOz7ZYn/Q9ZmbQZJiJfQv/eHHYd5G+f3mACZRL4dFob9swrpxOj28zmnz0yymHyZhNaZwl5Nr9xGdxvTNFqaE05scPuiccx2nI3FsRvlfjKyeFpsuCw8eE4XcqPNbnqOTL7Zey75J9yXmNj+nwLOWPk0sPtssVyV2DvsDV6eCMelJ6dqrWfOlNVrM8xHzxbT10pytsrbrmZEsWVDaXRH2ifg4eImjw2J/v7Dae62YZFEhOD9z0B5X3qDuHKaszLhVvW6LRrmQcdnPeiW6YSPWaRQ/1hWXR4RJpepHpLxdWG6Lt2SEvHOKy154O+olc2u0Vyv2+pvm21Lx1tz0e8XaPQurDRabc8sk/emGErv/NJ3/Y4i/LZCi2MyGahL7y6WW05q7/9em40/TKyYk47LL4osz3TD/K9IDIdyYCK07J/1ZGNwiyeNyEJ8rPGLvf5KqnHoXxEU2NiOaB0Sz+X//L89npnFYXBY7XOJ9pbRQkyIX7CtCSCm+v3x8gb7kp3d18Kgv8vSniM8PElwXLBIFL3ES2rWG5hAQweg7fF+7+SOmFPnC+9KULB8tkDBTo+hWLZ/iMhlWiCmnY1rmP8nELwhNF67gP9wrXp6awDQuG+H9h47Re5Qd0UtMhG6IqD/Sn/gdXSZik6zEb1onfbYfHaPMjo5LQf1PYsNET5Afn7PhnBflAJQW/7nUTrFEpilTbEi8+Op/7Ntu4NoHsorP33zfdYPAPXr/6xWnuBH6Ct/39SecXB94ru3rYOUlYcWJzv4AmxOv7OiXHxy0S47f6RWnl5sTcjqxK4Cbr3XDcnEsrQ5D9nuD3wKO0D3+MVA5ig2/fGLUSEVv4a7nFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMed/BBgApNfa6il3xAoAAAAASUVORK5CYII=\"","import React, { useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { Button, ListGroup, Stack } from 'react-bootstrap';\n\nimport useBreakPoints from 'hooks/useBreakPoints';\n\nimport { AccessoryItem } from './AccessoryItem';\n\nconst AccessoriesCategory = ({ category, data, isConclusion = false, onChange, onZoom }) => {\n const { t } = useTranslation();\n \n const { accessories } = useSelector(state => state.config);\n const { searchValue } = useSelector(state => state.app);\n\n const [isShowingAll, setIsShowingAll] = useState(false);\n const { isSmallerThanMd, isSmallerThanXl } = useBreakPoints();\n\n const isItemSelected = useCallback(id =>\n !!accessories.filter(item => item === id).length,\n [accessories]\n );\n\n const filteredData = useMemo(() =>\n data.filter(item => isConclusion ?\n isItemSelected(item.id) :\n item.name.toLowerCase().includes(searchValue.toLowerCase()),\n [data, isConclusion, isItemSelected, searchValue]\n ));\n\n const renderItem = () => filteredData.filter((item, index) =>\n isConclusion ? isItemSelected(item.id) : isShowingAll || index < showingLimit)\n .map(item => {\n const isChecked = isItemSelected(item.id);\n const option = { code: item.code, check: isChecked, type: 'accessories' };\n return (\n onChange(option) : null}\n className=\"c-accessory-list__item\"\n >\n null} />\n \n )\n });\n\n const filteredCount = filteredData.length;\n const showingLimit = isSmallerThanMd ? 2 : isSmallerThanXl ? 3 : 5;\n const isShowMore = !isConclusion && !isShowingAll && filteredCount > showingLimit;\n\n return !filteredCount ? null : (\n \n \n

{category}

\n {t('category_units_no', { count: filteredCount })}\n
\n \n {renderItem()}\n \n {isShowMore && (\n \n \n \n )}\n
\n );\n};\n\nexport default AccessoriesCategory;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport { Alert, Stack, Modal, Image } from 'react-bootstrap';\n\nimport AccessoriesFilter from 'components/Accessories/AccessoriesFilter';\nimport AccessoriesCategory from 'components/Accessories/AccessoriesCategory';\n\nconst Accessories = ({ onChange }) => {\n const { t } = useTranslation();\n const { builderData } = useSelector(state => state.data);\n const { filters } = useSelector(state => state.app);\n\n const [zoomShow, setZoomShow] = React.useState(false);\n\n const accessories = builderData?.accessories || {};\n const noData = !Object.keys(accessories).length;\n\n const handleZoom = (img) => {\n if (img) setZoomShow(img);\n };\n\n const renderCategory = () => Object.keys(accessories)\n .filter(item => !filters.length || filters.includes(item))\n .map(category => (\n \n ));\n\n return noData ? null : (<>\n
{t('accessories_list_title')}
\n \n

{t('accessories_list_subtitle')}

\n \n {t('consent_accessories_title')} {t('consent_accessories_text')}\n \n
\n \n {renderCategory()}\n setZoomShow(false)}\n >\n \n \n \n \n );\n};\n\nexport default Accessories;\n","import { Row, Col, Tabs, Tab, Button } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\n\nimport Price from 'components/Price';\n\nconst Packages = ({ onChange }) => {\n const { t } = useTranslation();\n\n const { extraPackages } = useSelector(state => state.config);\n const { builderData } = useSelector(state => state.data);\n const { options = [], equipment = [] } = builderData;\n\n const categories = [...new Set([...options, ...equipment].map(item => item.categoryName || 'OTHER'))];\n\n return (<>\n
{t('recommended_packages')}
\n \n {categories.map((category) => {\n const opts = options.filter(item => (item.categoryName || 'OTHER') === category);\n const eqpt = equipment.filter(item => (item.categoryName || 'OTHER') === category);\n return (\n \n \n {opts.map((item) => {\n const isChecked = extraPackages.includes(item.id);\n if (!item.price) return null;\n return (\n \n
\n {/*
\n {item.code}\n
*/}\n
\n {item.name}\n
\n
\n \n onChange({ code: item.code, check: isChecked, type: 'options' })}\n >\n \n \n \n \n {t('choose_body_button')}\n \n
\n
\n \n );\n })}\n
\n \n {opts.map((item) => {\n const isChecked = extraPackages.includes(item.id);\n if (item.price) return null;\n return (\n \n
\n
\n {item.name}\n
\n
\n onChange({ code: item.code, check: isChecked, type: 'options' })}\n >\n \n \n \n \n \n
\n
\n \n );\n })}\n
\n \n {eqpt.map((item) => {\n return (\n \n
\n
\n {item.name}\n
\n
\n \n );\n })}\n
\n
\n );\n })}\n
\n );\n};\n\nexport default Packages;\n","import { Image, ToggleButton } from 'react-bootstrap';\nimport { ReactComponent as CheckIco } from 'assets/images/icons/Check.svg';\n\nconst Swatch = ({ img, name, value, selectedValue, setSelected }) => {\n const isSelected = value === selectedValue;\n\n return (\n setSelected(value || undefined)}\n >\n \n {isSelected && }\n \n );\n};\n\nexport default Swatch;\n","import { Col, Container, Row } from 'react-bootstrap';\nimport { Swiper, SwiperSlide } from 'swiper/react/swiper-react';\nimport { Navigation, Mousewheel, Keyboard } from 'swiper';\nimport Swatch from 'components/Swatch';\nimport Price from 'components/Price';\nimport { ReactComponent as ArrowLeft } from 'assets/images/icons/ArrowLeft.svg';\nimport { ReactComponent as ArrowRight } from 'assets/images/icons/ArrowRight.svg';\n\nconst FeatureCarousel = ({ activeItem, setActiveItem, data, placeholderImage }) => {\n if (!data) return null;\n\n const { name = '', price = 0 } = data.find(item => item.code === activeItem) || {};\n const mappedData = [...data].sort((a, b) => a.price - b.price).reduce((mapped, item) => {\n (mapped[item.price] = mapped[item.price] || []).push(item);\n return mapped;\n }, {});\n\n return (\n
\n

\n {name}\n {!!price && }\n

\n \n {!data.categories && Object.keys(mappedData).map(key =>\n \n
\n {mappedData[key].map(radio =>\n setActiveItem(radio.code)}\n />\n )}\n + \n
\n
\n )}\n \n \n \n
\n );\n};\n\nexport default FeatureCarousel;","export default __webpack_public_path__ + \"static/media/placeholder-alloy-wheel.67a6c0f8.png\";","export default __webpack_public_path__ + \"static/media/placeholder-interior.ee85adce.png\";","import { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport SwiperCore, { Navigation } from 'swiper';\n\nimport FeatureCarousel from 'components/AssemblySliderSelectors/FeatureCarousel';\nimport { setSelectedTab } from 'store/entities/app';\n\nimport { Tabs, Tab } from 'react-bootstrap';\nimport PlaceholderColor from 'assets/images/placeholder-color.png';\nimport PlaceholderWheels from 'assets/images/placeholder-alloy-wheel.png';\nimport PlaceholderInterior from 'assets/images/placeholder-interior.png';\n\nSwiperCore.use([Navigation]);\n\nconst AssemblySliderSelectors = ({ onChange }) => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n\n const { colorCode, interior, wheels } = useSelector(state => state.config);\n const { builderData } = useSelector(state => state.data);\n const { selectedTab } = useSelector(state => state.app);\n\n const tabsData = [\n {\n id: 0,\n title: 'exterior_color',\n dataKey: 'exteriors',\n active: colorCode,\n placeholder: PlaceholderColor,\n },\n {\n id: 1,\n title: 'wheels',\n dataKey: 'wheels',\n active: wheels,\n placeholder: PlaceholderWheels,\n },\n {\n id: 2,\n title: 'interior',\n dataKey: 'interiors',\n active: interior,\n placeholder: PlaceholderInterior,\n },\n ];\n\n return (\n dispatch(setSelectedTab(k))}\n >\n {tabsData.map(tab => !builderData[tab.dataKey] ? null : (\n \n onChange({ code: code, check: false, type: tab.dataKey })}\n data={builderData[tab.dataKey]}\n placeholderImage={tab.placeholder}\n />\n \n ))}\n \n );\n};\n\nexport default AssemblySliderSelectors;","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\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\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgRewind(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 16\",\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 fill: \"currentColor\",\n d: \"M17.584 7.062l.074.092 1.71 2.43a1 1 0 01-1.558 1.25l-.078-.099-.328-.465c-.983 3.154-3.95 5.48-7.405 5.48-2.632 0-5.038-1.302-6.418-3.425a1 1 0 011.677-1.09c1.01 1.554 2.785 2.515 4.741 2.515 2.409 0 4.508-1.539 5.353-3.673l-.347.257a1 1 0 01-1.287-1.527l.096-.08 2.43-1.8a1 1 0 011.34.135zM10 .25c2.754 0 5.256 1.422 6.62 3.731A1 1 0 1114.9 5c-1.004-1.7-2.85-2.749-4.9-2.749-2.47 0-4.598 1.54-5.384 3.773l.4-.28a1 1 0 011.248 1.556l-.098.079-2.43 1.71a1 1 0 01-1.33-.163l-.073-.093-1.71-2.52a1 1 0 011.584-1.216l.071.092.342.505C3.583 2.49 6.549.25 9.999.25z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgRewind);\nexport default __webpack_public_path__ + \"static/media/Rewind.5e5add59.svg\";\nexport { ForwardRef as ReactComponent };","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASoAAAEqCAMAAACV5O0dAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ4OCwgMjAyMC8wNy8xMC0yMjowNjo1MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjkyNzRDQTVFRTI0MTFFQ0IyMzNDODM4MkU4OERFQzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjkyNzRDQTZFRTI0MTFFQ0IyMzNDODM4MkU4OERFQzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyQTBGNDZFRUVFMjMxMUVDQjIzM0M4MzgyRTg4REVDMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCOTI3NENBNEVFMjQxMUVDQjIzM0M4MzgyRTg4REVDMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pjs0Im0AAACcUExURc3NzdTU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\"","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\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\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCart(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 30 30\",\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 fill: \"currentColor\",\n d: \"M20.267 22.915c0-.782-.515-1.315-1.268-1.315-.756 0-1.27.533-1.27 1.315 0 .781.514 1.314 1.27 1.314.753 0 1.268-.533 1.268-1.314m1.166 0c0 1.385-1.063 2.486-2.434 2.486-1.373 0-2.435-1.101-2.435-2.486 0-1.386 1.062-2.487 2.435-2.487 1.37 0 2.434 1.101 2.434 2.487m-8.472 0c0-.782-.514-1.315-1.269-1.315-.753 0-1.268.533-1.268 1.315 0 .781.515 1.314 1.268 1.314.755 0 1.27-.533 1.27-1.314m1.165 0c0 1.385-1.063 2.486-2.435 2.486-1.37 0-2.435-1.101-2.435-2.486 0-1.386 1.064-2.487 2.435-2.487 1.372 0 2.435 1.101 2.435 2.487m-3.634-5.86h11.626l1.373-7.638H9.19l-.102-1.206H25l-1.852 10.05h-12.69c-2.024 0-2.847-.745-3.086-2.77l-1.03-8.7c-.102-.853-.514-1.208-1.372-1.208H2.5V4.375h2.47c1.817 0 2.469.603 2.675 2.415l.96 8.737c.103 1.066.687 1.527 1.888 1.527\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCart);\nexport default __webpack_public_path__ + \"static/media/Cart.f414ca10.svg\";\nexport { ForwardRef as ReactComponent };","import LocalizedLink from 'components/LocalizedLink';\nimport { ReactComponent as RewindIco } from 'assets/images/icons/Rewind.svg';\n\n/**\n * Rewind button component\n * @param href - string, given to Link component\n * @param text - string, given to button for text\n * @returns {JSX.Element}\n * @constructor\n */\nconst RewindButton = ({ href, text }) => {\n return (\n \n \n {text}\n \n );\n};\n\nexport default RewindButton;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\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\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgFullscreen(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"-2 -2 20 20\",\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 fill: \"currentColor\",\n d: \"M7.795 8.305a1 1 0 01.012 1.402l-4.293 4.292L5.9 14a1 1 0 010 2H1.1a1 1 0 01-1-1v-4.8a1 1 0 112 0v2.384l4.293-4.291a1 1 0 011.402.012zM15.1 0a1 1 0 011 1v4.8a1 1 0 01-2 0V3.414L9.806 7.707a1 1 0 01-1.414-1.414L12.685 2H10.3a1 1 0 110-2h4.8z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFullscreen);\nexport default __webpack_public_path__ + \"static/media/Fullscreen.84c62eb8.svg\";\nexport { ForwardRef as ReactComponent };","import { useSelector } from 'react-redux';\n\nconst useAllAccessories = () => {\n const { builderData } = useSelector(state => state.data);\n const { accessories } = builderData;\n\n if (!accessories) return 0;\n\n return [].concat(...Object.keys(accessories).map(key => accessories[key]));\n};\n\nexport default useAllAccessories;\n","import { useSelector } from 'react-redux';\nimport useAllAccessories from 'hooks/useAllAccessories';\n\nconst useAccessoriesPrice = () => {\n const { accessories } = useSelector(state => state.config);\n const allAccessories = useAllAccessories();\n\n let price = 0;\n accessories.forEach(accessory => {\n const foundAccessory = allAccessories.find(item => item.id === accessory);\n if (!!foundAccessory) price += foundAccessory.price;\n });\n return price;\n};\n\nexport default useAccessoriesPrice;\n","import { useSelector } from 'react-redux';\n\nconst useExtraPackagesPrice = () => {\n const { builderData } = useSelector(state => state.data);\n const { extraPackages } = useSelector(state => state.config);\n const { options } = builderData;\n\n let price = 0;\n extraPackages.forEach(selectedPackage => {\n const foundItem = options.find(item => item.id === selectedPackage);\n if (!!foundItem) price += foundItem.price || 0;\n });\n return price;\n};\n\nexport default useExtraPackagesPrice;\n","import useAccessoriesPrice from 'hooks/useAccessoriesPrice';\nimport { useSelector } from 'react-redux';\nimport useExtraPackagesPrice from 'hooks/useExtraPackagesPrice';\n\nconst useTotalPrice = () => {\n const { builderData, compatibilityData } = useSelector(state => state.data);\n const { specialPrice, price, exteriors, interiors, wheels: wheelsData } = builderData;\n const { priceResolved } = compatibilityData;\n const { colorCode, interior, wheels } = useSelector(state => state.config);\n\n const accessoriesPrice = useAccessoriesPrice();\n const extraPackagesPrice = useExtraPackagesPrice();\n\n const findItemPrice = (data, key, code) => {\n const foundItems = data?.filter(item => item?.[key] === code);\n return (foundItems || []).length ? foundItems[0].price : 0;\n };\n\n if (priceResolved) return priceResolved;\n\n if (!price || !exteriors || !interiors) return 0;\n\n return (\n (specialPrice || price) +\n accessoriesPrice +\n extraPackagesPrice +\n findItemPrice(exteriors, 'code', colorCode) +\n findItemPrice(interiors, 'code', interior) +\n findItemPrice(wheelsData, 'code', wheels)\n );\n};\n\nexport default useTotalPrice;","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport { Accordion, ListGroup, Badge } from 'react-bootstrap';\n\nimport useAccessoriesPrice from 'hooks/useAccessoriesPrice';\n\nimport Price from 'components/Price';\n\nconst SelectedAccessories = () => {\n const { t } = useTranslation();\n\n const { accessories } = useSelector(state => state.config);\n const { builderData } = useSelector(state => state.data);\n\n const accessoriesPrice = useAccessoriesPrice();\n\n if (!accessories.length) return null;\n\n const accessoriesData = builderData?.accessories || {};\n const accessoriesSelected = [].concat(\n ...Object.keys(accessoriesData).map(key => accessoriesData[key])\n ).filter(option =>\n accessories.includes(option.id)\n );\n\n return (\n \n \n \n {t('selected_accessories')}\n {accessories.length}\n \n \n \n \n {accessoriesSelected.map(item => \n \n \n {item.name}\n \n \n \n )}\n \n \n \n \n );\n};\n\nexport default SelectedAccessories;\n","import React from 'react';\nimport { Accordion, ListGroup, Badge } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\n\nimport useExtraPackagesPrice from 'hooks/useExtraPackagesPrice';\nimport Price from 'components/Price';\n\nconst SelectedPackages = () => {\n const { t } = useTranslation();\n\n const { extraPackages } = useSelector(state => state.config);\n const { builderData } = useSelector(state => state.data);\n const extraPackagesPrice = useExtraPackagesPrice();\n\n if (!extraPackages.length) return null;\n const packages = builderData.options.filter(option => extraPackages.includes(option.id));\n\n return (\n \n \n \n {t('selected_packages')}\n {extraPackages.length}\n \n \n \n \n {packages.map(item => \n \n {item.name}\n \n \n )}\n \n \n \n \n );\n};\n\nexport default SelectedPackages;\n","import { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { ListGroup } from 'react-bootstrap';\n\nimport SelectedAccessories from 'components/BottomBar/SelectedAccessories';\nimport SelectedPackages from 'components/BottomBar/SelectedPackages';\nimport Price from 'components/Price';\n\nconst Cart = () => {\n const { t } = useTranslation();\n\n const { builderData } = useSelector(state => state.data);\n const { colorCode, interior, wheels } = useSelector(state => state.config);\n\n const selectedExterior = builderData.exteriors?.find(item => item.code === colorCode);\n const selectedInterior = builderData.interiors?.find(item => item.code === interior);\n const selectedWheel = builderData.wheels?.find(item => item.code === wheels);\n\n return (\n
\n
\n

{builderData.model?.name}

\n

{builderData.name}

\n
\n
\n \n \n {t('price')}\n \n \n {selectedExterior &&\n \n {selectedExterior.name}\n \n \n }\n {selectedInterior &&\n \n {selectedInterior.name}\n \n \n }\n {selectedWheel &&\n \n {selectedWheel.name}\n \n \n }\n \n \n \n
\n
\n {t('consent_short_title')}\n

{t('consent_short_text')}

\n
\n
\n );\n};\n\nexport default Cart;\n","import React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport { Button } from 'react-bootstrap';\nimport { ReactComponent as CartIco } from 'assets/images/icons/Cart.svg';\nimport { ReactComponent as ArrowUp } from 'assets/images/icons/ArrowUp.svg';\n\nimport { useDisableBodyScroll } from 'hooks/useDisableBodyScroll';\nimport useBreakPoints from 'hooks/useBreakPoints';\nimport useTotalPrice from 'hooks/useTotalPrice';\n\nimport Cart from 'components/BottomBar/Cart';\nimport Price from 'components/Price';\n\nconst BottomBar = ({ action }) => {\n const { t } = useTranslation();\n const totalPrice = useTotalPrice();\n\n const [isExpanded, setIsExpanded] = useState(false);\n\n const { builderData } = useSelector(state => state.data);\n const { isSmallerThanLg } = useBreakPoints();\n useDisableBodyScroll(isExpanded && isSmallerThanLg);\n\n const toggleExpand = () => {\n setIsExpanded(!isExpanded);\n };\n\n return (\n
\n
\n {isSmallerThanLg ? (\n <>\n

\n {t('your_car')}\n \n

\n ) : (\n

\n {t('total_price')} \n {builderData.name}\n

\n )}\n

\n {action}\n

\n
\n {isSmallerThanLg && \n
\n \n
\n }\n
\n );\n};\n\nexport default BottomBar;\n","import { useEffect } from 'react';\n\nexport const useDisableBodyScroll = isDisabled => {\n useEffect(() => {\n if (isDisabled) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = 'unset';\n }\n }, [isDisabled]);\n};\n","import { Col, Row } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nconst FinishScreen = ({ code, option }) => {\n const { t, i18n } = useTranslation();\n const configUrl = `${window.origin}/${i18n.language}/config?id=${code}`;\n\n return (\n \n \n

{t('config_save_succ_title')}

\n {option === 'lead' &&

MISSING_TRANSLATION

}\n

\n {t('config_save_succ_text')} {configUrl}\n

\n \n
\n );\n};\n\nexport default FinishScreen;\n","import { Button, Col, Row } from 'react-bootstrap';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nconst ErrorScreen = ({ onReset }) => {\n const { t } = useTranslation();\n\n return (\n \n \n

{t('config_send_err_title')}

\n

{t('config_send_err_text')}

\n \n \n \n \n
\n );\n};\n\nexport default ErrorScreen;\n","import axios from 'axios';\nimport { useMutation, useQuery } from 'react-query';\n\n//import { RequestContext } from '../context/request.context';\n\nimport {\n BRANDS_DATA_QUERY_CACHE,\n BUILDER_DATA_QUERY_CACHE,\n CONSENTS_DATA_QUERY_CACHE,\n COMPATIBILITY_DATA_QUERY_CACHE,\n MODELS_DATA_QUERY_CACHE,\n LOCATIONS_DATA_QUERY_CACHE,\n PDF_DATA_QUERY_CACHE,\n SPECIFICATIONS_DATA_QUERY_CACHE,\n SPECIFICATION_DATA_QUERY_CACHE,\n TIRES_DATA_QUERY_CACHE,\n PDF_CONFIG_QUERY_CACHE,\n CONFIG_DATA_QUERY_CACHE\n} from './cache';\n\nconst instance = axios.create({\n baseURL: '/api/v1',\n});\n\nconst useQueryRequest = (queryCache = '', queryFn, props = {}) => {\n const { params = {}, config = {}, success = () => {}, error = () => {} } = props;\n //const { handleToast } = useContext(RequestContext);\n return useQuery([queryCache, ...(params.queryKeys || [])], queryFn, {\n ...config,\n onSuccess: (res) => {\n success(res);\n },\n onError: (err) => {\n error(err);\n //handleToast('error', err.message, 3000);\n },\n });\n};\n\nconst useMutationRequest = (queryFn, props = {}) => {\n const { success = () => {}, error = () => {} } = props;\n //const { handleToast } = useContext(RequestContext);\n return useMutation(queryFn, {\n onSuccess: (res, data) => {\n success(res, data);\n },\n onError: (err) => {\n error(err);\n //handleToast('error', err.message, 3000);\n },\n });\n};\n\nexport const useLocationsDataRequest = (props) => useQueryRequest(\n LOCATIONS_DATA_QUERY_CACHE,\n () => instance.get('/location'),\n props\n);\n\nexport const useSpecificationsDataRequest = (props) => useQueryRequest(\n SPECIFICATIONS_DATA_QUERY_CACHE,\n () => instance.get('/builder/specifications', {\n params: props.params.params\n }),\n props\n);\n\nexport const useSpecificationDataRequest = (props) => useQueryRequest(\n SPECIFICATION_DATA_QUERY_CACHE,\n () => instance.get(`/builder/specifications/${props.params.specification}`, {\n params: props.params.params\n }),\n props\n);\n\nexport const useBuilderDataRequest = (props) => useQueryRequest(\n BUILDER_DATA_QUERY_CACHE,\n () => instance.get(`/builder/combined/${props.params.specification}`, {\n params: props.params.params\n }),\n props\n);\n\nexport const useCompatibilityDataRequest = (props) => useQueryRequest(\n COMPATIBILITY_DATA_QUERY_CACHE,\n () => instance.get(`/builder/specifications/${props.params.specification}/compatibility`, {\n params: props.params.params\n }),\n props\n);\n\nexport const useTiresDataRequest = (props) => useQueryRequest(\n TIRES_DATA_QUERY_CACHE,\n () => instance.get(`/labels/${props.params.specification}`),\n props\n);\n\nexport const useConsentsDataRequest = (props) => useQueryRequest(\n CONSENTS_DATA_QUERY_CACHE,\n () => instance.get('/consent', {\n params: props.params.params\n }),\n props\n);\n\nexport const useConfigDataRequest = (props) => useQueryRequest(\n CONFIG_DATA_QUERY_CACHE,\n () => instance.get(`/builder/config/${props.params.id}`),\n props\n);\n\nexport const usePdfDataRequest = (props) => useQueryRequest(\n PDF_DATA_QUERY_CACHE,\n () => instance.get('/builder/config/pdf', {\n params: props.params.params,\n responseType: 'arraybuffer'\n }),\n props\n);\n\nexport const useOfferRequest = (props) => useMutationRequest(\n (data) => instance.post('/customers/lead', data),\n props\n);\n\nexport const useConfigRequest = (props) => useMutationRequest(\n (data) => instance.post('/builder/config', {\n config: { ...data },\n }),\n props\n);\n\nexport const useBrandsDataRequest = (props) => useQueryRequest(\n BRANDS_DATA_QUERY_CACHE,\n () => instance.get('/brands'),\n props\n);\n\nexport const useModelsDataRequest = (props) => useQueryRequest(\n MODELS_DATA_QUERY_CACHE,\n () => instance.get('/builder/models', {\n params: props.params.params\n }),\n props\n);\n","export const BRANDS_DATA_QUERY_CACHE = 'brands-data';\nexport const BUILDER_DATA_QUERY_CACHE = 'builder-data';\nexport const CONSENTS_DATA_QUERY_CACHE = 'consents-data';\nexport const COMPATIBILITY_DATA_QUERY_CACHE = 'compatibility-data';\nexport const MODELS_DATA_QUERY_CACHE = 'models-data';\nexport const LOCATIONS_DATA_QUERY_CACHE = 'locations-data';\nexport const PDF_DATA_QUERY_CACHE = 'pdf-data';\nexport const SPECIFICATIONS_DATA_QUERY_CACHE = 'specifications-data';\nexport const SPECIFICATION_DATA_QUERY_CACHE = 'specification-data';\nexport const TIRES_DATA_QUERY_CACHE = 'tires-data';\n\nexport const PDF_CONFIG_QUERY_CACHE = 'pdf-config';\nexport const CONFIG_DATA_QUERY_CACHE = 'config-data';","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { Modal } from 'react-bootstrap';\n\nimport LoadingSpinner from 'components/LoadingSpinner';\nimport FinishScreen from 'components/modals/SaveCarConfigModal/FinishScreen';\nimport ErrorScreen from 'components/modals/SaveCarConfigModal/ErrorScreen';\n\nimport { setModalState } from 'store/entities/app';\nimport { useConfigRequest } from 'api/requests';\n\nexport const SaveCarConfigModal = () => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n\n const [savedConfigId, setSavedConfigId] = React.useState(null);\n const [hasError, setHasError] = React.useState(false);\n\n const { saveConfigModal: isOpen } = useSelector(state => state.app);\n const { config } = useSelector(state => state);\n\n const saveConfig = useConfigRequest({\n success: (result, data) => {\n const configId = result?.data?.configId;\n setSavedConfigId(configId);\n },\n error: (error) => {\n setHasError(true);\n },\n });\n\n React.useEffect(() => {\n if (isOpen) saveConfig.mutate(config);\n }, [isOpen]);\n\n const resetState = () => {\n setSavedConfigId(null);\n setHasError(false);\n };\n\n const handleClose = () => {\n resetState();\n dispatch(setModalState({\n modal: 'saveConfigModal',\n newState: false,\n }));\n };\n\n return (\n \n \n {t('modal_title')}\n \n \n
\n {saveConfig.isFetching && (\n \n )}\n {savedConfigId && (\n \n )}\n {hasError && (\n \n )}\n
\n
\n
\n );\n};\n","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { Row, Col, Modal, ListGroup } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nexport const TechDataModal = ({ show, onClose, type = 'techdata' }) => {\n const { t } = useTranslation();\n const { builderData } = useSelector(state => state.data);\n\n const { techdata, equipment } = builderData;\n\n const mappedEquipmentData = useMemo(\n () =>\n equipment?.reduce((obj, el) => {\n obj[el.categoryName] = [...(obj[el.categoryName] || []), el];\n return obj;\n }, {}),\n [equipment]\n );\n\n return (\n \n \n {t(type === 'techdata' ? 'technical_spec' : 'equipment')}\n \n \n \n {type === 'techdata' ? (\n Object.keys(techdata || {}).map(key => (\n \n
{key}
\n \n {techdata[key].map((item, idx) =>\n \n {item.name}\n {item.value}\n \n )}\n \n \n ))\n ) : (\n <>\n \n {Object.keys(mappedEquipmentData || {}).map((key, idx) =>\n idx % 2 === 0 ? (\n \n
{key}
\n
    \n {mappedEquipmentData[key].map((item, idx) => (\n
  • {item.name}
  • \n ))}\n
\n \n ) : null\n )}\n \n \n {Object.keys(mappedEquipmentData || {}).map((key, idx) =>\n idx % 2 !== 0 ? (\n \n
{key}
\n
    \n {mappedEquipmentData[key].map((item, idx) => (\n
  • {item.name}
  • \n ))}\n
\n \n ) : null\n )}\n \n \n )}\n
\n
\n
\n );\n};\n","import { useSelector } from 'react-redux';\nimport _omit from 'lodash.omit';\nimport _pick from 'lodash.pick';\n\nconst useSalesFrontConfig = () => {\n const { config } = useSelector(state => state);\n const { rawBuilderData } = useSelector(state => state.data);\n\n return {\n brand: rawBuilderData.brand.name,\n id: Math.random() * (100000 - 1) + 1,\n title: rawBuilderData.name,\n specialPrice: rawBuilderData.specialPrice,\n price: rawBuilderData.price,\n priceExVat: false,\n purchasePrice: 0,\n specification: {\n make: _omit(rawBuilderData.brand, ['iri']),\n model: { ...rawBuilderData.model, group: '', type: '' },\n body: {\n id: rawBuilderData.bodies[0].id,\n name: rawBuilderData.bodies[0].name,\n bodyStyle: rawBuilderData.bodies[0].style,\n seatsNumber: rawBuilderData.bodies[0].seats,\n doorsNumber: rawBuilderData.bodies[0].doors,\n },\n engine: {\n ...rawBuilderData.engines.find(item => item.id === config.engine),\n },\n grade: { ...rawBuilderData.grades.find(item => item.id === config.gradeId), bigPicture: '' },\n exterior: {\n ..._omit(\n rawBuilderData.exteriors.find(item => item.code === config.colorCode),\n ['pictures']\n ),\n tilePicture: rawBuilderData.exteriors.find(item => item.code === config.colorCode)?.pictures\n ?.thumb,\n bigPicture: rawBuilderData.exteriors.find(item => item.code === config.colorCode)?.pictures\n ?.main,\n discountedPrice: 0,\n priceAdjustment: 0,\n purchasePrice: 0,\n vat: 0,\n },\n interior: {\n ..._omit(\n rawBuilderData.interiors.find(item => item.code === config.interior),\n ['pictures']\n ),\n tilePicture: rawBuilderData.interiors.find(item => item.code === config.interior)?.pictures\n ?.thumb,\n bigPicture: rawBuilderData.interiors.find(item => item.code === config.interior)?.pictures\n ?.main,\n discountedPrice: 0,\n priceAdjustment: 0,\n purchasePrice: 0,\n vat: 0,\n },\n endItemCode: config.specification,\n equipments: rawBuilderData.equipment.map(eq => ({\n ...eq,\n included: false,\n source: '',\n price: 0,\n discountedPrice: 0,\n code: '',\n vat: 0,\n type: 1,\n })),\n options: [\n _pick(\n rawBuilderData.wheels?.find(item => item.code === config.wheels),\n ['id', 'name', 'price']\n ),\n ...(rawBuilderData.options || [])\n .filter(item => config.extraPackages.includes(item.id))\n .map(({ id, name, price }) => ({ id, name, price })),\n ],\n accessories: [\n ...(rawBuilderData.accessories || [])\n .filter(item => config.accessories.includes(item.id))\n .map(({ id, name, price }) => ({ id, name, price })),\n ],\n services: [],\n },\n };\n};\n\nexport default useSalesFrontConfig;\n","import { ListGroup } from 'react-bootstrap';\nimport Price from 'components/Price';\n\nexport const AccessoryListGroupItem = ({ data, type }) => {\n return (\n \n {data?.name || '-'}\n \n \n );\n};\n\nexport const AccessoryListItem = ({ data, valueKey }) =>
  • {data[valueKey]}
  • ;\n\nconst defaultOptions = {\n key: 'code',\n valueKey: 'name',\n type: 'conclusion', // conclusion | assembly | extraPackage\n};\n\nexport const getSelectedAccessory = (data, code, ReturnComponent, options = {}) => {\n const { key, valueKey, type } = { ...defaultOptions, ...options };\n const foundItems = data?.filter(item => item?.[key] === code);\n\n if (!ReturnComponent) return foundItems;\n\n if (!!foundItems?.length) {\n return ;\n }\n\n return null;\n};","import { useSelector } from 'react-redux';\nimport { getSelectedAccessory } from 'utils/accessoryUtils';\n\nconst useSelectedAccessory = () => {\n const { engine, body, colorCode, interior, wheels } = useSelector(state => state.config);\n const { builderData } = useSelector(state => state.data);\n const { engines, bodies, exteriors, interiors, wheels: wheelsData } = builderData || {};\n\n return {\n engine:\n getSelectedAccessory(engines, engine, null, {\n key: 'id',\n })?.[0] || null,\n body:\n getSelectedAccessory(bodies, body, null, {\n key: 'id',\n })?.[0] || null,\n wheels: getSelectedAccessory(wheelsData, wheels, null)?.[0] || null,\n exterior: getSelectedAccessory(exteriors, colorCode, null)?.[0] || null,\n interior: getSelectedAccessory(interiors, interior, null)?.[0] || null,\n };\n};\n\nexport default useSelectedAccessory;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { useFormContext } from 'react-hook-form';\n\nimport { Button, Form } from 'react-bootstrap';\n\nimport useSalesFrontConfig from 'hooks/useSalesFrontConfig';\nimport useSelectedAccessory from 'hooks/useSelectedAccessory';\n\nconst OfferForm = ({ onSubmit }) => {\n const { t } = useTranslation();\n\n const { gradeId } = useSelector(state => state.config);\n const { offerModalType } = useSelector(state => state.app);\n const { builderData, locationsData, consentsData } = useSelector(state => state.data);\n\n const { register, handleSubmit, watch, setValue } = useFormContext();\n const { engine, body } = useSelectedAccessory();\n const salesfrontConfig = useSalesFrontConfig();\n\n const { model: builderModel, grades } = builderData;\n const location = watch('location');\n\n React.useEffect(() => {\n if (location === '1' && !!locationsData.length) {\n setValue('location', locationsData[0].shortName);\n }\n }, []);\n\n const createTestDriveDescription = () =>\n `Test drive, \"${builderModel.name}\", \"${\n grades?.find(item => item.id === gradeId)?.name || ''\n }\", \"${engine.name}\", \"${body.name}\"`;\n\n const createOfferDescription = () =>\n `${builderData?.name} - request for offer`;\n\n const handleFormSubmit = ({\n firstName,\n lastName,\n email,\n //phoneCode,\n phoneNr,\n location,\n consents\n }) => {\n const payload = {\n location,\n source: window.location.href,\n description: offerModalType === 'offer' ?\n createOfferDescription() :\n createTestDriveDescription(),\n customer: {\n firstName,\n lastName,\n //phoneCode,\n phoneNumber: phoneNr,\n email,\n },\n config: salesfrontConfig,\n createActivity: offerModalType === 'offer',\n consents: consents.map(item => ({\n consent: item,\n isSigned: true\n })),\n modelFamilyName: builderModel.familyName\n };\n onSubmit(payload);\n };\n\n return (\n
    \n \n \n {t('form_first_name')}\n \n \n \n \n \n {t('form_last_name')}\n \n \n \n \n \n {t('form_email')}\n \n \n \n {/*\n \n {t('form_phone_code')}\n \n \n */}\n \n \n {t('form_phone_number')}\n \n \n \n {!!locationsData.length && (\n \n \n {t('form_location')}\n \n \n {locationsData.map(item => (\n \n ))}\n \n \n )}\n {!!consentsData.length && (\n \n {t('consent_marketing_text')}\n {consentsData.map(item => {\n let label = item.title;\n if (label.toLowerCase().includes('email')) label = t('form_email');\n if (label.toLowerCase().includes('sms')) label = t('form_sms');\n if (label.toLowerCase().includes('phone')) label = t('form_phone_number');\n return (\n \n )\n })}\n \n )}\n \n {t('disclaimer_legal_text')}
    \n {t('disclaimer_legal_more')}\n
    \n \n \n \n
    \n );\n};\n\nexport default OfferForm;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useForm, FormProvider } from 'react-hook-form';\n\nimport { Alert, Modal } from 'react-bootstrap';\n\nimport { setModalState } from 'store/entities/app';\n\nimport OfferForm from './OfferForm';\nimport LoadingSpinner from 'components/LoadingSpinner';\n\nimport { useOfferRequest } from 'api/requests';\n\nconst formDefaultValues = {\n firstName: '',\n lastName: '',\n email: '',\n //phoneCode: '371',\n phoneNr: '',\n location: '1',\n consents: [],\n modelFamilyName: ''\n};\n\nexport const OfferModal = () => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n\n const [step, setStep] = React.useState('form');\n const [error, setError] = React.useState('');\n\n const { offerModal: isOpen, offerModalType } = useSelector(state => state.app);\n const methods = useForm({ defaultValues: formDefaultValues });\n\n const dataOffer = useOfferRequest({\n success: (result, data) => {\n setStep('finish');\n },\n error: (error) => {\n setStep('form');\n setError(error.message);\n },\n });\n\n const handleClose = () => {\n const payload = {\n modal: 'offerModal',\n newState: false,\n };\n dispatch(setModalState(payload));\n setStep('form');\n setError('');\n };\n\n const handleSubmit = (payload) => {\n setStep('loading');\n dataOffer.mutate(payload);\n };\n\n const modalProps = {\n size: 'lg',\n className: 'offer-modal',\n show: isOpen,\n onHide: handleClose\n };\n\n return (\n \n \n \n \n {t(`offer_modal_${offerModalType}`)}\n \n \n \n {step === 'form' && (<>\n {!!error && (\n {error}\n )}\n \n )}\n {step === 'loading' && (\n \n )}\n {step === 'finish' && (\n \n {t(`form_${offerModalType}_successful`)}\n \n )}\n \n \n \n );\n};","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { saveAs } from 'file-saver';\n\nimport { Button, Modal, Alert, Stack } from 'react-bootstrap';\n\nimport LoadingSpinner from 'components/LoadingSpinner';\n\nimport { setModalState } from 'store/entities/app';\nimport { usePdfDataRequest, useConfigRequest } from 'api/requests';\n\nexport const PdfModal = () => {\n const { t, i18n } = useTranslation();\n const dispatch = useDispatch();\n\n const [savedConfigId, setSavedConfigId] = React.useState(null);\n const [pdf, setPdf] = React.useState(null);\n const [error, setError] = React.useState('');\n\n const { pdfModal: isOpen } = useSelector(state => state.app);\n const { config } = useSelector(state => state);\n\n const dataPdf = usePdfDataRequest({\n params: {\n params: {\n configId: savedConfigId,\n language: i18n.language.split('-')[0],\n },\n queryKeys: [savedConfigId]\n },\n config: {\n enabled: !!savedConfigId,\n },\n success: (result) => {\n const blob = new Blob([result.data], { type: 'application/pdf' });\n setPdf(blob);\n },\n error: (error) => {\n setError(error.message);\n }\n });\n\n const saveConfig = useConfigRequest({\n success: (result, data) => {\n const configId = result?.data?.configId;\n setSavedConfigId(configId);\n },\n error: (error) => {\n setError(error.message);\n },\n });\n\n React.useEffect(() => {\n if (isOpen && !savedConfigId) saveConfig.mutate(config);\n }, [isOpen]);\n\n const isLoading = dataPdf.isFetching || saveConfig.isFetching;\n const showActions = !!pdf && !isLoading;\n\n const handleClose = () => {\n if (!isLoading) dispatch(setModalState({\n modal: 'pdfModal',\n newState: false\n }));\n };\n\n const handlePdfDownload = () => {\n saveAs(pdf, `${t('configuration_result')}.pdf`);\n };\n const handlePdfOpen = () => {\n const fileURL = window.URL.createObjectURL(pdf);\n const tab = window.open();\n tab.location.href = fileURL;\n };\n\n return (\n \n \n {t(`pdf_modal_title`)}\n \n \n {isLoading && (\n \n )}\n {!!error && (\n \n {t('pdf_modal_error')}\n {error}\n \n )}\n {showActions && (<>\n \n {t('pdf_modal_success')}\n \n \n \n \n \n )}\n \n \n );\n};\n","import { Modal, Button } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport Price from 'components/Price';\n\nexport const PackagesModal = ({ show, data, target, onConfirm, onCancel }) => {\n const { t } = useTranslation();\n\n if (!data) return null;\n\n const action = target ? target.check : target;\n const required = !!data.requiredOptions;\n const incompatible = !!data.incompatibleOptions;\n\n return (\n \n \n {t(required && incompatible ? 'package_title_combined' : incompatible ? 'package_title_incompatible' : 'package_title_required')}\n \n \n
    \n
    {t(action ? 'package_remove' : 'package_add')}
    \n
      \n
    • \n \n \n \n \n

      \n {data.option.name}\n {data.option.code}\n

      \n \n
    • \n
    \n\n {incompatible && <>\n
    {t('will_removed')}
    \n
      \n {data.incompatibleOptions.map((set) => set.map((item) =>\n
    • \n \n \n \n \n

      \n {item.name}\n {item.code}\n

      \n \n
    • \n ))}\n
    \n }\n\n {required && <>\n
    {t('will_added')}
    \n
      \n {data.requiredOptions.map((set) => set.map((item) =>\n
    • \n \n \n \n \n

      \n {item.name}\n {item.code}\n

      \n \n
    • \n ))}\n
    \n }\n\n
    \n
    \n {t('initial_price')}:\n \n
    \n
    \n {t('new_price')}:\n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n );\n};\n","import { useTranslation } from 'react-i18next';\n\nimport { Container, Button } from 'react-bootstrap';\n\nimport LocalizedLink from 'components/LocalizedLink';\nimport { ReactComponent as RewindIco } from 'assets/images/icons/Rewind.svg';\n\nconst NotFound = ({ error, onRefetch }) => {\n const { t } = useTranslation();\n return (\n
    \n \n
    {t('error_title', 'Something goes wrong...')}
    \n {/*

    {t('error_descr', 'Please try later')}

    */}\n

    {error?.message}

    \n

    \n {error?.redirect && (\n \n )}\n {error?.refetch && (\n \n )}\n {error?.route && (\n \n {t('error_button_route', 'Go to previous step')}\n \n )}\n

    \n
    \n
    \n );\n};\n\nexport default NotFound;","import React, { Component } from 'react';\nimport Hammer from 'react-hammerjs';\nimport 'components/360Viewer/styles.scss';\n\nclass React360Viewer extends Component {\n constructor() {\n super();\n //this.imageContainerRef = React.createRef();\n this.viewPercentageRef = React.createRef();\n this.viewPortElementRef = React.createRef();\n this.canvas = null;\n this.ctx = null;\n this.isMobile = false;\n this.imageData = [];\n this.images = [];\n this.loadedImages = 0;\n this.viewerPercentage = null;\n this.currentImage = null;\n this.currentLeftPosition = this.currentTopPosition = 0;\n this.currentCanvasImage = null;\n this.centerX = 0;\n this.centerY = 0;\n this.movementStart = 0;\n this.movement = false;\n this.speedFactor = 13;\n this.activeImage = 1;\n this.stopAtEdges = false;\n\n this.state = {\n lastX: 0,\n lastY: 0,\n minScale: 0.5,\n maxScale: 4,\n scale: 0.2,\n customOffset: 10,\n currentScale: 1,\n currentTopPosition: 0,\n currentLeftPosition: 0,\n selectMenuOption: 1,\n currentImage: null,\n dragging: false,\n canvas: null,\n ctx: null,\n dragStart: null,\n currentCanvasImage: null,\n isFullScreen: false,\n viewPortElementWidth: null,\n movementStart: 0,\n movement: false,\n dragSpeed: 150,\n speedFactor: 13,\n activeImage: 1,\n stopAtEdges: false,\n panmode: false,\n currentLoop: 0,\n loopTimeoutId: 0,\n playing: false,\n imagesLoaded: false,\n };\n\n //this.currentLeftPosition = this.currentLeftPosition.bind(this)\n }\n\n componentDidMount() {\n this.disableZoomin();\n\n this.viewerPercentage = this.viewPercentageRef.current;\n //console.log(this.viewerContainerRef.getElementsByClassName('v360-viewport-container'))\n this.viewPortElementRef =\n this.viewerContainerRef.getElementsByClassName('v360-viewport-container')[0];\n this.fetchData();\n }\n\n componentWillUnmount() {\n window.clearTimeout(this.state.loopTimeoutId);\n }\n\n fetchData() {\n //this.imageData = this.props.images;\n // change order for smooth transition from preview\n const positions = {\n 'theme-nissan': 12,\n 'theme-toyota': 4,\n 'theme-renault': 18,\n 'theme-dacia': 18\n };\n const position = positions[process.env.REACT_APP_THEME] || 0;\n const images = this.props.images;\n this.imageData = images.slice(position, images.length).concat(images.slice(0, position));\n this.preloadImages();\n }\n\n lpad(str, padString, length) {\n str = str.toString();\n while (str.length < length) str = padString + str;\n return str;\n }\n\n preloadImages() {\n if (this.imageData.length) {\n try {\n //this.props.amount = this.imageData.length;\n this.imageData.forEach(src => {\n this.addImage(src);\n });\n } catch (error) {\n console.error(`Something went wrong while loading images: ${error.message}`);\n }\n } else {\n console.log('No Images Found');\n }\n }\n\n addImage(resultSrc) {\n const image = new Image();\n image.src = resultSrc;\n //image.crossOrigin='anonymous'\n image.onload = this.onImageLoad.bind(this);\n image.onerror = this.onImageLoad.bind(this);\n this.images.push(image);\n }\n\n onImageLoad(event) {\n const percentage = Math.round((this.loadedImages / this.props.amount) * 100);\n this.loadedImages += 1;\n this.updatePercentageInLoader(percentage);\n if (this.loadedImages === this.props.amount) {\n this.onAllImagesLoaded(event);\n } else if (this.loadedImages === 1) {\n //this.onFirstImageLoaded(event);\n console.log('load first image');\n }\n }\n\n updatePercentageInLoader(percentage) {\n /* if (this.loader) {\n this.loader.style.width = percentage + '%';\n }\n if (this.view360Icon) {\n this.view360Icon.innerText = percentage + '%';\n } */\n //console.log(percentage)\n this.viewerPercentage.innerHTML = percentage + '%';\n //console.log(percentage + '%')\n }\n\n onAllImagesLoaded(e) {\n this.setState({ imagesLoaded: true });\n\n this.initData();\n }\n\n initData() {\n //console.log(this.imageContainerRef)\n this.canvas = this.imageContainerRef;\n this.ctx = this.canvas.getContext('2d');\n //console.log('initialize data here')\n\n this.attachEvents();\n\n this.checkMobile();\n this.loadInitialImage();\n\n this.setState({ playing: this.props.autoplay });\n }\n\n attachEvents() {\n if (this.state.panmode) {\n this.bindPanModeEvents();\n } else {\n this.bind360ModeEvents();\n }\n }\n\n bindPanModeEvents() {\n this.viewPortElementRef.removeEventListener('touchend', this.touchEnd);\n this.viewPortElementRef.removeEventListener('touchstart', this.touchStart);\n this.viewPortElementRef.removeEventListener('touchmove', this.touchMove);\n\n this.viewPortElementRef.addEventListener('touchend', this.stopDragging);\n this.viewPortElementRef.addEventListener('touchstart', this.startDragging);\n this.viewPortElementRef.addEventListener('touchmove', this.doDragging);\n\n this.viewPortElementRef.removeEventListener('mouseup', this.stopMoving);\n this.viewPortElementRef.removeEventListener('mousedown', this.startMoving);\n this.viewPortElementRef.removeEventListener('mousemove', this.doMoving);\n\n this.viewPortElementRef.addEventListener('mouseup', this.stopDragging);\n this.viewPortElementRef.addEventListener('mousedown', this.startDragging);\n this.viewPortElementRef.addEventListener('mousemove', this.doDragging);\n }\n\n bind360ModeEvents() {\n this.viewPortElementRef.removeEventListener('touchend', this.stopDragging);\n this.viewPortElementRef.removeEventListener('touchstart', this.startDragging);\n this.viewPortElementRef.removeEventListener('touchmove', this.doDragging);\n\n this.viewPortElementRef.addEventListener('touchend', this.touchEnd);\n this.viewPortElementRef.addEventListener('touchstart', this.touchStart);\n this.viewPortElementRef.addEventListener('touchmove', this.touchMove);\n\n this.viewPortElementRef.removeEventListener('mouseup', this.stopDragging);\n this.viewPortElementRef.removeEventListener('mousedown', this.startDragging);\n this.viewPortElementRef.removeEventListener('mousemove', this.doDragging);\n\n this.viewPortElementRef.addEventListener('mouseup', this.stopMoving);\n this.viewPortElementRef.addEventListener('mousedown', this.startMoving);\n this.viewPortElementRef.addEventListener('mousemove', this.doMoving);\n }\n\n startDragging = evt => {\n this.dragging = true;\n document.body.style.mozUserSelect =\n document.body.style.webkitUserSelect =\n document.body.style.userSelect =\n 'none';\n this.setLastPositions(evt);\n\n this.dragStart = this.ctx.transformedPoint(this.state.lastX, this.state.lastY);\n };\n\n setLastPositions(evt) {\n if (this.isMobile) {\n this.setState({\n lastX: evt.touches[0].offsetX || evt.touches[0].pageX - this.canvas.offsetLeft,\n lastY: evt.touches[0].offsetY || evt.touches[0].pageY - this.canvas.offsetTop,\n });\n } else {\n this.setState({\n lastX: evt.offsetX || evt.pageX - this.canvas.offsetLeft,\n lastY: evt.offsetY || evt.pageY - this.canvas.offsetTop,\n });\n }\n }\n\n doDragging = evt => {\n this.setLastPositions(evt);\n\n if (this.dragStart) {\n let pt = this.ctx.transformedPoint(this.state.lastX, this.state.lastY);\n this.ctx.translate(pt.x - this.dragStart.x, pt.y - this.dragStart.y);\n //redraw();\n this.redraw();\n }\n };\n\n stopDragging = evt => {\n this.dragging = false;\n this.dragStart = null;\n };\n\n checkMobile() {\n this.isMobile = !!('ontouchstart' in window || navigator.msMaxTouchPoints);\n }\n\n loadInitialImage() {\n this.currentImage = this.imageData[0];\n this.setImage();\n }\n\n setImage(cached = false) {\n this.currentLeftPosition = this.currentTopPosition = 0;\n\n if (!cached) {\n this.currentCanvasImage = new Image();\n this.currentCanvasImage.crossOrigin = 'anonymous';\n this.currentCanvasImage.src = this.currentImage;\n this.currentCanvasImage.onload = () => {\n let viewportElement = this.viewPortElementRef.getBoundingClientRect();\n this.canvas.width = this.state.isFullScreen\n ? viewportElement.width\n : this.currentCanvasImage.width;\n this.canvas.height = this.state.isFullScreen\n ? viewportElement.height\n : this.currentCanvasImage.height;\n this.trackTransforms(this.ctx);\n this.redraw();\n };\n this.currentCanvasImage.onerror = () => {\n console.log('cannot load this image');\n };\n } else {\n this.currentCanvasImage = this.images[0];\n let viewportElement = this.viewPortElementRef.getBoundingClientRect();\n this.canvas.width = this.state.isFullScreen\n ? viewportElement.width\n : this.currentCanvasImage.width;\n this.canvas.height = this.state.isFullScreen\n ? viewportElement.height\n : this.currentCanvasImage.height;\n this.trackTransforms(this.ctx);\n this.redraw();\n }\n }\n\n redraw() {\n // It looks like minecraft without this\n this.canvas.width = 1920;\n this.canvas.height = 1080;\n try {\n let p1 = this.ctx.transformedPoint(0, 0);\n let p2 = this.ctx.transformedPoint(this.canvas.width, this.canvas.height);\n let hRatio = this.canvas.width / this.currentCanvasImage.width;\n let vRatio = this.canvas.height / this.currentCanvasImage.height;\n let ratio = Math.min(hRatio, vRatio);\n let centerShift_x = (this.canvas.width - this.currentCanvasImage.width * ratio) / 2;\n let centerShift_y = (this.canvas.height - this.currentCanvasImage.height * ratio) / 2;\n this.ctx.clearRect(p1.x, p1.y, p2.x - p1.x, p2.y - p1.y);\n this.centerX = (this.currentCanvasImage.width * ratio) / 2;\n this.centerY = (this.currentCanvasImage.height * ratio) / 2;\n\n //center image\n this.ctx.drawImage(\n this.currentCanvasImage,\n this.currentLeftPosition,\n this.currentTopPosition,\n this.currentCanvasImage.width,\n this.currentCanvasImage.height,\n centerShift_x,\n centerShift_y,\n this.currentCanvasImage.width * ratio,\n this.currentCanvasImage.height * ratio\n );\n //this.addHotspots()\n } catch (e) {\n this.trackTransforms(this.ctx);\n }\n }\n\n trackTransforms(ctx) {\n return new Promise(resolve => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n let xform = svg.createSVGMatrix();\n this.ctx.getTransform = function () {\n return xform;\n };\n\n const savedTransforms = [];\n const save = ctx.save;\n this.ctx.save = () => {\n savedTransforms.push(xform.translate(0, 0));\n return save.call(this.ctx);\n };\n const restore = ctx.restore;\n this.ctx.restore = () => {\n xform = savedTransforms.pop();\n return restore.call(this.ctx);\n };\n const scale = this.ctx.scale;\n this.ctx.scale = (sx, sy) => {\n xform = xform.scaleNonUniform(sx, sy);\n return scale.call(this.ctx, sx, sy);\n };\n const rotate = this.ctx.rotate;\n this.ctx.rotate = radians => {\n xform = xform.rotate((radians * 180) / Math.PI);\n return rotate.call(this.ctx, radians);\n };\n const translate = this.ctx.translate;\n this.ctx.translate = (dx, dy) => {\n xform = xform.translate(dx, dy);\n return translate.call(this.ctx, dx, dy);\n };\n const transform = this.ctx.transform;\n this.ctx.transform = (a, b, c, d, e, f) => {\n const m2 = svg.createSVGMatrix();\n m2.a = a;\n m2.b = b;\n m2.c = c;\n m2.d = d;\n m2.e = e;\n m2.f = f;\n xform = xform.multiply(m2);\n return transform.call(this.ctx, a, b, c, d, e, f);\n };\n const setTransform = this.ctx.setTransform;\n this.ctx.setTransform = (a, b, c, d, e, f) => {\n xform.a = a;\n xform.b = b;\n xform.c = c;\n xform.d = d;\n xform.e = e;\n xform.f = f;\n return setTransform.call(this.ctx, a, b, c, d, e, f);\n };\n const pt = svg.createSVGPoint();\n this.ctx.transformedPoint = (x, y) => {\n pt.x = x;\n pt.y = y;\n return pt.matrixTransform(xform.inverse());\n };\n resolve(this.ctx);\n });\n }\n\n prev = e => {\n this.props.spinReverse ? this.turnRight() : this.turnLeft();\n };\n\n next = e => {\n this.props.spinReverse ? this.turnLeft() : this.turnRight();\n };\n\n resetPosition = () => {\n this.currentScale = 1;\n this.activeImage = 1;\n this.setImage(true);\n };\n\n turnLeft() {\n this.moveActiveIndexDown(1);\n }\n\n turnRight() {\n this.moveActiveIndexUp(1);\n }\n\n moveActiveIndexUp(itemsSkipped) {\n if (this.stopAtEdges) {\n if (this.activeImage + itemsSkipped >= this.props.amount) {\n this.activeImage = this.props.amount;\n } else {\n this.activeImage += itemsSkipped;\n }\n } else {\n this.activeImage = (this.activeImage + itemsSkipped) % this.props.amount || this.props.amount;\n }\n\n this.update();\n }\n\n moveActiveIndexDown(itemsSkipped) {\n if (this.stopAtEdges) {\n if (this.activeImage - itemsSkipped <= 1) {\n this.activeImage = 1;\n } else {\n this.activeImage -= itemsSkipped;\n }\n } else {\n if (this.activeImage - itemsSkipped < 1) {\n this.activeImage = this.props.amount + (this.activeImage - itemsSkipped);\n } else {\n this.activeImage -= itemsSkipped;\n }\n }\n\n this.update();\n }\n\n update() {\n this.currentCanvasImage = this.images[this.activeImage - 1];\n this.redraw();\n }\n\n zoomImage = evt => {\n this.setState({\n lastX: evt.offsetX || evt.pageX - this.canvas.offsetLeft,\n lastY: evt.offsetY || evt.pageY - this.canvas.offsetTop,\n });\n\n const delta = evt.wheelDelta ? evt.wheelDelta / 40 : evt.deltaY ? -evt.deltaY : 0;\n\n if (delta) this.zoom(delta);\n //return evt.preventDefault() && false;\n };\n\n zoomIn = evt => {\n this.setState({\n lastX: this.centerX,\n lastY: this.centerY,\n });\n //this.lastY = this.centerY\n this.zoom(2);\n };\n zoomOut = evt => {\n this.setState({\n lastX: this.centerX,\n lastY: this.centerY,\n });\n this.zoom(-2);\n };\n\n zoom(clicks) {\n //console.log(this.lastX + ' - ' + this.lastY)\n let factor = Math.pow(1.01, clicks);\n //console.log(factor)\n if (factor > 1) {\n this.currentScale += factor;\n } else {\n if (this.currentScale - factor > 1) this.currentScale -= factor;\n else this.currentScale = 1;\n }\n\n if (this.currentScale > 1) {\n let pt = this.ctx.transformedPoint(this.state.lastX, this.state.lastY);\n this.ctx.translate(pt.x, pt.y);\n\n //console.log(this.currentScale)\n this.ctx.scale(factor, factor);\n this.ctx.translate(-pt.x, -pt.y);\n this.redraw();\n }\n }\n\n disableZoomin() {\n document.addEventListener('gesturestart', function (e) {\n e.preventDefault();\n document.body.style.zoom = 0.99;\n });\n document.addEventListener('gesturechange', function (e) {\n e.preventDefault();\n document.body.style.zoom = 0.99;\n });\n\n document.addEventListener('gestureend', function (e) {\n e.preventDefault();\n document.body.style.zoom = 1;\n });\n }\n\n onMove(pageX) {\n if (pageX - this.movementStart >= this.speedFactor) {\n let itemsSkippedRight = Math.floor((pageX - this.movementStart) / this.speedFactor) || 1;\n\n this.movementStart = pageX;\n if (this.props.spinReverse) {\n this.moveActiveIndexDown(itemsSkippedRight);\n } else {\n this.moveActiveIndexUp(itemsSkippedRight);\n }\n this.redraw();\n } else if (this.movementStart - pageX >= this.speedFactor) {\n let itemsSkippedLeft = Math.floor((this.movementStart - pageX) / this.speedFactor) || 1;\n\n this.movementStart = pageX;\n if (this.props.spinReverse) {\n this.moveActiveIndexUp(itemsSkippedLeft);\n } else {\n this.moveActiveIndexDown(itemsSkippedLeft);\n }\n this.redraw();\n }\n }\n\n startMoving = evt => {\n this.movement = true;\n this.movementStart = evt.pageX;\n this.viewPortElementRef.style.cursor = 'grabbing';\n };\n\n doMoving = evt => {\n if (this.movement) {\n this.onMove(evt.clientX);\n }\n };\n\n stopMoving = evt => {\n this.movement = false;\n this.movementStart = 0;\n this.viewPortElementRef.style.cursor = 'grab';\n };\n\n touchStart = evt => {\n this.movementStart = evt.touches[0].clientX;\n };\n\n touchMove = evt => {\n this.onMove(evt.touches[0].clientX);\n };\n\n touchEnd = () => {\n this.movementStart = 0;\n };\n\n play = e => {\n this.setState({\n loopTimeoutId: window.setInterval(() => this.loopImages(), 100),\n });\n };\n\n onSpin() {\n if (this.state.playing || this.state.loopTimeoutId) {\n this.stop();\n }\n }\n\n stop() {\n if (this.activeImage === 1) {\n this.setState({ currentLoop: 0 });\n }\n this.setState({ playing: false });\n window.clearTimeout(this.state.loopTimeoutId);\n }\n\n loopImages() {\n let loop = this.props.loop ? this.props.loop : 1;\n\n if (this.activeImage === 1) {\n if (this.state.currentLoop === loop) {\n this.stop();\n } else {\n this.setState({ currentLoop: this.state.currentLoop + 1 });\n\n this.next();\n }\n } else {\n this.next();\n }\n }\n\n togglePlay = e => {\n this.setState({ playing: !this.state.playing });\n };\n\n togglePanMode = e => {\n this.setState({ panmode: !this.state.panmode });\n };\n\n toggleFullScreen = e => {\n this.setState({ isFullScreen: !this.state.isFullScreen });\n };\n\n componentDidUpdate(prevProps, prevState) {\n if (this.state.currentLeftPosition !== prevState.currentLeftPosition) {\n console.log('Left Position Changed');\n }\n\n if (this.state.panmode !== prevState.panmode) {\n this.attachEvents();\n }\n\n if (this.state.playing !== prevState.playing) {\n if (!this.state.playing) {\n this.stop();\n } else {\n this.play();\n }\n }\n\n if (this.state.isFullScreen !== prevState.isFullScreen) {\n if (!this.state.isFullScreen) {\n //exit full screen\n this.viewerContainerRef.classList.remove('v360-main');\n this.viewerContainerRef.classList.remove('v360-fullscreen');\n } else {\n //enter full screen\n this.viewerContainerRef.classList.add('v360-main');\n this.viewerContainerRef.classList.add('v360-fullscreen');\n }\n this.setImage();\n }\n }\n\n pinchOut = () => {\n this.currentScale = 1;\n };\n\n render() {\n return (\n {\n this.viewerContainerRef = inputEl;\n }}\n id=\"v360container\"\n >\n\n \n
    \n {\n this.imageContainerRef = inputEl;\n }}\n >\n {this.props.boxShadow ?
    : ''}\n {!this.state.imagesLoaded ? (\n
    \n \n

    \n
    \n ) : (\n ''\n )}\n
    \n \n\n \n
    \n \n \n
    \n \n
    \n \n );\n }\n}\n\nexport default React360Viewer;\n","import PlaceholderInterior from 'assets/images/placeholder-interior.png';\n\nexport const getExteriorPictures = (exteriors, code) => {\n const foundExteriors = exteriors?.filter(item => item.code === code);\n\n if (foundExteriors?.length) {\n return foundExteriors[0].pictures;\n }\n return {};\n};\n\nexport const getActiveInteriorPicture = (interiors, code) => {\n const found = interiors?.find(item => item.code === code);\n return found?.pictures?.main || PlaceholderInterior;\n};","import { useTranslation } from 'react-i18next';\n\nconst useLocale = () => {\n const { i18n } = useTranslation();\n\n const language = i18n.language;\n const languageTags = language.split('-');\n\n if (languageTags[1]) return languageTags.join('_');\n\n const domain = window.location.hostname.split('.').pop();\n const supportedLngs = i18n.options.supportedLngs;\n const fallbackLng = i18n.options.fallbackLng?.[0] || 'en';\n const locale = supportedLngs.includes(domain) ? domain : 'ee';\n\n return [language, locale.toUpperCase()].join('_');\n};\n\nexport default useLocale;","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\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\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgExitFullscreen(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"-2 -2 20 20\",\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 fill: \"currentColor\",\n d: \"M7 8a1 1 0 011 1v4.8a1 1 0 01-2 0v-2.387l-4.293 4.294a1 1 0 01-1.414-1.414L4.584 10H2.2a1 1 0 110-2H7zM15.695.305a1 1 0 01.012 1.402l-4.293 4.292L13.8 6a1 1 0 010 2H9a1 1 0 01-1-1V2.2a1 1 0 112 0v2.385L14.293.293a1 1 0 011.402.012z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgExitFullscreen);\nexport default __webpack_public_path__ + \"static/media/ExitFullscreen.932d47bf.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\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\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgInfo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 30 30\",\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 fill: \"currentColor\",\n d: \"M28.5 12.6c-.7 0-1.1.7-1 1.3.63 12.05-14.4 18.01-22.2 8.8C1.7 18.4 1.5 12.4 4.6 8c3.1-4.4 8.9-6.5 14.1-4.8.4.1.9 0 1.2-.2.3-.2.5-.8.4-1.2-.1-.4-.4-.8-.8-.9C14-.9 7.8.8 3.9 5.1c-8.96 10.03-.99 25.84 12.4 24.6 8.2-.7 14.3-7.8 13.5-16-.1-.62-.67-1.16-1.3-1.1z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M15 11.7c-.7 0-1.3.5-1.3 1.2v9c0 .6.6 1.2 1.2 1.2s1.3-.6 1.3-1.2v-9c0-.7-.6-1.2-1.3-1.2zm1.2-3.4c0-.7-.6-1.2-1.3-1.2s-1.2.5-1.2 1.2.6 1.2 1.2 1.2 1.3-.5 1.3-1.2z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgInfo);\nexport default __webpack_public_path__ + \"static/media/Info.9978fc3a.svg\";\nexport { ForwardRef as ReactComponent };","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxgAAAG8CAYAAABdbwO1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTgyMDgzN0U0QjIxMTFFOUFGMzhFNEFCQUNCODFENTkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTgyMDgzN0Y0QjIxMTFFOUFGMzhFNEFCQUNCODFENTkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowMjhGRTUwNTRCMUYxMUU5QUYzOEU0QUJBQ0I4MUQ1OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowMjhGRTUwNjRCMUYxMUU5QUYzOEU0QUJBQ0I4MUQ1OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnqTjF8AABsASURBVHja7N1pd9tGmoDRorV7X7N0ku4P8///1JyeaWeVLdvaKJGDNygMEUYWKRIksdx7Do4cJ3HiokzgYaEKo+l0mgAAAJrwyBAAAAACAwAAEBgAAIDAAAAAEBgAAIDAAAAABAYAACAwAAAABAYAACAwAAAAgQEAACAwAAAAgQEAAAgMAABAYAAAAAgMAABAYAAAAAIDAABAYAAAAAIDAAAQGAAAgMAAAAAQGAAAgMAAAAAEBgAAgMAAAAAEBgAAIDAAAACBAQAAIDAAAACBAQAACAwAAACBAQAACAwAAEBgAAAAAgMAAEBgAAAAAgMAABAYAAAAAgMAABAYAACAwAAAAAQGAACAwAAAAAQGAAAgMAAAAAQGAAAgMAAAAIEBAAAIDAAAAIEBAAAIDAAAQGAAAAACAwAAQGAAAAACAwAAEBgAAAACAwAAEBgAAIDAAAAABAYAAIDAAAAABAYAACAwAAAABAYAACAwAAAAgQEAAAgMAAAAgQEAAAgMAABAYAAAAAgMAABAYAAAAAIDAAAQGAAAAAIDAAAQGAAAgMAAAAAQGAAAgMAAAAAEBgAAIDAAAAAEBgAAIDAAAACBAQAAIDAAAACBAQAACAwAAEBgAAAACAwAAEBgAAAAAgMAAEBgAAAAAgMAABAYAACAwAAAABAYAACAwAAAAAQGAACAwAAAAAQGAAAgMAAAAIEBAAAgMAAAAIEBAAAIDAAAQGAAAAAIDAAAQGAAAAACAwAAQGAAAAACAwAA6Jx9Q9BNo9HIIAAAgzKdTg1CB5jBAAAABAZsyCgfAAAIDFjbUXG8NAwAAAIDmnBdHAfFcWIoAAAEBqwjbo2aFMeH4nia3CoFACAwYA3V1hQxi3GTIwMAAIEBaztL5W1Se4YCAEBgwLpui2NcHM8NBQCAwIAmxCzGcfJASgAAgQFrigXeMYtxWRyvDAcAgMCAdVQLvj/k2Dg2JAAAAgOaCI3zZC0GAIDAgIZ8SeVuUo8NBQCAwIB1xO1RMYvxuTheGw4AAIEB66jWYnxK5QP4ntXCAwAAgQEri21rX+Q/N1PDAQAgMGAdsWXtbY4MAAAEBqysuiXqNJW3SXn4HgCAwICVVbdEXSYP3wMAEBjQoD+K46g4Dg0FAIDAgHXdFMdVcbwxFAAAAgOaEGsxjvMRbFsLACAwYGUxixEP33ubZg/jAwAQGIYAVvZ7/jP01FAAAAgMWNcklU/4jh2l3CIFACAwYG0fimOvOF4aCgAAgQHrirUXv+XA8OcJABAYhgDWFrdJjdNs21q3SwEAAgNYSRUT8fC9WOy9n8pZDZEBAAgM4MGq7WnPUzmL8Xru5wEABAbwIPVZjFiL4eF7AIDAAFZWn8WIXaXezv08AIDAAFYSgXFYHM8MBQAgMIB1XRfH51Q+fA8AYHD2DQE0LmYxfkrlLMYnw9GIUZqtaYmvq+zU1dT73fED//nLBX//5p6/N60dACAwYKBiFuMslbMYQwyMR/m9ZXTHxfLhV/6dvXv+XjhKsxnXSVpt9vUg/3cqt/mvbx/46+w98J+/XfDrXC+IjPsiZf7nx7X4ulnh9wYAaxtNpz4Y6+QLN7JBUcvFxeMPxXGaI6P61H2n3zZ3XHDXL7QP5i5I93IoHN5z0f+1wDho8AKdh8XMpPa9dnNPkIxrr/e49s/etuT7FeBvXLd2gxkM2MyF/G2+mItZjPO0mU+SR/livvrEurqon+Y/2/U/34e1C/9xjoO99NeZABf+/QjbvbnXve7xPf/u9VyUXM6FybgWI27bAuDrFyhKsKMvnBmMNsdFdcEf6zCO88XZRSpnM24e8GtVF4ujuWCoLhqP0mzWoR4LQoFNie+1q/zjqzS7vas63JIFbJTrVoGBwBiyuPj/ce5iP0Lj9/y1CoZRLQqqcHiUZrcfHYgGOhIecWvWeC48xunvt20BCAyBgcBgmZckx8BRDoeT4nj6lQuxcfr7gmPoa3hUMx7jHB5X+efNeAACQ2AgMKipdkqKoHicY+FENMBSxvnP0EX+cbXGo4oOJyZAYAgMBEb3h3SJi5pHOSIe57A4EhTQmGo2Yz46YtZjYngAgSEwEBhdjYhFUfHYMMJWo6Oa2bjIX6/z4eQFAgOBgcBonUc5OvZqP64WVVczFAfp/mc6AA1fP6TFT2mvdmaLr1dptnUuIDAQGAiMh//WH3AhMR8M1c8d5x9XX/droQF0S7VF7kUtPG4MCwgMBAYCY9XYqM887Nei4SjNFmKn5KGSMBRxW9UfxfElmdkAgYHAQGAsiIkqIqqtYPfTbLtXtzEB86HxuTh+ERkgMBAYCIxHcyFxLCSAFcWC8NM0253KSQ8EBgKDgQRGhMSzHBDHYgJo2Dgfn1J5+5R1GiAwEBj0PDC+z4EBsI3YiNunzvPhRAgCA4FBDwPjVXG888oC27xWSeVMRsTGx+QWKhAYCAyB0TvPcmTY8QnYhZjNiFuoYr3GteEAgYHAEBj9EHHxojieJ2swgN3GxmlyCxUIDASGwOiN2Enq22RdBrDDa5lUzmZEaMRD/G4NCQgMBIbA6LbD4vgxuWUK2L1qYfinHBuAwEBgCIwu/jaL47tkFgNo0fVNmj1Xw+1TIDC4g0+GafuJ/FJgAC0SH3y8zj+O52lUsxoTQwMgMGj/Sby6/xmgjZ7kIzamiNmMs2T3KQC3SHX2hRvGLVLxRO+3xfHYKw50gNunYNN/yFy3CgwExhritqjYReqRVxvooOr2qTOhAQJDYCAwdvRbqp2EPdUb6ItYR/Yxx4ZtbkFgCAwExpbjImYr4paol15hoGfitqmz5CnhIDAEBgJja3GxVxzfJ+stgJ5fH6VynYYF4SAwBAYCY8Nx8UMqF3UDDMXHfHhwHwgMgYHAaJC4AIYuFoT/LjRAYAgMBMb6Iiq+ERcAfzKjAQJDYCAwVvlfT+VtUREV/0ge9ggwz4wGCAyBgcB4IHEBsFg1o3GVPEsDBIbAQGD8/X85mbkAWEX1LA0P7UNguG4VGAiMubg4SuWCbnEBIDRAYAgMBMZacWG3KAChAQJDYCAwGouMiAsP0QMQGiAwBAYCY22xFe1LrxqA0ACBITAQGOt6kw8AhAYIDIGBwFjLs+L43qsFsFXxHI3PQgOBgcCgb4ER6y1+9EoB7DQ0PLAPgYHAoNOBYTtagPapHtgnNBAYCAw6FxghtqP9Z3EceJUAWuWPVN42dW0oEBgIDLoSGI9S+ZRu29ECtDs04pgYCgQGAoM2BcZhcTzJP45boeITsWfiAqATLorjNJWLwUFgIDDYeWBESLxL1lgAdF0sBP8oNBAYCAx2GRgnxfGTVwCgVywER2AgMATGzgIjFnHHsy3cCgXQz9CIrW1vDAUCA4EhMLYpZjFiG9pHXgmAXrIQHIGBwBAY2/tPp/JZF69SuQ4DgH6yEByBwUos0uXBf7ZzZBwbCoBeO8lHLAT/kL8uq/owChggMxhdfeF2e4vUN8Xx0qsAMCgRGLE2I7Ylj1unrvLPT/LPT0UFm+a6tRvMYLB00+QTx3NxATBIT77y8+PiuJ0LjuscHbf5r6uvrg5hCBeNSrCjL9x2ZzCquIjbon5MFncDsJxxPmdM7oiQ87lAmSazICzgulVg0I/AqOIitqf9IVl7AUDzETL/tQqQ+gzIraHCdavAoPuBUV+kF8++eGbkAdiy6/z1JsfHZZrdflV9dTEjMBAYdCQwQsxcvEnWXQDQzviIyKhuvapmParbrhAYCAxaFhgxY/G2OA6MOAAdUq3v+JS/XuXDRY/AQGCw5cCoboka5bB4ZaQBeMj1Xz6HtFHcWlUtNI8fj9NsvQcCA4HBBgKjHhffJestAOi/i/w1brX6IjoEBgJDYGzglxUXAPBneNSj4yZ5jofAQGAIDHEBwHCuO9PXb82a1s5zq6pmNmJNR30XKwQGAkNg3CPWW7wzsgCwMFrOc3BUu1hd57/2oECBQWHfEFA4SeVWtABA6b5P8h7fESLVLEe4SrMtc6vbq6zrYDh/eJRgR1+4ZmcwPEQPADZjmmbb5FbP6LjK4TFNbrV62GC6bu0EMxjE98CJYQCAjYhPBI/zMS8Wk09ycFThMUmzWQ8QGHTuDW+a48L3AQBsX/UB35M7wiPWdcTsxuccG9UaD2j/Raappo6+cM3dIvVNcbw0ogDQalV0xC5W1YzH4LbOdd3aDT655tgQAEDrneTjxT3RcZ3cWoXAYMf2DAEA9CY66sERP3ZbFQKDnQSG7wEA6HdwfMk/tmMVAgMAgEaCox4b1dPIQWDQmGoHqX3fAwAwuNhIOTQ+58PMBgKDxliDAQDD9CQfz9NsZiMOazYQGGxMvMGMDAMA9Nr8bVRxxKzGpaFBYPDQeFhEXADAMGPjdXF8zIfQQGAAALC2F/mIyDhN5W1UIDD4qmqR9yJukwKA4bjrvC80EBgs/QayzOsvLgBgOO4779dDw61T3OuRIRi0A0MAACwwnQuNfxbHW9eRCAwAAFZx18xGLAT/oTiODQ8Cgzp7XQMAq4odp6rZDBAY/MkaCwBgXTGb8VPyAF8EBskMBgDQjJjN+K/ieGooEBgAADTlH8ktUwLDEAAA0KC4ZeqdYRguz8EYNtvUAgCb8CqVH2T/Vhy3hmNYzGAMVyzEOjIMAMCGxDMz3C4lMBiQg2QGAwDYfGR8axgEBsNg9gIA+Jomd5qMyHhlSAUGXnsAYLhx0fSzsmLR9xND6yITAIDh2dSDeONWqWPDKzDor4khAAC2KHYvPTEMAoP+ujIEAMCWHRoCgQEAAE2x4Ftg0GNxi9SNYQAAtiwWfFuLITDoobHAAAB25JtUPvQXgQEAAGuLGQxP+RYYAAB03LRF/y8vklulBAa9e+1NTQLAsIxa9v9j21qBQY8c5AMAYN50w/88AoMeMnsBADRlZAgQGN4APOgGANh1MLhFSmDQA9UU5hNDAQCAwGAd1acRj5NdGwAAEBisKWYv4taod157AKDB64td/LsIDFogFnbHkzOPDAUA0JDRGtFgcbjAoOOep/L2KACAbQXHfWKRt41nBAYdFYu63xkGAKBF9pKdpAQGnfXGEAAALWRnS4FBB8WOUaYfAYA2eprsbikw6JxXXmsAoMX2DIHAoDti5sK9jQCAa1K8mDQitqTdNwwAQIs9MwQCg+4QFwBA21mHITAQGAAAjTKLITDoCE/IBADabpoDw66XAgMAANYWH4jGXReeiSEwaLnY8s39jABAV8TW+mYxBAYAADTCLIbAoOVui+PSMAAAHYsMBAYttecPKQDQMQeGQGDQPtXOUU/zAQDQFfvJLpgCg9aJrd5i9uKFoQAAOmZiCAQG7fQ22UEKAOjm9akZDIFBy0RYuDUKAOgia0gFBi38Q/k6fwUA6OL1qWtUgUGLxM4LZi8AABAYNOK1IQAAQGDQBGsvAICui90w7SQlMGgJsxcAQNfFAu8TwyAw2L1jfxgBgJ54YggEBrsXcWHnKACgD+KW70PDIDDYfWAAALi2QWCwtih8T+0GAFyn4oWjscL3xEsAoE9c2wgMdsg9igBA37hFSmCwQweGAADombj9+8gwCAy2L3aOMoUIAPTRc0MgMAAAAIEBAACtc20IBAYAADThsjguDEP3uHe/+27zH0DPwQAAuu68OM5SOXMxztc5CAx2YGoIAIAeOC2OL4ah29wi1W2j/PXGUAAAPfA0lTtkIjDYkWrmwgIoAKAPXhTHa8PQbW6R6odxPjxwDwDooklxfEzlom4LuzvODEY/xAyGRVAAQJevSeN65rNrGoFBe3wyBABAh32bylukEBi0ROy4YLE3AND1yHhiGAQG7RDTipeGAQDouDfJTlICg9awbzQA0HXx8OCnhkFg0A4xgzE2DABAx8VaDLMYAoMWuErl7gsAAF1mFkNg0CKxh7RZDACg6yz2Fhi0RCz2/mAYAICOO84HAoMWOEt2lAIAum2/OI4Mg8CgHeIJmB8NAwDQcXGblMXeAoOWiMDwdG8AoMtOBIbAoF1+TxZ8AwDdFXFxYBgEBu0wSuWC718MBQDQYfuGQGDQDtP8NZ7u/bPhAAA6yk5SAoMWivUY/1McE0MBAHSMnTEFBi0VMxn/9ocUAACBQZOfAMRMxq/FcWU4AABomkUzwxPPyDhN5cP4nqdyf+ljsQkAtNSNIRAYtN+oFhpxHObQiOMk/30AgDbEhS33BQYdMJ376+t8RGwc58gwswEA7NplvkZBYNDxP8hxxC1U8XCboxwaR4IDANiyL4ZAYNAft/mITw0+pfK2qXiSZsxuPM6xsSc4qJnmw/cEAE2IDzw/G4buGU2nU6PQxRdutPNlEns5UEc5OiI+DvPXA6/QIMXuZBfF8W0qZ7wAYB2x8+VfZjBctwoM+h0YX4uOVIuMkxwhB/nrXgP/jVjsNc1hMxUzrYqL0+rbszhepnIdz57YAGAFp/nckgSGwGB4gVFd6C8Kj4NaaBznf++oFgi3c5FS/dwv+Wt1O1Y8v2NS+2//y3dDO08C2bPi+N4QAfAA1XO7bgVGN1mDwbqW+ZNeree4nIuO8Dh/H37J4RCzHi/yz8dC809L/Pdtq7s79ZmLh4YnANwVF+/vigsEBqQFF53VG8d8QMRfnxfH0zRb2HXfxarA2J3Tr8RFPTyv0mx240kOR6Cbblw7sOHvr7gG+ENcCAx4iGU/0Y43lo8L/r0qOmLWw65FuzkR/LrEP1c9YyV8SOXajHdL/jciTpZ9uFJ8Dxxs6Hthz8sNf/6Z/9/8nvsmlbc/wkNNauf5cX7Pjq+f83u+510IDGhFrNz4Pt6Jy7nQu8/ojlC8qcXAfBTEDFa19may4xCI/7ddLlKvNkloQ/jXx+R4AOeuR6l/s6O3tT9/4XDJ32MVF9Wf+//kC8LXySYO3B8TkxwNVTxc1P7+OLmVVmBAS1234GJnqOO+7MXptHYx8yxfnNRnJuYvUC7Sap9i3Wz498pmY27+wqQen/OhuanZqnTHf2fU4K912OD4H6bFt5Hspdks4nntz8g4/70fl7wOuEl/XUMXqttZIzKeJjv6UbrM31/V07dvclwgMKBTvHF1Z9zjYuj9HRfsl4bzXm37FH2atnd/9O2Oo6+t35t7c3E/mnt9RkuMY/XJ8v4a35fx68atknFL6wuhsXM/5wv6eF1iw5TjfGziNbmpHdWHQtVtT7df+X4xWyEwoDMuDMFOrHLhdevEs/IFPdsNr/pF+rSh/9cmX8fbBsZrmpZf43Sx4PvyOs12lItZypdCY+vm1y5W79ERGDFTte6MX7VO4ibNZiZuHvC96H1MYECnuH1lNxe84wYvmpx4aOP3zbRD/6+r/j/ELU4vGvxv3KTZznLvfItu1eXce3L14+v89+Z38Jvc8eP7rgk/p+U29gCBQS9M8sWuT8u2x21p0A8RGPGp9949ERR/79OSv151UXuRbCG+bRdzr+G0do6MTTOezIXgeO49PW5v+35BPKZkxhmBwYBcCoytn8iSkwx0Xtze8nODv179+Tdx2IBje77c8/fq24Uveu0WBYb3fZbi+QH0wWdDsFVnhgBYcLH6yTBszTI7NY1qx/zPh8sFv4YH3yEwGJwvyacq2zJJbpECFjv3vrw1y3zINq0d8z9fRcq/lwhDt70hMBjURa/F3tuLOYBF4oMIu/xtR1OzRTFLEc8p+vWOc+zEMCMwGJLq0xS3SW3HR0MALPm+7P1i8643EHKxE1jMZtzUwsMaDAQGgzKtvSF649us+ATr3DAAS74vxwc/Y8OxUWdpM7ctnefIiK+XyRoMBAYDvvi1NmCzqlki9+ACy4aGWYzNj++mPly7zpHxPvkAD4HBgP1uCLYyvk40wLLiAtin390eW+/5CAwGLRYgfzAMGxHj6lYH4KHiAvi/XaRu5KL/1DAgMGA7rMVwIgPaJT6c8PycZp0lH/ogMMCJzIkMGLC4xdJWp82YJLcEIzDAicyJDBi42ObUTGgzTtNs21gQGOBE5kQGDNYfyUNR13WdxxEEBjiROZEBgxfruX4xDGv5JVlniMAAJzInMoD/Fw9us9vfaj4kDztFYIATmRMZwN/8mjwY9aGu8riBwAAnMicygDkxM/qfZDOOZU3yeJlRRmCAE5kTGcBXxBqv94ZhKe+TNYUIDHAicyIDWOhzcfxmGO71Wx4nEBjgROZEBrCE2KnOWrm7fUh28kNggBOZExnAg8WOdWeG4S/Okp0QERjgROZEBrCy996b//Ke7LZeBAY4kTmRATTw3jz0WeYP3pPpg9F0arOYTr5wo5FBWN83xfFy4CcyMxdA27wujrcD/H3HOji3qi7gulVgIDCcyJzIAFbxtDi+S8O40yK2B49ZC5tsCAyBgcBwInMiA9igg+L4vjiOe/x7vEzls4fGXm6BITAQGE5kTmQAWzjdpXKW+VUPf2+nqZxNdiEmMAQGAsOJzIkMYMsep3Ld3GEPfi/xMNNY/3buZRUYAgOB4UTmRAaww1NfKj8AirVzXbylNW5RjbVv8YGPiy+BITAQGE5kTmQALbFfHG+K43l+r279NXEqtwT/vThuvHwCQ2AgMHAiA2inWDsXHwS9aOn7c7wff0zlBz3WvgkMgYHAwIkMoCP28ntzfBDUhltb49bUs/yefOvlERgCA4GBExlAd50Ux7NUbj++v8X/bswYx/bfn4rjwssgMASGF0pg4EQG0D9HxfEkv1fHFuR7Df7a8YHOZX4P/lIcV4ZbYCAwBAZOZADDcpDfqw/zjw/ye3Uco7n37XjfneavcYzzcZ3fg92KKjAQGAIDJzIAEBgIDAAAoFMeGQIAAEBgAAAAAgMAABAYAAAAAgMAABAYAACAwAAAAAQGAACAwAAAAAQGAAAgMAAAAAQGAAAgMAAAAIEBAAAIDAAAAIEBAAAIDAAAQGAAAAAIDAAAQGAAAAACAwAAEBgAAAACAwAAEBgAAIDAAAAAEBgAAIDAAAAABAYAACAwAAAABAYAACAwAAAAgQEAACAwAAAAgQEAAAgMAABAYAAAAAgMAABAYAAAAAIDAABAYAAAAAIDAAAQGAAAgMAAAAAQGAAAgMAAAAAEBgAAgMAAAAAEBgAAIDAAAACBAQAAIDAAAACBAQAACAwAAEBgAAAACAwAAEBgAAAAAgMAAEBgAAAAAgMAABAYAACAwAAAABAYAACAwAAAAAQGAACAwAAAAAQGAAAgMAAAAIEBAAAgMAAAAIEBAAAIDAAAAIEBAAAIDAAAQGAAAAACAwAAYFX/J8AAtmecbLQrySgAAAAASUVORK5CYII=\"","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { FullScreen, useFullScreenHandle } from 'react-full-screen';\nimport { Button, Container, Image } from 'react-bootstrap';\n\nimport Accessories from 'components/Accessories';\nimport Packages from 'components/Packages';\nimport AssemblySliderSelectors from 'components/AssemblySliderSelectors';\nimport LocalizedLink from 'components/LocalizedLink';\nimport RewindButton from 'components/RewindButton';\nimport BottomBar from 'components/BottomBar';\nimport { PackagesModal } from 'components/modals';\nimport LoadingSpinner from 'components/LoadingSpinner';\nimport Price from 'components/Price';\nimport NotFound from 'components/NotFound';\nimport ThreeSixty from 'components/360Viewer/index';\n\nimport { getActiveInteriorPicture } from 'utils/dataUtils';\nimport { setColor, setInterior, setWheels, updateAccessories, updateExtraPackages } from 'store/entities/config';\nimport { setCompatibilityData, setErrorData } from 'store/entities/data';\n\nimport useLocale from 'hooks/useLocale';\nimport useBreakPoints from 'hooks/useBreakPoints';\n\nimport { ReactComponent as FullscreenIco } from 'assets/images/icons/Fullscreen.svg';\nimport { ReactComponent as CloseFullscreenIco } from 'assets/images/icons/ExitFullscreen.svg';\nimport { ReactComponent as ArrowRight } from 'assets/images/icons/ArrowRight.svg';\nimport PlaceholderCar from 'assets/images/placeholder-car.png';\n\nimport { useSpecificationDataRequest, useCompatibilityDataRequest } from 'api/requests';\n\nconst Assemble = () => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const locale = useLocale();\n\n const [option, setOption] = React.useState(null);\n const [resolve, setResolve] = React.useState(null);\n const [pictures, setPictures] = React.useState([]);\n\n const { model, specification, colorCode, interior, wheels, extraPackages, accessories } = useSelector(state => state.config);\n const { builderData, errorData } = useSelector(state => state.data);\n const { selectedTab } = useSelector(state => state.app);\n\n const ENV = window.ENV[window.location.hostname] || window.ENV.default;\n\n const handleFullScreen = useFullScreenHandle();\n const { isSmallerThanLg } = useBreakPoints();\n\n const packagesData = builderData?.options || [];\n const selectedPackages = packagesData.filter(item => extraPackages.includes(item.id)).map(item => item.code);\n\n const accessoriesData = builderData?.accessories || {};\n const allAccessories = Object.keys(accessoriesData).reduce((result, key) => result.concat(accessoriesData[key]), []);\n const selectedAccessories = allAccessories.filter(item => accessories.includes(item.id)).map(item => item.code);\n\n const imageMain = builderData?.exteriors?.find(item => item.code === colorCode)?.pictures.main;\n const isInteriorTab = selectedTab === 'interiors';\n\n const resolveConfirm = () => {\n let resolvedPackages = [...extraPackages];\n let resolvedAccessories = [...accessories];\n const equipment = {\n 'options': packagesData,\n 'accessories': allAccessories\n };\n const apperance = {\n 'exteriors': {\n value: colorCode,\n code: builderData.default.colorCode\n },\n 'interiors': {\n value: interior,\n code: builderData.default.interior\n },\n 'wheels': {\n value: wheels,\n code: builderData.default.wheels\n }\n };\n const updateArray = (array, el, remove) => {\n if (remove) {\n const index = array.indexOf(el);\n if (~index) array.splice(index, 1);\n } else {\n array.push(el);\n }\n };\n const updateOptions = (type, item, remove) => {\n switch (type) {\n case 'options':\n updateArray(resolvedPackages, item.id, remove);\n break;\n case 'accessories':\n updateArray(resolvedAccessories, item.id, remove);\n break;\n case 'exteriors':\n dispatch(setColor(item.code));\n break;\n case 'wheels':\n dispatch(setWheels(item.code));\n break;\n case 'interiors':\n dispatch(setInterior(item.code));\n break;\n }\n };\n resolve.incompatibleOptions?.forEach(set => // remove conflict options\n set.forEach(item => {\n Object.keys(equipment).forEach(type => updateOptions(type, item, true));\n Object.keys(apperance).forEach(type => {\n if (type !== option.type && apperance[type].value === item.code) updateOptions(type, apperance[type]);\n });\n })\n );\n resolve.requiredOptions?.forEach(set => // add additional options\n set.forEach(item => {\n Object.keys(apperance).forEach(type => {\n if (builderData[type].some(el => el.code === item.code)) updateOptions(type, item);\n });\n Object.keys(equipment).forEach(type => {\n if (equipment[type].some(el => el.id === item.id)) updateOptions(type, item);\n });\n })\n );\n updateOptions(option.type, resolve.option, option.check);\n dispatch(updateAccessories(resolvedAccessories));\n dispatch(updateExtraPackages(resolvedPackages));\n dispatch(setCompatibilityData(resolve));\n setOption(null);\n setResolve(null);\n };\n\n const resolveCancel = () => {\n setOption(null);\n setResolve(null);\n };\n\n const dataSpecification = useSpecificationDataRequest({\n params: {\n specification,\n params: {\n brand: ENV.BRAND_NAME,\n [option?.check ? 'remove' : 'add']: option?.code,\n 'options.code': [\n colorCode,\n //interior,\n wheels\n ].filter(item => item),\n language: locale\n }\n },\n config: {\n enabled: false,\n },\n success: (result) => {\n const pics = result.data.exterior.pictures['360'] || [];\n setPictures(pics);\n },\n error: (error) => {\n console.log('Specification error: ', error.message);\n }\n });\n\n const dataCompatibility = useCompatibilityDataRequest({\n params: {\n specification,\n params: {\n brand: ENV.BRAND_NAME,\n [option?.check ? 'remove' : 'add']: option?.code,\n 'options.code': [\n ...selectedPackages,\n ...selectedAccessories,\n colorCode,\n interior,\n wheels\n ].filter(item => item),\n language: locale\n }\n },\n config: {\n enabled: false,\n },\n success: (result) => {\n if (result.data?.requiredOptions || result.data?.incompatibleOptions) result.data.resolve = true; // need confirmation for resolving\n setResolve(result.data);\n },\n error: (error) => {\n console.log('Compatibility error: ', error.message);\n }\n });\n\n React.useEffect(() => {\n if (resolve && !resolve.resolve) resolveConfirm();\n }, [resolve]);\n\n React.useEffect(() => {\n if (option) dataCompatibility.refetch();\n }, [option]);\n\n React.useEffect(() => {\n if (!!colorCode) dataSpecification.refetch();\n }, [colorCode, wheels]);\n\n React.useEffect(() => {\n dispatch(setErrorData(!specification ? {\n type: 'model',\n message: 'Model ID or model CODE is missing',\n redirect: '/'\n } : {}));\n }, [specification]);\n\n const packagesModalProps = {\n show: resolve?.resolve,\n data: resolve,\n target: option,\n onConfirm: resolveConfirm,\n onCancel: resolveCancel\n };\n\n const threeSixtyProps = {\n buttonClass: 'button',\n amount: pictures.length,\n autoplay: true,\n spinReverse: true,\n key: pictures,\n images: pictures\n };\n\n const isThreeSixtyShow = pictures.length && !dataSpecification.isFetching;\n\n return (<>\n {dataCompatibility.isFetching && (\n \n )}\n {!errorData?.type ? (<>\n {builderData.eic ? (<>\n
    \n \n \n
    \n

    {builderData.model?.name}

    \n

    {builderData.name}

    \n

    \n {t('price')}\n \n

    \n

    \n \n

    \n
    \n {!isSmallerThanLg && (\n

    \n {handleFullScreen.active ? (\n \n ) : (\n \n )}\n

    \n )}\n
    \n {isInteriorTab || !isThreeSixtyShow ? (\n
    \n \n
    \n ) : (\n \n )}\n
    \n
    \n \n \n \n
    \n
    \n
    \n \n \n \n \n
    \n \n {t('summary_button')}\n \n \n }/>\n \n ) : (\n \n )}\n ) : (\n \n )}\n );\n};\n\nexport default Assemble;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { renderToString } from 'react-dom/server';\n\nimport { Form, Button } from 'react-bootstrap';\n\nimport Price from 'components/Price';\nimport { ReactComponent as Info } from 'assets/images/icons/Info.svg';\n\nexport const CarPartCard = ({ engineData, bodyData, onSelect, onDetails, buttonText }) => {\n const { t } = useTranslation();\n const { body, specification } = useSelector(state => state.config);\n\n const data = engineData || bodyData || {};\n const eic = data.eic;\n const id = data.id;\n const title = data.name;\n const price = data.price;\n const info = data.style;\n const doors = data.doors;\n const seats = data.seats;\n\n const badge = ['hybrid', 'electric'].filter(item => data.type?.toLowerCase().includes(item))[0];\n const isActive = React.useMemo(() => eic ? eic === specification : id === body, [body, specification, data]);\n\n const handleSelect = () => {\n const firstEngine = data.engines?.[0];\n const engineEic = firstEngine?.eic || null;\n const engineId = engineEic && engineEic !== specification ? firstEngine.id : null;\n eic ? onSelect(id, eic) : onSelect(id, engineId, engineEic);\n };\n\n const buttonProps = {\n id: `carpart-${id}`,\n className: 'c-engine__check',\n type: 'radio',\n onChange: handleSelect,\n checked: isActive,\n label: t(buttonText)\n };\n\n return (\n \n
    \n

    {title}

    \n
    \n
    \n {price && (\n

    \n \n \n {t('starting_price', { price: renderToString() })}\n \n {/*\n \n */}\n \n

    \n )}\n {info && (\n

    {info}

    \n )}\n
      \n
    • \n {data.type && (\n
      \n \n {data.type}\n
      \n )}\n {typeof doors !== 'undefined' && (\n
      \n {doors}\n Doors\n
      \n )}\n
    • \n
    • \n {data.transmission && (\n
      \n \n {data.transmission}\n
      \n )}\n {typeof seats !== 'undefined' && (\n
      \n {seats}\n Seats\n
      \n )}\n
    • \n
    \n

    \n \n

    \n
    \n
    \n \n
    \n
    \n );\n};\n","import { useTranslation } from 'react-i18next';\nimport { renderToString } from 'react-dom/server';\n\nimport { Button } from 'react-bootstrap';\n\nimport Price from 'components/Price';\n\nexport const GradeCard = ({ gradeData, onSelect }) => {\n const { t } = useTranslation();\n const { grade, model, body, engine, price } = gradeData;\n\n const gradeId = grade?.id;\n const gradeName = grade?.name || '';\n const gradeImg = model?.pictures?.main;\n const bodyName = body?.name || '';\n const engineType = engine?.type || '';\n\n const badge = ['hybrid', 'electric'].filter(item => engineType.toLowerCase().includes(item))[0];\n\n return (\n
    \n
    \n {gradeName}\n
    \n
    \n

    {gradeName}

    \n \n {engineType}\n \n

    \n \n {t('starting_price', {\n price: renderToString()\n })}\n \n

    \n
    \n
    \n

    {bodyName}

    \n

    \n \n

    \n
    \n
    \n );\n};\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { Container, Image, Button } from 'react-bootstrap';\nimport { Swiper, SwiperSlide } from 'swiper/react/swiper-react';\nimport { Navigation, Pagination, Mousewheel, Keyboard } from 'swiper';\n\nimport useLocale from 'hooks/useLocale';\n\nimport { setBuilderData, setRawBuilderData, setErrorData } from 'store/entities/data';\nimport { setConfig, setBody, setEngine, setSpecification } from 'store/entities/config';\n\nimport { CarPartCard } from 'components/Cards';\nimport { TechDataModal } from 'components/modals';\n\nimport LocalizedLink from 'components/LocalizedLink';\nimport RewindButton from 'components/RewindButton';\nimport BottomBar from 'components/BottomBar';\nimport Price from 'components/Price';\n\nimport LoadingSpinner from 'components/LoadingSpinner';\nimport NotFound from 'components/NotFound';\n\nimport PlaceholderCar from 'assets/images/placeholder-car.png';\nimport { ReactComponent as ArrowLeft } from 'assets/images/icons/ArrowLeft.svg';\nimport { ReactComponent as ArrowRight } from 'assets/images/icons/ArrowRight.svg';\n\nimport { useBuilderDataRequest } from 'api/requests';\n\nconst CarPartSelection = () => {\n const { t } = useTranslation();\n const locale = useLocale();\n const dispatch = useDispatch();\n\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const [modalType, setModalType] = React.useState('equipment');\n\n const { model, specification, body } = useSelector(state => state.config);\n const { builderData, bodyData, errorData } = useSelector(state => state.data);\n\n const ENV = window.ENV[window.location.hostname] || window.ENV.default;\n\n const image = builderData.pictures?.main || builderData.exteriors?.[0]?.pictures?.main || PlaceholderCar;\n\n const engines = bodyData[body]?.engines || [];\n const bodies = Object.keys(bodyData || {});\n\n const handleSelectEngine = (engineId, eic) => {\n dispatch(setEngine(engineId));\n dispatch(setSpecification(eic));\n };\n\n const handleSelectBody = (bodyId, engineId, eic) => {\n dispatch(setBody(bodyId));\n if (engineId || eic) handleSelectEngine(engineId, eic);\n };\n\n const handleModal = (type) => {\n setModalType(type);\n setIsModalOpen(true);\n };\n\n const dataBuilder = useBuilderDataRequest({\n params: {\n specification,\n params: {\n brand: ENV.BRAND_NAME,\n language: locale\n }\n },\n config: {\n enabled: false,\n },\n success: (result) => {\n dispatch(setBuilderData(result.data));\n dispatch(setRawBuilderData(result.data));\n dispatch(setConfig(result.data.default));\n dispatch(setErrorData({}));\n },\n error: (error) => {\n dispatch(setErrorData({\n type: 'builder-data',\n message: error.message,\n refetch: true\n }));\n }\n });\n\n React.useEffect(() => {\n specification ? dataBuilder.refetch() : dispatch(setErrorData({\n type: 'model',\n message: 'Model ID or model CODE is missing',\n redirect: '/'\n }));\n }, [specification]);\n\n const swiperProps = {\n className: 'card-swiper carpart-swiper',\n cssMode: true,\n slidesPerView: 'auto',\n navigation: {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n },\n pagination: {\n clickable: true,\n },\n mousewheel: true,\n keyboard: true,\n modules: [Navigation, Pagination, Mousewheel, Keyboard]\n };\n\n return (<>\n {dataBuilder.isFetching && (\n \n )}\n {!errorData?.type ? (<>\n {builderData.eic && (\n
    \n
    \n \n
    \n

    {builderData.name}

    \n

    \n {t('price')}\n \n

    \n

    \n \n

    \n
    \n
    \n
    {t('equipment')}
    \n
      \n {builderData.equipment?.slice(0, 4).map(item => (\n
    • {item.name}
    • \n ))}\n
    \n

    \n \n

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n )}\n
    \n \n {bodies.length > 1 && (<>\n

    {t('choose_body')}

    \n \n {bodies.map(key => (\n \n handleModal('techdata')}\n buttonText=\"choose_body_button\"\n />\n \n ))}\n \n \n \n )}\n

    {t('choose_engine')}

    \n {engines.length ? (\n \n {engines.map((engine, index) => (\n \n handleModal('techdata')}\n buttonText=\"choose_engine_button\"\n />\n \n ))}\n \n \n \n ) : (\n
    No engines found
    \n )}\n
    \n
    \n \n {t('continue_button')}\n \n \n }/>\n setIsModalOpen(false)} type={modalType} />\n ) : (\n \n )}\n );\n};\n\nexport default CarPartSelection;\n","import { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Button } from 'react-bootstrap';\n\nimport { setModalState } from 'store/entities/app';\nimport useTotalPrice from 'hooks/useTotalPrice';\n\nimport Price from 'components/Price';\n\nconst StickyAside = () => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n\n const { builderData } = useSelector(state => state.data);\n const totalPrice = useTotalPrice();\n\n return (\n \n );\n};\n\nexport default StickyAside;\n","import { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { Accordion, Badge } from 'react-bootstrap';\n\nimport AccessoriesCategory from 'components/Accessories/AccessoriesCategory';\n\nconst SelectedAccessories = () => {\n const { t } = useTranslation();\n const { accessories } = useSelector(state => state.config);\n const { builderData } = useSelector(state => state.data);\n\n const { accessories: options } = builderData || {};\n\n if (!accessories.length) return null;\n\n return (\n \n \n {t('selected_accessories')}\n {accessories.length}\n \n \n {Object.keys(options).map(category => (\n \n ))}\n \n \n );\n};\n\nexport default SelectedAccessories;\n","import { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { Accordion, ListGroup, Badge } from 'react-bootstrap';\n\nimport Price from 'components/Price';\n\nconst SelectedPackages = () => {\n const { t } = useTranslation();\n const { extraPackages } = useSelector(state => state.config);\n const { builderData } = useSelector(state => state.data);\n\n const packages = (builderData.options || []).filter(option => extraPackages.includes(option.id));\n\n if (!extraPackages.length) return null;\n\n return (\n \n \n {t('selected_packages')}\n {extraPackages.length}\n \n \n \n {packages.map(item => \n \n {item.name}\n \n \n )}\n \n \n \n );\n};\n\nexport default SelectedPackages;\n","import { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport { Accordion, Image } from 'react-bootstrap';\n\nconst TireLabels = () => {\n const { t } = useTranslation();\n \n const { tireLabelsData } = useSelector(state => state.data);\n\n return !tireLabelsData.length ? null : (\n \n \n {t('tire_labels_title')}\n \n \n
    {t('tire_labels_text')}
    \n \n
    \n
    \n );\n};\n\nexport default TireLabels;\n","import { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport { Accordion, ListGroup, Badge } from 'react-bootstrap';\n\nconst TechData = () => {\n const { t } = useTranslation();\n\n const { builderData } = useSelector(state => state.data);\n const { techdata } = builderData;\n\n const techdataCount = [].concat(...Object.values(techdata || {})).length;\n\n return !techdata ? null : (\n \n \n {t('technical_spec')}\n {techdataCount}\n \n \n {Object.keys(techdata).map(category => (\n \n \n {category}\n \n {techdata[category].map(item => (\n \n {item.name}\n {item.value}\n \n ))}\n \n ))}\n \n \n );\n};\n\nexport default TechData;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, useDispatch } from 'react-redux';\n\nimport { Accordion, Container, Row, Col, Image, Card, ListGroup } from 'react-bootstrap';\n\nimport StickyAside from 'components/StickyAside';\nimport RewindButton from 'components/RewindButton';\nimport Price from 'components/Price';\nimport { OfferModal, PdfModal, SaveCarConfigModal } from 'components/modals';\nimport NotFound from 'components/NotFound';\n\nimport SelectedAccessories from './SelectedAccessories';\nimport SelectedPackages from './SelectedPackages';\nimport TireLabels from './TireLabels';\nimport TechData from './TechData';\n\nimport useTotalPrice from 'hooks/useTotalPrice';\nimport {\n setConsentsData,\n setTireLabelsData,\n setLocationsData,\n setErrorData\n} from 'store/entities/data';\n\nimport PlaceholderCar from 'assets/images/placeholder-car.png';\n\nimport {\n useConsentsDataRequest,\n useTiresDataRequest,\n useLocationsDataRequest\n} from 'api/requests';\n\nconst Conclusion = () => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n\n const totalPrice = useTotalPrice();\n\n const { builderData, errorData } = useSelector(state => state.data);\n const { specification, colorCode, interior } = useSelector(state => state.config);\n\n const selectedExterior = builderData.exteriors?.find(item => item.code === colorCode);\n const selectedInterior = builderData.interiors?.find(item => item.code === interior);\n\n useConsentsDataRequest({\n params: {\n params: {\n limit: 100,\n isActive: true,\n }\n },\n success: (result) => {\n dispatch(setConsentsData(result.data));\n },\n error: (error) => {\n console.log('Consents error: ', error.message);\n }\n });\n\n useTiresDataRequest({\n params: {\n specification\n },\n success: (result) => {\n dispatch(setTireLabelsData(result.data));\n },\n error: (error) => {\n console.log('Tires labels error: ', error.message);\n }\n });\n\n useLocationsDataRequest({\n success: (result) => {\n dispatch(setLocationsData(result.data));\n },\n error: (error) => {\n console.log('Locations error: ', error.message);\n }\n });\n\n React.useEffect(() => {\n dispatch(setErrorData(!specification ? {\n type: 'model',\n message: 'Model ID or model CODE is missing',\n redirect: '/'\n } : {}));\n }, [specification]);\n\n return (\n !errorData?.type ? (\n builderData.eic ? (\n
    \n \n \n \n
    \n
    \n
    \n

    {builderData.model?.name}

    \n

    {builderData.name}

    \n

    \n \n

    \n
    \n
    \n
    \n \n
    \n
    \n
    {t('your_selected_accessories')}
    \n \n {selectedExterior && (\n \n {selectedExterior.name}\n \n \n )}\n {selectedInterior && (\n \n {selectedInterior.name}\n \n \n )}\n \n \n \n \n \n \n \n {t('total')}\n \n \n \n \n {t('consent_short_title')}
    \n {t('consent_short_text')}\n
    \n
    \n
    \n \n \n \n \n \n \n \n \n
    \n
    \n \n \n \n
    \n ) : (\n \n )\n ) : (\n \n )\n );\n};\n\nexport default Conclusion;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport queryString from 'query-string';\n\nimport { Container } from 'react-bootstrap';\nimport { Swiper, SwiperSlide } from 'swiper/react/swiper-react';\nimport { Navigation, Pagination, Mousewheel, Keyboard } from 'swiper';\n\nimport { setSpecificationsData, setBodyData, setErrorData } from 'store/entities/data';\nimport { setGrade } from 'store/entities/config';\nimport { resetAppState } from 'store/entities/app';\n\nimport LoadingSpinner from 'components/LoadingSpinner';\nimport NotFound from 'components/NotFound';\nimport { GradeCard } from 'components/Cards';\n\nimport { ReactComponent as ArrowLeft } from 'assets/images/icons/ArrowLeft.svg';\nimport { ReactComponent as ArrowRight } from 'assets/images/icons/ArrowRight.svg';\n\nimport { useSpecificationsDataRequest } from 'api/requests';\n\nconst GradeSelection = () => {\n const { t, i18n } = useTranslation();\n const dispatch = useDispatch();\n const navigate = useNavigate();\n const location = useLocation();\n\n const { specification } = useSelector(state => state.config);\n const { specificationsData, errorData } = useSelector(state => state.data);\n const { id: model, code } = queryString.parse(location.search);\n\n const ENV = window.ENV[window.location.hostname] || window.ENV.default;\n\n const gradesData = Object.keys(specificationsData)\n .map(key => [...specificationsData[key]]\n .sort((a, b) => a.price - b.price)[0] || null\n )\n .sort((a, b) => a.price - b.price);\n\n const selectGrade = (gradeId) => {\n const gradeData = gradesData.find(item => item.grade.id === gradeId) || {};\n const gradeConfig = {\n model: gradeData.model?.id,\n specification: gradeData.eic,\n gradeId: gradeData.grade?.id,\n body: gradeData.body?.id,\n engine: gradeData.engine?.id\n };\n dispatch(resetAppState());\n dispatch(setGrade(gradeConfig));\n dispatch(setBodyData(specificationsData[gradeConfig.gradeId]));\n };\n\n const dataSpecs = useSpecificationsDataRequest({\n params: {\n params: {\n 'brand.name': ENV.BRAND_NAME,\n 'model.id': model,\n 'model.code': code,\n isActive: true\n }\n },\n config: {\n enabled: false,\n },\n success: (result) => {\n dispatch(setSpecificationsData(result.data));\n },\n error: (error) => {\n dispatch(setErrorData({\n type: 'specifications',\n message: error.message,\n refetch: true\n }));\n }\n });\n\n React.useEffect(() => {\n (model || code) ? dataSpecs.refetch() : dispatch(setErrorData({\n type: 'model',\n message: 'Model ID or model CODE is missing',\n redirect: t('fallback_url')\n }));\n }, [model, code]);\n\n React.useEffect(() => {\n const firstGradeId = gradesData[0]?.grade?.id;\n if (!specification && firstGradeId) selectGrade(firstGradeId);\n }, [specificationsData]);\n\n const handleGradeSelect = (gradeId) => {\n if (gradeId) {\n selectGrade(gradeId);\n navigate(`/${i18n.language}/select`);\n } else {\n console.log('Missing grade ID');\n }\n };\n\n const swiperProps = {\n className: 'card-swiper',\n cssMode: true,\n slidesPerView: 'auto',\n navigation: {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n },\n pagination: {\n clickable: true,\n },\n mousewheel: true,\n keyboard: true,\n modules: [Navigation, Pagination, Mousewheel, Keyboard]\n };\n\n const noData = !dataSpecs.isFetching && !Object.keys(specificationsData).length;\n\n return (<>\n {dataSpecs.isFetching && (\n \n )}\n {!errorData?.type ? (\n
    \n \n
    {t('grade_selection_descr')}
    \n \n {gradesData.map(grade => (\n \n \n \n ))}\n \n \n \n {noData && (\n
    No cars found
    \n )}\n
    \n
    \n ) : (\n \n )}\n );\n};\n\nexport default GradeSelection;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { Container } from 'react-bootstrap';\n\nimport { setModelsData, setErrorData, resetBuilderData } from 'store/entities/data';\nimport { setGrade } from 'store/entities/config';\nimport { resetAppState } from 'store/entities/app';\n\nimport LoadingSpinner from 'components/LoadingSpinner';\nimport NotFound from 'components/NotFound';\nimport LocalizedLink from 'components/LocalizedLink';\n\nimport { useModelsDataRequest } from 'api/requests';\n\nconst ModelSelection = () => {\n const { t, i18n } = useTranslation();\n const dispatch = useDispatch();\n\n const { modelsData, errorData } = useSelector(state => state.data);\n\n const ENV = window.ENV[window.location.hostname] || window.ENV.default;\n\n const dataModels = useModelsDataRequest({\n params: {\n params: {\n brand: ENV.BRAND_NAME,\n isActive: true\n }\n },\n success: (result) => {\n dispatch(setModelsData(result.data));\n },\n error: (error) => {\n dispatch(setErrorData({\n type: 'specifications',\n message: error.message,\n refetch: true\n }));\n }\n });\n\n React.useEffect(() => {\n dispatch(resetAppState());\n dispatch(resetBuilderData());\n dispatch(setGrade({}));\n }, []);\n\n const renderModel = (data) => {\n const filteredList = data\n .filter(item => !['F16A', 'J12A', 'T33A', 'J12AEPW'].includes(item.code))\n .sort((a, b) => a.name.localeCompare(b.name));\n return filteredList.map(model => (\n \n
    \n {model.name}\n
    \n
    \n

    {model.name}

    \n
    \n
    \n ));\n };\n\n const noData = !dataModels.isFetching && !Object.keys(modelsData).length;\n\n return (<>\n {dataModels.isFetching && (\n \n )}\n {!errorData?.type ? (\n
    \n \n
    {t('model_selection_descr')}
    \n
    \n {renderModel(modelsData)}\n
    \n {noData && (\n
    No cars found
    \n )}\n
    \n
    \n ) : (\n \n )}\n );\n};\n\nexport default ModelSelection;\n","import { Col, Placeholder } from 'react-bootstrap';\n\nconst ConfigLoadingPlaceholder = () => (\n \n \n \n \n \n \n \n);\n\nexport default ConfigLoadingPlaceholder;\n","import { Col } from 'react-bootstrap';\n\nconst ConfigFailedLoading = () => (\n \n

    Error 404

    \n

    Config not found

    \n \n);\n\nexport default ConfigFailedLoading;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch } from 'react-redux';\nimport { useLocation, useNavigate } from 'react-router';\nimport queryString from 'query-string';\n\nimport { Container, Row } from 'react-bootstrap';\n\nimport ConfigLoadingPlaceholder from 'views/Config/ConfigLoadingPlaceholder';\nimport ConfigFailedLoading from 'views/Config/ConfigFailedLoading';\nimport LoadingSpinner from 'components/LoadingSpinner';\n\nimport useLocale from 'hooks/useLocale';\nimport { setConfig } from 'store/entities/config';\nimport { setBuilderData } from 'store/entities/data';\nimport { useBuilderDataRequest, useConfigDataRequest } from 'api/requests';\n\nconst Config = () => {\n const { i18n } = useTranslation();\n const locale = useLocale();\n const location = useLocation();\n const dispatch = useDispatch();\n const navigate = useNavigate();\n\n const [isConfigLoading, setIsConfigLoading] = React.useState(true);\n const [fetchedConfig, setFetchedConfig] = React.useState(null);\n\n const ENV = window.ENV[window.location.hostname] || window.ENV.default;\n\n const { id } = queryString.parse(location.search);\n\n const dataBuilder = useBuilderDataRequest({\n params: {\n specification: fetchedConfig.specification,\n params: {\n brand: ENV.BRAND_NAME,\n language: locale,\n 'options.code': [\n fetchedConfig.colorCode,\n fetchedConfig.wheels,\n ],\n }\n },\n config: {\n enabled: false,\n },\n success: (result) => {\n saveBuilderData(result.data);\n },\n error: (error) => {\n setIsConfigLoading(false)\n }\n });\n\n const dataConfig = useConfigDataRequest({\n params: {\n id\n },\n config: {\n enabled: false,\n },\n success: (result) => {\n saveSpecification(result);\n },\n error: (error) => {\n setIsConfigLoading(false)\n }\n });\n\n React.useEffect(() => {\n if (fetchedConfig) dataBuilder.refetch();\n }, [fetchedConfig]);\n\n React.useEffect(() => {\n if (id) dataConfig.refetch();\n }, [id]);\n\n const saveBuilderData = (data) => {\n dispatch(setBuilderData(data));\n navigate(`/${i18n.language}/conclusion`);\n };\n\n const saveSpecification = (result) => {\n if (!result.data) return;\n const { config } = result.data;\n dispatch(setConfig(config));\n setFetchedConfig(config);\n };\n\n return (<>\n {isConfigLoading && (\n \n )}\n \n \n {isConfigLoading ? (\n \n ) : (\n \n )}\n \n \n );\n};\n\nexport default Config;\n","import { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport default function ScrollToTop() {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n return null;\n}","import { BrowserRouter, Route, Routes } from 'react-router-dom';\nimport { Navigate } from 'react-router';\n\nimport NavBar from 'components/NavBar';\nimport Footer from 'components/Footer';\n\nimport Assemble from 'views/Assemble';\nimport CarPartSelection from 'views/CarPartSelection';\nimport Conclusion from 'views/Conclusion';\nimport GradeSelection from 'views/GradeSelection';\nimport ModelSelection from 'views/ModelSelection';\nimport Config from 'views/Config';\n\nimport ScrollToTop from 'utils/scrollToTop';\n\nconst Router = () => (\n \n \n \n \n } />\n } />\n } />\n } />\n } />\n } />\n } />\n \n