{"version":3,"sources":["../countryArray.tsx","../imageArray.tsx","assets/gifs/waitingroom/ktm/gif.gif","assets/gifs/waitingroom/hqv/loading.gif","assets/gifs/waitingroom/gg/loading.gif","assets/gifs/waitingroom/ktm/rotation.gif","assets/gifs/waitingroom/hqv/rotate.gif","assets/gifs/waitingroom/gg/rotate.gif","assets/gifs/waitingroom/ktm/ktm_rotate_finger.gif","assets/gifs/waitingroom/hqv/hqv_rotate_finger.gif","assets/gifs/waitingroom/gg/gg_rotate_finger.gif","assets/gifs/waitingroom/ktm/zooming.gif","assets/gifs/waitingroom/hqv/zoom.gif","assets/gifs/waitingroom/gg/zoom.gif","assets/gifs/waitingroom/ktm/ktm_zoom_finger.gif","assets/gifs/waitingroom/hqv/hqv_zoom_finger.gif","assets/gifs/waitingroom/gg/gg_zoom_finger.gif","assets/gifs/waitingroom/ktm/focusing.gif","assets/gifs/waitingroom/hqv/focus.gif","assets/gifs/waitingroom/gg/focus.gif","assets/gifs/waitingroom/ktm/ktm_focus_finger.gif","assets/gifs/waitingroom/hqv/hqv_focus_finger.gif","assets/gifs/waitingroom/gg/gg_focus_finger.gif","redux/actions.tsx","redux/selectors.tsx","utils/addReduxProps.tsx","assets/icons/show_full_image.tsx","redux/reducers/setups.tsx","redux/reducers/parts.tsx","enums/dialogTypes.tsx","redux/reducers/modals.tsx","redux/reducers/vehicleOverview.tsx","redux/reducers/load.tsx","redux/reducers/models.tsx","redux/reducers/configuration.tsx","redux/reducers/toast.tsx","redux/reducers/views.tsx","redux/reducers/userGuidance.tsx","redux/reducers/currentCountry.tsx","assets/icons/hqv_logo.tsx","assets/icons/ktm_logo.tsx","assets/icons/gg_logo.tsx","redux/reducers/applicationSettings.tsx","redux/reducers/preselectedVariationCode.tsx","redux/reducers/index.tsx","utils/helpers.tsx","redux/store.tsx","components/navigation/copyright.tsx","services/http/index.tsx","components/vehicle-overview/VehicleRenderer.tsx","assets/icons/arrowHead_ktm.tsx","assets/icons/arrowHead_hqv.tsx","assets/icons/arrowHead.tsx","components/vehicle-overview/VehicleImage.tsx","assets/icons/arrow_ktm.tsx","assets/icons/arrow_hqv.tsx","assets/icons/arrow_gg.tsx","assets/icons/arrow.tsx","assets/icons/country.tsx","components/navigation/Footer.tsx","components/preview/PreviewView.tsx","assets/icons/sound_on.tsx","assets/icons/sound_off.tsx","assets/icons/pdf.tsx","services/http/real.tsx","i18n.ts","assets/icons/wheel.tsx","components/sandbox/sandbox.tsx","utils/formatter.tsx","assets/icons/dot.tsx","components/vehicle-overview/colorSelection.tsx","components/vehicle-overview/VehicleSummary.tsx","assets/icons/close_ktm.tsx","assets/icons/close_hqv.tsx","assets/icons/close.tsx","assets/icons/minus_ktm3D.tsx","assets/icons/minus_hqv3D.tsx","assets/icons/minus_gg3D.tsx","assets/icons/minus3D.tsx","assets/icons/plus_ktm3D.tsx","assets/icons/plus_hqv3D.tsx","assets/icons/plus_gg3D.tsx","assets/icons/plus3D.tsx","components/dialogs/conflictingParts.tsx","redux/async-actions/addPart.ts","redux/async-actions/removePart.ts","utils/partsHelpers.tsx","components/parts/PartDetailDialog.tsx","enums/transitionStates.tsx","components/vehicle-overview/VehicleOverview.tsx","components/shared/CategoryName.tsx","assets/icons/minus_ktm.tsx","assets/icons/minus_hqv.tsx","assets/icons/minus_gg.tsx","assets/icons/minus.tsx","assets/icons/plus_ktm.tsx","assets/icons/plus_hqv.tsx","assets/icons/plus_gg.tsx","assets/icons/plus.tsx","components/parts/Part.tsx","components/parts/PartsList.tsx","components/categories/CategoryList.tsx","assets/icons/share.tsx","assets/icons/send.tsx","components/configuration/configurationSummary/ConfigurationSummaryHeader.tsx","assets/icons/save_3d_ktm.tsx","components/configuration/cdc/CdcLogin.tsx","components/configuration/technicalDetails.tsx","components/configuration/configurationSummary/ConfigurationSummary.tsx","redux/async-actions/getOverview.ts","lib/streaming/core.ts","components/configuration/financePlugin/financePlugin.tsx","assets/icons/menu_hqv.tsx","assets/icons/menu_ktm.tsx","assets/icons/menu.tsx","lib/streaming/commands.ts","components/configuration/updateConfiguration.tsx","lib/hooks/useInterval.jsx","components/configuration/3DRendering/rendering3D.tsx","assets/icons/xbow/add_custom_color.tsx","components/configuration/colorSelection/colorSlider.tsx","components/configuration/colorSelection/xBowColorFinishSelection.tsx","components/configuration/colorSelection/XBowCustomColorHexCode.tsx","components/configuration/colorSelection/XBowColorSelectorComponent.tsx","components/configuration/colorSelection/xBowColors.tsx","components/categories/CategoryContainer.tsx","assets/icons/movie.tsx","assets/icons/mountain.tsx","assets/icons/video_cam.tsx","assets/icons/daytime.tsx","assets/icons/moon.tsx","assets/icons/sun.tsx","assets/icons/xbow/xBow.tsx","components/configuration/3Dtools/tools.tsx","components/shared/BrandLogo.tsx","components/shared/Header.tsx","assets/icons/waitingroom/bar-item-devider.tsx","assets/icons/waitingroom/rotate.tsx","assets/icons/waitingroom/zoom.tsx","assets/icons/waitingroom/focus.tsx","lib/hooks/useWaitingroom.tsx","components/configuration/3DRendering/waitingRoom.tsx","assets/icons/screenshot_ktm.tsx","components/configuration/bottomSection/technicalDetails.tsx","components/configuration/selectedPartsList/SelectedPartsList.tsx","components/configuration/configurationOverview3D.tsx","assets/icons/check_ok.tsx","components/configuration/configurationSummary/ConfigurationCompletion.tsx","components/configuration/ConfigurationView3D.tsx","assets/icons/finance.tsx","components/configuration/ConfigurationOverviewMenu.tsx","components/configuration/cdc/CdcLoginContainer.tsx","components/configuration/ConfigurationView.tsx","assets/icons/3d/indicator3d_ktm.tsx","assets/icons/3d/indicator3d_default.tsx","assets/icons/3d/indicator3d.tsx","components/main/motorcycles/MotorcycleMenu.tsx","components/main/motorcycles/Models.tsx","components/main/motorcycles/MotorcycleView.tsx","components/main/overview/Overview.tsx","redux/async-actions/getModels.ts","utils/FormManager.ts","components/shared/FadeInLetters.tsx","components/dialogs/setupParts.tsx","components/dialogs/warnBeforeExit.tsx","components/dialogs/deleteConfiguration.tsx","components/dialogs/removeConflictingParts.tsx","components/dialogs/saveConfiguration.tsx","components/dialogs/savedConfiguration.tsx","assets/icons/hand.tsx","components/dialogs/UserGuidance.tsx","components/dialogs/exportConfiguration.tsx","components/dialogs/shareConfiguration.tsx","components/shared/DotsLoader.tsx","components/dialogs/sendConfiguration.tsx","assets/icons/map_pin.tsx","assets/icons/pin_circle.tsx","assets/icons/pin.tsx","assets/icons/user.tsx","components/dialogs/dialogHeaderWithLogo.tsx","components/dialogs/sendConfigurationToDealer.tsx","components/dialogs/languageSelection.tsx","components/dialogs/dialogRouter.tsx","components/main/MainView.tsx","redux/async-actions/loadConfiguration.ts","utils/RestrictedRoute.tsx","App.tsx","redux/async-actions/getRuntimeConfiguration.ts","serviceWorker.ts","index.tsx","redux/actionTypes.tsx"],"names":["exports","initialState","currentCountryArray","default","state","action","type","actionTypes_1","SET_COUNTY_ARRAY","__assign","payload","currentImageArray","SET_IMAGE_ARRAY","module","__webpack_require__","p","exitVehicleConfiguration","EXIT_VEHICLE_CONFIGURATION","addVehicleOverview","ADD_VEHICLE_OVERVIEW","showDialog","_ref","contentType","data","title","shareType","SHOW_MODAL","setRuntimeConfiguration","SET_RUNTIME_CONFIGURATION","hideDialog","HIDE_MODAL","setImageArray","addMotorcycleModels","ADD_MOTORYCLE_MODELS","addPrice","SET_PRICE","setImageTimestamp","SET_IMAGE_TIMESTAMP","setConfigurationImages","SET_CONFIGURATION_IMAGES","setConfigurationIsDirty","SET_CONFIGURATION_IS_DIRTY","applyParts","APPLY_PARTS","noConflictingParts","SET_NO_CONFLICTING_PARTS","removeNoConflictingParts","SET_REMOVE_NO_CONFLICTING_PARTS","selectSetup","SELECT_SETUP","showToast","SHOW_TOAST","hideToast","HIDE_TOAST","preserveSaveDetailsData","PRESERVE_SAVE_DETAILS_DATA","getApplicationSettings","store","applicationSettings","getAllSetups","vehicleOverviewState","Setups","getAppliedSetup","setups","applied","getSelectedSetup","selected","getDialogState","dialog","getUserGuidanceState","userGuidance","getPerspective","configurationState","perspective","getConfigurationState","getConfiguration","configuration","getPrice","price","getImageTimeStamp","imageTimestamp","getPreservedSaveDetailsDataSelector","preservableSaveDetails","getConfigurationWasRecentlyCreatedSelector","wasRecentlyCreated","getIS3DMode","is3DMode","getIsXbow","isXBow","getCdcSettings","cdcSettings","getDealerInquirySent","dealerInquirySent","getUserDidTimeoutInStream","userDidTimeoutInStream","getDealerInquiryDialogOpen","dealerInquiryDialogOpen","getVehicleVariation","currentVariation","getCurrentCountry","currentCountry","getCountryArray","countryArray","getImageArray","imageArray","getMotorcycleModels","modelsResponse","getSelectedModel","Vehicle","getOverview","getCategories","Categories","getConfiguredPartsCount","parts","length","getSelectedPart","getAllParts","Parts","getAppliedParts","getToastState","toast","getCulture","culture","getMarket","market","getViews","views","getPreselectedVariationCode","preselectedVariationCode","mapStateToProps","appliedParts","dialogState","userGuidanceState","models","selectedModel","categories","selectedPart","appliedSetup","selectedSetup","country","totalPrice","overview","mapDispatchToProps","showGuidance","SHOW_GUIDANCE","hideGuidance","HIDE_GUIDANCE","setPerspective","SET_PERSPECTIVE","selectPart","SELECT_PART","deselectPart","DESELECT_PART","applySetup","APPLY_SETUP","removeAllParts","REMOVE_ALL_PARTS","addCreatedConfiguration","SET_CREATED_CONFIGURATION","setConfigurationId","SET_CONFIGURATION_ID","setVehicleVariation","SET_VEHICLE_VARIATION","togglePartDetail","TOGGLE_PART_DETAIL","toggleSummary","TOGGLE_CONFIG_SUMMARY","setCurrentCountry","SET_CURRENT_COUNTRY","setCountryArray","setPreselectedVariationCode","SET_PRESELECTED_VARIATION_CODE","setIs3DMode","SET_IS3D_MODE","setIsXBow","SET_IS_XBOW","setCdcSettings","SET_CDC_SETTINGS","setDealerInquirySent","DEALER_INQUIRY_SENT","setUserDidTimeoutInStream","USER_DID_TIMEOUT_IN_STREAM","setDealerInquiryDialogOpen","DEALER_INQUIRY_DIALOG_OPEN","ShowFullImage","react_default","a","createElement","SvgIcon_default","viewBox","d","transform","undefined","SetupsReducer","arguments","Object","objectSpread","DialogTypes","PartsReducer","State","partIds","filter","part","indexOf","PartId","uniqBy","toConsumableArray","isOpen","none","DialogReducer","_action$payload","vehicleInitialState","Name","ModelId","EngineType","Hero","Intro","Title","ImageUrl","Description","Price","CurrencySymbol","Value","RenderingEngine","FastFacts","Variations","Code","ColorCode","PriceNote","MontageNote","Attributes","ProductCode","Key","ClassificationCategory","Values","Finance","FinanceData","Variation","Desciption","Available","FinanceConfiguration","FinanceServiceUrl","RenderSettings","Data","Command","Sound","Enabled","Reset","AppSettings","ENV","KEY","URL","PowerParts","List","Category","Id","Camera","Tools","Views","Animations","Cinematics","Environments","Perspectives","Tiltshift","Lighting","CommandInitial","CommandSlider","ValueInitial","ValueFrom","ValueTo","Options","ColorSelection","CommandIndividual","PreDefined","BodyColor","BrakeCaliperColor","RimColor","ContrastStitchingColor","SuspensionSpringAndLogoColor","FinishOptions","getCategoryInformation","reduce","acc","current","includes","CategoryName","concat","sort","VehicleOverviewReducer","PartIds","Segments","ShowPricesInConfigurator","ShowOfferButton","MotorcycleReducer","initialConfigurationState","process","companyId","customer","name","surname","email","comment","entryPointUrl","categoryScrollPosition","isDirty","Vin","OrderNumber","Firstname","Lastname","Comment","SelectedParts","RemoveParts","DryRun","VehicleSettings","CustomColorConfiguration","SelectedBodyColor","SelectedRimsColor","SelectedCaliperColor","SelectedStitchingColor","SelectedSuspensionAndLogoColor","ToolsConfiguration","ConfigurationReducer","ConfigurationId","FullImages","Date","now","SET_CULTURE","SET_COMPANY_ID","SET_COUNTRY","SET_ENTRY_POINT_URL","SET_CONFIGURATION_WAS_RECENTLY_CREATED","visible","message","ToastMessageReducer","viewsInitialState","showPartDetail","showConfigurationSummary","ViewsReducer","show","CountryName","CountryCode","LanguageCode","ImprintCode","CurrentCountryReducer","Hqv_Logo","KTM_Logo","fill","GG_Logo","Brand","SupportedBrands","BrandLink","IsB2C","Env","OneTrust","GTM","Santander","CdcApplicationSettings","Url","Api","CdcEnabled","DealerSearch2DEnabled","DealerSearch3DEnabled","GoogleMapsKey","Show3DDebugTools","versioninfo","Environment","JentisSettings","Project","ApplicationSettingsReducer","getBrandLogoSvgComponent","brand","ktm_logo","hqv_logo","gg_logo","code","PreselectedVariationCodeReducer","initialReduxState","applicationSettingsInitialState","dialogInitialState","modelInitialState","partsInitialState","setupsInitialState","toastInitialState","userGuidanceInitialState","currentCountryInitialState","countryArrayInitialState","imageArrayInitialState","PreselectedVariationCodeStateInitialState","timeoutHolder","middleware","thunkMiddleware","composeEnhancers","window","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","persistConfig","key","whitelist","storage","persistedReducer","persistReducer","LOAD_CONFIGURATION","_ref$Vehicle","AvailableParts","_ref$TestRideData","TestRideData","Status","_ref$Configuration","Configuration","ClonedConfigurationId","TotalPrice","SelectedPartIds","VariationCode","Is3DModel","heroImgUrl","_state$configurationS","emptyState","load","vehicleOverview","createStore","applyMiddleware","apply","persistor","persistStore","year","getFullYear","getCopyright","debug","msg","params","info","toastMessage","clearTimeout","dispatch","setTimeout","getAppliedPartsCount","getState","getConfigurationId","getCultureSelector","getMarketSelector","getPreservedSaveDetailsData","getVehicleById","id","modelResponse","Vehicles","find","item","getLocaleQuery","_store$getState$confi","sortAscendingByProperty","previous","next","Previous","toUpperCase","Next","setHexToHSLA","hex","rgb","result","exec","r","parseInt","g","b","hexToRgb","rgbChecked","hsl","cmin","Math","min","cmax","max","delta","h","l","round","s","abs","toFixed","RGBToHSL","sendConfigurationToDealer","props","dialogProps","t","onSendToDealerSuccess","_callee2","portraitMode","mobileMode","drawOnElement","video","mobileCanvas","mobileContext","copyright","copyrightDiv","regenerator_default","wrap","_context2","prev","console","log","document","getContext","width","height","translate","rotate","PI","drawImage","appendChild","setAttribute","textContent","abrupt","html2canvas","allowTaint","then","canvas","removeChild","toDataURL","_ref3","asyncToGenerator","mark","_callee","initialInnerHTML","logoDiv","promise","_context","innerHTML","sent","stop","_x6","this","generateScreenshotForPDFGeneration","mobile","mobileStringifiedScreenshot","Promise","resolve","reject","getIsMobile","innerWidth","getIsMobileXS","arr","predicate","cb","o","map","has","set","Map","values","hashCode","forEach","Images","Main","i","charCodeAt","handlePDFData","response","contentDispos","headers","entries","_ref2","slicedToArray","value","blob","disposition","contentDisposition","parse","fileName","parameters","filename","saveAs","VehicleRenderer","_useState","useState","CompanyCode","Layout","_useState2","previousRequest","setPreviousRequest","_useState3","_useState4","renderedImages","setRenderedImages","_useState5","_useState6","imagesRendered","setImagesRendered","_useState7","_useState8","hasError","setHasError","_useState9","loading","imagesToLoad","_useState10","imageLoadingState","setImageLoadingState","_useState11","_useState12","oldPerspective","setOldPerspective","getImageSrc","url","renderFrontEnd","isNewBikePerspective","bikeStructureUrl","replace","fetch","res","json","request","renderBike","error","location","href","newParts","img","FileName","push","setIsLoading","useEffect","addImageToLayer","host","BaseUrl","currentImage","src","VehicleProductCode","class","source","loader","className","index_es","errorDiv","Fragment","image","index","onLoad","onImageLoaded","onError","ArrowHeadKTM","points","ArrowHeadHQV","connect","arrowHead_ktm","arrowHead_hqv","withNamespaces","resetRenderedPictureChange","imageSrc","setImageSrc","useHistoryValue","useHistory","history","perspectives","closePreview","toString","onlyFirstImage","Boolean","onlyFirstImg","sideImage","changeRenderedImage","handleSwipe","change","newPosition","newValue","handleSwipeP","imageBase","getImageBase","baseArray","split","join","fullImage","Perspective","getHeroImageBase","renderBackgroundTitle","cutVehicleName","filteredArray","entry","container","onClick","arrowHead","Swipeable_default","trackMouse","preventDefaultTouchmoveEvent","onSwipedLeft","onSwipedRight","VehicleRenderer_VehicleRenderer","assign","getHeroImage","show_full_image","goBack","ArrowKTM","ArrowHQV","stroke","ArrowGG","arrow_ktm","arrow_hqv","arrow_gg","Country","openPopUp","showLanguageMenu","closePrev","countryName","languageSelection","goToKtm","pathname","rootLink","linkCulture","toLowerCase","legalLink","imprintLink","privacyLink","backLink","icons_country","arrow","target","withStyles","theme","wrapper","background","bikeWrapper","position","contentWrapper","boxSizing","classes","from","React","createRef","escClicked","setEscClicked","addEventListener","event","keyCode","once","headerGrid","rootIcons","closePreviewBtn","iconWrapper","direction","vehicle_overview_VehicleImage","arrowStyle","left","navigation_Footer","SoundOn","fillRule","clipRule","SoundOff","PDF","getAppSettings","axios","get","getModels","modelId","addPart","post","removePart","createConfiguration","config","AnonymousID","uuid","updateConfiguration","stringID","put","sendBitrateDroppedTelemetryData","user","bitrate","isMobile","Payload","Bitrate","UserId","IsMobile","updateConfigurationForUser","userId","deleteConfiguration","delete","dismissUnsavedChanges","saveConfiguration","saveAsNew","SaveAsNew","saveUserConfigurationCDC","header","Authorization","sendExport","sendToDealer","sendToDealerWithScreenShot","sendPdfSummary","Email","downloadConfigurationSummaryPdf","partsHash","responseType","downloadConfigurationSummaryPdfWithScreenshot","screenshotData","screnshotdataaspng","shareConfiguration","configId","localeQuery","getHistory","getAllMarkets","getFastlyGeoCountry","PROD","defaults","common","interceptors","use","status","Languages","real","Wheels","active","setActive","tryAgainDisabled","setTryAgainDisabled","downloadPdfWithScreenshot","screenshot","http","alt","style","e","sound_on","sound_off","disabled","_ref4","pdf","screnshotDivRef","getElementById","data1","takeScreenshotAndDownloadPDF","wheel","Formatter","pricesAreAvailable","lang","documentElement","toLocaleString","navigator","language","minimumFractionDigits","Component","Dot","ry","rx","cy","cx","strokeWidth","ColorArray","changeBikeColor","color","dot","priceClass","palette","primary","main","fontSize","display","addOnCountBackground","borderRadius","lineHeight","textAlign","marginLeft","marginRight","top","addOn","textTransform","addOnsWrapper","count","model","hasPrices","showDescription","variationCode","_React$useState","_React$useState2","scrollable","setScrollable","_React$useState3","_React$useState4","setColorArray","_React$useState5","_React$useState6","setPriceNote","DescElement","lineHeightStyle","lineHeightStyleScroll","maxHeight","lineHeightDesc","lineHeightStyleSmallerScreens","_React$useState7","_React$useState8","usedStyle","setUsedStyle","checkScrollableClass","currentDescElement","querySelector","financePlugin","scrollHeight","innerHeight","variation","removeEventListener","Grid_default","colorSelection","Format","currency","dangerouslySetInnerHTML","__html","CloseKTM","CloseHQV","hqv","close_ktm","close_hqv","MinusKTM3D","identifyer","x","y","MinusHQV3D","MinusGG3D","minus_ktm3D","minus_hqv3D","minus_gg3D","PlusKTM3D","PlusHQV3D","PlusGG3D","plus_ktm3D","plus_hqv3D","plus_gg3D","resources","en","translation","translationEN","de","translationDE","fr","translationFR","es","translationES","it","translationIT","i18n","LanguageDetector","reactI18nextModule","init","fallbackLng","interpolation","escapeValue","detection","order","lookupQuerystring","RuleTypes","selectedPartIds$","BehaviorSubject","addPartPayload$","currentPayload$","ConflictingPartsContent","RulesResult","RuleType","Conflicting","conflictingParts_PartsToRemove","rule","conflictingParts_RequiredParts","RequiredParts","deleteRule","_rule$Part","Part","PreviewImage","isSelectable","ChoosePart","requiredPartIds","selectable","conflictingParts_RequiredSelectableParts","partKey","nonSelectable","conflictingParts_RequiredNonSelectableParts","md","xs","justify","alignItems","format","RequiredSelectableParts","setSelected","defineProperty","subscription","subscribe","unsubscribe","getValue","partsInGrid","_ref5","idx","higlighted","bind","visibility","Done_default","RequiredNonSelectableParts","_ref6","removeParts","cancelButton","addButton","partIdsSub","partPayloadSub","pipe","val","addPartAsync","closeDialog","ConflictingContent","Dialog_default","disableBackdropClick","fullWidth","open","onClose","aria-labelledby","icons_close","DialogTitle_default","DialogContent_default","DialogActions_default","Required","selectedRequiredValues","requiredSelectedPartIds","keys","selectionKeys","getRequiredPartsIds","getPartsIdsFromRulesResult","self","PartsToRemove","_ref7","spacing","conflictingParts_ReplacePart","replacing","ReplacePart","_ref8","_ref8$part","getPartById","rulesResult","conflictWhileAddPart","sendPayload","CanBeRendered","catch","removeConflictingPart","togglePart","findIndex","removePartAsync","TransitionState","userInactive","setScrollableState","content","offsetHeight","allImages","Other","isIncluded","imageUrl","setImageUrl","stateArray","attribute","setCollapseState","expandedStates","setExpandedStates","lastExpanded","setLastExpanded","scrollableContent","setScrollableContent","partImageStyle","backgroundImage","backgroundSize","backgroundRepeat","backgroundPosition","border","handleResize","handleBrowserBack","preventDefault","stopPropagation","VisibilityOffOutlined_default","titleAccess","partSmallImage","backgroundColor","formatter","minus3D","plus3D","currentArributesArray","checkedAttributesArray","v","c","in","indexValue","renderAttributes","updateBATLink","financeAvailable","changeRenderedPicture","setChangeRenderedPicture","vehicle_overview_VehicleSummary","showAllPrices","parts_PartDetailDialog","body","classList","remove","text","MinusKTM","MinusHQV","MinusGG","minus_ktm","is3D","minus_hqv","minus_gg","PlusKTM","PlusHQV","PlusGG","plus_ktm","plus_hqv","plus_gg","_props$part","Racing","fade","selectedFromSummary","resetSubMenuState","showDetails","itemClicked","faded","add","addOrRemovePart","alignContent","substr","minus","plus","PartAction","currentCategoryId","sub","hash","TransititionStateValue","distinctUntilChanged","Exit","el","substring","scrollIntoView","categoryName","categoryParts","_props","is","parts_Part","CategoryListComponent","setSubMenuState","selectedIndex","setSelectedIndex","handleClick","currentIndex","category","activeCategory","Collapse_default","timeout","unmountOnExit","PartsList","updateRenderingCommands","ListItemText_default","shared_CategoryName","Share","Send","downloadPdf","updatesetShowSummary","loaded","windowInnerWidth","setWindowInnerWidth","setIsMobile","backToConfiguration","hideBackArrow","hide","appBanners","getElementsByClassName","addMarginToFooter","addMargin","footer","useLayoutEffect","onResize","aria-disabled","share","Save3DConfig","loadCDCPluginScript","existingScript","api","script","charset","onload","onerror","head","makeCancelable","hasCanceled_","isCanceled","cancel","mode","showSaveIcon","onUserLoggedIn","onSaveIconClicked","onSaveSuccess","userProfileChecked","removeTabIndexToMakeCDCWorking","checkUserLogin","showButton","setShowButton","pluginInitialized","setpluginInitialized","savedStatus","setSavedStatus","userLoggedIn","setUserLoggedIn","aborted","setAborted","pluginPromise","showLogin","loadAccountInfo","err","gigya","accounts","hideScreenSet","showScreenSet","onHide","onAfterScreenLoad","onBeforeScreenLoad","onAfterSubmit","eventObj","errorCode","startScreen","screenSet","containerID","getAccountInfo","callback","getJWT","JWTdata","UID","id_token","showSavedSuccess","profile","logOut","logout","onClickButton","hasSession","sessionExist","success","savedConfiguration","save_3d_ktm","TechnicalDetails","unit","displacementData","setDisplacementData","dryWeightData","setDryWeightData","powerData","setPowerData","torqueData","setTorqueData","setShowTechnicalDetails","getTechnicalDetails","attributes","displacement","dryWeight","power","torque","onShareLinkSuccess","onSendSuccess","isPortraitMode","testRideUrl","testRideStatus","setLoaded","priceNotes","setPriceNotes","componentContainer","scrollContainer","deviderHeight","isTablet","scrollToRef","priceNote","montageNote","sendConfiguration","finally","configurationSummary_ConfigurationSummaryHeader","imageClassName","useDarkFont","technicalDetails_TechnicalDetails","cdc_CdcLogin","isSummary","behavior","ref","send","firstSetup","vehicleOverviewData","reason","StreamState","setVariation","currentPrice","setCurrentPrice","monthlyPrice","setMonthlyPrice","trackingCookie","setTrackingCookies","santanderID","loadFinancePluginScript","plugin","scfSimulation","pluginValues","getFinanceValues","configure","openSimulator","closeSimulator","removeFinancePlugin","clearInterval","interval","setInterval","selectedSimulation","monthlyPayment","cookie","Cookies","cookiesArray","cookieGroup","inclusion","clientID","assetId","assetPrice","assetImage","containerId","deposit","MenuHQV","MenuKTM","ktm","menu_ktm","menu_hqv","bitRateDroppedCallback","SOCKET","streamingService","streamingControlService","streamSubscription","streamInfo","socket","socketMessagesCallbacks","messageBuffer","sendMessage","lighting","onSocketMessageReceived","notSendMessage","shift","renderParts","commandCategory","commandValue","silent","trim","render","command","startSession","initializeBike","onDisconnected","soundEnabled","videoDivRef","streamInfo$","start","streamLimits","minBitrate","maxBitrate","startBitrate","useAudio","cutStreamLimits","handler","evt","onBitrateDroppedCallCallback","stream","options","createOptions","_","WebSocket","specs","publicDomainName","onopen","onclose","onmessage","onConnected","stopSession","_x","removeStreamSubscription","Error","_x2","_callee3","_context3","close","_x3","toolsData","colorData","callbackObject","newVariation","useInterval","delay","savedCallback","useRef","setUserInactiveFunction","onStreamStateChanged","displaySummary","windowInnerHeight","setWindowInnerHeight","landscape","matchMedia","matches","isLandscapeMode","setIsLandscapeMode","noStreamAvailableTimer","renderSettings","appSettings","bike3Ref","resetRef","failedToStart","setFailedToStart","busy","setBusy","_useState13","_useState14","bikeRenderingLoaded","setBikeRenderingLoaded","_useState15","_useState16","lastUserActivity","setLastUserActivity","_useState17","_useState18","setUserInactive","_useState19","_useState20","inactiveTime","setInactiveTime","_useState21","_useState22","showDebugTools","setShowDebugTools","_useState23","_useState24","_useState25","_useState26","noStreamAvailableTimeLeft","setNoStreamAvailableTimeLeft","_useState27","_useState28","listenerForUserInactivityAdded","setListenerForUserInactivityAdded","streamingOptions","baseUrl","appEnvId","apiKey","RESET_COMMAND","ENVIRONMENT_LEVEL","DEFAULT_LIGHTING_COMMAND","DEFAULT_LIGHTING_SLIDE_TO_COMMAND","REMAP","F7475X3","F0475X7","goBackToMain","loadBike","LOAD_BIKE","remapped","GetHeroLevel","loadEnvironment","LOAD_ENV","renderRestoredStringCommand","setInitialEnvironmentValues","LOAD_BASE","LOAD_COLORS","elem","bikeInitializationComplete","LOAD_VIDEO_SRC","srcObject","muted","play","showVideo","ACCEPTING","INIT_DONE","startInactivityChecks","bitRateDropCallback","BITRATE_DROPPED","stringCommand","hideVideo","hideDetails","pause","BROKEN","control","getAttribute","tryStart","sendCommand","useCallback","onVideoMouseMove","INITIALIZING","isStart","StreamingService","StreamingControlService","startStop","inactiveForSeconds","MAX_INACTIVE_TIME_SECONDS","addEventListenerForUserInactivity","catsContainer","noStreamAvailableRetryClick","countdown","timer","take","NO_STREAM_AVAILABLE_WAIT","complete","cursor","playsInline","autoPlay","onMouseMove","onTouchStart","data-command","placeholder","AddCustomColorIcon","xmlns","HSLAColorSlider","selectedColor","setSelectedColor","convertHexToHSLA","convertHSLAToHex","f","n","k","padStart","hslToHex","FrontendColorCode","sliderColor","setSliderColor","handleHSLASliderColorChange","newColor","newColorObj","ColorName","RenderColorCode","IsMatte","index_modern","handleChangeColor","XBowColorFinishSelector","updateColorFinish","colorFinish","checkUpdateColorFinish","currentClick","XBowCustomColorHexCode","hexCode","XBowColorSelector","closeColorSliderOnBackButton","setCloseColorSliderOnBackButton","colorSelectionCategoriesModel","predefinedColors","setPredefinedColor","customColors","addCustomColor","setCustomColor","setIsCustomColor","currentSelectedColor","setCurrentSelectedColor","isCustomColorSelected","setCustomColorSelected","hideColorSquaresForMobile","setHideColorSquaresForMobile","hideCustomColorSelectionSliderForMobile","setHideCustomColorSelectionSliderForMobile","displayCustomColorSelection","displayMatteGlossySection","isSuspensionAndLogo","displayRimSize","isCustomColor","setCustomColorInColorSelector","renderPredefinedColor","predefinedColor","RimSize","customColor","add_custom_color","colorSlider","colorSelection_XBowCustomColorHexCode","xBowColorFinishSelection","isColorSelectorOpen","updateIsColorSelectorOpen","sendColorData","_Tools$ColorSelection","parseIncomingColors","savedColorOption","parsedHexCode","isMatte","customColorToAdd","setColorFinish","matte","isPreDefinedAndMatte","foundIndex","colors","glossy","setCustomColors","selectedColorBody","setSelectedColorBody","selectedColorCalipers","setSelectedColorCalipers","selectedColorRims","setSelectedColorRims","selectedColorSuspensionAndLogo","setSelectedColorSuspensionAndLogo","selectedColorContrastStitching","setSelectedColorContrastStitching","initialColorCommandState","bodyColorCommand","setBodyColorCommand","brakeCaliperColorCommand","setBrakeCaliperColorCommand","rimColorCommand","setRimColorCommand","suspensionSpringAndLogoColorCommand","setsuspensionSpringAndLogoColorCommand","contrastStitchingColorCommand","setContrastStitchingColorCommand","patchedCommand","selectedCommandMapping","selectedColorsMapping","useMemo","colorCategories","currentSection","setCurrentSection","lastSelectedColorSection","setLastSelectedColorSection","colorDataToFakeParts","parseText","withFinish","ApprovalInfo","IsColorPart","setColorMapping","setColorForCurrentSegment","_Tools$ColorSelection2","getPredefinedColors","updateColorSelectionCamera","getColorFinishCommandValue","exteriorFinishCommmand","toggle","setCustomColorInStream","renderColorCode","section","_useState29","_useState30","_useState31","_useState32","handleMobileBackButtonClicked","_useState33","_useState34","handleOnSubMenuClick","XBowColorSelectorComponent","setCatsOpenFunc","catsOpen","setColorSelectorOpen","xBowColors","CategoryList_CategoryListComponent","Movie","strokeLinecap","strokeLinejoin","Mountain","VideoCam","Daytime","clipPath","strokeMiterlimit","Moon","Sun","XBow","toolsOpen","setToolsOpenFunc","sendToolOption","sendToolData","cinematics","environments","animation","selectedToolOptions","setSelectedToolOptions","selectedToolsCategory","setSelectedToolsCategory","changeSelectedAnimations","getKnobColor","sendSelectedTool","fallback","dataCommand","newCat","toggleOnchangeFunction","renderOptions","cat","renderCategories","lightingObject","movie","mountain","video_cam","daytime","xBow","sliderValue","handleSliderChange","numericTime","displayTime","morning","String","moon","dist","onChange","textAnchor","dy","fontWeight","sun","getSlider","checked","BrandLogo","customClass","brandLink","brandSvg","Header","loggedIn","cdcLoaded","engineReady","selectedModelName","displayWaitingroom","shared_BrandLogo","BarItemDevider","RotateIcon","ZoomIcon","FocusIcon","useWaitingroom","isStreet","isKTM","isHQV","getLoadingGif","LoadingGif_KTM","LoadingGif_HQV","LoadingGif_GG","getRotateGif","RotateHandGif_KTM","RotateGif_KTM","RotateHandGif_HQV","RotateGif_HQV","RotateHandGif_GG","RotateGif_GG","getZoomGif","ZoomHandGif_KTM","ZoomGif_KTM","ZoomHandGif_HQV","ZoomGif_HQV","ZoomHandGif_GG","ZoomGif_GG","getFocusGif","FocusHandGif_KTM","FocusGif_KTM","FocusHandGif_HQV","FocusGif_HQV","FocusHandGif_GG","FocusGif_GG","getRotateVideo","getZoomVideo","getFocusVideo","setRotate","zoom","setZoom","focus","setFocus","loadingGif","setLoadingGif","rotateGif","setRotateGif","zoomGif","setZoomGif","focusGif","setFocusGif","displayProp","setDisplayProp","showRotate","showFocus","showZoom","returnValues","setReturnValues","currentStreamState","streetModels","getMobileColumnHeight","getContentHeight","headerHeight","setCurrentColumnHeight","setContentHeight","currentColumnHeight","contentHeight","_useWaitingroom","rotateVideoRef","zoomVideoRef","focusVideoRef","checkDisplay","waitingroom_rotate","bar_item_devider","waitingroom_zoom","waitingroom_focus","setCurrentLoadingState","Screenshot","setSoundON","sendSoundOnOff","soundON","isPDFBusy","takeScreenshot","icons_index_es","screenshot_ktm","right","padding","SelectedPartsList","listOpen","setOverviewOpen","getInnerHeight","windowInnerheight","summary","innerOverviewHeight","getInnerOverviewHeight","showPPPrice","setShowPPPrice","setIsMobileState","selectedPartsList_SelectedPartsList","ppPrice","priceElement","getAppliedPowerPartsPrice","technicalDetails","sessionStorage","removeItem","setItem","CheckOk","PDF_STATUS","Initial","pdfStatus","setPdfStatus","shareClicked","setShareClicked","saveClicked","setSaveClicked","ignoreState","onStartedCallback","onFinishedCallback","Processing","Done","check_ok","valueOf","ConfigurationView3D","renderingCommands","setRenderingCommands","exists","hasOwnProperty","setCreateConfigurationState","setCDCLoaded","setLoggedIn","setEngineReady","setCatsOpen","setToolsOpen","setListOpen","colorsOpen","setColorsOpen","setIsPDFBusy","setToolsData","setColorData","bitrateDroppedEvent","setBitrateDroppedEvent","emptyList","renderedParts","setRenderedParts","setUserId","_useState35","_useState36","setCurrentStreamState","_useState37","_useState38","displayLoginScreen","setDisplayLoginScreen","_useState39","_useState40","setDisplayWaitingroom","_useState41","_useState42","setDisplaySummary","_useState43","_useState44","displayToolsAndPowerPartsAndBottomSection3d","setDisplayToolsAndPowerPartsAndBottomSection3d","_useState45","_useState46","currentBitrate","isReady","onGigyaServiceReady","updateUserId","checkCDCStatus","_useState47","None","_useState48","tiltShiftState","setTiltShiftState","resendAppliedPartsForRendering","sessionExists","sendPartsForRendering","handleTiltShifting","ShiftToRight","ShiftToLeft","engineReadyState","mapToPartWithCategory","cur","powerPart3D","pp","Silent","newAddedParts","promises","removedPart","all","appliedPart","togglePowerPartsMenuCallback","finishedCallback","storePdfScreenshot","getItem","takeScreenshotAndDownloadPDFFunction","hashCodeScreenShot","getReturnUrl","shareConfigurationURL","returnToConfiguration","headerProps","toolProps","toolsConfiguration","technicalDetailProps","screenshotElement","_x4","_x5","_generateRawScreenshot","generateRawScreenshot","base64Image","colorSelectionProps","shared_Header","tools","rendering3D","streamState","categories_CategoryContainer","renderingCommandList","waitingRoom","configurationOverview3D","configurationSummary_ConfigurationCompletion","reload","ConfigurationOverviewMenu","handleSummaryClick","orientation","anchorAppliedEl","setAppliedAnchorEl","scrollToFinance","StyledMenu","paper","Menu_default","elevation","getContentAnchorEl","transitionDuration","handleClickApplied","currentTarget","getAppliedClosed","aria-controls","aria-haspopup","block","finance","anchorEl","keepMounted","showCategories","setShowCategories","setOpen","setAnchorEl","showSummary","setShowSummary","setShowPartDetail","bookATestRideUrl","setBookATestRideUrl","scrollElement","dataLoaded","setDataLoaded","successState","setSuccessState","portraitModeState","setPortraitMode","setShowAllPrices","createConfigurationState","getOverViewState","setGetOverViewState","redirectToMain","setRedirectToMain","setFinanceAvailable","subMenuOpen","setSubMenuOpen","jtsPushed","setJtsPushed","bookATestride","hasTestRideData","match","urlModelId","_jts","jts","track","financeArray","checkFinancePlugin","hero","Success","CircularProgress_default","getMobileMenuClosed","handleClose","ConfigurationView3D_ConfigurationView3D","inactivity","CdcLoginContainer","closeSummary","ConfigurationOverviewMenu_ConfigurationOverviewMenu","Button_default","menu","ConfigurationView_StyledMenu","CategoryList","configurationExists","vehicleOverviewProps","vehicle_overview_VehicleOverview","createVehicleOverview","newVehicleCode","urlArray","oldVehicleCode","newUrl","List_default","component","ListItem_default","configurationSummary_ConfigurationSummary","createSummary","Indicator3DKTM","Indicator3DDefault","useDefault","indicator3d_ktm","indicator3d_default","typeList","justifyContent","verticalAlign","navLink","margin","menuWrapper","_props$classes","headlineClasses","currentlyActiveLink","setCurrentlyActiveLink","sortedLinks","links","swipeToLink","nextLink","currentLinkIndex","currentLink","updateState","link","linkClass","segmentName","found","has3DModels","indicator3d","modelLink","modelList","spacer","marginTop","marginBottom","selectionWrapper","overflowY","modelSelectionWrapper","VehicleInformation","bikePreview","heroIntro","heroPrice","heroDescription","setHero","currentPosition","setCurrentPositon","setSelectedModel","hideBikeImg","setHideBikeImg","maxPosition","selectHero","segmentChanged","sortedVehicles","sortModels","selectModel","extract","str","spacedModelName","engineSize","remainingName","maybeNumber","Number","isNaN","extractedPrevious","extractedNext","engineTypes","vehicle","resetConfiguration","version","filtered","itemClass","react_router_dom","to","motorcycles","borderBottom","maxWidth","showUser","setShowUser","setLink","showUserGuidance","segment","selectedSegment","menuProps","segmentData","motorcycles_MotorcycleMenu","motorcycles_Models","_props$match","path","hasOverviewData","resetAndGoToModels","_props$overview","imageProps","JSON","stringify","DefaultValidators","FadeInLetters","_ref$speed","speed","textLength","substringArray","setSubstringArray","react_addons_css_transition_group_default","transitionName","transitionEnterTimeout","transitionLeaveTimeout","letter","SetupPartsDialog","shared_FadeInLetters","IconButton_default","Clear_default","_ref$data","deleteAndReloadHistory","createControl","validators","required","pristine","SavingState","defaultValidators","_defaultValidators","notEmpty","FormManager","customValidators","classCallCheck","controls","controlSetters","touched","createClass","validator","_this","setControl","addControl","addControlSetter","_this2","_controlIsValid","_this3","formName","controlSetter","_this4","every","validatorKey","_this5","VinControl","OrderNumberControl","FirstNameControl","Validators","LastNameControl","CommentControl","formManager","configurationWasRecentlyCreated","vin","setVin","orderNumber","setOrderNumber","firstName","setFirstName","lastName","setLastName","setComment","submitButtonSavingState","setSubmitButtonSavingState","saveNewButtonSavingState","setSaveNewButtonSavingState","setError","_getPreservedSaveDeta","preservedVin","preservedOrderNumber","preservedFirstname","preservedLastname","preservedComment","addAllControls","handleSubmit","formIsValid","setButtonSavingState","sending","getHashValues","reset","Message","touchControls","buttonType","getButtonContentFromSavingState","size","onDialogClose","onSubmit","noValidate","formIsTouched","TextField_default","label","autoFocus","controlIsValid","helperText","multiline","Hand","data-name","hand","firstnameControl","lastnameControl","commentControl","emailControl","firstname","setFirstname","lastname","setLastname","setEmail","preservedName","preservedSurName","customerNameIsInvalid","emailError","encodeURIComponent","getDownloadProps","download","_getPreservedSaveDeta2","saveCustomerData","configurationUrl","setConfigurationUrl","hasConfig","setHasConfig","clipboard","useClipboard","copiedTimeout","onSuccess","copied","readOnly","copy","DotsLoader","setValue","Array","EmailControl","generating","setGenerating","shared_DotsLoader","MapPin","PinCircle","Pin","User","DialogHeaderWithLogo","_offer","configurationId","configSummaryProps","dealerChecked","setDealerChecked","configurationChecked","setUserProfileChecked","dealerSearchOpen","setDealerSearchOpen","offer","setOffer","setSelectedDealerNo","reloadConfigurationUrl","setReloadConfigurationUrl","showDealerSearch","addRemoveClassToFooter","onSelectDealer","dealer","DealerNo","changeConfiguration","userData","userProfileId","userProfile","sendToDealerWithScreenShotFunction","dialogHeaderWithLogo_DialogHeaderWithLogo","dist_index_modern","apiUrl","configuratorBrand","toDealerSearchBrand","googleMapsKey","showBrandSelector","qualification","getDealerQualification","reRoute","pin","pin_circle","map_pin","Street","PostCode","Town","icons_user","element","children","removeAttribute","showActiveClass","setShowActiveClass","CountriesArray","currentQueryString","search","parsedQueryString","queryString","additionalQueryString","newQueryString","i18next","changeLanguage","IconComponent","onOpen","MenuProps","anchorOrigin","vertical","horizontal","transformOrigin","DialogRouter","_React$Component","possibleConstructorReturn","getPrototypeOf","inherits","setupParts","warnBeforeExit","deleteConfiguraion","dialogs_deleteConfiguration","conflictingParts","removeConflictingParts","dialogs_saveConfiguration","exportConfiguration","dialogs_shareConfiguration","dialogs_sendConfiguration","dialogs_sendConfigurationToDealer","dialogs_UserGuidance","renderDialog","alignCenter","_props$location","modelSelectionState","setOpenPopUp","correctSettings","setCorrectSettings","_location","parsed","redirectToExistingConfigurationPage","browserHistory","flatMap","vehicleHeroImageUrl","SaveDetails","loadConfiguration","createCountryArray","axiosResponse","marketsData","MarketsData","j","MarketDetails","MarketName","MarketCode","Imprint","localeCompare","setValidSettings","updateDocumentLanguage","setGoogleAnayltics","TagManager","initialize","gtmId","events","gtm.start","getTime","dataLayer","checkUserSettings","geoLocation","userLang","userLanguageSet","countryCodeSet","correctLang","correctCode","correctCountry","correctImprint","validCountrySettings","setSettings","getGeoLocation","lng","comanyContext","useContext","CompanyIdContext","parsedCompany","id_company","hasModelData","Helmet","rel","CompanyIdProvider","react_router","Overview","exact","Motorcycles","ConfigurationView","dialogRouter_DialogRouter","RestrictedRoute","hasParam","checkStore","redirect","needLogin","paramOk","storeOk","canAccessComponent","TransitionState$","Subject","createContext","Provider","asObservable","checkConfigurationID","renderRoot","brandInitialized","setBrandInitialized","_document$body$classL","dataDomainScript","loadOnestrust","sCDN","sCDNProject","sCDNWorkspace","sCDNVers","localStorage","jentis","frontend","cdnhost","vers","env","project","getElementsByTagName","async","parentNode","insertBefore","react_transition_group","classNames","enter","exit","onEnter","Enter","onExited","Preview","Sandbox","utils_RestrictedRoute","hostname","themeConfig","typography","fontFamily","light","orange","dark","secondary","yellow","red","createMuiTheme","ReactDOM","styles","integration_react","dist_es","material_ui_pickers_esm","utils","DateFnsUtils","locale","deLocale","src_App","serviceWorker","ready","registration","unregister","__webpack_exports__","CATEGORY_SCROLL_POSITION","MODEL_SELECTED"],"mappings":"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","file":"static/js/main.9169bad2.chunk.js","sourcesContent":["var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar actionTypes_1 = require(\"../actionTypes\");\r\nexports.initialState = {\r\n currentCountryArray: [],\r\n};\r\nfunction CountryArrayReducer(state, action) {\r\n if (state === void 0) { state = exports.initialState; }\r\n switch (action.type) {\r\n case actionTypes_1.SET_COUNTY_ARRAY: {\r\n return __assign({}, action.payload);\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\nexports.default = CountryArrayReducer;\r\n//# sourceMappingURL=countryArray.js.map","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar actionTypes_1 = require(\"../actionTypes\");\r\nexports.initialState = {\r\n currentImageArray: [],\r\n};\r\nfunction ImageArrayReducer(state, action) {\r\n if (state === void 0) { state = exports.initialState; }\r\n switch (action.type) {\r\n case actionTypes_1.SET_IMAGE_ARRAY: {\r\n return __assign({}, action.payload);\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\nexports.default = ImageArrayReducer;\r\n//# sourceMappingURL=imageArray.js.map","module.exports = __webpack_public_path__ + \"static/media/gif.04bb864f.gif\";","module.exports = __webpack_public_path__ + \"static/media/loading.2d217094.gif\";","module.exports = __webpack_public_path__ + \"static/media/loading.c93b57fd.gif\";","module.exports = __webpack_public_path__ + \"static/media/rotation.9c6a66b6.gif\";","module.exports = __webpack_public_path__ + \"static/media/rotate.5d8f804f.gif\";","module.exports = __webpack_public_path__ + \"static/media/rotate.9380de5d.gif\";","module.exports = __webpack_public_path__ + \"static/media/ktm_rotate_finger.2951934d.gif\";","module.exports = __webpack_public_path__ + \"static/media/hqv_rotate_finger.77ce7e0d.gif\";","module.exports = __webpack_public_path__ + \"static/media/gg_rotate_finger.139633df.gif\";","module.exports = __webpack_public_path__ + \"static/media/zooming.57796ba7.gif\";","module.exports = __webpack_public_path__ + \"static/media/zoom.4b923ebf.gif\";","module.exports = __webpack_public_path__ + \"static/media/zoom.618a021c.gif\";","module.exports = __webpack_public_path__ + \"static/media/ktm_zoom_finger.f9011963.gif\";","module.exports = __webpack_public_path__ + \"static/media/hqv_zoom_finger.46e8305f.gif\";","module.exports = __webpack_public_path__ + \"static/media/gg_zoom_finger.ef113d06.gif\";","module.exports = __webpack_public_path__ + \"static/media/focusing.0b73b917.gif\";","module.exports = __webpack_public_path__ + \"static/media/focus.74bb489c.gif\";","module.exports = __webpack_public_path__ + \"static/media/focus.db9c4a41.gif\";","module.exports = __webpack_public_path__ + \"static/media/ktm_focus_finger.0e3524c7.gif\";","module.exports = __webpack_public_path__ + \"static/media/hqv_focus_finger.b40a9372.gif\";","module.exports = __webpack_public_path__ + \"static/media/gg_focus_finger.940dc0ce.gif\";","import {\r\n EXIT_VEHICLE_CONFIGURATION,\r\n ADD_VEHICLE_OVERVIEW,\r\n SHOW_MODAL,\r\n HIDE_MODAL,\r\n SHOW_GUIDANCE,\r\n HIDE_GUIDANCE,\r\n SET_PERSPECTIVE,\r\n ADD_MOTORYCLE_MODELS,\r\n SELECT_PART,\r\n DESELECT_PART,\r\n SELECT_SETUP,\r\n APPLY_SETUP,\r\n APPLY_PARTS,\r\n SHOW_TOAST,\r\n HIDE_TOAST,\r\n REMOVE_ALL_PARTS,\r\n SET_PRICE,\r\n SET_CREATED_CONFIGURATION,\r\n SET_IMAGE_TIMESTAMP,\r\n SET_CONFIGURATION_ID,\r\n SET_CONFIGURATION_IMAGES,\r\n TOGGLE_CONFIG_SUMMARY,\r\n TOGGLE_PART_DETAIL,\r\n PRESERVE_SAVE_DETAILS_DATA,\r\n CATEGORY_SCROLL_POSITION,\r\n SET_CONFIGURATION_WAS_RECENTLY_CREATED,\r\n SET_CONFIGURATION_IS_DIRTY,\r\n SET_VEHICLE_VARIATION,\r\n SET_CDC_SETTINGS,\r\n SET_CURRENT_COUNTRY,\r\n SET_COUNTY_ARRAY,\r\n SET_IMAGE_ARRAY,\r\n SET_PRESELECTED_VARIATION_CODE,\r\n SET_NO_CONFLICTING_PARTS,\r\n SET_REMOVE_NO_CONFLICTING_PARTS,\r\n SET_IS3D_MODE,\r\n SET_IS_XBOW,\r\n DEALER_INQUIRY_SENT,\r\n USER_DID_TIMEOUT_IN_STREAM,\r\n DEALER_INQUIRY_DIALOG_OPEN,\r\n SET_RUNTIME_CONFIGURATION\r\n} from \"./actionTypes\";\r\nimport { Part } from \"../components/parts/PartsList\";\r\nimport { DialogTypes } from \"../enums/dialogTypes\";\r\nimport { Setup } from \"../components/setups/SetupsList\";\r\nimport { VehicleOverviewState } from \"./reducers/vehicleOverview\";\r\nimport { CreateConfigurationResponse, FullImage } from \"../components/configuration/ConfigurationView\";\r\nimport { SaveDetailsData } from \"../components/dialogs/saveConfiguration\";\r\nimport { CurrentCountryState } from \"./reducers/currentCountry\";\r\nimport { CountryArrayState } from \"./reducers/countryArray\";\r\nimport { ImageArrayState } from \"./reducers/imageArray\";\r\nimport { PreselectedVariationCodeState } from \"./reducers/preselectedVariationCode\";\r\nimport { AddPartPayload, RemovePartPayload } from \"../services/http/real\";\r\nimport { MotorcycleModelResponse, Price } from \"../models/vehicle\";\r\nimport { ApplicationSettings } from \"./reducers/applicationSettings\";\r\n\r\nexport const exitVehicleConfiguration = () => ({\r\n type: EXIT_VEHICLE_CONFIGURATION,\r\n});\r\n\r\n/* BIKE OVERVIEW */\r\nexport const addVehicleOverview = (payload: VehicleOverviewState) => ({\r\n type: ADD_VEHICLE_OVERVIEW,\r\n payload,\r\n});\r\n\r\nexport interface ShowDialogProps {\r\n contentType: DialogTypes;\r\n data: D;\r\n title: string;\r\n shareType?: string;\r\n}\r\n\r\n/* MODALS */\r\nexport const showDialog = ({ contentType, data, title, shareType }: ShowDialogProps) => ({\r\n type: SHOW_MODAL,\r\n payload: {\r\n contentType,\r\n data,\r\n title,\r\n shareType,\r\n },\r\n});\r\n\r\nexport const setRuntimeConfiguration = (payload: ApplicationSettings) => ({\r\n type: SET_RUNTIME_CONFIGURATION,\r\n payload: payload\r\n})\r\n\r\nexport const setIs3DMode = (payload: boolean) => ({\r\n type: SET_IS3D_MODE,\r\n payload: payload,\r\n});\r\n\r\nexport const setIsXBow = (payload: boolean) => ({\r\n type: SET_IS_XBOW,\r\n payload: payload,\r\n});\r\n\r\nexport const hideDialog = () => ({\r\n type: HIDE_MODAL,\r\n payload: null,\r\n});\r\n\r\nexport const showGuidance = () => ({\r\n type: SHOW_GUIDANCE,\r\n payload: null,\r\n});\r\n\r\nexport const hideGuidance = () => ({\r\n type: HIDE_GUIDANCE,\r\n payload: null,\r\n});\r\n\r\nexport const setCurrentCountry = (payload: CurrentCountryState) => ({\r\n type: SET_CURRENT_COUNTRY,\r\n payload,\r\n});\r\n\r\nexport const setCountryArray = (payload: CountryArrayState) => ({\r\n type: SET_COUNTY_ARRAY,\r\n payload,\r\n});\r\n\r\nexport const setPreselectedVariationCode = (payload: PreselectedVariationCodeState) => ({\r\n type: SET_PRESELECTED_VARIATION_CODE,\r\n payload,\r\n});\r\n\r\nexport const setImageArray = (payload: ImageArrayState) => ({\r\n type: SET_IMAGE_ARRAY,\r\n payload,\r\n});\r\n/* MODELS */\r\nexport const addMotorcycleModels = (payload: MotorcycleModelResponse) => ({\r\n type: ADD_MOTORYCLE_MODELS,\r\n payload,\r\n});\r\n\r\n/* CONFIGURATION */\r\nexport const setPerspective = (perspective: number) => ({\r\n type: SET_PERSPECTIVE,\r\n payload: perspective,\r\n});\r\n\r\nexport const addCreatedConfiguration = (payload: CreateConfigurationResponse) => ({\r\n type: SET_CREATED_CONFIGURATION,\r\n payload,\r\n});\r\n\r\nexport const setConfigurationId = (payload: number) => ({\r\n type: SET_CONFIGURATION_ID,\r\n payload,\r\n});\r\n\r\nexport const addPrice = (payload: Price) => ({\r\n type: SET_PRICE,\r\n payload,\r\n});\r\n\r\nexport const setImageTimestamp = () => ({\r\n type: SET_IMAGE_TIMESTAMP,\r\n});\r\n\r\nexport const setConfigurationImages = (payload: FullImage[]) => ({\r\n type: SET_CONFIGURATION_IMAGES,\r\n payload,\r\n});\r\n\r\nexport const setCategoryScrollPosition = (payload: number) => ({\r\n type: CATEGORY_SCROLL_POSITION,\r\n payload,\r\n});\r\n\r\nexport const setConfigurationWasRecentlyCreated = (payload: boolean) => ({\r\n type: SET_CONFIGURATION_WAS_RECENTLY_CREATED,\r\n payload,\r\n});\r\n\r\nexport const setConfigurationIsDirty = (payload: boolean) => ({\r\n type: SET_CONFIGURATION_IS_DIRTY,\r\n payload,\r\n});\r\n\r\nexport const setVehicleVariation = (payload: string) => ({\r\n type: SET_VEHICLE_VARIATION,\r\n payload,\r\n});\r\n\r\nexport const setCdcSettings = (payload: boolean) => ({\r\n type: SET_CDC_SETTINGS,\r\n payload,\r\n });\r\n\r\n/* PARTS */\r\nexport const selectPart = (payload: Part) => ({\r\n type: SELECT_PART,\r\n payload,\r\n});\r\nexport const deselectPart = () => ({\r\n type: DESELECT_PART,\r\n});\r\n\r\nexport const applyParts = (payload: string[]) => ({\r\n type: APPLY_PARTS,\r\n payload,\r\n});\r\n\r\nexport const removeAllParts = () => ({\r\n type: REMOVE_ALL_PARTS,\r\n});\r\n\r\nexport const noConflictingParts = (payload: AddPartPayload) => ({\r\n type: SET_NO_CONFLICTING_PARTS,\r\n payload,\r\n});\r\n\r\nexport const removeNoConflictingParts = (payload: RemovePartPayload) => ({\r\n type: SET_REMOVE_NO_CONFLICTING_PARTS,\r\n payload,\r\n});\r\n/* SETUPS */\r\nexport const selectSetup = (payload: Setup) => ({\r\n type: SELECT_SETUP,\r\n payload,\r\n});\r\n\r\nexport const applySetup = (payload: Setup) => ({\r\n type: APPLY_SETUP,\r\n payload,\r\n});\r\n\r\n/* TOAST */\r\nexport const showToast = (payload: string) => ({\r\n type: SHOW_TOAST,\r\n payload,\r\n});\r\n\r\nexport const hideToast = () => ({\r\n type: HIDE_TOAST,\r\n});\r\n\r\n/* VIEWS */\r\n\r\nexport const toggleSummary = (payload: boolean) => ({\r\n type: TOGGLE_CONFIG_SUMMARY,\r\n payload,\r\n});\r\n\r\nexport const togglePartDetail = (payload: boolean) => ({\r\n type: TOGGLE_PART_DETAIL,\r\n payload,\r\n});\r\n\r\nexport const preserveSaveDetailsData = (payload: SaveDetailsData) => ({\r\n type: PRESERVE_SAVE_DETAILS_DATA,\r\n payload,\r\n});\r\n\r\nexport const setDealerInquirySent = (payload: boolean) => ({\r\n type: DEALER_INQUIRY_SENT,\r\n payload,\r\n});\r\n\r\nexport const setUserDidTimeoutInStream = (payload: boolean) => ({\r\n type: USER_DID_TIMEOUT_IN_STREAM,\r\n payload,\r\n});\r\n\r\nexport const setDealerInquiryDialogOpen = (payload: boolean) => ({\r\n type: DEALER_INQUIRY_DIALOG_OPEN,\r\n payload,\r\n});\r\n","import { Store } from \"./reducers/index\";\r\nimport { DialogState } from \"./reducers/modals\";\r\nimport { Setup } from \"../components/setups/SetupsList\";\r\nimport { Part } from \"../components/parts/PartsList\";\r\nimport { CreateConfigurationResponse } from \"../components/configuration/ConfigurationView\";\r\nimport { SaveDetailsData } from \"../components/dialogs/saveConfiguration\";\r\nimport { ApplicationSettings } from \"./reducers/applicationSettings\";\r\nimport { ConfigurationState } from \"./reducers/configuration\";\r\nimport { UserGuidanceState } from \"./reducers/userGuidance\";\r\nimport { Price } from \"../models/vehicle\";\r\n\r\n/* ApplicationSettings */\r\nexport const getApplicationSettings = (store: Store): ApplicationSettings => store.applicationSettings;\r\n\r\n/* SETUPS*/\r\nexport const getAllSetups = (store: Store): Setup[] => store.vehicleOverviewState.Setups;\r\n\r\nexport const getSetupById = (store: Store, setupId: string): Setup => getAllSetups(store).find((setup: Setup) => setup.Name === setupId) as Setup;\r\n\r\nexport const getAppliedSetup = (store: Store) => store.setups.applied;\r\n\r\nexport const getSelectedSetup = (store: Store) => store.setups.selected;\r\n\r\n/* MODALS */\r\nexport const getDialogState = (store: Store): DialogState => store.dialog;\r\n\r\nexport const getUserGuidanceState = (store: Store): UserGuidanceState => store.userGuidance;\r\n\r\n/* CONFIGURATION */\r\nexport const getPerspective = (store: Store): number => store.configurationState.perspective;\r\n\r\nexport const getConfigurationState = (store: Store): ConfigurationState => store.configurationState;\r\n\r\nexport const getConfiguration = (store: Store): CreateConfigurationResponse => store.configurationState.configuration;\r\n\r\nexport const getPrice = (store: Store): Price => store.configurationState.price;\r\n\r\nexport const getImageTimeStamp = (store: Store): number => store.configurationState.imageTimestamp;\r\n\r\nexport const getPreservedSaveDetailsDataSelector = (store: Store): SaveDetailsData => store.configurationState.preservableSaveDetails;\r\n\r\nexport const getCategoryScrollPosition = (store: Store): number => store.configurationState.categoryScrollPosition;\r\n\r\nexport const getConfigurationWasRecentlyCreatedSelector = (store: Store) => store.configurationState.wasRecentlyCreated;\r\n\r\nexport const getConfigurationIsDirtySelector = (store: Store) => store.configurationState.isDirty;\r\n\r\nexport const getIS3DMode = (store: Store) => store.configurationState.is3DMode;\r\n\r\nexport const getIsXbow = (store: Store) => store.configurationState.isXBow;\r\n\r\nexport const getCdcSettings = (store: Store) => store.configurationState.cdcSettings;\r\n\r\nexport const getDealerInquirySent = (store: Store) => store.configurationState.dealerInquirySent;\r\n\r\nexport const getUserDidTimeoutInStream = (store: Store) => store.configurationState.userDidTimeoutInStream;\r\n\r\nexport const getDealerInquiryDialogOpen = (store: Store) => store.configurationState.dealerInquiryDialogOpen;\r\n\r\nexport const getVehicleSettings = (store: Store) => store.configurationState.VehicleSettings;\r\n\r\nexport const getVehicleVariation = (store: Store) => store.configurationState.currentVariation;\r\n\r\nexport const getCurrentCountry = (store: Store) => store.currentCountry;\r\n\r\nexport const getCountryArray = (store: Store) => store.countryArray;\r\n\r\nexport const getImageArray = (store: Store) => store.imageArray;\r\n\r\n/* MOTORCYCLES */\r\nexport const getMotorcycleModels = (store: Store) => store.modelsResponse;\r\n\r\nexport const getPriceAvailability = (store: Store) => store.modelsResponse.ShowPricesInConfigurator;\r\n\r\nexport const getSelectedModel = (store: Store) => store.vehicleOverviewState.Vehicle;\r\n\r\nexport const getOverview = (store: Store) => store.vehicleOverviewState;\r\n\r\n/* CATEGORIES */\r\nexport const getCategories = (store: Store) => store.vehicleOverviewState.Categories;\r\n\r\nexport const getConfiguredPartsCount = (store: Store) => store.parts.applied.length;\r\n\r\n/* PARTS */\r\nexport const getSelectedPart = (store: Store) => store.parts.selected as Part;\r\n\r\nexport const getAllParts = (store: Store) => store.vehicleOverviewState.Parts;\r\n\r\nexport const getAppliedParts = (store: Store) => store.parts.applied;\r\n\r\n/* TOAST */\r\nexport const getToastState = (store: Store) => store.toast;\r\n\r\n/* CULTURE */\r\nexport const getCulture = (store: Store) => store.configurationState.culture;\r\n\r\n/* MARKET */\r\nexport const getMarket = (store: Store) => store.configurationState.market;\r\n\r\n/* VIEWS */\r\nexport const getViews = (store: Store) => store.views;\r\n\r\nexport const getPreselectedVariationCode = (store: Store) => store.preselectedVariationCode;\r\n","import {\r\n hideDialog,\r\n showDialog,\r\n showGuidance,\r\n hideGuidance,\r\n setPerspective,\r\n selectPart,\r\n deselectPart,\r\n addVehicleOverview,\r\n selectSetup,\r\n applySetup,\r\n applyParts,\r\n removeAllParts,\r\n showToast,\r\n hideToast,\r\n ShowDialogProps,\r\n setImageTimestamp,\r\n addCreatedConfiguration,\r\n addPrice,\r\n setConfigurationId,\r\n setConfigurationImages,\r\n setVehicleVariation,\r\n togglePartDetail,\r\n toggleSummary,\r\n setCurrentCountry,\r\n setCountryArray,\r\n setImageArray,\r\n setPreselectedVariationCode,\r\n setIs3DMode,\r\n setCdcSettings,\r\n setIsXBow,\r\n setDealerInquirySent,\r\n setUserDidTimeoutInStream,\r\n setDealerInquiryDialogOpen,\r\n} from \"../redux/actions\";\r\n\r\nimport {\r\n getAllSetups,\r\n getDialogState,\r\n getUserGuidanceState,\r\n getSelectedModel,\r\n getCategories,\r\n getSelectedPart,\r\n getPerspective,\r\n getAppliedSetup,\r\n getSelectedSetup,\r\n getAllParts,\r\n getAppliedParts,\r\n getToastState,\r\n getMotorcycleModels,\r\n getConfiguration,\r\n getPrice,\r\n getImageTimeStamp,\r\n getOverview,\r\n getViews,\r\n getConfigurationWasRecentlyCreatedSelector,\r\n getApplicationSettings,\r\n getCulture,\r\n getMarket,\r\n getConfigurationState,\r\n getVehicleVariation,\r\n getCurrentCountry,\r\n getCountryArray,\r\n getImageArray,\r\n getPreselectedVariationCode,\r\n getIS3DMode,\r\n getCdcSettings,\r\n getIsXbow,\r\n getDealerInquirySent,\r\n getUserDidTimeoutInStream,\r\n getDealerInquiryDialogOpen,\r\n} from \"../redux/selectors\";\r\nimport { Setup } from \"../components/setups/SetupsList\";\r\nimport Action from \"../redux/reducers/models/action\";\r\nimport { DialogState } from \"../redux/reducers/modals\";\r\nimport { Part } from \"../components/parts/PartsList\";\r\nimport { Store as AppStore } from \"../redux/reducers\";\r\nimport { ToastMessageState } from \"../redux/reducers/toast\";\r\nimport { VehicleOverviewState } from \"../redux/reducers/vehicleOverview\";\r\nimport { CreateConfigurationResponse, FullImage } from \"../components/configuration/ConfigurationView\";\r\nimport { ViewsState } from \"../redux/reducers/views\";\r\nimport { ApplicationSettings } from \"../redux/reducers/applicationSettings\";\r\nimport { ConfigurationState } from \"../redux/reducers/configuration\";\r\nimport { UserGuidanceState } from \"../redux/reducers/userGuidance\";\r\nimport { CurrentCountryState } from \"../redux/reducers/currentCountry\";\r\nimport { CountryArrayState } from \"../redux/reducers/countryArray\";\r\nimport { ImageArrayState } from \"../redux/reducers/imageArray\";\r\nimport { PreselectedVariationCodeState } from \"../redux/reducers/preselectedVariationCode\";\r\nimport { MotorcycleModelResponse, Price, VehicleInformation } from \"../models/vehicle\";\r\n\r\nexport interface StateToProps {\r\n setups: Setup[];\r\n applicationSettings: ApplicationSettings;\r\n models: MotorcycleModelResponse;\r\n parts: Part[];\r\n dialogState: DialogState;\r\n userGuidanceState: UserGuidanceState;\r\n perspective: number;\r\n selectedModel: VehicleInformation;\r\n categories: string[];\r\n selectedPart: Part;\r\n appliedSetup: Setup | undefined;\r\n selectedSetup: Setup;\r\n appliedParts: Part[];\r\n toast: ToastMessageState;\r\n configuration: CreateConfigurationResponse;\r\n configurationState: ConfigurationState;\r\n culture: string;\r\n country: string;\r\n totalPrice: Price;\r\n wasRecentlyCreated: boolean;\r\n imageTimestamp: number;\r\n overview: VehicleOverviewState;\r\n views: ViewsState;\r\n currentVariation: string;\r\n currentCountry: CurrentCountryState;\r\n countryArray: CountryArrayState;\r\n imageArray: ImageArrayState;\r\n preselectedVariationCode: PreselectedVariationCodeState;\r\n is3DMode: boolean;\r\n cdcSettings: boolean;\r\n isXBow: boolean;\r\n dealerInquirySent: boolean;\r\n userDidTimeoutInStream: boolean;\r\n dealerInquiryDialogOpen: boolean;\r\n}\r\n\r\nexport interface DispatchToProps {\r\n addVehicleOverview: (payload: VehicleOverviewState) => Action;\r\n showDialog: (dialogProps: ShowDialogProps) => Action;\r\n hideDialog: () => Action;\r\n hideGuidance: () => Action;\r\n showGuidance: () => Action;\r\n setPerspective: (perspective: number) => Action;\r\n selectSetup: (payload: Setup) => Action;\r\n applySetup: (payload: Setup) => Action;\r\n selectPart: (part: Part) => Action;\r\n deselectPart: () => Action;\r\n removeAllParts: () => Action;\r\n applyParts: (payload: string[]) => Action;\r\n showToast: (payload: string) => Action;\r\n hideToast: () => Action;\r\n addCreatedConfiguration: (config: CreateConfigurationResponse) => Action;\r\n addPrice: (price: Price) => Action;\r\n setImageTimestamp: () => Action;\r\n setConfigurationId: (configId: number) => Action;\r\n setConfigurationImages: (images: FullImage[]) => Action;\r\n setVehicleVariation: (variationCode: string) => Action;\r\n togglePartDetail: (show: boolean) => Action;\r\n toggleSummary: (show: boolean) => Action;\r\n setCurrentCountry: (currentCountry: CurrentCountryState) => Action;\r\n setCountryArray: (countryArray: CountryArrayState) => Action;\r\n setImageArray: (imageArray: ImageArrayState) => Action;\r\n setPreselectedVariationCode: (code: PreselectedVariationCodeState) => Action;\r\n setIs3DMode: (payload: boolean) => Action;\r\n setIsXBow: (payload: boolean) => Action;\r\n setCdcSettings: (payload: boolean) => Action;\r\n setDealerInquirySent: (payload: boolean) => Action;\r\n setUserDidTimeoutInStream: (payload: boolean) => Action;\r\n setDealerInquiryDialogOpen: (payload: boolean) => Action;\r\n}\r\n\r\nexport type StateManagementProps = StateToProps & DispatchToProps;\r\n\r\nexport const mapStateToProps = (store: AppStore): StateToProps => {\r\n return {\r\n applicationSettings: getApplicationSettings(store),\r\n setups: getAllSetups(store),\r\n parts: getAllParts(store),\r\n appliedParts: getAppliedParts(store),\r\n dialogState: getDialogState(store),\r\n userGuidanceState: getUserGuidanceState(store),\r\n models: getMotorcycleModels(store),\r\n perspective: getPerspective(store),\r\n selectedModel: getSelectedModel(store),\r\n categories: getCategories(store),\r\n selectedPart: getSelectedPart(store),\r\n appliedSetup: getAppliedSetup(store),\r\n selectedSetup: getSelectedSetup(store),\r\n toast: getToastState(store),\r\n configuration: getConfiguration(store),\r\n configurationState: getConfigurationState(store),\r\n culture: getCulture(store),\r\n country: getMarket(store),\r\n totalPrice: getPrice(store),\r\n wasRecentlyCreated: getConfigurationWasRecentlyCreatedSelector(store),\r\n imageTimestamp: getImageTimeStamp(store),\r\n overview: getOverview(store),\r\n views: getViews(store),\r\n currentVariation: getVehicleVariation(store),\r\n is3DMode: getIS3DMode(store),\r\n cdcSettings: getCdcSettings(store),\r\n isXBow: getIsXbow(store),\r\n currentCountry: getCurrentCountry(store),\r\n countryArray: getCountryArray(store),\r\n imageArray: getImageArray(store),\r\n preselectedVariationCode: getPreselectedVariationCode(store),\r\n dealerInquirySent: getDealerInquirySent(store),\r\n userDidTimeoutInStream: getUserDidTimeoutInStream(store),\r\n dealerInquiryDialogOpen: getDealerInquiryDialogOpen(store),\r\n };\r\n};\r\n\r\nexport const mapDispatchToProps: DispatchToProps = {\r\n addVehicleOverview,\r\n hideDialog,\r\n showDialog,\r\n showGuidance,\r\n hideGuidance,\r\n setPerspective,\r\n selectPart,\r\n deselectPart,\r\n selectSetup,\r\n applySetup,\r\n applyParts,\r\n showToast,\r\n hideToast,\r\n removeAllParts,\r\n addCreatedConfiguration,\r\n addPrice,\r\n setImageTimestamp,\r\n setConfigurationId,\r\n setConfigurationImages,\r\n setVehicleVariation,\r\n togglePartDetail,\r\n toggleSummary,\r\n setCurrentCountry,\r\n setCountryArray,\r\n setImageArray,\r\n setPreselectedVariationCode,\r\n setIs3DMode,\r\n setIsXBow,\r\n setCdcSettings,\r\n setDealerInquirySent,\r\n setUserDidTimeoutInStream,\r\n setDealerInquiryDialogOpen,\r\n};\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst ShowFullImage: React.FunctionComponent = () => {\r\n return (\r\n \r\n Show Full Image Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ShowFullImage;\r\n","import { SELECT_SETUP, APPLY_SETUP, EXIT_VEHICLE_CONFIGURATION } from \"../actionTypes\";\r\nimport { Setup } from '../../components/setups/SetupsList'\r\nimport Action from './models/action'\r\n\r\nexport interface SetupsState {\r\n\tselected: Setup;\r\n\tapplied: Setup | undefined;\r\n}\r\n\r\nexport const initialState: SetupsState = {\r\n\tselected: {} as Setup,\r\n\tapplied: undefined,\r\n};\r\n\r\nexport default function SetupsReducer(state: SetupsState = initialState, action: Action): SetupsState {\r\n\tswitch (action.type) {\r\n\t\tcase SELECT_SETUP: {\r\n\t\t\tconst selected: Setup = action.payload;\r\n\t\t\treturn { ...state, selected };\r\n\t\t}\r\n\t\tcase APPLY_SETUP: {\r\n\t\t\tconst applied: Setup = action.payload;\r\n\t\t\treturn { ...state, applied };\r\n\t\t}\r\n\t\tcase EXIT_VEHICLE_CONFIGURATION: {\r\n\t\t\treturn {\r\n\t\t\t\t...initialState,\r\n\t\t\t};\r\n\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}","import { SELECT_PART, DESELECT_PART, APPLY_PARTS, REMOVE_ALL_PARTS, EXIT_VEHICLE_CONFIGURATION } from \"../actionTypes\";\r\nimport Action from './models/action'\r\nimport { Part } from \"../../components/parts/PartsList\";\r\nimport { Store } from \".\";\r\nimport { uniqBy } from \"../../utils/helpers\";\r\n\r\nexport interface PartsState {\r\n\tselected: Part | null;\r\n\tapplied: Part[];\r\n}\r\n\r\nexport const initialState: PartsState = {\r\n\tselected: {} as Part,\r\n\tapplied: [],\r\n};\r\n\r\nexport default function PartsReducer(state: PartsState = initialState, action: Action, State: Store): PartsState {\r\n\tswitch (action.type) {\r\n\t\tcase SELECT_PART: {\r\n\t\t\tconst selected: Part = action.payload;\r\n\t\t\treturn { ...state, selected };\r\n\t\t}\r\n\t\tcase DESELECT_PART: {\r\n\t\t\treturn { ...state, selected: {} as Part };\r\n\t\t}\r\n\t\tcase APPLY_PARTS: {\r\n\t\t\tconst partIds: string[] = action.payload;\r\n\r\n\t\t\tlet parts = State.vehicleOverviewState.Parts.filter(\r\n\t\t\t\t(part: Part) => partIds.indexOf(part.PartId) !== -1\r\n\t\t\t);\r\n\r\n\t\t\tparts = uniqBy(parts, (p) => p.PartId);\r\n\r\n\t\t\treturn { ...state, applied: [...parts] };\r\n\t\t}\r\n\t\tcase REMOVE_ALL_PARTS: {\r\n\r\n\t\t\treturn { ...state, applied: [] };\r\n\t\t}\r\n\t\tcase EXIT_VEHICLE_CONFIGURATION: {\r\n\t\t\treturn {\r\n\t\t\t\t...initialState,\r\n\t\t\t};\r\n\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","export enum DialogTypes {\r\n\tnone = \"none\",\r\n\tsetupParts = \"setupParts\",\r\n\taddPart = \"addPart\",\r\n\tremovePart = \"removePart\",\r\n\tconfigurationSummary = \"configurationSummary\",\r\n\twarnBeforeExit = \"warnBeforeExit\",\r\n\tsaveConfiguration = \"saveConfiguration\",\r\n\tsavedConfiguration = \"savedConfiguration\",\r\n\tconflictWhileAddPart = \"conflictWhileAddPart\",\r\n\texportConfiguration = 'exportConfiguration',\r\n\tshareConfiguration = 'shareConfiguration',\r\n\tremoveConflictingPart = 'removeConflictingPart',\r\n\tdeleteConfiguraion = 'deleteConfiguraion',\r\n\tsendConfiguration = \"sendConfiguration\",\r\n\tsendConfigurationToDealer = \"sendConfigurationToDealer\",\r\n\tuserGuidance = \"userGuidance\",\r\n\tlanguageSelection = \"languageSelection\"\r\n}\r\n","import { SHOW_MODAL, HIDE_MODAL, EXIT_VEHICLE_CONFIGURATION } from \"../actionTypes\";\r\nimport Action from './models/action';\r\nimport { DialogTypes } from \"../../enums/dialogTypes\";\r\n\r\nexport interface DialogState {\r\n\tisOpen: boolean;\r\n\tcontentType: DialogTypes\r\n\ttitle: string;\r\n\tdata: D;\r\n\tshareType?: string;\r\n}\r\n\r\nexport const initialState = {\r\n\tisOpen: false,\r\n\tcontentType: DialogTypes.none,\r\n\ttitle: '',\r\n\tdata: {},\r\n\tshareType: '',\r\n};\r\n\r\nexport default function DialogReducer(state: DialogState = initialState, action: Action): DialogState {\r\n\tswitch (action.type) {\r\n\t\tcase SHOW_MODAL: {\r\n\t\t\tconst { contentType, data, title, shareType } = action.payload;\r\n\t\t\treturn {\r\n\t\t\t\tisOpen: true,\r\n\t\t\t\tcontentType,\r\n\t\t\t\tdata,\r\n\t\t\t\ttitle,\r\n\t\t\t\tshareType,\r\n\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase EXIT_VEHICLE_CONFIGURATION:\r\n\t\tcase HIDE_MODAL: {\r\n\t\t\treturn {\r\n\t\t\t\t...initialState,\r\n\t\t\t};\r\n\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import { ADD_VEHICLE_OVERVIEW, EXIT_VEHICLE_CONFIGURATION } from \"../actionTypes\";\r\nimport Action from \"./models/action\";\r\nimport { Part } from \"../../components/parts/PartsList\";\r\nimport { VehicleInformation, VehicleOverviewResponse } from \"../../models/vehicle\";\r\n\r\nexport interface VehicleOverviewState extends VehicleOverviewResponse {\r\n Vehicle: VehicleInformation;\r\n Categories: string[];\r\n}\r\n\r\nconst VehicleState: VehicleInformation = {\r\n Name: \"\",\r\n ModelId: \"\",\r\n EngineType: \"\",\r\n Hero: {\r\n Intro: \"\",\r\n Title: \"\",\r\n ImageUrl: \"\",\r\n Description: \"\",\r\n Price: {\r\n CurrencySymbol: \"\",\r\n Value: 0,\r\n },\r\n },\r\n RenderingEngine: \"\",\r\n};\r\n\r\nexport const vehicleInitialState: VehicleOverviewState = {\r\n Vehicle: VehicleState,\r\n FastFacts: [],\r\n Setups: [],\r\n Categories: [],\r\n Parts: [],\r\n Variations: [\r\n {\r\n Code: \"\",\r\n ColorCode: \"\",\r\n PriceNote: \"\",\r\n MontageNote: null\r\n },\r\n ],\r\n Attributes: [\r\n {\r\n ProductCode: \"\",\r\n Attributes: [\r\n {\r\n Key: \"\",\r\n ClassificationCategory: \"\",\r\n Description: \"\",\r\n Values: [\r\n {\r\n Key: \"\",\r\n Description: \"\",\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n Finance: {\r\n FinanceData: [\r\n {\r\n Variation: \"\",\r\n Desciption: \"\",\r\n Key: \"\",\r\n Available: false,\r\n },\r\n ],\r\n FinanceConfiguration: {\r\n FinanceServiceUrl: \"\",\r\n },\r\n },\r\n RenderSettings: {\r\n Data: {\r\n Command: \"\",\r\n Value: \"\",\r\n },\r\n Sound: {\r\n Enabled: true,\r\n Command: \"\",\r\n Value: \"\",\r\n },\r\n Reset: {\r\n Command: \"\",\r\n Value: \"\",\r\n },\r\n AppSettings: {\r\n ENV: \"\",\r\n KEY: \"\",\r\n URL: \"\",\r\n },\r\n PowerParts: {\r\n Command: \"string\",\r\n List: [\r\n {\r\n Category: \"\",\r\n Id: \"\",\r\n Value: \"\",\r\n default: false,\r\n },\r\n ],\r\n Camera: \"\",\r\n },\r\n Tools: {\r\n Views: {\r\n Command: \"\",\r\n Animations: [{ Name: \"\", Value: \"\" }],\r\n },\r\n Cinematics: {\r\n Command: \"\",\r\n List: [\r\n {\r\n Name: \"\",\r\n Value: \"\",\r\n },\r\n ],\r\n },\r\n Environments: {\r\n Command: \"\",\r\n List: [\r\n {\r\n Name: \"\",\r\n Value: \"\",\r\n },\r\n ],\r\n },\r\n Perspectives: {\r\n Command: \"\",\r\n List: [\r\n {\r\n Name: \"\",\r\n Value: \"\",\r\n },\r\n ],\r\n },\r\n Tiltshift: {\r\n Command: \"\",\r\n Value: \"\",\r\n },\r\n Lighting: {\r\n CommandInitial: \"\",\r\n CommandSlider: \"\",\r\n ValueInitial: 12.0,\r\n ValueFrom: 12.0,\r\n ValueTo: 22.0,\r\n Options: [\r\n {\r\n Name: \"\",\r\n Value: 12.0,\r\n },\r\n ],\r\n },\r\n ColorSelection: {\r\n Command: \"\",\r\n CommandIndividual: \"\",\r\n PreDefined: {\r\n BodyColor: [],\r\n BrakeCaliperColor: [],\r\n RimColor: [],\r\n ContrastStitchingColor: [],\r\n SuspensionSpringAndLogoColor: [],\r\n },\r\n Categories: [],\r\n FinishOptions: [],\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport function getCategoryInformation(parts: Part[]): string[] {\r\n return parts\r\n .reduce((acc: string[], current: Part) => {\r\n return acc.includes(current.CategoryName) ? acc : [...acc, current.CategoryName];\r\n }, [])\r\n .sort();\r\n}\r\n\r\nexport default function VehicleOverviewReducer(state: VehicleOverviewState = vehicleInitialState, action: Required): VehicleOverviewState {\r\n switch (action.type) {\r\n case ADD_VEHICLE_OVERVIEW: {\r\n return {\r\n ...action.payload,\r\n };\r\n }\r\n case EXIT_VEHICLE_CONFIGURATION: {\r\n return {\r\n ...vehicleInitialState,\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { Store } from \"./index\";\r\nimport Action from \"./models/action\";\r\nimport { Part } from \"../../components/parts/PartsList\";\r\nimport { FullImage, TestRideData, TestRideStatus } from \"../../components/configuration/ConfigurationView\";\r\nimport { getCategoryInformation } from \"./vehicleOverview\";\r\nimport { initialReduxState as emptyState } from \"./index\";\r\nimport { SaveDetailsData } from \"../../components/dialogs/saveConfiguration\";\r\nimport { Price } from \"../../models/vehicle\";\r\nimport { uniqBy } from \"../../utils/helpers\";\r\n\r\nexport interface LoadConfigurationResponse {\r\n\tVehicle: Vehicle;\r\n\tConfiguration: Configuration;\r\n\tTestRideData: TestRideData;\r\n}\r\n\r\ninterface Configuration {\r\n\tClonedConfigurationId: number;\r\n\tSaveDetails: SaveDetailsData;\r\n\tSelectedPartIds: string[];\r\n\tTotalPrice: Price;\r\n\tVariationCode: string;\r\n\tIs3DModel: boolean;\r\n\tVehicleSettings: VehicleSettings;\r\n}\r\n\r\ninterface Vehicle {\r\n\tModelId: string;\r\n\tName: string;\r\n\tAvailableParts: Part[];\r\n\tFullImages: FullImage[];\r\n\tTestRideData: TestRideData;\r\n\tVariations: [];\r\n}\r\n\r\n/**\r\n * 3D only\r\n */\r\nexport interface VehicleSettings {\r\n\tToolsConfiguration: ToolsConfiguration,\r\n\tCustomColorConfiguration: CustomColorConfiguration\r\n}\r\n\r\n/**\r\n * 3D only\r\n */\r\nexport interface ToolsConfiguration {\r\n\tLighting: string;\r\n\tEnvironments: string;\r\n\tPerspectives: string;\r\n\tCinematics: string\r\n}\r\n\r\n/**\r\n * 3D only\r\n */\r\nexport interface CustomColorConfiguration {\r\n\tSelectedBodyColor: string;\r\n\tSelectedRimsColor: string;\r\n\tSelectedCaliperColor: string;\r\n\tSelectedStitchingColor: string;\r\n\tSelectedSuspensionAndLogoColor: string;\r\n}\r\n\r\nexport default function LoadReducer(\r\n\tstate: Store,\r\n\taction: Action\r\n): Store {\r\n\tconst {\r\n\t\tVehicle: { AvailableParts: Parts, FullImages, Name, ModelId, Variations },\r\n\t\tTestRideData: {Data, Status},\r\n\t\tConfiguration: {\r\n\t\t\tClonedConfigurationId,\r\n\t\t\tTotalPrice: price,\r\n\t\t\tSelectedPartIds,\r\n\t\t\tVariationCode,\r\n\t\t\tIs3DModel,\r\n\t\t\tVehicleSettings\r\n\t\t},\r\n\t\theroImgUrl\r\n\t} = action.payload as LoadConfigurationResponse & { heroImgUrl: string } & {VariationCode: string};\r\n\r\n\tconst { culture, market, companyId } = state.configurationState;\r\n\r\n\treturn {\r\n\t\t...emptyState,\r\n\t\tparts: {\r\n\t\t\t...emptyState.parts,\r\n\t\t\tapplied: getAppliedParts(Parts, SelectedPartIds)\r\n\t\t},\r\n\t\tvehicleOverviewState: {\r\n\t\t\t...emptyState.vehicleOverviewState,\r\n\t\t\tParts,\r\n\t\t\tCategories: getCategoryInformation(Parts),\r\n\t\t\tVehicle: {\r\n\t\t\t\t...state.vehicleOverviewState.Vehicle,\r\n\t\t\t\tName,\r\n\t\t\t\tModelId,\r\n\t\t\t\tHero: {\r\n\t\t\t\t\t...state.vehicleOverviewState.Vehicle.Hero,\r\n\t\t\t\t\tImageUrl: heroImgUrl\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tVariations:Variations\r\n\t\t},\r\n\t\tconfigurationState: {\r\n\t\t\t...emptyState.configurationState,\r\n\t\t\tconfiguration: {\r\n\t\t\t\tConfigurationId: ClonedConfigurationId,\r\n\t\t\t\tFullImages,\r\n\t\t\t\tTestRideData:{\r\n\t\t\t\t\tData: Data,\r\n\t\t\t\t\tStatus: Status\r\n\t\t\t\t},\r\n\t\t\t\tVariationCode,\r\n\t\t\t},\r\n\t\t\tprice,\r\n\t\t\tculture,\r\n\t\t\tmarket,\r\n\t\t\tcompanyId,\r\n\t\t\twasRecentlyCreated: false,\r\n\t\t\tis3DMode: false,\r\n\t\t\tisXBow: false,\r\n\t\t\tVehicleSettings\r\n\t\t},\r\n\t\tviews: {\r\n\t\t\t...emptyState.views,\r\n\t\t\t// this will take user to the summary\r\n\t\t\tshowConfigurationSummary: false\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction getAppliedParts(Parts: Part[], PartIds: string[]) {\r\n\tlet parts = Parts.filter(\r\n\t\t(part: Part) => PartIds.indexOf(part.PartId) !== -1\r\n\t);\r\n\t\r\n\tconst appliedParts = uniqBy(parts, 'PartId');\r\n\treturn appliedParts;\r\n}\r\n","import { MotorcycleModelResponse, VehicleInformation } from \"../../models/vehicle\";\r\nimport { ADD_MOTORYCLE_MODELS } from \"../actionTypes\";\r\nimport Action from './models/action';\r\n\r\nexport const initialState: MotorcycleModelResponse = {\r\n\tSegments: [],\r\n\tShowPricesInConfigurator: true,\r\n\tShowOfferButton: false,\r\n}\r\n\r\nexport function getVehicleInformation(modelResponse: MotorcycleModelResponse) {\r\n\treturn modelResponse.Segments.reduce((acc, current): VehicleInformation[] => {\r\n\t\treturn [...acc, ...current.Vehicles]\r\n\t}, [] as VehicleInformation[])\r\n}\r\n\r\nexport default function MotorcycleReducer(state: MotorcycleModelResponse = initialState, action: Action): MotorcycleModelResponse {\r\n\tswitch (action.type) {\r\n\t\tcase ADD_MOTORYCLE_MODELS: {\r\n\t\t\treturn {\r\n\t\t\t\t...action.payload\r\n\t\t\t}\r\n\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import {\r\n\tSET_PERSPECTIVE,\r\n\tSET_CREATED_CONFIGURATION,\r\n\tSET_IMAGE_TIMESTAMP,\r\n\tSET_PRICE,\r\n\tSET_CULTURE,\r\n\tEXIT_VEHICLE_CONFIGURATION,\r\n\tSET_CONFIGURATION_ID,\r\n\tSET_CONFIGURATION_IMAGES,\r\n\tSET_COMPANY_ID,\r\n\tSET_COUNTRY,\r\n\tPRESERVE_SAVE_DETAILS_DATA,\r\n\tSET_ENTRY_POINT_URL,\r\n\tSET_CONFIGURATION_WAS_RECENTLY_CREATED,\r\n\tSET_CONFIGURATION_IS_DIRTY,\r\n\tSET_VEHICLE_VARIATION,\r\n\tSET_NO_CONFLICTING_PARTS,\r\n\tSET_REMOVE_NO_CONFLICTING_PARTS,\r\n\tSET_IS3D_MODE,\r\n\tSET_IS_XBOW,\r\n\tDEALER_INQUIRY_SENT,\r\n\tUSER_DID_TIMEOUT_IN_STREAM,\r\n\tDEALER_INQUIRY_DIALOG_OPEN,\r\n\tSET_CDC_SETTINGS,\r\n} from \"../actionTypes\";\r\nimport Action from \"./models/action\";\r\nimport { CreateConfigurationResponse } from \"../../components/configuration/ConfigurationView\";\r\nimport { SaveDetailsData } from \"../../components/dialogs/saveConfiguration\";\r\nimport { AddPartPayload, CustomColorConfigurationsPayload, RemovePartPayload, ToolsConfigurationPayload, VehicleSettingsPayload } from \"../../services/http/real\";\r\nimport { Price } from \"../../models/vehicle\";\r\n\r\nconst initialCustomerData: CustomerData = {\r\n\tname: \"\",\r\n\tsurname: \"\",\r\n\temail: \"@\",\r\n\tcomment: \"\"\r\n};\r\n\r\nconst initialSaveDetailsData: SaveDetailsData = {\r\n\tVin: \"\",\r\n\tOrderNumber: \"\",\r\n\tFirstname: \"\",\r\n\tLastname: \"\",\r\n\tComment: \"\"\r\n};\r\n\r\nconst initialPartPayload: AddPartPayload = {\r\n\tPartId: \"\",\r\n\tSelectedParts: [],\r\n\tRemoveParts: [],\r\n\tDryRun: true\r\n};\r\n\r\nconst initialRemovePartPayload: RemovePartPayload = {\r\n\tPartId: \"\",\r\n\tRemoveParts: [],\r\n\tDryRun: true\r\n};\r\n\r\nconst initialToolsConfigurationPayload : ToolsConfigurationPayload = {\r\n\tCinematics: \"\",\r\n\tEnvironments: \"\",\r\n\tLighting: \"\",\r\n\tPerspectives: \"\",\r\n\tAnimations: []\r\n}\r\nconst initialCustomColorConfigurationsPayload : CustomColorConfigurationsPayload = {\r\n\tSelectedBodyColor: \"\",\r\n\tSelectedRimsColor: \"\",\r\n\tSelectedCaliperColor: \"\",\r\n\tSelectedStitchingColor: \"\",\r\n\tSelectedSuspensionAndLogoColor: \"\",\r\n}\r\n\r\nexport interface ConfigurationState {\r\n\tconfiguration: CreateConfigurationResponse;\r\n\tperspective: number;\r\n\tprice: Price;\r\n\timageTimestamp: number;\r\n\tculture: string;\r\n\tmarket: string;\r\n\tcompanyId: string;\r\n\tcustomer: CustomerData;\r\n\tentryPointUrl: string;\r\n\tcategoryScrollPosition: number;\r\n\twasRecentlyCreated: boolean;\r\n\tisDirty: boolean;\r\n\tpreservableSaveDetails: SaveDetailsData;\r\n\tcurrentVariation: string;\r\n\tnoConflictingParts: AddPartPayload;\r\n\tremoveNoConflictingParts: RemovePartPayload;\r\n\tis3DMode: boolean;\r\n\tcdcSettings: boolean;\r\n\tisXBow: boolean;\r\n\tdealerInquirySent: boolean;\r\n\tuserDidTimeoutInStream: boolean;\r\n\tdealerInquiryDialogOpen: boolean;\r\n\tVehicleSettings: VehicleSettingsPayload;\r\n}\r\n\r\nexport interface CustomerData {\r\n\tname?: string;\r\n\tsurname?: string;\r\n\temail?: string;\r\n\tcomment?: string;\r\n}\r\n\r\nexport const initialConfigurationState: ConfigurationState = {\r\n\tconfiguration: {} as CreateConfigurationResponse,\r\n\tperspective: 0,\r\n\tprice: {\r\n\t\tCurrencySymbol: \"\",\r\n\t\tValue: 0\r\n\t},\r\n\timageTimestamp: 0,\r\n\tculture: process.env.REACT_APP_DEFAULT_CULTURE as string,\r\n\tmarket: \"\",\r\n\tcompanyId: \"\",\r\n\tcustomer: { ...initialCustomerData },\r\n\tentryPointUrl: \"\",\r\n\tcategoryScrollPosition: 0,\r\n\twasRecentlyCreated: true,\r\n\tisDirty: false,\r\n\tpreservableSaveDetails: { ...initialSaveDetailsData },\r\n\tcurrentVariation:\"\",\r\n\tnoConflictingParts: { ...initialPartPayload\t},\r\n\tremoveNoConflictingParts: { ...initialRemovePartPayload},\r\n\tis3DMode: false,\r\n\tcdcSettings: false,\r\n\tisXBow: false,\r\n\tdealerInquirySent: false,\r\n\tuserDidTimeoutInStream: false,\r\n\tdealerInquiryDialogOpen: false,\r\n\tVehicleSettings: {\r\n\t\tCustomColorConfiguration: { ...initialCustomColorConfigurationsPayload },\r\n\t\tToolsConfiguration: { ...initialToolsConfigurationPayload }\r\n\t},\r\n};\r\n\r\nexport default function ConfigurationReducer(\r\n\tstate: ConfigurationState = initialConfigurationState,\r\n\taction: Action\r\n): ConfigurationState {\r\n\tswitch (action.type) {\r\n\t\tcase SET_PERSPECTIVE: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tperspective: action.payload\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase SET_CREATED_CONFIGURATION: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tconfiguration: action.payload\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase SET_CONFIGURATION_ID: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tconfiguration: {\r\n\t\t\t\t\t...state.configuration,\r\n\t\t\t\t\tConfigurationId: action.payload\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase SET_CONFIGURATION_IMAGES: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tconfiguration: {\r\n\t\t\t\t\t...state.configuration,\r\n\t\t\t\t\tFullImages: action.payload\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase SET_IS3D_MODE : {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tis3DMode: action.payload\r\n\t\t\t} \r\n\t\t}\r\n\t\tcase SET_IS_XBOW : {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tisXBow: action.payload\r\n\t\t\t}\r\n\t\t}\r\n\t\tcase DEALER_INQUIRY_SENT : {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tdealerInquirySent: action.payload\r\n\t\t\t}\r\n\t\t}\r\n\t\tcase USER_DID_TIMEOUT_IN_STREAM : {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tuserDidTimeoutInStream: action.payload\r\n\t\t\t}\r\n\t\t}\r\n\t\tcase DEALER_INQUIRY_DIALOG_OPEN : {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tdealerInquiryDialogOpen: action.payload\r\n\t\t\t}\r\n\t\t}\r\n\t\tcase SET_PRICE: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tprice: action.payload\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase SET_IMAGE_TIMESTAMP: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\timageTimestamp: Date.now()\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase SET_CULTURE: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tculture: action.payload\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase SET_COMPANY_ID: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tcompanyId: action.payload\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase SET_COUNTRY: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tmarket: action.payload\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase EXIT_VEHICLE_CONFIGURATION: {\r\n\t\t\treturn {\r\n\t\t\t\t...initialConfigurationState,\r\n\t\t\t\tculture: state.culture,\r\n\t\t\t\tmarket: state.market,\r\n\t\t\t\tcompanyId: state.companyId\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase SET_ENTRY_POINT_URL: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tentryPointUrl: action.payload\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase PRESERVE_SAVE_DETAILS_DATA: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tpreservableSaveDetails: action.payload\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase SET_CONFIGURATION_WAS_RECENTLY_CREATED: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\twasRecentlyCreated: action.payload\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase SET_CONFIGURATION_IS_DIRTY: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tisDirty: action.payload\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase SET_VEHICLE_VARIATION: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tcurrentVariation: action.payload\r\n\t\t\t}\r\n\t\t}\r\n\t\tcase SET_NO_CONFLICTING_PARTS: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tnoConflictingParts: action.payload \r\n\t\t\t}\r\n\t\t}\r\n\t\tcase SET_REMOVE_NO_CONFLICTING_PARTS: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tremoveNoConflictingParts: action.payload \r\n\t\t\t}\r\n\t\t}\r\n\t\tcase SET_CDC_SETTINGS: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tcdcSettings: action.payload \r\n\t\t\t}\r\n\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import { SHOW_TOAST, HIDE_TOAST, EXIT_VEHICLE_CONFIGURATION } from \"../actionTypes\";\r\nimport Action from './models/action';\r\n\r\nexport interface ToastMessageState {\r\n\tvisible: boolean;\r\n\tmessage: string\r\n}\r\n\r\nexport const initialState: ToastMessageState = {\r\n\tvisible: false,\r\n\tmessage: '',\r\n};\r\n\r\nexport default function ToastMessageReducer(state: ToastMessageState = initialState, action: Action): ToastMessageState {\r\n\tswitch (action.type) {\r\n\t\tcase SHOW_TOAST: {\r\n\t\t\tconst message: string = action.payload;\r\n\t\t\treturn { visible: true, message };\r\n\t\t}\r\n\t\tcase HIDE_TOAST: {\r\n\t\t\treturn { ...state, visible: false };\r\n\t\t}\r\n\t\tcase EXIT_VEHICLE_CONFIGURATION: {\r\n\t\t\treturn {\r\n\t\t\t\t...initialState,\r\n\t\t\t};\r\n\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}","import { TOGGLE_PART_DETAIL, TOGGLE_CONFIG_SUMMARY, EXIT_VEHICLE_CONFIGURATION } from \"../actionTypes\";\r\nimport Action from './models/action';\r\n\r\nexport interface ViewsState {\r\n showPartDetail: boolean;\r\n showConfigurationSummary: boolean;\r\n}\r\n\r\nexport const viewsInitialState: ViewsState = {\r\n showPartDetail: false,\r\n showConfigurationSummary: false,\r\n}\r\n\r\nexport default function ViewsReducer(state: ViewsState = viewsInitialState, action: Action): ViewsState {\r\n switch (action.type) {\r\n case TOGGLE_CONFIG_SUMMARY: {\r\n return {\r\n ...state,\r\n showConfigurationSummary: action.payload,\r\n }\r\n }\r\n case TOGGLE_PART_DETAIL: {\r\n return {\r\n ...state,\r\n showPartDetail: action.payload,\r\n }\r\n }\r\n case EXIT_VEHICLE_CONFIGURATION: {\r\n return {\r\n ...viewsInitialState,\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import { SHOW_GUIDANCE, HIDE_GUIDANCE} from \"../actionTypes\";\r\nimport Action from './models/action';\r\n\r\nexport interface UserGuidanceState {\r\n\tshow: boolean;\r\n}\r\n\r\nexport const initialState: UserGuidanceState = {\r\n\tshow: true,\r\n};\r\n\r\nexport default function ToastMessageReducer(state: UserGuidanceState = initialState, action: Action): UserGuidanceState {\r\n\tswitch (action.type) {\r\n\t\tcase SHOW_GUIDANCE: {\r\n\t\t\treturn {\r\n\t\t\t\t...initialState, \r\n\t\t\t};\r\n\t\t}\r\n\t\tcase HIDE_GUIDANCE: {\r\n\t\t\treturn {\r\n\t\t\t\tshow: false, \r\n\t\t\t};\r\n\t\t} \r\n\t\tdefault: \r\n\t\t\treturn state;\r\n\t}\r\n}","import { SET_CURRENT_COUNTRY} from \"../actionTypes\";\r\nimport Action from './models/action';\r\n\r\nexport interface CurrentCountryState {\r\n CountryName: string;\r\n CountryCode: string;\r\n LanguageCode: any;\r\n ImprintCode: string|null;\r\n}\r\n\r\nexport const initialState: CurrentCountryState = {\r\n\tCountryName: \"\",\r\n CountryCode: \"\",\r\n LanguageCode: \"\",\r\n ImprintCode: null\r\n};\r\n\r\nexport default function CurrentCountryReducer(state: CurrentCountryState = initialState, action: Action): CurrentCountryState {\r\n\tswitch (action.type) {\r\n\t\tcase SET_CURRENT_COUNTRY: {\r\n\t\t\treturn {\r\n\t\t\t\t...action.payload, \r\n\t\t\t};\r\n\t\t} \r\n\t\tdefault: \r\n\t\t\treturn state;\r\n\t}\r\n}","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Hqv_Logo: React.FunctionComponent = () => {\r\n return (\r\n \r\n HQV Logo\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Hqv_Logo;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst KTM_Logo: React.FunctionComponent = () => {\r\n return (\r\n \r\n KTM Logo\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default KTM_Logo;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst GG_Logo: React.FunctionComponent = () => {\r\n return (\r\n \r\n GasGas Logo\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default GG_Logo;\r\n","import React from \"react\";\r\nimport Action from \"./models/action\";\r\nimport HQV_LOGO from \"../../assets/icons/hqv_logo\";\r\nimport KTM_LOGO from \"../../assets/icons/ktm_logo\";\r\nimport GG_LOGO from \"../../assets/icons/gg_logo\";\r\nimport { SET_RUNTIME_CONFIGURATION } from \"../actionTypes\";\r\n\r\nexport type ApplicationSettings = {\r\n Brand: string;\r\n SupportedBrands: string[];\r\n BrandLink: string;\r\n IsB2C: boolean;\r\n Env: string;\r\n OneTrust: string;\r\n GTM: string;\r\n Santander: string;\r\n CdcApplicationSettings: CDCApplicationSettings;\r\n DealerSearch2DEnabled: boolean;\r\n DealerSearch3DEnabled: boolean;\r\n GoogleMapsKey: string;\r\n //GMAPSKEY_local: string;\r\n Show3DDebugTools: boolean;\r\n versioninfo?: string;\r\n Environment: string;\r\n JentisSettings: JentisSettings;\r\n};\r\n\r\nexport type JentisSettings = {\r\n Url: string;\r\n Project: string;\r\n Id: string;\r\n};\r\n\r\nexport type CDCApplicationSettings = {\r\n Url: string;\r\n Api: string;\r\n CdcEnabled: boolean;\r\n};\r\n\r\nexport const initialState: ApplicationSettings = {\r\n Brand: \"HQV\",\r\n SupportedBrands: [\"KTM\", \"HQV\", \"GG\"],\r\n BrandLink: \"https://www.ktm.com/\",\r\n IsB2C: true,\r\n Env: \"Development\",\r\n OneTrust: \"4ceffab1-4567-4a2f-afd8-13c433741ab5-test\",\r\n GTM: \"GTM-K5NTPVP\",\r\n Santander: \"https://dev.appgile.com/plugin/scf-plugin.js?clientId=505ea096-635b-4b59-aebe-519e644c4029\",\r\n CdcApplicationSettings: {\r\n Url: \"https://login-dev.ktm.com/js/gigya.js?apikey=\",\r\n Api: \"4_eVs1NDxVqiV4FGHp1F8lcA\",\r\n CdcEnabled: true,\r\n },\r\n DealerSearch2DEnabled: true,\r\n DealerSearch3DEnabled: true,\r\n GoogleMapsKey: \"AIzaSyCPEuL6iv1R2hkyAdZa-Udaf8nYMt5904E\",\r\n Show3DDebugTools: true,\r\n versioninfo: \"1.0.0\",\r\n Environment: \"Development\",\r\n JentisSettings: {\r\n Url: \"https://8b2pf4.configurator.ktm.com\",\r\n Project: \"configurator-ktm-com\",\r\n Id: \"ggq058\",\r\n },\r\n};\r\n\r\nexport default function ApplicationSettingsReducer(state: ApplicationSettings = initialState, action: Action): ApplicationSettings {\r\n switch (action.type) {\r\n case SET_RUNTIME_CONFIGURATION:\r\n return {\r\n ...action.payload,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport const getBrandLogo = (brand: string) => {\r\n return \"/images/\" + brand.toLowerCase() + \"_Logo.png\";\r\n};\r\n\r\nexport const getBrandLogoSvgComponent = (brand: string | undefined) => {\r\n switch (brand) {\r\n case \"KTM\":\r\n return ;\r\n case \"HQV\":\r\n return ;\r\n case \"GG\":\r\n return ;\r\n default:\r\n return ;\r\n }\r\n};\r\n","import { SET_PRESELECTED_VARIATION_CODE} from \"../actionTypes\";\r\nimport Action from './models/action';\r\n\r\nexport interface PreselectedVariationCodeState {\r\n\tcode: string;\r\n}\r\n\r\nexport const initialState: PreselectedVariationCodeState = {\r\n\tcode: \"\",\r\n};\r\n\r\nexport default function PreselectedVariationCodeReducer(state: PreselectedVariationCodeState = initialState, action: Action): PreselectedVariationCodeState {\r\n\tswitch (action.type) {\r\n\t\tcase SET_PRESELECTED_VARIATION_CODE: {\r\n\t\t\treturn {\r\n\t\t\t\t...action.payload, \r\n\t\t\t};\r\n\t\t} \r\n\t\tdefault: \r\n\t\t\treturn state;\r\n\t}\r\n}","import setups, { SetupsState } from \"./setups\";\r\nimport parts, { PartsState } from \"./parts\";\r\nimport dialog, { DialogState } from \"./modals\";\r\nimport load from \"./load\";\r\nimport models from \"./models\";\r\nimport configuration, {\r\n ConfigurationState,\r\n initialConfigurationState,\r\n} from \"./configuration\";\r\nimport vehicleOverview, {\r\n VehicleOverviewState,\r\n vehicleInitialState,\r\n} from \"./vehicleOverview\";\r\nimport toast, { ToastMessageState } from \"./toast\";\r\nimport views, { ViewsState, viewsInitialState } from \"./views\";\r\nimport { LOAD_CONFIGURATION } from \"../actionTypes\";\r\nimport Action from \"./models/action\";\r\nimport { initialState as modelInitialState } from \"./models\";\r\nimport { initialState as dialogInitialState } from \"./modals\";\r\nimport { initialState as partsInitialState } from \"./parts\";\r\nimport { initialState as setupsInitialState } from \"./setups\";\r\nimport { initialState as toastInitialState } from \"./toast\";\r\nimport { initialState as userGuidanceInitialState } from \"./userGuidance\";\r\nimport currentCountry, {CurrentCountryState, initialState as currentCountryInitialState} from \"./currentCountry\";\r\nimport countryArray, {CountryArrayState, initialState as countryArrayInitialState} from \"./countryArray\";\r\nimport ApplicationSettingsReducer, {\r\n ApplicationSettings,\r\n initialState as applicationSettingsInitialState,\r\n} from \"./applicationSettings\";\r\nimport userGuidance, { UserGuidanceState } from \"./userGuidance\";\r\nimport imageArray, { ImageArrayState, initialState as imageArrayInitialState } from \"./imageArray\";\r\nimport preselectedVariationCode, {PreselectedVariationCodeState, initialState as PreselectedVariationCodeStateInitialState} from \"./preselectedVariationCode\";\r\nimport { MotorcycleModelResponse } from \"../../models/vehicle\";\r\n\r\n\r\nexport interface Store {\r\n applicationSettings: ApplicationSettings;\r\n dialog: DialogState;\r\n configurationState: ConfigurationState;\r\n views: ViewsState;\r\n modelsResponse: MotorcycleModelResponse;\r\n vehicleOverviewState: VehicleOverviewState;\r\n parts: PartsState;\r\n setups: SetupsState;\r\n toast: ToastMessageState;\r\n userGuidance: UserGuidanceState;\r\n currentCountry: CurrentCountryState;\r\n countryArray: CountryArrayState;\r\n imageArray: ImageArrayState;\r\n preselectedVariationCode: PreselectedVariationCodeState;\r\n}\r\n\r\nexport const initialReduxState: Store = {\r\n applicationSettings: { ...applicationSettingsInitialState },\r\n dialog: { ...dialogInitialState },\r\n configurationState: {\r\n ...initialConfigurationState,\r\n },\r\n views: { ...viewsInitialState },\r\n modelsResponse: { ...modelInitialState },\r\n vehicleOverviewState: { ...vehicleInitialState },\r\n parts: { ...partsInitialState },\r\n setups: { ...setupsInitialState },\r\n toast: { ...toastInitialState },\r\n userGuidance: {...userGuidanceInitialState },\r\n currentCountry: {...currentCountryInitialState},\r\n countryArray: {...countryArrayInitialState},\r\n imageArray: {...imageArrayInitialState},\r\n preselectedVariationCode:{...PreselectedVariationCodeStateInitialState}\r\n};\r\n\r\nexport default function rootReducer(\r\n state: Store = initialReduxState,\r\n action: Action\r\n): Store {\r\n if (action.type === LOAD_CONFIGURATION) {\r\n return load(state, action);\r\n }\r\n\r\n return {\r\n applicationSettings: ApplicationSettingsReducer(\r\n state.applicationSettings,\r\n action\r\n ),\r\n dialog: dialog(state.dialog, action), \r\n configurationState: configuration(state.configurationState, action),\r\n views: views(state.views, action),\r\n modelsResponse: models(state.modelsResponse, action),\r\n vehicleOverviewState: vehicleOverview(\r\n state.vehicleOverviewState,\r\n action as Required\r\n ),\r\n parts: parts(state.parts, action, state), \r\n setups: setups(state.setups, action), \r\n toast: toast(state.toast, action),\r\n userGuidance: userGuidance(state.userGuidance, action),\r\n currentCountry: currentCountry(state.currentCountry,action),\r\n countryArray: countryArray(state.countryArray, action),\r\n imageArray: imageArray(state.imageArray, action),\r\n preselectedVariationCode: preselectedVariationCode(state.preselectedVariationCode,action)\r\n };\r\n}\r\n","import store from \"../redux/store\";\r\nimport {\r\n getCulture as getCultureSelector,\r\n getMarket as getMarketSelector,\r\n getPreservedSaveDetailsDataSelector,\r\n getMotorcycleModels,\r\n getConfigurationWasRecentlyCreatedSelector,\r\n getConfigurationIsDirtySelector,\r\n getConfiguredPartsCount,\r\n} from \"../redux/selectors\";\r\nimport { Part } from \"../components/parts/PartsList\";\r\nimport { hideToast, ShowDialogProps, showToast } from \"../redux/actions\";\r\nimport { getVehicleInformation } from \"../redux/reducers/models\";\r\nimport { SaveDetailsData } from \"../components/dialogs/saveConfiguration\";\r\nimport { Price, VehicleInformation } from \"../models/vehicle\";\r\nimport { DialogTypes } from \"../enums/dialogTypes\";\r\nimport { DispatchToProps, StateToProps } from \"./addReduxProps\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport { ConfigOverviewMenuProps } from \"../components/configuration/ConfigurationOverviewMenu\";\r\nimport { Is3DProp, ShowAllPrices, TestRideProps } from \"../components/configuration/configurationSummary/ConfigurationSummary\";\r\nimport { RouteComponentProps } from \"react-router\";\r\nimport html2canvas from \"html2canvas\";\r\nimport { getCopyright } from \"../components/navigation/copyright\";\r\nimport contentDisposition from \"content-disposition\";\r\nimport { saveAs } from \"file-saver\";\r\n\r\nlet timeoutHolder: NodeJS.Timeout;\r\n\r\n// use for debug messages that should stay in the source code\r\nexport function debug(msg: string, params?: any) {\r\n // TODO: disable again log outs for production\r\n if (process.env.REACT_APP_ENVIRONMENT === \"DEV\") console.log(\"Debug=>\", msg, params);\r\n}\r\n\r\nexport function info(msg: string, params?: any) {\r\n // TODO: disable again log outs for production\r\n if (process.env.REACT_APP_ENVIRONMENT === \"DEV\") console.info(\"Info=>\", msg, params);\r\n}\r\n\r\nexport function error(msg: string, params?: any) {\r\n // TODO: disable again log outs for production\r\n if (process.env.REACT_APP_ENVIRONMENT === \"DEV\") console.error(\"Info=>\", msg, params);\r\n}\r\n\r\nexport function toastMessage(message: string) {\r\n // make sure no previous toasts are visible\r\n timeoutHolder && clearTimeout(timeoutHolder);\r\n store.dispatch(hideToast());\r\n store.dispatch(showToast(message));\r\n timeoutHolder = setTimeout(() => store.dispatch(hideToast()), 1900);\r\n}\r\n\r\nexport function getAppliedPartsCount(): number {\r\n return getConfiguredPartsCount(store.getState());\r\n}\r\n\r\nexport function getConfigurationId(): number {\r\n return store.getState().configurationState.configuration.ConfigurationId;\r\n}\r\n\r\nexport function getEntryPointUrl() {\r\n return store.getState().configurationState.entryPointUrl;\r\n}\r\n\r\nexport function getCulture(): string {\r\n return getCultureSelector(store.getState());\r\n}\r\n\r\nexport function getMarket(): string {\r\n return getMarketSelector(store.getState());\r\n}\r\n\r\nexport function getPreservedSaveDetailsData(): SaveDetailsData {\r\n return getPreservedSaveDetailsDataSelector(store.getState());\r\n}\r\n\r\nexport const getConfigurationWasRecentlyCreated = () => getConfigurationWasRecentlyCreatedSelector(store.getState());\r\n\r\nexport const getConfigurationIsDirty = () => getConfigurationIsDirtySelector(store.getState());\r\n\r\nfunction getPartsValue(parts: Part[]) {\r\n return parts.reduce((acc: number, part: Part) => {\r\n return acc + (part.Price === null ? 0 : part.Price.Value);\r\n }, 0);\r\n}\r\n\r\nexport function getVehicleById(id: string): VehicleInformation | undefined {\r\n return getVehicleInformation(getMotorcycleModels(store.getState())).find((item: VehicleInformation) => item.ModelId === id);\r\n}\r\n\r\nexport function getLocaleQuery() {\r\n const { culture, market, companyId } = store.getState().configurationState;\r\n return `?cid=${companyId}&c=${culture}&m=${market}`;\r\n}\r\n\r\nexport function sortAscendingByProperty(key: keyof T) {\r\n return (previous: T, next: T) => {\r\n const Previous = previous[key].toUpperCase();\r\n const Next = next[key].toUpperCase();\r\n return Previous > Next ? 1 : Previous < Next ? -1 : 0;\r\n };\r\n}\r\n\r\nexport function RGBToHSL(r, g, b) {\r\n r /= 255;\r\n g /= 255;\r\n b /= 255;\r\n\r\n // Find greatest and smallest channel values\r\n let cmin = Math.min(r, g, b),\r\n cmax = Math.max(r, g, b),\r\n delta = cmax - cmin,\r\n h = 0,\r\n s = 0,\r\n l = 0;\r\n // Calculate hue\r\n // No difference\r\n if (delta === 0) h = 0;\r\n // Red is max\r\n else if (cmax === r) h = ((g - b) / delta) % 6;\r\n // Green is max\r\n else if (cmax === g) h = (b - r) / delta + 2;\r\n // Blue is max\r\n else h = (r - g) / delta + 4;\r\n\r\n h = Math.round(h * 60);\r\n\r\n // Make negative hues positive behind 360°\r\n if (h < 0) h += 360;\r\n // Calculate lightness\r\n l = (cmax + cmin) / 2;\r\n\r\n // Calculate saturation\r\n s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));\r\n\r\n // Multiply l and s by 100\r\n s = +(s * 100).toFixed(1);\r\n l = +(l * 100).toFixed(1);\r\n\r\n return { h: h, s: s, l: l };\r\n}\r\n\r\nexport function isPortraitMode() {\r\n return window.innerHeight > window.innerWidth;\r\n}\r\n\r\nexport function hexToRgb(hex) {\r\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result\r\n ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16),\r\n }\r\n : null;\r\n}\r\n\r\nexport const setHexToHSLA = (hex: string) => {\r\n const rgb = hexToRgb(hex);\r\n const rgbChecked = {\r\n r: rgb && rgb.r ? rgb.r : 0,\r\n g: rgb && rgb.g ? rgb.g : 0,\r\n b: rgb && rgb.b ? rgb.b : 0,\r\n };\r\n const hsl = RGBToHSL(rgbChecked.r, rgbChecked.g, rgbChecked.b);\r\n\r\n return { h: hsl.h, s: hsl.s, l: hsl.l, a: 1 };\r\n};\r\n\r\nexport function hslToHex(h, s, l) {\r\n l /= 100;\r\n const a = (s * Math.min(l, 1 - l)) / 100;\r\n const f = (n) => {\r\n const k = (n + h / 30) % 12;\r\n const color = l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\r\n return Math.round(255 * color)\r\n .toString(16)\r\n .padStart(2, \"0\"); // convert to Hex and prefix \"0\" if needed\r\n };\r\n return `#${f(0)}${f(8)}${f(4)}`;\r\n}\r\n\r\nexport function sendConfigurationToDealer(\r\n props:\r\n | (StateToProps & DispatchToProps & WithNamespaces & ConfigOverviewMenuProps)\r\n | (StateToProps & DispatchToProps & WithNamespaces & TestRideProps & ShowAllPrices & Is3DProp & RouteComponentProps)\r\n) {\r\n const dialogProps: ShowDialogProps = {\r\n title: `${props.t(\"configuration.offer.dialogtitle\")}`,\r\n data: { ...props },\r\n contentType: DialogTypes.sendConfigurationToDealer,\r\n };\r\n props.showDialog(dialogProps);\r\n props.onSendToDealerSuccess && props.onSendToDealerSuccess();\r\n}\r\n\r\nexport async function generateRawScreenshot(portraitMode: boolean, mobileMode: boolean, drawOnElement: HTMLElement, video: HTMLVideoElement, brand: string | undefined): Promise {\r\n console.log(\"generateRawScreenshot:::portraitMode\", portraitMode);\r\n console.log(\"generateRawScreenshot:::mobileMode\", mobileMode);\r\n\r\n if (portraitMode && mobileMode) {\r\n const mobileCanvas = document.createElement(\"canvas\") as HTMLCanvasElement;\r\n const mobileContext = mobileCanvas.getContext(\"2d\") as any;\r\n\r\n // set canvas 1080x1080 (squared)\r\n mobileCanvas.width = 1080;\r\n mobileCanvas.height = 1080;\r\n // move drawing entry point below bottom left corner of canvas\r\n mobileContext.translate(0, 1560); // this can be experimented with - it's 1920- something so that the bike is aligned in the center.\r\n // rotate coordinate system 270 degrees so that bike is aligned properly\r\n mobileContext.rotate((270 * Math.PI) / 180);\r\n mobileContext.drawImage(video, 0, 0);\r\n mobileContext.translate(0, 0); // reset coordinate system !!\r\n mobileContext.rotate((90 * Math.PI) / 180);\r\n\r\n const copyright = getCopyright(brand);\r\n\r\n drawOnElement.appendChild(mobileCanvas);\r\n const copyrightDiv = document.createElement(\"div\");\r\n copyrightDiv.setAttribute(\"style\", \"color:white;position:absolute;left:16px;bottom:16px; width: 100%; text-align:center; font-size: 0.75rem; font-weight: 400;\");\r\n copyrightDiv.textContent = \"\" + copyright;\r\n\r\n drawOnElement.setAttribute(\"style\", \"position:fixed;width:1080px;height:1080px;top:0,left:0;visibility:visible\");\r\n drawOnElement.appendChild(copyrightDiv);\r\n\r\n return html2canvas(drawOnElement, { allowTaint: true }).then((canvas) => {\r\n // cleanup and reset properly\r\n drawOnElement.setAttribute(\"style\", \"position:fixed;width:1080px;height:1080px;top:0,left:0;visibility:hidden\");\r\n drawOnElement.removeChild(copyrightDiv);\r\n drawOnElement.removeChild(mobileCanvas);\r\n return canvas.toDataURL();\r\n });\r\n } else {\r\n return html2canvas(video, { allowTaint: true }).then(async (canvas) => {\r\n info(\"takeScreenshot video captured\");\r\n drawOnElement.setAttribute(\"style\", \"position:fixed;top:0;right:0;visibility:visible\");\r\n\r\n const copyright = getCopyright(brand);\r\n const initialInnerHTML = drawOnElement.innerHTML;\r\n drawOnElement.innerHTML = \"\";\r\n canvas.setAttribute(\"style\", \"margin:-7px;\"); //removes the 7px white line on bottom\r\n drawOnElement.appendChild(canvas);\r\n const copyrightDiv = document.createElement(\"div\");\r\n copyrightDiv.setAttribute(\"style\", \"color:white;position:absolute;left:16px;bottom:16px; width: 100%; text-align:center; font-size: 0.75rem; font-weight: 400;\");\r\n copyrightDiv.textContent = \"\" + copyright;\r\n drawOnElement.appendChild(copyrightDiv);\r\n\r\n const logoDiv = document.createElement(\"div\");\r\n logoDiv.setAttribute(\"style\", \"position:fixed; top:0; right:20px;\");\r\n logoDiv.innerHTML = initialInnerHTML;\r\n drawOnElement.appendChild(logoDiv);\r\n\r\n const promise = html2canvas(drawOnElement, { allowTaint: true }).then((canvas) => {\r\n const data: string = canvas.toDataURL();\r\n drawOnElement.innerHTML = initialInnerHTML;\r\n drawOnElement.setAttribute(\"style\", \"position:fixed;top:0;right:0;visibility:hidden\");\r\n return data;\r\n });\r\n\r\n return await promise;\r\n });\r\n }\r\n}\r\n\r\nexport function generateScreenshotForPDFGeneration(portraitMode: boolean, mobile: boolean, video: HTMLElement): Promise | undefined {\r\n if (mobile && portraitMode) {\r\n const mobileCanvas = document.createElement(\"canvas\");\r\n const mobileContext = mobileCanvas.getContext(\"2d\") as any;\r\n\r\n // set canvas 1080x1080 (squared)\r\n mobileCanvas.width = 1080;\r\n mobileCanvas.height = 1080;\r\n // move drawing entry point below bottom left corner of canvas\r\n mobileContext.translate(0, 1560); // this can be experimented with - it's 1920- something so that the bike is aligned in the center.\r\n // rotate coordinate system 270 degrees so that bike is aligned properly\r\n mobileContext.rotate((270 * Math.PI) / 180);\r\n mobileContext.drawImage(video, 0, 0);\r\n\r\n const mobileStringifiedScreenshot = mobileCanvas.toDataURL();\r\n return new Promise((resolve, reject) => {\r\n resolve(mobileStringifiedScreenshot);\r\n });\r\n } else {\r\n return html2canvas(video, { allowTaint: true }).then((canvas) => {\r\n return canvas.toDataURL();\r\n });\r\n }\r\n}\r\n\r\nexport function getIsMobile(): boolean {\r\n return window.innerWidth < 1024;\r\n}\r\n\r\nexport function getIsMobileXS(): boolean {\r\n return window.innerWidth < 769;\r\n}\r\n\r\nexport function uniqBy(arr, predicate) {\r\n const cb = typeof predicate === \"function\" ? predicate : (o) => o[predicate];\r\n\r\n return [\r\n ...arr\r\n .reduce((map, item) => {\r\n const key = item === null || item === undefined ? item : cb(item);\r\n\r\n map.has(key) || map.set(key, item);\r\n\r\n return map;\r\n }, new Map())\r\n .values(),\r\n ];\r\n}\r\n\r\nexport const hashCode = (selectedModel: VehicleInformation, currentVariation: string, parts: Part[]) => {\r\n var s: string = selectedModel.ModelId + currentVariation;\r\n parts.forEach((part: Part) => {\r\n s += part.Images.Main;\r\n });\r\n var h = 0,\r\n l = s.length,\r\n i = 0;\r\n\r\n if (l > 0) {\r\n while (i < l) {\r\n h = ((h << 5) - h + s.charCodeAt(i++)) | 0;\r\n }\r\n return h;\r\n }\r\n return s;\r\n};\r\n\r\n export const hashCodeScreenShot = (s: string) => {\r\n var h = 0,\r\n l = s.length,\r\n i = 0;\r\n\r\n if (l > 0) {\r\n while (i < l) {\r\n h = ((h << 5) - h + s.charCodeAt(i++)) | 0;\r\n }\r\n return h;\r\n }\r\n return s;\r\n };\r\n\r\nexport const handlePDFData = (response:any) => {\r\n \r\n var headers = response.headers;\r\n var headersArray = Object.entries(headers);\r\n var contentDispos: any;\r\n headersArray.forEach(([key, value]) => {\r\n if (key === \"content-disposition\") {\r\n contentDispos = value;\r\n }\r\n });\r\n\r\n var blob = response.data;\r\n var disposition = contentDisposition.parse(contentDispos);\r\n var fileName = disposition.parameters.filename ? disposition.parameters.filename : \"configuration.pdf\";\r\n saveAs(blob, fileName);\r\n}\r\n","import { createStore, applyMiddleware, compose } from \"redux\";\r\nimport thunkMiddleware from \"redux-thunk\";\r\nimport * as Redux from \"redux\";\r\nimport rootReducer from \"./reducers\";\r\nimport { persistStore, persistReducer } from 'redux-persist'\r\nimport storage from 'redux-persist/lib/storage' // defaults to localStorage for web\r\n\r\nlet middleware: Redux.Middleware[] = [thunkMiddleware];\r\n\r\n/*if (process.env.REACT_APP_ENVIRONMENT === \"DEV\") {\r\n\tmiddleware = [...middleware, loggerMiddleware];\r\n}*/\r\n\r\nconst composeEnhancers =\r\n\t(window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\n\r\nconst persistConfig = {\r\n\tkey: 'root',\r\n\twhitelist: [\"\"], // Disables redux persist\r\n\tstorage: storage,\r\n}\r\n\r\nconst persistedReducer = persistReducer(persistConfig, rootReducer)\r\n\r\nexport const store = createStore(\r\n\tpersistedReducer,\r\n\tcomposeEnhancers(applyMiddleware(...middleware))\r\n);\r\n\r\nexport const persistor = persistStore(store);\r\n\r\nexport default store;\r\n","\r\nconst year = new Date().getFullYear();\r\n\r\nexport const getCopyright = (brand?: string) => {\r\n if (brand === \"KTM\") {\r\n return `Copyright ${year} KTM Sportmotorcycle GmbH, all rights reserved`;\r\n } else if (brand === \"HQV\") {\r\n return ` ${year} Husqvarna Motorcycles All rights reserved. Husqvarna and Husqvarna Motorcycles are used under license from Husqvarna AB, Sweden.`;\r\n } else if (brand === \"GG\") {\r\n return `GASGAS Copyright ${year}, all rights reserved`;\r\n }\r\n };","import * as real from './real';\r\nimport * as mock from './mock';\r\nimport { getEntryPointUrl } from '../../utils/helpers';\r\nimport axios, { AxiosRequestConfig } from 'axios';\r\n\r\nexport enum Environment {\r\n\tPROD = 'PROD',\r\n\tDEV = 'DEV',\r\n}\r\nconst isProd = process.env.REACT_APP_ENVIRONMENT === Environment.PROD;\r\nconst isMock = process.env.REACT_APP_USE_MOCK_DATA === 'true';\r\nconst publicUrl = process.env.PUBLIC_URL;\r\n\r\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\r\naxios.interceptors.request.use(function (config: AxiosRequestConfig) {\r\n\tconst { url } = config;\r\n\r\n\t// make sure to prefix url as needed\r\n\tconfig = {\r\n\t\t...config,\r\n\t\turl: isProd && isMock ? publicUrl + url : url,\r\n\t}\r\n\treturn config;\r\n}, function (error) {\r\n\tconsole.error('The following HTTP request error occured: ', error);\r\n\treturn Promise.reject(error);\r\n});\r\n\r\naxios.interceptors.response.use(function (response) {\r\n\treturn response;\r\n\r\n}, function (error: any) {\r\n\tconsole.log('logging error response', error);\r\n\r\n\tif ([401, 403].includes(+error.response.status as number)) {\r\n\r\n\t\twindow.location.replace(getEntryPointUrl());\r\n\t}\r\n\r\n\tconsole.log('A server error occured with the following signature:', error);\r\n\treturn Promise.reject(error);\r\n});\r\n\r\nconst data = process.env.REACT_APP_USE_MOCK_DATA === 'true' ? mock : real;\r\n\r\nexport default data;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { VehicleImageAllprops } from './VehicleImage';\r\nimport { CircularProgress } from '@material-ui/core';\r\n\r\nexport interface VehicleRendererProps {\r\n url: string;\r\n brand: string;\r\n}\r\n\r\nexport interface VehicleRendererState {\r\n loading: boolean;\r\n imagesToLoad: number;\r\n}\r\n\r\nexport interface ImageProps {\r\n src: string,\r\n class: string,\r\n id: string\r\n}\r\n\r\nexport type VehicleRendererAllProps = VehicleRendererProps & VehicleImageAllprops;\r\n\r\ninterface BikeStructureRequest {\r\n id: number;\r\n CompanyCode: string,\r\n Layout: BikePartImage[];\r\n}\r\n\r\ninterface BikePartImage {\r\n Color: any;\r\n FileName: string;\r\n Id: number;\r\n IsStandardPart: boolean;\r\n LayerSide: number;\r\n Perspective: number;\r\n VehicleProductCode: any;\r\n Zindex: number;\r\n}\r\n\r\nexport const VehicleRenderer: React.FunctionComponent = (props: VehicleRendererAllProps) => {\r\n\r\n let imageArray: ImageProps[] = [];\r\n let dummy: BikeStructureRequest = {id: 0, CompanyCode: '', Layout: [] };\r\n let [previousRequest, setPreviousRequest] = useState(dummy);\r\n const [renderedImages, setRenderedImages] = useState(props.imageArray.currentImageArray);\r\n const [imagesRendered, setImagesRendered] = useState(false);\r\n const [hasError, setHasError] = useState(false);\r\n\r\n const [imageLoadingState, setImageLoadingState] = useState({\r\n loading: false,\r\n imagesToLoad: 0\r\n });\r\n\r\n const [oldPerspective, setOldPerspective] = useState(-1);\r\n\r\n const getBrand = () => {\r\n return props.brand;\r\n }\r\n\r\n const getImageSrc = () => {\r\n return props.url;\r\n }\r\n\r\n const renderFrontEnd = (isNewBikePerspective: boolean) => {\r\n if (!getImageSrc()) {\r\n return;\r\n }\r\n let url = getImageSrc();\r\n\r\n let bikeStructureUrl = url.replace(\"images\", \"images-fe\");\r\n\r\n setHasError(false);\r\n\r\n if (!bikeStructureUrl) {\r\n return;\r\n }\r\n\r\n fetch(bikeStructureUrl)\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n let request = result;\r\n request.CompanyCode = getBrand();\r\n renderBike(request, isNewBikePerspective);\r\n },\r\n (error) => {\r\n setHasError(true);\r\n }\r\n )\r\n }\r\n\r\n const renderBike = (request: BikeStructureRequest, isNewBikePerspective: boolean) => {\r\n // TODO: until we dont have GG images need to use KTM as image provider , todo remove later\r\n if (request.CompanyCode === \"GG\") {\r\n if (window.location.href.indexOf('localhost')>0)\r\n request.CompanyCode = \"KTM\";\r\n }\r\n setImagesRendered(false);\r\n\r\n let newParts: BikePartImage[] = [];\r\n if (request && previousRequest && request.Layout) {\r\n request.Layout.forEach(img => {\r\n let found = previousRequest.Layout.find(p => p.FileName === img.FileName);\r\n if (!found) {\r\n newParts.push(img);\r\n }\r\n }); \r\n } \r\n\r\n if (request && request.Layout) {\r\n setIsLoading(isNewBikePerspective, (request.Layout.length - 1));\r\n \r\n request.Layout.forEach((img) => {\r\n let useEffect = newParts.find(p => p.FileName === img.FileName) === undefined;\r\n addImageToLayer(request, img, useEffect);\r\n });\r\n\r\n setPreviousRequest ( request ); \r\n }\r\n\r\n setImagesRendered(true);\r\n }\r\n\r\n const setIsLoading = (loading: boolean, imagesToLoad: number) => {\r\n setImageLoadingState({ loading, imagesToLoad });\r\n }\r\n\r\n const onImageLoaded = () => {\r\n let imagesToLoad = imageLoadingState.imagesToLoad - 1;\r\n setIsLoading(imageLoadingState.loading, imagesToLoad);\r\n if (imageLoadingState.imagesToLoad <= 0) {\r\n setIsLoading(false, imageLoadingState.imagesToLoad);\r\n }\r\n }\r\n\r\n const addImageToLayer = (request: any, img: BikePartImage, useEffect: boolean) => {\r\n \r\n let host: string = request.BaseUrl;\r\n let imgSrc: string = `${host}/api/getblobimage?companyCode=${request.CompanyCode}&bikeSetupId=${img.VehicleProductCode.Value}&imagePath=${img.FileName}`;\r\n\r\n let currentImage: ImageProps = {\r\n src: imgSrc,\r\n class: useEffect ? \"bike-part\" : \"fade-in bike-part\",\r\n id: img.FileName\r\n }\r\n\r\n const existing = imageArray.filter(({ src: source }) => currentImage.src === source);\r\n if (existing.length === 0) {\r\n imageArray.push(currentImage);\r\n }\r\n\r\n props.setImageArray({ currentImageArray: imageArray });\r\n setRenderedImages(imageArray);\r\n }\r\n\r\n const deleteImages = () => {\r\n imageArray = [];\r\n setImagesRendered(false);\r\n setRenderedImages([]);\r\n }\r\n\r\n const loader =\r\n \r\n \r\n {props.t('vehicleImage.loaderText')}\r\n \r\n\r\n const errorDiv =
\r\n
Oops! Something went wrong while loading the image...
\r\n
\r\n\r\n useEffect(() => {\r\n if (props === undefined || props.url === undefined || props.url.indexOf(\"undefined\") >= 0) {\r\n return; // do nothing when parent is not setting yet the url \r\n }\r\n //on change of perspective delete first all images \r\n if (oldPerspective !== props.perspective) {\r\n deleteImages();\r\n }\r\n setOldPerspective(props.perspective); \r\n renderFrontEnd(true);\r\n }, [props.url /*, props.perspective*/]);\r\n\r\n return (\r\n
\r\n
\r\n\r\n
\r\n\r\n {imagesRendered &&\r\n <>\r\n {renderedImages.map((image, index) => (\r\n onImageLoaded()} onError={() => setHasError(true)} className={image.class} />\r\n ))}\r\n \r\n }\r\n
\r\n {hasError && !imageLoadingState.loading && errorDiv}\r\n {imageLoadingState.loading && loader}\r\n
\r\n
\r\n
\r\n Rendered Img\r\n
\r\n
\r\n \r\n
\r\n );\r\n}","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst ArrowHeadKTM: React.FunctionComponent = () => {\r\n return (\r\n \r\n Arrow\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ArrowHeadKTM;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst ArrowHeadHQV: React.FunctionComponent = () => {\r\n return (\r\n \r\n Arrow\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ArrowHeadHQV;\r\n","import React from \"react\";\r\nimport { StateManagementProps, mapStateToProps, mapDispatchToProps } from \"../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport ArrowHeadKTM from \"./arrowHead_ktm\";\r\nimport ArrowHeadHQV from \"./arrowHead_hqv\";\r\n\r\nconst ArrowHead: React.FunctionComponent = props => {\r\n const brand = props.applicationSettings.Brand;\r\n return (\r\n <>\r\n {brand === \"KTM\" && }\r\n {brand === \"HQV\" && }\r\n {brand === \"GG\" && }\r\n \r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ArrowHead);\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport Swipeable from \"react-swipeable\";\r\nimport { WithNamespaces, withNamespaces } from \"react-i18next\";\r\nimport { FullImage } from \"../configuration/ConfigurationView\";\r\nimport { Grid } from \"@material-ui/core\";\r\nimport FullImageIcon from \"../../assets/icons/show_full_image\";\r\nimport { useHistory, StaticContext } from \"react-router\";\r\nimport { getConfigurationId } from \"../../utils/helpers\";\r\nimport { VehicleRenderer } from \"./VehicleRenderer\";\r\nimport ArrowHead from \"../../assets/icons/arrowHead\";\r\n\r\nexport interface VehicleImageProps {\r\n useDarkFont?: boolean;\r\n imageClassName?: string;\r\n arrowStyle?: object;\r\n pathname?: any;\r\n closePreview?: string;\r\n onlyFirstImg?: boolean;\r\n sideImage?: true;\r\n history?: History;\r\n changeRenderedImage?: boolean;\r\n resetRenderedPictureChange?: () => void;\r\n}\r\n\r\nexport type VehicleImageAllprops = VehicleImageProps & StateManagementProps & StaticContext & WithNamespaces;\r\n\r\nexport const VehicleImage: React.FunctionComponent = (props: VehicleImageAllprops) => {\r\n const { applicationSettings, perspective, resetRenderedPictureChange } = props;\r\n const [imageSrc, setImageSrc] = useState(\"\");\r\n\r\n let useHistoryValue: any = useHistory();\r\n\r\n let history = props.history ? props.history : useHistoryValue;\r\n\r\n let perspectives = [0, 1, 2];\r\n if (applicationSettings.Brand === \"HQV\") {\r\n perspectives = [3, 4, 5, 6];\r\n }\r\n\r\n const defaultPreview = \"/preview\";\r\n let closePreview: string;\r\n\r\n if (props.closePreview !== defaultPreview && props.closePreview) {\r\n closePreview = props.closePreview.toString();\r\n } else {\r\n closePreview = defaultPreview;\r\n }\r\n\r\n let onlyFirstImage = Boolean(props.onlyFirstImg);\r\n\r\n let sideImage = Boolean(props.sideImage);\r\n\r\n useEffect(() => {\r\n if (applicationSettings.Brand === \"HQV\" && perspective === 0) {\r\n props.setPerspective(6);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (props.changeRenderedImage && resetRenderedPictureChange) {\r\n props.setImageTimestamp();\r\n resetRenderedPictureChange();\r\n }\r\n if (getImageSrc()) {\r\n setImageSrc(\"\" + getImageSrc());\r\n }\r\n }, [props.configuration.FullImages, props.perspective, props.changeRenderedImage]);\r\n\r\n const handleSwipe = (change: number) => {\r\n let newPosition: number;\r\n const min = Math.min(...perspectives);\r\n const max = Math.max(...perspectives);\r\n const newValue = props.perspective + change;\r\n newPosition = newValue < min ? max : newValue > max ? min : newValue;\r\n props.setPerspective(newPosition);\r\n };\r\n\r\n const handleSwipeP = (newValue: number) => {\r\n let newPosition: number;\r\n const min = Math.min(...perspectives);\r\n const max = Math.max(...perspectives);\r\n newPosition = newValue < min ? max : newValue > max ? min : newValue;\r\n props.setPerspective(newPosition);\r\n };\r\n\r\n const getImageSrc = () => {\r\n let imageBase = getImageBase();\r\n if (imageBase) {\r\n let baseArray = imageBase.split(\"/\");\r\n baseArray[3] = \"\" + getConfigurationId();\r\n imageBase = baseArray.join(\"/\");\r\n } else {\r\n return undefined;\r\n }\r\n\r\n return `${imageBase}&temp=${props.imageTimestamp}`;\r\n };\r\n\r\n const getHeroImage = () => {\r\n let imageBase = getHeroImageBase();\r\n if (imageBase) {\r\n let baseArray = imageBase.split(\"/\");\r\n baseArray[3] = \"\" + getConfigurationId();\r\n imageBase = baseArray.join(\"/\");\r\n }\r\n return `${imageBase}&temp=${props.imageTimestamp}`;\r\n };\r\n\r\n const getImageBase = () => {\r\n const fullImage = props.configuration.FullImages\r\n ? props.configuration.FullImages.find((image: FullImage) => {\r\n return image.Perspective === perspective;\r\n })\r\n : undefined;\r\n\r\n if (fullImage) {\r\n return fullImage.Url;\r\n }\r\n };\r\n\r\n const getHeroImageBase = () => {\r\n const fullImage = props.configuration.FullImages\r\n ? props.configuration.FullImages.find((image: FullImage) => {\r\n return image.Perspective === (applicationSettings.Brand === \"KTM\" ? 2 : 6);\r\n })\r\n : undefined;\r\n if (fullImage) {\r\n return fullImage.Url;\r\n }\r\n };\r\n\r\n const goToPrev = () => {\r\n if (history) {\r\n history.push(\"/preview\");\r\n }\r\n };\r\n\r\n const goBackToConfig = () => {\r\n if (history) {\r\n history.goBack();\r\n }\r\n };\r\n\r\n const renderBackgroundTitle = () => {\r\n if (applicationSettings.Brand === \"HQV\") {\r\n return null;\r\n }\r\n\r\n const vehicleName = props.selectedModel.Name;\r\n let cutVehicleName = \"\";\r\n let spacedArray = vehicleName.split(\" \");\r\n let filteredArray = spacedArray.filter((entry) => {\r\n return entry !== \"\";\r\n });\r\n for (let i = 0; i < filteredArray.length - 1; i++) {\r\n cutVehicleName += filteredArray[i] + \" \";\r\n }\r\n\r\n return (\r\n
\r\n {cutVehicleName}\r\n
\r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n {!onlyFirstImage && !sideImage && props.configuration && (\r\n <>\r\n {closePreview !== defaultPreview && (\r\n <>\r\n
handleSwipe(-1)} id=\"show-left-view\" className={`${props.perspective !== 0 && props.perspective !== 6 ? \"active\" : \"\"}`}>\r\n \r\n
\r\n
handleSwipe(1)} id=\"show-right-view\" className={`${props.perspective !== 2 && props.perspective !== 5 ? \"active\" : \"\"}`}>\r\n \r\n
\r\n \r\n )}\r\n handleSwipe(1)}\r\n onSwipedRight={() => handleSwipe(-1)}\r\n >\r\n \r\n \r\n {renderBackgroundTitle()}\r\n \r\n )}\r\n {onlyFirstImage && props.configuration && (\r\n <>\r\n
\r\n \r\n
\r\n {renderBackgroundTitle()}\r\n \r\n )}\r\n {sideImage && (\r\n <>\r\n \r\n \r\n )}\r\n
\r\n\r\n {!onlyFirstImage && !sideImage && (\r\n
\r\n \r\n {closePreview === defaultPreview && (\r\n \r\n \r\n \r\n )}\r\n {closePreview !== defaultPreview && (\r\n \r\n \r\n \r\n )}\r\n \r\n {applicationSettings.Brand === \"KTM\" && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {applicationSettings.Brand === \"HQV\" && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {applicationSettings.Brand === \"GG\" && (\r\n \r\n handleSwipeP(0)}>\r\n handleSwipeP(1)}>\r\n handleSwipeP(2)}>\r\n \r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default withNamespaces()(connect(mapStateToProps, mapDispatchToProps)(VehicleImage));\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst ArrowKTM: React.FunctionComponent = () => {\r\n return (\r\n \r\n Arrow\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ArrowKTM;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst ArrowHQV: React.FunctionComponent = () => {\r\n return (\r\n \r\n Arrow\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ArrowHQV;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst ArrowGG: React.FunctionComponent = () => {\r\n return (\r\n \r\n Arrow\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ArrowGG;\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport ArrowKTM from \"./arrow_ktm\";\r\nimport ArrowHQV from \"./arrow_hqv\";\r\nimport ArrowGG from \"./arrow_gg\";\r\n\r\nconst Arrow: React.FunctionComponent = props => {\r\n const brand = props.applicationSettings.Brand;\r\n return (\r\n <>\r\n {brand === \"KTM\" && }\r\n {brand === \"HQV\" && }\r\n {brand === \"GG\" && }\r\n \r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Arrow);\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Country: React.FunctionComponent = () => {\r\n return (\r\n \r\n Country Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Country;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { store } from \"../../redux/store\";\r\nimport { exitVehicleConfiguration, ShowDialogProps } from \"../../redux/actions\";\r\nimport { History } from \"history\";\r\nimport Arrow from \"../../assets/icons/arrow\";\r\nimport Country from \"../../assets/icons/country\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport { connect } from \"react-redux\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport { DialogTypes } from \"../../enums/dialogTypes\";\r\nimport { CountryLanguageType } from \"../dialogs/languageSelection\";\r\nimport { getCopyright } from \"./copyright\";\r\n\r\nexport interface FooterProps {\r\n history: History;\r\n closePrev?: string;\r\n className?: string;\r\n currentCountryArray?: CountryLanguageType[];\r\n openPopUp?: boolean;\r\n}\r\n\r\nexport type FooterAllProps = FooterProps & WithNamespaces & StateManagementProps;\r\n\r\nconst Footer: React.FunctionComponent = props => {\r\n const { t, applicationSettings, culture, showDialog, currentCountry, openPopUp, history, toggleSummary, is3DMode, dealerInquirySent } = props;\r\n\r\n useEffect(() => {\r\n if (openPopUp) {\r\n showLanguageMenu();\r\n }\r\n }, [openPopUp]);\r\n\r\n let closePrev = props.closePrev;\r\n let countryName = currentCountry.CountryName;\r\n let copyright = getCopyright(applicationSettings.Brand);\r\n\r\n function goBackToList() {\r\n if (!goToKtm) {\r\n store.dispatch(exitVehicleConfiguration());\r\n history.push(\"/main\");\r\n return false;\r\n } else {\r\n window.location.href = backLink;\r\n }\r\n }\r\n\r\n function showLanguageMenu() {\r\n const dialogProps: ShowDialogProps = {\r\n title: \"\",\r\n data: {},\r\n contentType: DialogTypes.languageSelection,\r\n };\r\n showDialog(dialogProps);\r\n }\r\n\r\n function historyGoBack() {\r\n history.goBack();\r\n }\r\n\r\n let className: string = \"\";\r\n if (props.className) {\r\n className = props.className;\r\n closePrev = undefined;\r\n }\r\n\r\n const goToKtm = history.location.pathname === \"/main/\" || history.location.pathname === \"/main\";\r\n const rootLink = applicationSettings.BrandLink;\r\n let linkCulture = culture.toLowerCase();\r\n\r\n if (currentCountry.ImprintCode) {\r\n linkCulture = currentCountry.ImprintCode;\r\n }\r\n\r\n const legalLink = rootLink + linkCulture + \"/legal-notices.html\";\r\n const imprintLink = rootLink + linkCulture + \"/imprint.html\";\r\n const privacyLink = rootLink + linkCulture + \"/privacy-policy.html\";\r\n const backLink = rootLink + linkCulture + \".html\";\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Footer);\r\n","import React, { useState , useEffect } from 'react';\r\nimport { mapStateToProps, mapDispatchToProps, StateManagementProps } from '../../utils/addReduxProps';\r\nimport { connect } from 'react-redux';\r\nimport { withStyles, WithStyles, Theme } from '@material-ui/core';\r\nimport { withNamespaces, WithNamespaces } from 'react-i18next';\r\nimport { Grid } from '@material-ui/core';\r\nimport VehicleImage from '../vehicle-overview/VehicleImage';\r\nimport { RouteProps, RouteComponentProps } from 'react-router-dom';\r\nimport { Location } from 'history';\r\nimport { CSSProperties } from '@material-ui/core/styles/withStyles';\r\nimport Footer from '../navigation/Footer';\r\nimport { ConfigurationAllProps } from '../configuration/ConfigurationView';\r\n\r\nexport interface PreviewComponentProps {\r\n\r\n}\r\n\r\nexport interface PreviewComponentState {\r\n\tbackground: number;\r\n}\r\n\r\nexport const classes: (theme: Theme) => Record = (theme: Theme) => {\r\n\treturn {\r\n\t\twrapper: {\r\n\t\t\theight: '100%',\r\n\t\t\tbackground: 'white',\r\n\t\t},\r\n\r\n\t\tbikeWrapper: {\r\n\t\t\theight: '80%',\r\n\t\t\tposition: 'relative' as \"relative\",\r\n\t\t},\r\n\r\n\t\tbackground: {\r\n\t\t\twidth: '100%',\r\n\t\t},\r\n\t\tcontentWrapper: {\r\n\t\t\twidth: '100%',\r\n\t\t\tposition: 'absolute' as \"absolute\",\r\n\t\t\tboxSizing: 'border-box' as \"border-box\",\r\n\t\t\theight: 'calc(100vh - 74px)',\r\n\t\t},\r\n\t}\r\n};\r\n\r\ntype PreviewProps = PreviewComponentProps & StateManagementProps & WithStyles & WithNamespaces & RouteProps & RouteComponentProps & ConfigurationAllProps;\r\n\r\nconst PreviewComponent: React.FunctionComponent = (props: PreviewProps & PreviewComponentState) => {\r\n\r\n\tconst {\r\n\t\tclasses,\r\n\t\tt,\r\n\t\thistory,\r\n\t\tlocation,\r\n\t\tappliedSetup,\r\n\t\tappliedParts,\r\n\t\ttotalPrice,\r\n\t\tmodels: { ShowPricesInConfigurator: hasPrices },\r\n\t\tselectedModel,\r\n\t\taddCreatedConfiguration,\r\n\t\tconfiguration,\r\n\t} = props;\r\n\r\n\tconst { state } : any = location as Location;\r\n\tconst closePreviewUrl = state && state.from ? state.from : '/page-not-found';\r\n\tlet closePreview: string;\r\n\tclosePreview = closePreviewUrl;\r\n\tconst exitConfigView = React.createRef()\r\n\tconst [escClicked,setEscClicked] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\twindow.addEventListener('keydown', function(event) {\r\n\t\t\t\tvar key = event.key || event.keyCode;\r\n\t\t\t\tif(key === 27 || key === 'Escape' || key === 'Esc' && !escClicked){\r\n\t\t\t\t\tsetEscClicked(true);\r\n\t\t\t\t\tif(history) {\r\n\t\t\t\t\t\thistory.goBack();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},{once: true})\r\n\t}, []);\r\n\t\r\n\tconst { wrapper, headerGrid, rootIcons, bikeWrapper, background, contentWrapper, closePreviewBtn, selected, iconWrapper } = classes;\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t{/* BODY WITH PICTURE */}\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default withNamespaces()(withStyles(classes)(connect(mapStateToProps, mapDispatchToProps)(PreviewComponent)));\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst SoundOn: React.FunctionComponent = () => {\r\n return (\r\n \r\n Sound Icon On\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SoundOn;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst SoundOff: React.FunctionComponent = () => {\r\n return (\r\n \r\n Sound Icon Off\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SoundOff;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst PDF: React.FunctionComponent = () => {\r\n return (\r\n \r\n PDF Icon\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PDF;\r\n","import axios, { AxiosPromise, AxiosRequestConfig } from \"axios\";\r\nimport { TogglePartResponse } from \"../../components/parts/PartsList\";\r\nimport { CreateConfigurationResponse } from \"../../components/configuration/ConfigurationView\";\r\nimport { debug, getConfigurationId, getLocaleQuery } from \"../../utils/helpers\";\r\nimport * as uuid from \"uuid\";\r\nimport { SaveDetailsData } from \"../../components/dialogs/saveConfiguration\";\r\nimport { ExportConfigurationValueNames } from \"../../components/dialogs/exportConfiguration\";\r\nimport { LoadConfigurationResponse } from \"../../redux/reducers/load\";\r\nimport { ShareConfigurationResponse } from \"../../components/configuration/configurationSummary/ConfigurationSummary\";\r\nimport { ApplicationSettings } from \"../../redux/reducers/applicationSettings\";\r\nimport { MarketResponse } from \"../../components/main/MainView\";\r\nimport { RulesResult } from \"../../components/dialogs/conflictingParts\";\r\nimport { Offer } from \"../../components/dialogs/sendConfigurationToDealer\";\r\nimport { MotorcycleModelResponse, Price, VehicleOverviewResponse } from \"../../models/vehicle\";\r\n\r\ninterface HistoryResponseItem {\r\n Configurations: Configuration[];\r\n}\r\n\r\ninterface BitrateDroppedTelemetryPayload {\r\n UserId: string,\r\n Payload: BitratePayload,\r\n IsMobile: boolean\r\n}\r\n\r\ninterface BitratePayload {\r\n Bitrate: string\r\n}\r\n\r\ninterface Configuration {\r\n Id: number;\r\n Model: Model;\r\n TotalPrice: Price;\r\n Customer: Customer;\r\n Comment: string;\r\n SavedOn: number;\r\n}\r\n\r\ninterface Customer {\r\n Lastname: string;\r\n Firstname: string;\r\n Fullname?: string;\r\n}\r\n\r\ninterface Model {\r\n HeroImageUrl: string;\r\n Id: string;\r\n Name: string;\r\n}\r\n\r\nexport interface AddPartPayload {\r\n PartId: string;\r\n SelectedParts: string[];\r\n RemoveParts: string[];\r\n DryRun?: boolean; //if true then the part will not be added only check for rules will be done.\r\n ValidationResultType?: number; // 0 invalid input, 1 rule exception\r\n InvalidInputMessage?: any; // if defined show error in a diferrent toast\r\n RulesResult?: RulesResult;\r\n}\r\n\r\nexport interface ColorOptionPayload {\r\n FrontendColorCode: string | null;\r\n RenderColorCode: string | null;\r\n ColorName: string | null;\r\n}\r\n\r\n/**\r\n * This is used for 3D Vehicles, motorcycles and XBow\r\n */\r\nexport interface ToolsConfigurationPayload {\r\n Cinematics?: string;\r\n Environments?: string;\r\n Perspectives?: string;\r\n Lighting?: string;\r\n Animations?: string[];\r\n}\r\n\r\n/**\r\n * This is used for the XBow\r\n */\r\nexport interface CustomColorConfigurationsPayload {\r\n SelectedBodyColor?: string;\r\n SelectedRimsColor?: string;\r\n SelectedCaliperColor?: string;\r\n SelectedStitchingColor?: string;\r\n SelectedSuspensionAndLogoColor?: string;\r\n}\r\n\r\n/**\r\n * Container object for payload transport of color and tools to the backend.\r\n */\r\nexport interface VehicleSettingsPayload {\r\n ToolsConfiguration: ToolsConfigurationPayload;\r\n CustomColorConfiguration: CustomColorConfigurationsPayload;\r\n}\r\n\r\nexport interface UpdateConfigurationPayload {\r\n VariationCode: string;\r\n ColorCode: string;\r\n newVariation?: string;\r\n VehicleSettings?: VehicleSettingsPayload;\r\n}\r\n\r\nexport interface RemovePartPayload {\r\n PartId: string;\r\n RemoveParts: string[];\r\n DryRun?: boolean; //if true then the part will not be added only check for rules will be done.\r\n ValidationResultType?: number; // 0 invalid input, 1 rule exception\r\n InvalidInputMessage?: any; // if defined show error in a diferrent toast\r\n RulesResult?: RulesResult;\r\n}\r\n\r\nexport function getAppSettings(): AxiosPromise {\r\n return axios.get('/api/posconfigurator/appsettings');\r\n}\r\n\r\nexport function getModels(): AxiosPromise {\r\n return axios.get(`/api/posconfigurator/vehicles${getLocaleQuery()}`);\r\n}\r\n\r\nexport function getOverview(modelId: string): AxiosPromise {\r\n return axios.get(`/api/posconfigurator/vehicles/${modelId}${getLocaleQuery()}`);\r\n}\r\n\r\nexport function addPart(payload: string | AddPartPayload): AxiosPromise {\r\n let data: AddPartPayload;\r\n\r\n if (typeof payload === \"string\") {\r\n data = {\r\n PartId: payload,\r\n SelectedParts: [],\r\n RemoveParts: [],\r\n };\r\n } else {\r\n data = { ...payload };\r\n }\r\n return axios.post(`/api/posconfigurator/configuration/${getConfigurationId()}/add-part${getLocaleQuery()}`, data);\r\n}\r\n\r\nexport function removePart(payload: string | RemovePartPayload): AxiosPromise {\r\n let data: RemovePartPayload;\r\n if (typeof payload === \"string\") {\r\n data = {\r\n PartId: payload,\r\n RemoveParts: [],\r\n };\r\n } else {\r\n data = { ...payload };\r\n }\r\n return axios.post(`/api/posconfigurator/configuration/${getConfigurationId()}/remove-part${getLocaleQuery()}`, data);\r\n}\r\n\r\nexport function createConfiguration(modelId: string): AxiosPromise {\r\n const data = {\r\n ModelId: modelId,\r\n };\r\n const config: AxiosRequestConfig = {\r\n headers: {\r\n AnonymousID: uuid.v4(),\r\n },\r\n };\r\n return axios.post(`/api/posconfigurator/configuration/create${getLocaleQuery()}`, data, config);\r\n}\r\n\r\nexport function updateConfiguration(payload: UpdateConfigurationPayload): AxiosPromise {\r\n let id = getConfigurationId();\r\n let stringID = \"\" + id;\r\n return axios.put(`/api/posconfigurator/configuration/update/${stringID}${getLocaleQuery()}`, payload);\r\n}\r\n\r\nexport function sendBitrateDroppedTelemetryData(user: string, bitrate: string, isMobile: boolean): AxiosPromise {\r\n const data : BitrateDroppedTelemetryPayload = {\r\n Payload: {Bitrate: bitrate} as BitratePayload,\r\n UserId:user,\r\n IsMobile: isMobile\r\n };\r\n\r\n return axios.post(`/api/posconfigurator/health/telemetrydata`, data)\r\n}\r\n\r\nexport function updateConfigurationForUser(payload: UpdateConfigurationPayload, userId: string): AxiosPromise {\r\n return axios.put(`/api/posconfigurator/configuration/update/${getConfigurationId()}/${userId}${getLocaleQuery()}`, payload);\r\n}\r\n\r\nexport function deleteConfiguration(id: number | undefined = undefined): AxiosPromise {\r\n id = id || getConfigurationId();\r\n return axios.delete(`/api/posconfigurator/configuration/${id}${getLocaleQuery()}`);\r\n}\r\n\r\nexport function dismissUnsavedChanges(id: number | undefined = undefined): AxiosPromise {\r\n id = id || getConfigurationId();\r\n return axios.post(`/api/posconfigurator/configuration/${id}/dismiss-unsaved-changes${getLocaleQuery()}`);\r\n}\r\n\r\nexport function saveConfiguration(data: SaveDetailsData, saveAsNew: boolean): AxiosPromise {\r\n return axios.post(`/api/posconfigurator/configuration/${getConfigurationId()}/save-configuration${getLocaleQuery()}`, { ...data, SaveAsNew: saveAsNew });\r\n}\r\n\r\nexport function saveUserConfigurationCDC(id: string, parts: any, header: string): AxiosPromise {\r\n const data = {\r\n id: id,\r\n parts: parts,\r\n };\r\n const config: AxiosRequestConfig = {\r\n headers: {\r\n Authorization: header,\r\n },\r\n };\r\n return axios.post(`/api/posconfigurator/configuration/${getConfigurationId()}/save-user-configuration-cdc${getLocaleQuery()}`, data, config);\r\n}\r\n\r\nexport function sendExport(data: ExportConfigurationValueNames): AxiosPromise {\r\n return axios.post(`/api/posconfigurator/configuration/${getConfigurationId()}/send-export${getLocaleQuery()}`, data);\r\n}\r\n\r\nexport function sendToDealer(data: Offer): AxiosPromise {\r\n return axios.post(`/api/posconfigurator/configuration/${getConfigurationId()}/send-dealer${getLocaleQuery()}`, data);\r\n}\r\n\r\nexport function sendToDealerWithScreenShot(data: Offer): AxiosPromise {\r\n console.log(data);\r\n return axios.post(`/api/posconfigurator/configuration/${getConfigurationId()}/send-dealer${getLocaleQuery()}`, data);\r\n}\r\n\r\nexport function sendPdfSummary(email: string): AxiosPromise {\r\n return axios.post(`/api/posconfigurator/configuration/${getConfigurationId()}/send${getLocaleQuery()}`, {\r\n Email: email,\r\n });\r\n}\r\n\r\nexport function downloadConfigurationSummaryPdf(partsHash: string): AxiosPromise {\r\n console.log(\"downloadConfigurationSummaryPdf\");\r\n let url = `/api/posconfigurator/configuration/${getConfigurationId()}/pdf${getLocaleQuery()}&stamp=${partsHash}`;\r\n // url = `http://localhost:3000/api/posconfigurator/configuration/YUq3qxnIP0O8p3MVqp30uA/pdfwithscreenshot?cid=5b540245-23d2-480b-af90-ec5427e7e479&c=de-AT&m=AT&stamp=-1874297231`\r\n return axios.get(url, { responseType: \"blob\" });\r\n}\r\n\r\nexport function downloadConfigurationSummaryPdfWithScreenshot(partsHash: string, screenshotData: string): AxiosPromise {\r\n console.log(\"downloadConfigurationSummaryPdfWithScreenshot\");\r\n debug(\"downloadConfigurationSummaryPdfWithScreenshot\", screenshotData);\r\n let url = `/api/posconfigurator/configuration/${getConfigurationId()}/pdfwithscreenshot${getLocaleQuery()}&stamp=${partsHash}`;\r\n // url = `http://localhost:3000/api/posconfigurator/configuration/YUq3qxnIP0O8p3MVqp30uA/pdfwithscreenshot?cid=5b540245-23d2-480b-af90-ec5427e7e479&c=de-AT&m=AT&stamp=-1874297231`;\r\n return axios.post(url, { screnshotdataaspng: screenshotData }, { responseType: \"blob\" });\r\n}\r\n\r\nexport function shareConfiguration(): AxiosPromise {\r\n return axios.get(`/api/posconfigurator/configuration/${getConfigurationId()}/share${getLocaleQuery()}`);\r\n}\r\n\r\nexport function getConfiguration(configId: string | number, country: string, culture: string, companyId: string): AxiosPromise {\r\n let localeQuery = country !== \"\" && culture !== \"\" && companyId !== \"\" ? \"?cid=\" + companyId + \"&c=\" + culture + \"&m=\" + country : getLocaleQuery();\r\n return axios.get(`/api/posconfigurator/configuration/${configId}${localeQuery}`);\r\n}\r\n\r\nexport function getHistory(): AxiosPromise {\r\n return axios.get(`/api/posconfigurator/dealer/history${getLocaleQuery()}`);\r\n}\r\n\r\nexport function getAllMarkets(): AxiosPromise {\r\n return axios.get(\"/api/posconfigurator/market\");\r\n}\r\nexport function getFastlyGeoCountry(): AxiosPromise {\r\n return axios.get(\"/api/posconfigurator/market/geolocation\");\r\n}\r\n","import i18n from \"i18next\";\r\nimport { reactI18nextModule } from \"react-i18next\";\r\nimport translationEN from './locales/en/translation.json';\r\nimport translationDE from './locales/de/translation.json';\r\nimport translationFR from './locales/fr/translation.json';\r\nimport translationES from './locales/es/translation.json';\r\nimport translationIT from './locales/it/translation.json';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\n\r\nexport enum Languages {\r\n en = 'en',\r\n de = 'de',\r\n fr = 'fr',\r\n es = 'es',\r\n it = 'it'\r\n}\r\n\r\nconst resources: { [index in Languages]: any } = {\r\n en: {\r\n translation: translationEN,\r\n },\r\n de: {\r\n translation: translationDE,\r\n },\r\n fr: {\r\n translation: translationFR,\r\n },\r\n es: {\r\n translation: translationES,\r\n },\r\n it: {\r\n translation: translationIT,\r\n },\r\n};\r\n\r\nconst detectorOptions = {\r\n // from where user language should be detected\r\n // for example add: 'navigator' to order-array if querystring is no longer used later\r\n order: ['querystring'],\r\n lookupQuerystring: 'culture',\r\n}\r\n\r\ni18n\r\n .use(LanguageDetector)\r\n .use(reactI18nextModule)\r\n .init({\r\n resources,\r\n fallbackLng: \"en\",\r\n interpolation: {\r\n escapeValue: false\r\n },\r\n detection: detectorOptions,\r\n })\r\n\r\nexport default i18n;","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Wheels: React.FunctionComponent = () => {\r\n return (\r\n \r\n Wheel Icon\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Wheels;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { withNamespaces } from 'react-i18next';\r\nimport SoundOn from \"../../assets/icons/sound_on\";\r\nimport SoundOff from \"../../assets/icons/sound_off\";\r\nimport PDF from '../../assets/icons/pdf';\r\nimport html2canvas from '../../../node_modules/html2canvas';\r\nimport { debug } from '../../utils/helpers';\r\nimport http from \"../../services/http\";\r\nimport contentDisposition from \"../../../node_modules/content-disposition\";\r\nimport { saveAs } from \"../../../node_modules/file-saver\";\r\nimport Wheels from '../../assets/icons/wheel';\r\n\r\nconst SandboxComponent: React.FunctionComponent = (props: any) => {\r\n\r\n const {\r\n t\r\n } = props;\r\n\r\n const [active, setActive] = useState(true);\r\n let [tryAgainDisabled, setTryAgainDisabled] = useState(false);\r\n\r\n useEffect(() => {\r\n\r\n }, []);\r\n\r\n const activated = {\r\n fill: 'red'\r\n }\r\n const deactivated = {\r\n fill: 'grey'\r\n }\r\n\r\n //when the user clicks on try again, disable the button for 10 secs.\r\n const tryAgainClick = () => {\r\n setTryAgainDisabled(true);\r\n // startStop();\r\n setTimeout(() => { setTryAgainDisabled(false) }, 10000);\r\n }\r\n\r\n const takeScreenshotAndDownloadPDF = () => {\r\n const screnshotDivRef = document.getElementById(\"sandbox\");\r\n if (screnshotDivRef) {\r\n html2canvas(screnshotDivRef, { allowTaint: true }).then(canvas => {\r\n const data1 = canvas.toDataURL();\r\n downloadPdfWithScreenshot(data1);\r\n });\r\n }\r\n }\r\n\r\n const downloadPdfWithScreenshot = (screenshot: string) => {\r\n debug('downloadPdfWithScreenshot');\r\n let partsHash: string = \"XXX\";\r\n http.downloadConfigurationSummaryPdfWithScreenshot(partsHash, screenshot).then(response => {\r\n var headers = response.headers;\r\n var headersArray = Object.entries(headers);\r\n var contentDispos: any;\r\n headersArray.forEach(([key, value]) => {\r\n if (key === \"content-disposition\") {\r\n contentDispos = value;\r\n }\r\n });\r\n\r\n var blob = response.data;\r\n var disposition = contentDisposition.parse(contentDispos);\r\n var fileName = disposition.parameters.filename\r\n ? disposition.parameters.filename\r\n : \"configuration.pdf\";\r\n\r\n fileName = \"configuration.pdf\";\r\n console.log(\"SAVE PDF\", fileName);\r\n saveAs(blob, fileName);\r\n });\r\n };\r\n\r\n const downloadPdf = () => {\r\n debug('downloadPdf');\r\n let partsHash: string = \"XXX\";\r\n http.downloadConfigurationSummaryPdf(partsHash).then(response => {\r\n var headers = response.headers;\r\n var headersArray = Object.entries(headers);\r\n var contentDispos: any;\r\n headersArray.forEach(([key, value]) => {\r\n if (key === \"content-disposition\") {\r\n contentDispos = value;\r\n }\r\n });\r\n\r\n var blob = response.data;\r\n var disposition = contentDisposition.parse(contentDispos);\r\n var fileName = disposition.parameters.filename\r\n ? disposition.parameters.filename\r\n : \"configuration.pdf\";\r\n\r\n fileName = \"configuration.pdf\";\r\n console.log(\"SAVE PDF\", fileName);\r\n saveAs(blob, fileName);\r\n });\r\n };\r\n\r\n return (\r\n
\r\n

KTM Configurator Sandbox

\r\n \"sound\" setActive(!active)} />\r\n\r\n {/* \"sound\"\r\n \"sound\" */}\r\n\r\n \r\n \r\n\r\n \r\n
\r\n downloadPdf()} target=\"_blank\">\r\n GET \r\n \r\n takeScreenshotAndDownloadPDF()} target=\"_blank\">\r\n POST \r\n \r\n Wheels: \r\n
\r\n );\r\n}\r\n\r\nexport default withNamespaces()(SandboxComponent);\r\n\r\n","import React from 'react';\r\nimport { getCulture } from './helpers';\r\nimport { store } from '../redux/store';\r\nimport { getPriceAvailability } from '../redux/selectors';\r\nimport { Price } from '../models/vehicle';\r\n\r\nexport default class Formatter extends React.Component {\r\n\r\n\tstatic currency(price: Price, isXBow:boolean=false) {\r\n\t\t\r\n\t\tconst pricesAreAvailable = getPriceAvailability(store.getState());\r\n\t\tlet lang = document.documentElement.lang\r\n\t\tif (!price || !pricesAreAvailable || isXBow) return null;\r\n\t\t\r\n\t\t//Hofix if price is 0 in database\r\n\t\tif(price && price.Value === 0) return (lang === \"de\" ? \"Preis nicht vorhanden\" : \"Price not Available\");\r\n\r\n\t\tif (getCulture() === 'en-JP'){\r\n\t\t\treturn price.Value.toLocaleString('ja-JP') + ' ' + price.CurrencySymbol ;\r\n\t\t}\r\n\r\n\t\treturn price.Value.toLocaleString(navigator.language, { minimumFractionDigits: 2 }) + ' ' + price.CurrencySymbol ;\r\n\t}\r\n}\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Dot: React.FunctionComponent = () => {\r\n return (\r\n \r\n Dot Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Dot;","import React from \"react\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport Tick from \"../../assets/icons/tick\";\r\nimport { ColorVarations } from \"../../models/vehicle\";\r\nimport Dot from \"../../assets/icons/dot\";\r\n\r\nexport interface ColorSelectionProps {\r\n ColorArray?: ColorVarations[];\r\n changeBikeColor?: (VariationCode: string, ColorCode: string) => void;\r\n}\r\n\r\nconst ColorSelection: React.FunctionComponent = (props) => {\r\n const { t, ColorArray, changeBikeColor, currentVariation, is3DMode } = props;\r\n\r\n if(ColorArray && changeBikeColor) {\r\n return (\r\n <>\r\n {ColorArray.length > 1 && (\r\n
\r\n
{t(\"configuration.colorSwitcherHeading\")}
\r\n \r\n
\r\n {ColorArray.map((color, index) => (\r\n changeBikeColor(color.Code, color.ColorCode)}\r\n >\r\n {currentVariation === color.Code && }\r\n \r\n ))}\r\n
\r\n
\r\n )}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ColorSelection);\r\n","import React, { useEffect } from 'react';\r\nimport { withStyles, WithStyles, Theme } from '@material-ui/core/styles';\r\nimport { Setup } from '../setups/SetupsList';\r\nimport { Part } from '../parts/PartsList';\r\nimport { withNamespaces, WithNamespaces } from 'react-i18next';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Format from '../../utils/formatter';\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from '../../utils/addReduxProps';\r\nimport { connect } from 'react-redux';\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport ColorSelection from './colorSelection';\r\nimport { ColorVarations, Price, VehicleInformation } from '../../models/vehicle';\r\nimport { uniqBy } from '../../utils/helpers';\r\n\r\nexport interface VehicleSummaryProps {\r\n\tappliedSetup: Setup | undefined;\r\n\tappliedParts: Part[];\r\n\tmodel: VehicleInformation;\r\n\ttotalPrice: Price;\r\n\thasPrices: boolean;\r\n\tshowDescription: boolean;\r\n\tchangeBikeColor: (VariationCode:string, ColorCode:string) => void;\r\n\tvariationCode: string;\r\n\tfinanceAvailable: boolean;\r\n}\r\n\r\nexport const classes = (theme: Theme) => {\r\n\treturn {\r\n\t\tpriceClass: {\r\n\t\t\tcolor: theme.palette.primary.main,\r\n\t\t\tfontSize: '1.5em',\r\n\t\t\tdisplay: 'inline' as \"inline\",\r\n\t\t},\r\n\t\taddOnCountBackground: {\r\n\t\t\tdisplay: 'inline-block',\r\n\t\t\tbackground: theme.palette.primary.main,\r\n\t\t\tborderRadius: '50%',\r\n\t\t\twidth: '26px',\r\n\t\t\tlineHeight: '26px',\r\n\t\t\tfontSize: '22px',\r\n\t\t\ttextAlign: 'center' as \"center\",\r\n\t\t\tcolor: 'white',\r\n\t\t\tmarginLeft: '1em',\r\n\t\t\tmarginRight: '0.5em',\r\n\t\t\tposition: 'relative' as \"relative\",\r\n\t\t\ttop: '-2px'\r\n\r\n\t\t},\r\n\t\taddOn: {\r\n\t\t\tcolor: 'white',\r\n\t\t\ttextTransform: 'initial' as \"initial\",\r\n\t\t\tfontSize: 'smaller' as \"smaller\",\r\n\t\t},\r\n\t\taddOnsWrapper: {\r\n\t\t\tdisplay: 'inline-block',\r\n\t\t},\r\n\t\tcount: {\r\n\t\t\tposition: 'relative' as \"relative\",\r\n\t\t\ttop: '1px',\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport const VehicleSummary: React.FunctionComponent = props => {\r\n\tconst { model, overview:{Variations}, t, configurationState, hasPrices, showDescription, applicationSettings, changeBikeColor, variationCode, currentVariation, setVehicleVariation } = props;\r\n\tconst [scrollable, setScrollable] = React.useState(false);\r\n\tconst [ColorArray, setColorArray] = React.useState([]);\r\n\tconst [PriceNote, setPriceNote] = React.useState('');\r\n\r\n\tconst lineHeightDesc = 34;\r\n\tconst maxLines = 7;\r\n\tconst maxLinesSmallerScreen = 5;\r\n\tlet maxHeight = lineHeightDesc * maxLines;\r\n\tlet maxHeightSmallerScreens = lineHeightDesc * maxLinesSmallerScreen;\r\n\tlet DescElement: HTMLElement | null = document.getElementById('vehicle-description-wrapper');\r\n\r\n\tlet lineHeightStyle: React.CSSProperties = {\r\n\t}\r\n\r\n\tlet lineHeightStyleScroll: React.CSSProperties = {\r\n\t\tmaxHeight: `${maxHeight}px`,\r\n\t}\r\n\r\n\tlet lineHeightStyleSmallerScreens: React.CSSProperties = {\r\n\t\tmaxHeight: `${maxHeightSmallerScreens}px`,\r\n\t}\r\n\r\n\tconst [usedStyle, setUsedStyle] = React.useState(lineHeightStyle); \r\n\r\n\tconst handleColorSelection = (Code: string, ColorCode: string) => {\r\n\t\tchangeBikeColor(Code, ColorCode);\r\n\t}\r\n\r\n\tconst checkScrollableClass = () => {\t\t\r\n\t\tlet currentDescElement = document.querySelector('#vehicle-description-wrapper');\r\n\t\t//TODO: remove this code. Why is the dependency between finance plugin and the bike description? Shall be solved logically. \r\n\t\tlet financePlugin = document.querySelector('#iframe-zone');\r\n\t\tif (currentDescElement) {\r\n\t\t\tlet height = currentDescElement.scrollHeight;\r\n\t\t\tlet currentMaxLines = financePlugin ? maxLinesSmallerScreen : maxLines;\r\n\t\t\tif ((height / lineHeightDesc) > currentMaxLines) {\r\n\t\t\t\tif(window.innerHeight < 1000 && financePlugin) {\r\n\t\t\t\t\tsetUsedStyle(lineHeightStyleSmallerScreens);\r\n\t\t\t\t\tsetScrollable(true);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tsetUsedStyle(lineHeightStyleScroll);\r\n\t\t\t\t\tsetScrollable(true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tsetUsedStyle(lineHeightStyle);\r\n\t\t\t\tsetScrollable(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tuseEffect(() => {\r\n\t\tif(currentVariation === \"\") {\r\n\t\t\tsetVehicleVariation(variationCode);\r\n\t\t}\r\n\t}, [currentVariation]);\r\n\r\n\tuseEffect(() => {\r\n\t\tcheckScrollableClass();\r\n\t},[DescElement]);\r\n\r\n\tuseEffect(() => {\r\n\t\twindow.addEventListener('resize', checkScrollableClass);\r\n\r\n\t\tsetColorArray(uniqBy(Variations, (a) => a.ColorCode));\r\n\t\tconst variation = currentVariation !== \"\" ? currentVariation : variationCode;\r\n\t\tconst item = Variations.find(color => color.Code === variation);\r\n\r\n\t\tif(item) {\r\n\t\t\tsetPriceNote(item.PriceNote)\r\n\t\t}\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener('resize', checkScrollableClass);\r\n\t\t}\r\n\t}, [])\r\n\r\n\tif(ColorArray.length === 0) {\r\n\t\treturn ;\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{/* BIKE INFO */}\r\n\t\t\t\r\n\t\t\t\t{showDescription &&\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

{model.Hero.Title}

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{model.Name}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t{!showDescription &&\r\n\t\t\t\t\t

{model.Name}

\r\n\t\t\t\t}\r\n\t\t\t\t{showDescription &&\r\n\t\t\t\t\t

{model.Hero.Description}

\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t{/*ColorArray.length > 1 &&\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{t('configuration.colorSwitcherHeading')}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{ColorArray.map((color, index) => (\r\n\t\t\t\t\t\t\t\thandleColorSelection(color.Code, color.ColorCode)}>{currentVariation === color.Code && }\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\t*/}\r\n\t\t\t\t{hasPrices &&\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{t(`configuration.summary.total.${applicationSettings.Brand}`)}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
{Format.currency(configurationState.price)}
\r\n\t\t\t\t\t
\r\n\t\t\t\t}\r\n\t\t\t\t{hasPrices &&\r\n\t\t\t\t<>\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t{PriceNote !== \"\" &&\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t{PriceNote === \"\" &&\r\n\t\t\t\t\t\t\t
{t('configuration.summary.priceInfo')}
\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withNamespaces()(withStyles(classes)(VehicleSummary)));\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst CloseKTM: React.FunctionComponent = () => {\r\n return (\r\n \r\n Close Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default CloseKTM;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst CloseHQV: React.FunctionComponent = () => {\r\n return (\r\n \r\n Close Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default CloseHQV;\r\n","import React from \"react\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport CloseKTM from \"./close_ktm\";\r\nimport CloseHQV from \"./close_hqv\";\r\n\r\nconst Close: React.FunctionComponent = props => {\r\n const brand = props.applicationSettings.Brand;\r\n const hqv = brand === \"HQV\" ? true : false;\r\n return (\r\n <>\r\n {!hqv && }\r\n {hqv && }\r\n \r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Close);\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { MinusIconProps } from \"./minus\";\r\n\r\nconst MinusKTM3D: React.FunctionComponent = props => {\r\n return (\r\n \r\n Minus Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default MinusKTM3D;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { MinusIconProps } from \"./minus\";\r\n\r\nconst MinusHQV3D: React.FunctionComponent = props => {\r\n return (\r\n \r\n Minus Icon\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MinusHQV3D;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { MinusIconProps } from \"./minus\";\r\n\r\nconst MinusGG3D: React.FunctionComponent = props => {\r\n return (\r\n \r\n Minus Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default MinusGG3D;\r\n","import React from \"react\";\r\nimport MinusKTM3D from \"./minus_ktm3D\";\r\nimport MinusHQV3D from \"./minus_hqv3D\";\r\nimport MinusGG3D from \"./minus_gg3D\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\n\r\nexport interface MinusIconProps {\r\n identifyer: string;\r\n}\r\n\r\nconst Minus3D: React.FunctionComponent = props => {\r\n const brand = props.applicationSettings.Brand;\r\n return (\r\n <>\r\n {brand === \"KTM\" && }\r\n {brand === \"HQV\" && }\r\n {brand === \"GG\" && }\r\n \r\n );\r\n};\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Minus3D);\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { PlusIconProps } from \"./plus\";\r\n\r\nconst PlusKTM3D: React.FunctionComponent = props => {\r\n return (\r\n \r\n Plus Icon\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PlusKTM3D;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { PlusIconProps } from \"./plus\";\r\n\r\nconst PlusHQV3D: React.FunctionComponent = props => {\r\n return (\r\n \r\n Plus Icon\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PlusHQV3D;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { PlusIconProps } from \"./plus\";\r\n\r\nconst PlusGG3D: React.FunctionComponent = props => {\r\n return (\r\n \r\n Plus Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default PlusGG3D;\r\n","import React from \"react\";\r\nimport PlusKTM3D from \"./plus_ktm3D\";\r\nimport PlusHQV3D from \"./plus_hqv3D\";\r\nimport PlusGG3D from \"./plus_gg3D\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\n\r\nexport interface PlusIconProps {\r\n identifyer: string;\r\n}\r\n\r\nconst Plus3D: React.FunctionComponent = props => {\r\n const brand = props.applicationSettings.Brand;\r\n return (\r\n <>\r\n {brand === \"KTM\" && }\r\n {brand === \"HQV\" && }\r\n {brand === \"GG\" && }\r\n \r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Plus3D);\r\n","import React, { useState, useEffect } from \"react\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport format from \"../../utils/formatter\";\r\nimport { DialogProps } from \"./dialogRouter\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\nimport { filter } from \"rxjs/operators\";\r\nimport { AddPartPayload } from \"../../services/http/real\";\r\nimport store from \"../../redux/store\";\r\nimport addPartAsync from \"../../redux/async-actions/addPart\";\r\nimport i18n from \"../../i18n\";\r\nimport Done from \"@material-ui/icons/Done\";\r\nimport { getPartById } from \"../../utils/partsHelpers\";\r\nimport Close from \"../../assets/icons/close\";\r\nimport Arrow from \"../../assets/icons/arrow\";\r\nimport { StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport { Price } from \"../../models/vehicle\";\r\n\r\nexport interface ConflictingPartErrorResponse {\r\n ValidationResultType: number; // 0 invalid input, 1 rule exception\r\n InvalidInputMessage?: any; // if defined show error in a diferrent toast\r\n RulesResult: RulesResult;\r\n}\r\n\r\nexport interface RulesResult {\r\n RuleType: RuleTypes;\r\n Part: ResponsePart;\r\n Parts: ResponsePart[];\r\n ChoosePart: boolean;\r\n}\r\n\r\nexport enum RuleTypes {\r\n Required = 1,\r\n Conflicting = 0,\r\n}\r\n\r\nexport interface ResponsePart {\r\n Code: string;\r\n Title: string;\r\n Price: Price;\r\n PreviewImageId: number;\r\n PreviewImage: string;\r\n}\r\n\r\nexport interface RequiredPartsProps {\r\n rule: RulesResult;\r\n deleteRule?: true;\r\n}\r\n\r\nexport interface ConflictingPartsProps {\r\n rule: RulesResult;\r\n}\r\n\r\nexport interface RequiredSelectablePartsProps {\r\n rule: RulesResult;\r\n partKey: string;\r\n}\r\n\r\ntype selectedPartIdsType = { [key: string]: string };\r\n\r\nexport const selectedPartIds$ = new BehaviorSubject(false);\r\n\r\n//changes on this variable triggers server call!\r\nexport const addPartPayload$ = new BehaviorSubject(false);\r\n\r\n//the last requested payload to the backend, separate variable because addPartPayload$ emits server calls\r\nexport const currentPayload$ = new BehaviorSubject(false);\r\n\r\nexport const ConflictingParts: React.FunctionComponent & WithNamespaces & StateManagementProps> = ({\r\n hideDialog,\r\n t,\r\n data,\r\n applicationSettings,\r\n}) => {\r\n // @todo add or remove selector\r\n const removeParts: boolean = data.RulesResult.RuleType === 0;\r\n const title = t(`dialogs.conflictingParts.${removeParts ? \"conflicting\" : \"required\"}.title`);\r\n const cancelButton = t(`buttons.${removeParts ? \"keep\" : \"remove\"}`);\r\n const addButton = t(`buttons.${removeParts ? \"change\" : \"add\"}`);\r\n const {\r\n Part: { Code },\r\n } = data.RulesResult;\r\n\r\n //use effect to subscribe and unsubsrcibe observable of selectable required parts\r\n useEffect(() => {\r\n // subscribe to the required streams\r\n const partIdsSub = selectedPartIds$.subscribe();\r\n\r\n // when this stream emits send values to the server\r\n const partPayloadSub = addPartPayload$.pipe(filter((val): val is AddPartPayload => !!val)).subscribe((val) => {\r\n store.dispatch(addPartAsync(val) as any);\r\n });\r\n\r\n return function cleanup() {\r\n // values in this stream need reset during unmounting\r\n selectedPartIds$.next(false);\r\n\r\n // cancel subscriptions\r\n partIdsSub.unsubscribe();\r\n partPayloadSub.unsubscribe();\r\n };\r\n }, []);\r\n\r\n const addPart = () => {\r\n console.log(\"Try add part to the current configuration.\");\r\n // initialize the value of the payload with the value of observable (when not false) or the default\r\n let payload: AddPartPayload = currentPayload$.getValue() || {\r\n PartId: Code,\r\n SelectedParts: [],\r\n RemoveParts: [],\r\n };\r\n\r\n payload.DryRun = true; //allways send dry run, until all conflicts are resolved\r\n\r\n if (data.RulesResult.RuleType === RuleTypes.Required) {\r\n // get all required selectable parts from the last value of the stream\r\n const selectedRequiredValues = selectedPartIds$.getValue();\r\n\r\n // if required selectable parts are not falsy add them otherwise provide empty array\r\n const requiredSelectedPartIds = selectedRequiredValues ? getRequiredPartsIds(selectedRequiredValues) : [];\r\n\r\n // if required non selectable parts are inside rules result add them otherwise provide empty array\r\n const requiredPreselectedIds = !data.RulesResult.ChoosePart ? getPartsIdsFromRulesResult(data.RulesResult) : [];\r\n\r\n // accumulates: required preselected, required selected and previously selected parts\r\n const SelectedParts = requiredPreselectedIds\r\n .concat(requiredSelectedPartIds)\r\n .concat(payload.SelectedParts)\r\n .filter((value, index, self) => self.indexOf(value) === index); // Contained duplicated Part codes which caused bug KPC-248; TODO: is most efficient solution?\r\n\r\n if (SelectedParts.length) {\r\n payload = {\r\n ...payload,\r\n SelectedParts,\r\n };\r\n }\r\n } else {\r\n // assumes RuleType.Conflicting\r\n\r\n // combines Remove part ids from this call and the previous one if any\r\n const RemoveParts = getPartsIdsFromRulesResult(data.RulesResult).concat(payload.RemoveParts);\r\n if (RemoveParts.length) {\r\n payload = {\r\n ...payload,\r\n RemoveParts,\r\n };\r\n }\r\n }\r\n\r\n // emit next value to trigger server call\r\n addPartPayload$.next(payload);\r\n };\r\n\r\n const closeDialog = () => {\r\n // when user chooses to close dialog reset streams\r\n addPartPayload$.next(false);\r\n selectedPartIds$.next(false);\r\n hideDialog();\r\n };\r\n\r\n const ConflictingContent = withNamespaces()(ConflictingPartsContent);\r\n\r\n const renderDesktopBackButton = () => {\r\n if (applicationSettings.Brand === \"HQV\") {\r\n return (\r\n <>\r\n \r\n \r\n \r\n {t(\"navigation.goBack\")}\r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n \r\n {t(\"navigation.goBack\")}\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const renderHeadline = () => {\r\n if (applicationSettings.Brand === \"KTM\") {\r\n return (\r\n

\r\n {title}\r\n

\r\n );\r\n }\r\n if (applicationSettings.Brand === \"HQV\") {\r\n return (\r\n

\r\n {title}\r\n

\r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderHeadline()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const ConflictingPartsContent: React.FunctionComponent = ({ RulesResult, t }) => {\r\n const remove = RulesResult.RuleType === RuleTypes.Conflicting;\r\n return remove ? : ;\r\n};\r\n\r\nexport const RequiredParts: React.FunctionComponent = ({ rule, deleteRule }) => {\r\n const {\r\n Part: { Title, PreviewImage, Price },\r\n } = rule;\r\n const { ChoosePart: isSelectable } = rule;\r\n let requiredPartIds = \"\";\r\n for (let i = 0; i < rule.Parts.length; i++) {\r\n if (requiredPartIds !== \"\") {\r\n requiredPartIds += \"-\";\r\n }\r\n requiredPartIds += rule.Parts[i].Code;\r\n }\r\n const selectable = (\r\n <>\r\n {i18n.t(\"dialogs.conflictingParts.required.selectRequired\")}\r\n \r\n \r\n );\r\n\r\n const nonSelectable = (\r\n <>\r\n {i18n.t(`dialogs.conflictingParts.required.${deleteRule ? \"delete\" : \"requiredNonSelectable\"}`)}\r\n \r\n \r\n );\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n {Title}\r\n \r\n \r\n

{Title}

\r\n
{format.currency(Price)}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {isSelectable ? selectable : nonSelectable}\r\n \r\n \r\n );\r\n};\r\n\r\nexport const RequiredSelectableParts: React.FunctionComponent = ({ rule, partKey }) => {\r\n const { Parts } = rule;\r\n const [{ Code }] = Parts;\r\n const [selected, setSelected] = useState(false);\r\n\r\n useEffect(() => {\r\n selectedPartIds$.next({ [partKey]: Code });\r\n const subscription = selectedPartIds$.subscribe((value) => {\r\n // when stream emits make sure to refresh component\r\n setSelected((value as selectedPartIdsType)[partKey]);\r\n });\r\n return function cleanup() {\r\n // unsubscribe on component destruction\r\n subscription.unsubscribe();\r\n };\r\n }, [partKey, Code]);\r\n\r\n const selectPart = (Code: string) => {\r\n const values = selectedPartIds$.getValue();\r\n selectedPartIds$.next({\r\n ...values,\r\n [partKey]: Code,\r\n });\r\n };\r\n\r\n const partsInGrid = Parts.map(({ PreviewImage, Title, Price, Code }: ResponsePart, idx: number) => {\r\n const higlighted = Code === selected;\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {Title}\r\n
\r\n
\r\n \r\n

{Title}

\r\n
\r\n \r\n {format.currency(Price)}\r\n \r\n
\r\n );\r\n });\r\n\r\n return <>{partsInGrid};\r\n};\r\n\r\nexport const RequiredNonSelectableParts: React.FunctionComponent<{ parts: ResponsePart[] }> = ({ parts }) => {\r\n return (\r\n <>\r\n {parts.map((part: ResponsePart, idx: number) => {\r\n const { PreviewImage, Title, Price } = part;\r\n\r\n return (\r\n \r\n \r\n
\r\n \"part\"\r\n
\r\n
\r\n \r\n

{Title}

\r\n
{format.currency(Price)}
\r\n
\r\n
\r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default withNamespaces()(ConflictingParts);\r\n\r\nexport const PartsToRemove: React.FunctionComponent = ({ rule }) => {\r\n //old parts\r\n const { Parts }: RulesResult = rule;\r\n\r\n // the part to replace old parts\r\n const { Part } = rule;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {Parts.map((part: ResponsePart, idx: number) => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport interface ReplacePartsProps {\r\n part: ResponsePart;\r\n replacing: boolean;\r\n}\r\n\r\nexport const ReplacePart: React.FunctionComponent = ({ part: { Title, PreviewImage, Price, Code }, replacing }) => {\r\n return (\r\n \r\n
\r\n \r\n \r\n {Title}\r\n \r\n \r\n

{Title}

\r\n
{format.currency(Price ? Price : getPartById(Code).Price)}
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nfunction getPartsIdsFromRulesResult(rulesResult: RulesResult): string[] {\r\n return rulesResult.Parts.reduce((acc: string[], part: ResponsePart) => [...acc, part.Code], []);\r\n}\r\n\r\nfunction getRequiredPartsIds(selectedRequiredValues: selectedPartIdsType | false) {\r\n if (!selectedRequiredValues) {\r\n return [];\r\n }\r\n return Object.keys(selectedRequiredValues).reduce((acc: string[], selectionKeys: string) => [...acc, selectedRequiredValues[selectionKeys]], []);\r\n}\r\n","import { AxiosResponse, AxiosRequestConfig } from \"axios\";\r\nimport http from \"../../services/http\";\r\nimport { Store as AppState } from \"../reducers\";\r\nimport { ThunkDispatch, ThunkAction } from \"redux-thunk\";\r\nimport { TogglePartResponse } from \"../../components/parts/PartsList\";\r\nimport {\r\n\tConflictingPartErrorResponse,\r\n\taddPartPayload$,\r\n\tselectedPartIds$,\r\n\tcurrentPayload$\r\n} from \"../../components/dialogs/conflictingParts\";\r\nimport {\r\n\tapplyParts,\r\n\tsetConfigurationImages,\r\n\taddPrice,\r\n\tsetImageTimestamp,\r\n\tshowDialog,\r\n\thideDialog,\r\n\tsetConfigurationIsDirty,\r\n\tnoConflictingParts\r\n} from \"../actions\";\r\nimport { DialogTypes } from \"../../enums/dialogTypes\";\r\nimport {} from \"react-i18next\";\r\nimport { AddPartPayload } from \"../../services/http/real\";\r\nimport i18n from \"../../i18n\";\r\nimport { toastMessage } from \"../../utils/helpers\";\r\nimport { getPartById } from \"../../utils/partsHelpers\";\r\nimport Action from \"../reducers/models/action\";\r\nimport store from \"../store\";\r\n\r\n// implement custom error interface to support data types\r\nexport interface CustormAxiosError {\r\n\tconfig: AxiosRequestConfig;\r\n\trequest: any;\r\n\tresponse: AxiosResponse;\r\n}\r\n\r\nexport default function addPart(\r\n\tpayload: AddPartPayload\r\n): ThunkAction, AppState, {}, Action> {\r\n\t//return function(dispatch: ThunkDispatch) {\r\n\treturn function(dispatch: ThunkDispatch) {\r\n\t\treturn http\r\n\t\t\t.addPart(payload)\r\n\t\t\t.then(function addPartOnSuccess(\r\n\t\t\t\tresponse: AxiosResponse\r\n\t\t\t) {\r\n\t\t\t\t\r\n\t\t\t\t// submit payload to the conflictingDialog so that it can use it for resending the request after resolving all conflicts\r\n\t\t\t\tcurrentPayload$.next(payload);\r\n\t\t\t\t\r\n\t\t\t\tif (response.data.RulesResult) { //ruleset is existing the user should dicide how to resolve it\r\n\t\t\t\t\thideDialog();\r\n\t\t\t\t\tconst data = response.data;\r\n\t\t\t\t\tdispatch(\r\n\t\t\t\t\t\tshowDialog({\r\n\t\t\t\t\t\t\tcontentType: DialogTypes.conflictWhileAddPart,\r\n\t\t\t\t\t\t\tdata, \r\n\t\t\t\t\t\t\ttitle: \"\"\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\telse if (typeof payload !== \"string\" && !payload.DryRun){\r\n\t\t\t\t\tdispatch(hideDialog());\r\n\t\t\t\t\tdispatch(applyParts(response.data.PartIds));\r\n\t\t\t\t\tdispatch(setConfigurationImages(response.data.FullImages));\r\n\t\t\t\t\tdispatch(addPrice(response.data.Price));\r\n\t\t\t\t\tdispatch(setConfigurationIsDirty(true));\r\n\t\t\t\t\tconst partId = typeof payload === \"string\" ? payload : payload.PartId;\r\n\t\t\t\t\tif (getPartById(partId).CanBeRendered) {\r\n\t\t\t\t\t\t// force image reload\r\n\t\t\t\t\t\tdispatch(setImageTimestamp());\r\n\t\t\t\t\t\ttoastMessage(i18n.t(\"toasts.partAdded\"));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttoastMessage(\r\n\t\t\t\t\t\t\t`${i18n.t(\"toasts.partAdded\")} (${i18n.t(\r\n\t\t\t\t\t\t\t\t\"configuration.parts.notVisualized\"\r\n\t\t\t\t\t\t\t)})`\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet sendPayload:AddPartPayload = {\r\n\t\t\t\t\t\tPartId : \"\",\r\n\t\t\t\t\t\tSelectedParts : [],\r\n\t\t\t\t\t\tRemoveParts : [],\r\n\t\t\t\t\t\tDryRun : false\r\n\t\t\t\t\t} \r\n\t\t\t\t\tstore.dispatch(noConflictingParts(sendPayload));\r\n\t\t\t\t}\r\n\t\t\t\telse if(typeof payload !== \"string\" && payload.DryRun) {\r\n\t\t\t\t\t//now there is clean configuration that shall be persisted \t\t\t\t \r\n\t\t\t\t\tlet sendPayload:AddPartPayload = {\r\n\t\t\t\t\t\tPartId : \"\",\r\n\t\t\t\t\t\tSelectedParts : [],\r\n\t\t\t\t\t\tRemoveParts : [],\r\n\t\t\t\t\t\tDryRun : false\r\n\t\t\t\t\t} \r\n\r\n\t\t\t\t\tsendPayload = payload;\r\n\t\t\t\t\tsendPayload.DryRun = false;\r\n\t\t\t\t\tstore.dispatch(noConflictingParts(sendPayload));\t\t\r\n\t\t\t\t \t\t\r\n\t\t\t\t}\r\n\t\t\t\t// reset streams\r\n\t\t\t\taddPartPayload$.next(false);\r\n\t\t\t\tselectedPartIds$.next(false);\t\t\r\n\t\t\t})\r\n\t\t\t.catch(function handeErrorResponse(\r\n\t\t\t\terror: CustormAxiosError\r\n\t\t\t) {\r\n\t\t\t\tconsole.error(error);\r\n\t\t\t});\r\n\t};\r\n}\r\n","import { AxiosResponse, AxiosRequestConfig } from \"axios\";\r\nimport http from \"../../services/http\";\r\nimport { Store as appState } from \"../reducers\";\r\nimport { ThunkDispatch, ThunkAction } from \"redux-thunk\";\r\nimport { TogglePartResponse } from \"../../components/parts/PartsList\";\r\nimport { DialogTypes } from \"../../enums/dialogTypes\";\r\nimport {} from \"react-i18next\";\r\nimport { RemovePartPayload } from \"../../services/http/real\";\r\nimport {\r\n\tConflictingPartErrorResponse\r\n} from \"../../components/dialogs/conflictingParts\";\r\nimport {\r\n\tapplyParts,\r\n\tsetConfigurationImages,\r\n\taddPrice,\r\n\tsetImageTimestamp,\r\n\tshowDialog,\r\n\thideDialog,\r\n\tsetConfigurationIsDirty,\r\n\tremoveNoConflictingParts\r\n} from \"../actions\";\r\nimport i18n from \"../../i18n\";\r\nimport { toastMessage } from \"../../utils/helpers\";\r\nimport store from \"../store\";\r\n\r\n// implement custom error interface to support data types\r\nexport interface CustormAxiosError {\r\n\tconfig: AxiosRequestConfig;\r\n\trequest: any;\r\n\tresponse: AxiosResponse;\r\n}\r\n\r\nexport default function removePart(\r\n\tpayload: RemovePartPayload | string\r\n): ThunkAction, appState, {}, any> {\r\n\treturn function(dispatch: ThunkDispatch) {\r\n\t\treturn http\r\n\t\t\t.removePart(payload)\r\n\t\t\t.then(function addPartOnSuccess(\r\n\t\t\t\tresponse: AxiosResponse\r\n\t\t\t) {\r\n\t\t\t\t\r\n\t\t\t\tif(response.data.RulesResult) {\r\n\t\t\t\t\tdispatch(hideDialog());\r\n\t\t\t\t\tconst data = response.data\r\n\t\t\t\t\tdispatch(\r\n\t\t\t\t\t\tshowDialog({\r\n\t\t\t\t\t\t\tcontentType: DialogTypes.removeConflictingPart,\r\n\t\t\t\t\t\t\tdata,\r\n\t\t\t\t\t\t\ttitle: i18n.t(\"dialogs.conflictingParts.required.delete-title\")\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\telse if (typeof payload !== \"string\" && !payload.DryRun){\r\n\t\t\t\t\tdispatch(hideDialog());\r\n\t\t\t\t\tdispatch(applyParts(response.data.PartIds));\r\n\t\t\t\t\tdispatch(setConfigurationImages(response.data.FullImages));\r\n\t\t\t\t\tdispatch(addPrice(response.data.Price));\r\n\t\t\t\t\tdispatch(setImageTimestamp());\r\n\t\t\t\t\ttoastMessage(i18n.t(\"configuration.parts.toastPartRemoved\"));\r\n\t\t\t\t\tdispatch(setConfigurationIsDirty(true));\r\n\t\t\t\t\tlet sendPayload:RemovePartPayload = {\r\n\t\t\t\t\t\tPartId : \"\",\r\n\t\t\t\t\t\tRemoveParts : [],\r\n\t\t\t\t\t\tDryRun : false\r\n\t\r\n\t\t\t\t\t} \r\n\t\t\t\t\tstore.dispatch(removeNoConflictingParts(sendPayload));\r\n\t\t\t\t}\r\n\t\t\t\telse if(typeof payload !== \"string\" && payload.DryRun) {\r\n\t\t\t\t\tlet sendPayload:RemovePartPayload = {\r\n\t\t\t\t\t\tPartId : \"\",\r\n\t\t\t\t\t\tRemoveParts : [],\r\n\t\t\t\t\t\tDryRun : false\r\n\t\r\n\t\t\t\t\t} \r\n\t\t\t\t\tsendPayload = payload;\r\n\t\t\t\t\tsendPayload.DryRun = false;\r\n\t\t\t\t\tstore.dispatch(removeNoConflictingParts(sendPayload));\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t})\r\n\t\t\t.catch(function handeErrorResponse(\r\n\t\t\t\terror: CustormAxiosError\r\n\t\t\t) {\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t};\r\n}\r\n","import store from \"../redux/store\";\r\nimport { Part } from \"../components/parts/PartsList\";\r\nimport addPartAsync from \"../redux/async-actions/addPart\";\r\nimport removePartAsync from \"../redux/async-actions/removePart\";\r\nimport { AddPartPayload, RemovePartPayload } from \"../services/http/real\";\r\n\r\n/*--- collect Parts ---*/\r\n\r\nfunction getAllParts(): Part[] {\r\n return store.getState().vehicleOverviewState.Parts;\r\n}\r\n\r\nexport function getPartById(id: string) {\r\n return getAllParts().find((part: Part) => part.PartId === id) as Part;\r\n}\r\n\r\n/*--- ADD & REMOVE PART ---*/\r\nexport function togglePart(part: Part, appliedParts: Part[]) {\r\n appliedParts.findIndex((entry) => entry.PartId === part.PartId) !== -1 ? removePart(part) : addPart(part);\r\n }\r\n \r\n export function addNonConflictingPart(payload: AddPartPayload) {\r\n store.dispatch(addPartAsync(payload) as any);\r\n }\r\n \r\n export function removeNonConflictingPart(payload: RemovePartPayload) {\r\n store.dispatch(removePartAsync(payload) as any);\r\n }\r\n \r\n export function addPart(part: Part) {\r\n let payload: AddPartPayload = {\r\n PartId: part.PartId,\r\n SelectedParts: [],\r\n RemoveParts: [],\r\n DryRun: true,\r\n };\r\n store.dispatch(addPartAsync(payload) as any);\r\n }\r\n \r\n export function removePart(part: Part) {\r\n let payload: RemovePartPayload = {\r\n PartId: part.PartId,\r\n RemoveParts: [],\r\n DryRun: true,\r\n };\r\n store.dispatch(removePartAsync(payload) as any);\r\n }","import React from \"react\";\r\nimport { Attribute, AttributeValues, Part, PartAction } from \"./PartsList\";\r\nimport Action from \"../../redux/reducers/models/action\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { useState, useEffect } from \"react\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport { FullImage } from \"../configuration/ConfigurationView\";\r\nimport Close from \"../../assets/icons/close\";\r\nimport NoPartPreviewIcon from \"@material-ui/icons/VisibilityOffOutlined\";\r\nimport { StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport formatter from \"../../utils/formatter\";\r\nimport Minus3D from \"../../assets/icons/minus3D\";\r\nimport Plus3D from \"../../assets/icons/plus3D\";\r\nimport { Collapse } from \"@material-ui/core\";\r\nimport ArrowHead from \"../../assets/icons/arrowHead\";\r\nimport { togglePart } from \"../../utils/partsHelpers\";\r\nimport { debug } from \"../../utils/helpers\";\r\n\r\nexport interface PartDetailDialogProps {\r\n selectedPart: Part;\r\n closeDialog: () => void;\r\n applyParts: (parts: string[]) => Action;\r\n setImageTimestamp: () => Action;\r\n setConfigurationImages: (images: FullImage[]) => Action;\r\n appliedParts: Part[];\r\n userInactive?: boolean;\r\n}\r\n\r\nexport interface CollapseState {\r\n name: string;\r\n open: boolean;\r\n}\r\ntype PartDetailAllProps = PartDetailDialogProps & WithNamespaces & StateManagementProps;\r\n\r\nexport const PartDetailDialog: React.FunctionComponent = (props) => {\r\n const { t, selectedPart, closeDialog, appliedParts, applicationSettings, configurationState, userInactive, is3DMode } = props;\r\n const setCollapseState = () => {\r\n let stateArray: CollapseState[] | null = [{ name: \"Features\", open: true }];\r\n if (selectedPart.Attributes) {\r\n selectedPart.Attributes.forEach((attribute: Attribute, index: number) => {\r\n if (stateArray) {\r\n stateArray.push({ name: attribute.Description, open: true });\r\n } else {\r\n stateArray = [{ name: attribute.Description, open: true }];\r\n }\r\n });\r\n }\r\n return stateArray;\r\n };\r\n\r\n const setScrollableState = () => {\r\n const container = document.getElementById(\"part-detail-texts\");\r\n const content = document.getElementById(\"part-detail-content\");\r\n let containerHeight = container ? container.offsetHeight : 0;\r\n let contentHeight = content ? content.offsetHeight : 0;\r\n return containerHeight < contentHeight;\r\n };\r\n\r\n const allImages = [selectedPart.Images && selectedPart.Images.Main ? selectedPart.Images.Main : \"\", ...(selectedPart.Images && selectedPart.Images.Other ? selectedPart.Images.Other : [])];\r\n const isIncluded = appliedParts.includes(selectedPart);\r\n const [imageUrl, setImageUrl] = useState(selectedPart.Images && selectedPart.Images.Main ? selectedPart.Images.Main : \"\");\r\n const [expandedStates, setExpandedStates] = useState(() => setCollapseState());\r\n const [lastExpanded, setLastExpanded] = useState(0);\r\n const [scrollableContent, setScrollableContent] = useState(() => setScrollableState());\r\n\r\n const partImageStyle: React.CSSProperties = {\r\n backgroundImage: `url(${imageUrl})`,\r\n backgroundSize: \"contain\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"50% 50%\",\r\n border: applicationSettings.Brand === \"HQV\" ? \"1px solid #f2f2f2\" : \"\",\r\n };\r\n\r\n const handleResize = () => {\r\n setScrollableContent(() => setScrollableState());\r\n };\r\n\r\n const handleExpandClick = (event: any, state: CollapseState) => {\r\n setExpandedStates((x) => {\r\n let v = x;\r\n if (v) {\r\n const index = v.findIndex((c) => c.name === state.name);\r\n if (index > -1) {\r\n v[index] = { name: state.name, open: !state.open };\r\n }\r\n }\r\n\r\n return v;\r\n });\r\n\r\n setLastExpanded(lastExpanded + 1);\r\n };\r\n\r\n const handleBrowserBack = (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n closeDialog();\r\n };\r\n\r\n useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n window.addEventListener(\"popstate\", handleBrowserBack, false);\r\n handleResize();\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n window.removeEventListener(\"popstate\", handleBrowserBack);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (configurationState.noConflictingParts.PartId !== \"\" && !configurationState.noConflictingParts.DryRun) {\r\n closeDialog();\r\n }\r\n }, [configurationState.noConflictingParts]);\r\n\r\n useEffect(() => {\r\n \r\n if (configurationState.removeNoConflictingParts.PartId !== \"\" && !configurationState.removeNoConflictingParts.DryRun) {\r\n closeDialog();\r\n }\r\n }, [configurationState.removeNoConflictingParts]);\r\n\r\n const getCheckedAttributesArray = (array: Attribute[]) => {\r\n return array;\r\n };\r\n\r\n useEffect(() => {\r\n if (userInactive) {\r\n closeDialog();\r\n }\r\n }, [userInactive]);\r\n\r\n const renderBackButton3D = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n {t(\"navigation.goBack\")}\r\n
\r\n );\r\n };\r\n\r\n const renderAttributes = () => {\r\n let DescriptionAttribute: Attribute = {\r\n ClassificationCategory: \"DESC_PP\",\r\n Description: \"Features\",\r\n Key: \"DESC_POWERPARTS\",\r\n Values: [{ Key: \"desc\", Description: selectedPart.Description }],\r\n };\r\n let currentArributesArray = [DescriptionAttribute];\r\n if (selectedPart.Attributes) {\r\n let checkedAttributesArray = getCheckedAttributesArray(selectedPart.Attributes);\r\n currentArributesArray = currentArributesArray.concat(checkedAttributesArray);\r\n }\r\n\r\n return (\r\n <>\r\n {currentArributesArray.map((attribute: Attribute, index: number) => {\r\n return (\r\n <>\r\n {attribute.Description && attribute.Description !== \"\" && (\r\n
\r\n
handleExpandClick(e, expandedStates[index])}>\r\n {attribute.Description}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n {attribute.Values.map((value: AttributeValues, indexValue: number) => {\r\n return
;\r\n })}\r\n
\r\n
\r\n )}\r\n \r\n );\r\n })}\r\n \r\n );\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {renderBackButton3D()}\r\n {!selectedPart.CanBeRendered && !is3DMode && (\r\n
\r\n \r\n {t(\"configuration.parts.notVisualized\")}\r\n
\r\n )}\r\n
{selectedPart.CategoryName}
\r\n
\r\n
\r\n \r\n {/* main image */}\r\n
\r\n {/* other images */}\r\n {allImages.length > 1 && (\r\n \r\n {allImages.map((url: string, idx: number) => {\r\n const selected = url === imageUrl ? \"selected\" : \"\";\r\n const partSmallImage: React.CSSProperties = {\r\n backgroundImage: `url(${url})`,\r\n backgroundSize: \"contain\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"50% 50%\",\r\n width: \"100%\",\r\n backgroundColor: \"#fff\",\r\n border: applicationSettings.Brand === \"HQV\" ? \"1px solid #f2f2f2\" : \"\",\r\n };\r\n return (\r\n
setImageUrl(url)} className={`other-dialog-image-wrapper ${selected}`}>\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n

{selectedPart.Name}

\r\n
\r\n Ref: {selectedPart.PartId}\r\n
\r\n
\r\n
\r\n
\r\n
{formatter.currency(selectedPart.Price)}
\r\n
\r\n
\r\n Ref: {selectedPart.PartId}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {allImages.length > 1 && (\r\n \r\n {allImages.map((url: string, idx: number) => {\r\n const selected = url === imageUrl ? \"selected\" : \"\";\r\n const partSmallImage: React.CSSProperties = {\r\n backgroundImage: `url(${url})`,\r\n backgroundSize: \"contain\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"50% 50%\",\r\n width: \"100%\",\r\n backgroundColor: \"#fff\",\r\n border: applicationSettings.Brand === \"HQV\" ? \"1px solid #f2f2f2\" : \"\",\r\n };\r\n return (\r\n
setImageUrl(url)} className={`other-dialog-image-wrapper ${selected}`}>\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n )}\r\n\r\n
\r\n
{renderAttributes()}
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default withNamespaces()(PartDetailDialog);\r\n","export enum TransitionState {\r\n\tEnter = 'Enter',\r\n\tExit = 'Exit',\r\n\tNone = 'None',\r\n}\r\n","import React, { useEffect } from 'react'\r\nimport Grid from '@material-ui/core/Grid';\r\nimport { withNamespaces, WithNamespaces } from 'react-i18next';\r\nimport VehicleSummary from './VehicleSummary';\r\nimport VehicleImage from './VehicleImage';\r\nimport { Location } from 'history';\r\nimport { mapStateToProps, mapDispatchToProps, StateManagementProps } from '../../utils/addReduxProps';\r\nimport { connect } from 'react-redux';\r\nimport PartDetailDialog from '../parts/PartDetailDialog';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { updateConfiguration, UpdateConfigurationPayload } from '../../services/http/real';\r\n\r\nexport interface VehicleOverviewProps {\r\n location: Location;\r\n showDescription: boolean;\r\n variationCode: string;\r\n updateBATLink: (newLink: string|undefined) => void;\r\n financeAvailable: boolean;\r\n};\r\n\r\nexport interface ShowAllPrices {\r\n\tshowAllPrices: boolean;\r\n}\r\n\r\nexport type VehicleOverviewAllProps = VehicleOverviewProps & ShowAllPrices & WithNamespaces & StateManagementProps & RouteComponentProps;\r\n\r\nexport const VehicleOverview: React.FunctionComponent =\r\n (props) => {\r\n\r\n const {\r\n t,\r\n selectedModel,\r\n views: { showPartDetail },\r\n location: { pathname },\r\n models,\r\n toggleSummary,\r\n togglePartDetail,\r\n deselectPart,\r\n showDescription,\r\n variationCode,\r\n updateBATLink,\r\n currentVariation,\r\n setVehicleVariation,\r\n preselectedVariationCode,\r\n overview:{Variations},\r\n financeAvailable\r\n } = props;\r\n\r\n const [changeRenderedPicture, setChangeRenderedPicture] = React.useState(false);\r\n\r\n const resetRenderedPictureChange = () => {\r\n setChangeRenderedPicture(false);\r\n }\r\n\r\n useEffect(() => {\r\n if(preselectedVariationCode.code !== \"\") {\r\n Variations.forEach(Variation => {\r\n if(Variation.Code === preselectedVariationCode.code) {\r\n changeBikeColor(Variation.Code, Variation.ColorCode);\r\n }\r\n });\r\n }\r\n }, []);\r\n\r\n if (!selectedModel) {\r\n //@todo return page not found\r\n return null;\r\n }\r\n \r\n const changeBikeColor = (Code:string, ColorCode:string) => {\r\n const data: UpdateConfigurationPayload = {\r\n ColorCode: ColorCode,\r\n VariationCode: Code\r\n }\r\n setVehicleVariation(Code);\r\n updateConfiguration(data).then(() => {\r\n setChangeRenderedPicture(true);\r\n });\r\n updateBATLink(Code);\r\n }\r\n\r\n return (\r\n \r\n {/* summary section */}\r\n \r\n {!showPartDetail && \r\n {/* REVERT BUTTON'S DISABLED PROP WHEN SETUPS BECOME ACTIVE */}\r\n {/* disabled={!appliedSetup} */}\r\n \r\n }\r\n \r\n\r\n {/* central component section */}\r\n \r\n \r\n {showPartDetail ? (\r\n {\r\n togglePartDetail(false);\r\n deselectPart();\r\n document.body.classList.remove(\"lock-scroll\");\r\n }}\r\n {...props}\r\n >\r\n ) : <>}\r\n \r\n \r\n );\r\n }\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withNamespaces()(VehicleOverview));\r\n","import React from 'react';\r\nexport const CategoryName: React.FunctionComponent<{ text: string }> = ({ text }) => {\r\n\treturn !text.includes('/') ? <>{text} : <>{text.replace(/\\//g, ' / ')}\r\n}\r\n\r\nexport default CategoryName;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { MinusIconProps } from \"./minus\";\r\n\r\nconst MinusKTM: React.FunctionComponent = props => {\r\n return (\r\n \r\n Minus Icon\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MinusKTM;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { MinusIconProps } from \"./minus\";\r\n\r\nconst MinusHQV: React.FunctionComponent = props => {\r\n return (\r\n \r\n Minus Icon\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MinusHQV;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { MinusIconProps } from \"./minus\";\r\n\r\nconst MinusGG: React.FunctionComponent = props => {\r\n return (\r\n \r\n Minus Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default MinusGG;\r\n","import React from \"react\";\r\nimport MinusKTM from \"./minus_ktm\";\r\nimport MinusHQV from \"./minus_hqv\";\r\nimport MinusGG from \"./minus_gg\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\n\r\nexport interface MinusIconProps {\r\n identifyer: string;\r\n is3D?: boolean;\r\n}\r\n\r\nconst Minus: React.FunctionComponent = props => {\r\n const brand = props.applicationSettings.Brand;\r\n return (\r\n <>\r\n {brand === \"KTM\" && }\r\n {brand === \"HQV\" && }\r\n {brand === \"GG\" && }\r\n \r\n );\r\n};\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Minus);\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { PlusIconProps } from \"./plus\";\r\n\r\nconst PlusKTM: React.FunctionComponent = props => {\r\n return (\r\n \r\n Plus Icon\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PlusKTM;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { PlusIconProps } from \"./plus\";\r\n\r\nconst PlusHQV: React.FunctionComponent = props => {\r\n return (\r\n \r\n Plus Icon\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PlusHQV;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { PlusIconProps } from \"./plus\";\r\n\r\nconst PlusGG: React.FunctionComponent = props => {\r\n return (\r\n \r\n Plus Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default PlusGG;\r\n","import React from \"react\";\r\nimport PlusKTM from \"./plus_ktm\";\r\nimport PlusHQV from \"./plus_hqv\";\r\nimport PlusGG from \"./plus_gg\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\n\r\nexport interface PlusIconProps {\r\n identifyer: string;\r\n}\r\n\r\nconst Plus: React.FunctionComponent = props => {\r\n const brand = props.applicationSettings.Brand;\r\n return (\r\n <>\r\n {brand === \"KTM\" && }\r\n {brand === \"HQV\" && }\r\n {brand === \"GG\" && }\r\n \r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Plus);\r\n","import React from \"react\";\r\nimport { Part } from \"./PartsList\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport format from \"../../utils/formatter\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport NoPartPreviewIcon from \"@material-ui/icons/VisibilityOffOutlined\";\r\nimport Minus from \"../../assets/icons/minus\";\r\nimport Plus from \"../../assets/icons/plus\";\r\nimport { getCulture } from \"../../utils/helpers\";\r\nimport { togglePart } from \"../../utils/partsHelpers\";\r\nimport Minus3D from \"../../assets/icons/minus3D\";\r\nimport Plus3D from \"../../assets/icons/plus3D\";\r\n\r\nexport interface PartProps {\r\n part: Part;\r\n fade: boolean;\r\n isIncluded: boolean;\r\n showDialog: (part: Part) => void;\r\n selectedFromSummary: boolean;\r\n itemClicked?: () => void;\r\n showDetails?: () => void;\r\n resetSubMenuState?: () => void;\r\n appliedParts: Part[];\r\n is3D: boolean | undefined;\r\n}\r\n\r\nexport const PartItem: React.FunctionComponent = (props) => {\r\n const {\r\n part,\r\n part: { CanBeRendered, Racing, PartId },\r\n t,\r\n fade,\r\n isIncluded,\r\n showDialog,\r\n selectedFromSummary: selected,\r\n resetSubMenuState,\r\n is3D,\r\n showDetails,\r\n itemClicked,\r\n appliedParts,\r\n } = props;\r\n\r\n const faded = fade ? \"faded\" : \"\";\r\n const partImageStyle: React.CSSProperties = {\r\n background: `url(${part.Images.Main})`,\r\n backgroundSize: \"contain\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"50% 50%\",\r\n backgroundColor: \"#fff\",\r\n };\r\n\r\n const onClick = () => {\r\n if (showDetails) showDetails();\r\n showDialog.bind(null, part)();\r\n if (itemClicked) itemClicked();\r\n document.body.classList.add(\"lock-scroll\");\r\n if (resetSubMenuState !== undefined) {\r\n resetSubMenuState();\r\n }\r\n };\r\n\r\n const addOrRemovePart = () => {\r\n togglePart(part, appliedParts);\r\n };\r\n\r\n if (is3D) {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
Ref: {part.PartId}
\r\n
{part.Name}
\r\n
{format.currency(part.Price)}{!CanBeRendered && }
\r\n
\r\n
\r\n
Ref: {part.PartId}
\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n {!CanBeRendered && }\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n \r\n {/* LEFT: PART IMAGE */}\r\n \r\n
\r\n
\r\n {/* RIGHT: PART DETAIL */}\r\n \r\n \r\n

{part.Name}

\r\n\r\n \r\n
{format.currency(part.Price)}
\r\n {!CanBeRendered && }\r\n
\r\n \r\n
\r\n {Racing && (\r\n \r\n {t(\"configuration.summary.ece\")}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default withNamespaces()(PartItem);\r\n","import React, { useEffect } from \"react\";\r\nimport Part, { PartProps } from \"./Part\";\r\nimport { connect } from \"react-redux\";\r\nimport { mapStateToProps, StateManagementProps, mapDispatchToProps } from \"../../utils/addReduxProps\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\nimport { sortAscendingByProperty } from \"../../utils/helpers\";\r\nimport { addNonConflictingPart, removeNonConflictingPart } from \"../../utils/partsHelpers\";\r\nimport { FullImage } from \"../configuration/ConfigurationView\";\r\nimport { WithNamespaces, withNamespaces } from \"react-i18next\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { TransitionState } from \"../../enums/transitionStates\";\r\nimport { TransititionStateValue } from \"../../App\";\r\nimport { distinctUntilChanged, filter } from \"rxjs/operators\";\r\nimport { Price } from \"../../models/vehicle\";\r\n\r\nexport interface Part {\r\n PartId: string;\r\n Name: string;\r\n Price: Price;\r\n Racing: boolean;\r\n Description: string;\r\n Images: PartImages;\r\n CategoryName: string;\r\n ApprovalInfo: string;\r\n CanBeRendered: boolean;\r\n IsColorPart?: boolean; // XBOW color parts - removes add/remove button in OverviewMenu -> DropUp\r\n Attributes?: Attribute[];\r\n}\r\n\r\nexport interface Attribute {\r\n Key: string;\r\n ClassificationCategory: string;\r\n Description: string;\r\n Values: AttributeValues[];\r\n}\r\n\r\nexport interface AttributeValues {\r\n Key: string;\r\n Description: string;\r\n}\r\n\r\n// final don't touch\r\nexport interface TogglePartResponse {\r\n Price: Price;\r\n PartIds: string[];\r\n FullImages: FullImage[];\r\n RulesResult: RulesResultRepsonse;\r\n}\r\n\r\nexport interface RulesResultRepsonse {\r\n ChoosePart: boolean;\r\n}\r\n\r\nexport interface PartImages {\r\n Main: string;\r\n Other: string[];\r\n}\r\n\r\nexport enum PartAction {\r\n Apply = \"Apply\",\r\n Remove = \"Remove\",\r\n}\r\n\r\nexport interface PartListProps {\r\n currentCategoryId: number;\r\n itemClicked?: () => void;\r\n showDetails?: () => void;\r\n resetSubMenuState?: () => void;\r\n is3D?: boolean | undefined;\r\n updateRenderingCommands?: (renderingCommandList) => void;\r\n}\r\n\r\nexport type PartListAllProps = PartListProps & RouteComponentProps & StateManagementProps & WithNamespaces;\r\n\r\nexport interface PartListState {}\r\n\r\nexport const PartList: React.FunctionComponent = props => {\r\n const { currentCategoryId, is3D } = props;\r\n let sub: Subscription | undefined = undefined;\r\n\r\n useEffect(() => {\r\n if (props.location.hash) {\r\n sub = TransititionStateValue.pipe(\r\n distinctUntilChanged(),\r\n filter((item: TransitionState) => item === TransitionState.Exit)\r\n ).subscribe(() => {\r\n setTimeout(() => {\r\n // @todo find better solution (investigate why refs not working ok) ??\r\n const el = document.getElementById(props.location.hash.substring(1));\r\n if (el) {\r\n el.scrollIntoView();\r\n }\r\n });\r\n });\r\n }\r\n return () => {\r\n sub && sub.unsubscribe();\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (props.configurationState.noConflictingParts.PartId !== \"\" && !props.configurationState.noConflictingParts.DryRun) {\r\n addNonConflictingPart(props.configurationState.noConflictingParts);\r\n }\r\n }, [props.configurationState.noConflictingParts]);\r\n\r\n useEffect(() => {\r\n if (props.configurationState.removeNoConflictingParts.PartId !== \"\" && !props.configurationState.removeNoConflictingParts.DryRun) {\r\n removeNonConflictingPart(props.configurationState.removeNoConflictingParts);\r\n }\r\n }, [props.configurationState.removeNoConflictingParts]);\r\n\r\n const showDialog = (part: Part) => {\r\n props.selectPart(part);\r\n props.togglePartDetail(true);\r\n };\r\n\r\n const {\r\n parts,\r\n selectedPart,\r\n appliedParts,\r\n categories,\r\n location: { hash },\r\n } = props;\r\n const categoryName = categories[+currentCategoryId];\r\n const categoryParts = parts.filter((part: Part) => part.CategoryName === categoryName);\r\n\r\n if (!categoryParts) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {categoryParts.sort(sortAscendingByProperty>(\"Name\")).map((part: Part, index: number) => {\r\n let _props: PartProps = {\r\n isIncluded: appliedParts.findIndex(entry => entry.PartId === part.PartId) !== -1,\r\n part: part,\r\n selectedFromSummary: false,\r\n showDialog: showDialog,\r\n fade: \"PartId\" in selectedPart && !Object.is(part, selectedPart),\r\n itemClicked: props.itemClicked,\r\n showDetails: props.showDetails,\r\n resetSubMenuState: props.resetSubMenuState,\r\n appliedParts: props.appliedParts,\r\n is3D: props.is3D,\r\n };\r\n if (hash && part.PartId === hash.substring(1)) {\r\n _props = {\r\n ..._props,\r\n selectedFromSummary: true,\r\n };\r\n }\r\n return ;\r\n })}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default withNamespaces()(connect(mapStateToProps, mapDispatchToProps)(PartList));\r\n","import React, { useState } from \"react\";\r\nimport ListItemText from \"@material-ui/core/ListItemText\";\r\nimport { Theme } from \"@material-ui/core/styles\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\nimport CategoryName from \"../shared/CategoryName\";\r\nimport Collapse from \"@material-ui/core/Collapse\";\r\nimport Parts from \"../parts/PartsList\";\r\nimport Arrow from \"../../assets/icons/arrow\";\r\nimport { connect } from \"react-redux\";\r\nimport { mapDispatchToProps, mapStateToProps } from \"../../utils/addReduxProps\";\r\nimport Minus3D from \"../../assets/icons/minus3D\";\r\nimport Plus3D from \"../../assets/icons/plus3D\";\r\n\r\nexport interface CategoryListProps {\r\n categories: string[];\r\n itemClicked?: () => void;\r\n showDetails?: () => void;\r\n setScrollPosition?: () => void;\r\n setSubMenuState?: (open: boolean) => void;\r\n resetSubMenuState?: () => void;\r\n is3DMode?: boolean;\r\n renderingCommands?: string[] | null;\r\n updateRenderingCommands?: (renderingCommandList) => void;\r\n}\r\n\r\nexport type CategoryListAllProps = CategoryListProps & RouteComponentProps;\r\n\r\nexport const CategoryListComponent: React.FunctionComponent = props => {\r\n const { categories, setSubMenuState, resetSubMenuState, is3DMode } = props;\r\n\r\n //Index is string, to reset index state to \"\" because 0 is first category\r\n const [selectedIndex, setSelectedIndex] = useState(\"\");\r\n\r\n function handleClick(currentIndex: string) {\r\n if (selectedIndex === currentIndex) {\r\n setSelectedIndex(\"\");\r\n if (setSubMenuState) {\r\n setSubMenuState(false);\r\n }\r\n } else {\r\n setSelectedIndex(currentIndex);\r\n if (setSubMenuState) {\r\n setSubMenuState(true);\r\n }\r\n }\r\n }\r\n\r\n if (!categories.length) {\r\n return null;\r\n }\r\n\r\n if (is3DMode) {\r\n return (\r\n <>\r\n {categories.map((category: string, index: number) => {\r\n let currentIndex = index.toString();\r\n let activeCategory = currentIndex === selectedIndex;\r\n return (\r\n
\r\n {\r\n handleClick(currentIndex);\r\n }}\r\n id={`category-list-item-${index}`}\r\n className={`category-item ${activeCategory ? \"active\" : \"\"} ${selectedIndex === \"\" ? \"not-selected\" : \"hide-not-selected\"}`}\r\n >\r\n
\r\n {category}\r\n {activeCategory ? : }\r\n
\r\n
\r\n
\r\n \r\n <>\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n
    \r\n {categories.map((category: string, index: number) => {\r\n let currentIndex = index.toString();\r\n let activeCategory = currentIndex === selectedIndex;\r\n return (\r\n
    \r\n {\r\n handleClick(currentIndex);\r\n }}\r\n id={`category-list-item-${index}`}\r\n className={`category-item-button ${activeCategory ? \"active\" : \"\"} ${selectedIndex === \"\" ? \"not-selected\" : \"hide-not-selected\"}`}\r\n >\r\n {activeCategory && (\r\n
    \r\n \r\n
    \r\n )}\r\n } />\r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n })}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CategoryListComponent);\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Share: React.FunctionComponent = () => {\r\n return (\r\n \r\n Share Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Share;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Send: React.FunctionComponent = () => {\r\n return (\r\n \r\n Send Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Send;\r\n","import { CircularProgress } from \"@material-ui/core\";\r\nimport React, { useEffect, useLayoutEffect, useState } from \"react\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport PDF from \"../../../assets/icons/pdf\";\r\nimport Share from \"../../../assets/icons/share\";\r\nimport ArrowHead from \"../../../assets/icons/arrowHead\";\r\nimport Arrow from \"../../../assets/icons/arrow\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\n\r\ninterface ConfigurationSummaryHeaderProps extends StateManagementProps, WithNamespaces {\r\n shareConfiguration?: () => void;\r\n downloadPdf?: (ignoreState: boolean) => void;\r\n updatesetShowSummary?: () => void;\r\n loaded: boolean;\r\n}\r\n\r\nexport const ConfigurationSummaryHeader: React.FunctionComponent = props => {\r\n const { t, applicationSettings, shareConfiguration, downloadPdf, toggleSummary, updatesetShowSummary, is3DMode, loaded, setDealerInquirySent, dealerInquirySent, userDidTimeoutInStream } = props;\r\n\r\n const fixedMobileWidth = 1024;\r\n\r\n const [windowInnerWidth, setWindowInnerWidth] = useState(window.innerWidth);\r\n const [isMobile, setIsMobile] = useState(windowInnerWidth < fixedMobileWidth);\r\n\r\n useLayoutEffect(() => setIsMobile(windowInnerWidth < fixedMobileWidth), [windowInnerWidth]);\r\n\r\n useEffect(() => {\r\n const onResize = () => setWindowInnerWidth(window.innerWidth);\r\n window.addEventListener(\"resize\", onResize);\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", onResize);\r\n hideBackArrow(false);\r\n addMarginToFooter(false);\r\n };\r\n }, []);\r\n\r\n function backToConfiguration() {\r\n updatesetShowSummary && updatesetShowSummary();\r\n toggleSummary(false);\r\n setDealerInquirySent(false);\r\n }\r\n\r\n function hideBackArrow(hide: boolean) {\r\n var appBanners = document.getElementsByClassName(\"footer-content-goback-link\");\r\n\r\n for (var i = 0; i < appBanners.length; i++) {\r\n (appBanners[i] as any).style.visibility = hide ? \"hidden\" : \"visible\";\r\n }\r\n }\r\n\r\n function addMarginToFooter(addMargin: boolean) {\r\n const footer = document.querySelector(\"#footer\")\r\n if (footer) {\r\n if (addMargin) {\r\n footer.classList.add(\"summary-footer\");\r\n } else {\r\n footer.classList.remove(\"summary-footer\");\r\n }\r\n }\r\n }\r\n\r\n hideBackArrow(true);\r\n addMarginToFooter(true);\r\n\r\n return (\r\n
\r\n {is3DMode || dealerInquirySent ? (\r\n <>\r\n {!userDidTimeoutInStream && (\r\n {\r\n backToConfiguration();\r\n }}\r\n >\r\n
\r\n {applicationSettings.Brand !== \"HQV\" ? : }\r\n {!isMobile && {t(\"configuration.summary.backLink\")}}\r\n
\r\n
\r\n )}\r\n \r\n ) : (\r\n <>\r\n {\r\n backToConfiguration();\r\n }}\r\n >\r\n
\r\n {applicationSettings.Brand !== \"HQV\" ? : }\r\n {t(\"configuration.summary.backLink\")}\r\n
\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default withNamespaces()(connect(mapStateToProps, mapDispatchToProps)(ConfigurationSummaryHeader));\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Save3DConfig: React.FunctionComponent = () => {\r\n return (\r\n \r\n Save Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Save3DConfig;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport http from \"../../../services/http\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport { ShowDialogProps } from \"../../../redux/actions\";\r\nimport { DialogTypes } from \"../../../enums/dialogTypes\";\r\nimport { AxiosError, AxiosResponse } from \"axios\";\r\nimport { getCulture } from \"../../../utils/helpers\";\r\nimport { ApplicationSettings } from \"../../../redux/reducers/applicationSettings\";\r\nimport Save from \"../../../assets/icons/save_3d_ktm\";\r\nimport { store } from \"../../../redux/store\";\r\n\r\nexport type UserProfile = {\r\n firstName: string;\r\n lastName: string;\r\n country: string;\r\n email: string;\r\n photoURL: string;\r\n thumbnailURL: string;\r\n};\r\n\r\nexport type UserData = {\r\n UID: string;\r\n UIDSignature: string;\r\n profile: UserProfile;\r\n};\r\n\r\nexport type CDCLoginProps = {\r\n onUserLoggedIn?(data: UserData | undefined): void | undefined;\r\n mode: \"saveUserConfigurationCDC\" | \"loadAccountInfo\" | \"configuratorLogin\";\r\n showSaveIcon?: boolean;\r\n onSaveIconClicked?(): void;\r\n onSaveSuccess?(): void;\r\n userProfileChecked?: boolean;\r\n removeTabIndexToMakeCDCWorking?(): void;\r\n mobile?: boolean;\r\n checkUserLogin?: () => void;\r\n isSummary?: boolean;\r\n};\r\n\r\nexport const getScrollableState = () => {\r\n var cdcElement = document.querySelector(\"#cdc-login-container_content\");\r\n var elementContainer = document.querySelector(\"#cdc-login-container\");\r\n var elementHeight = cdcElement ? cdcElement.clientHeight : 0;\r\n var containerHeight = elementContainer ? elementContainer.clientHeight : 0;\r\n return Boolean(containerHeight < elementHeight);\r\n};\r\n\r\nexport type CDCProps = StateManagementProps & WithNamespaces & CDCLoginProps;\r\n\r\nconst CdcLogin: React.FunctionComponent = (props) => {\r\n const {\r\n t,\r\n applicationSettings,\r\n mode,\r\n appliedParts,\r\n showSaveIcon,\r\n setConfigurationId,\r\n onUserLoggedIn,\r\n onSaveIconClicked,\r\n onSaveSuccess,\r\n userProfileChecked,\r\n removeTabIndexToMakeCDCWorking,\r\n mobile,\r\n checkUserLogin,\r\n cdcSettings,\r\n setCdcSettings,\r\n } = props;\r\n\r\n useEffect(() => {\r\n if (!cdcSettings && !showButton) {\r\n setShowButton(true);\r\n }\r\n }, [cdcSettings]);\r\n\r\n var [pluginInitialized, setpluginInitialized] = useState(false);\r\n var [showButton, setShowButton] = useState(false);\r\n var [savedStatus, setSavedStatus] = useState(true);\r\n var [userLoggedIn, setUserLoggedIn] = useState(false);\r\n /** indicator that the component was disposed so that the screenset creation can be aborted */\r\n const [aborted, setAborted] = useState(false);\r\n\r\n const brand = applicationSettings.Brand.toLowerCase();\r\n\r\n useEffect(() => {\r\n const pluginPromise = makeCancelable(loadCDCPluginScript(applicationSettings));\r\n if (!pluginInitialized) {\r\n pluginPromise.promise\r\n .then(() => {\r\n try {\r\n setShowButton(true);\r\n setpluginInitialized(true);\r\n if (mode === \"configuratorLogin\") {\r\n showLogin();\r\n }\r\n if (mode == \"loadAccountInfo\") {\r\n loadAccountInfo();\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n })\r\n .catch((e) => {\r\n setpluginInitialized(false);\r\n setShowButton(false);\r\n });\r\n } else {\r\n setShowButton(true);\r\n if (mode === \"configuratorLogin\") {\r\n showLogin();\r\n }\r\n }\r\n\r\n return () => {\r\n pluginPromise.cancel();\r\n setAborted(true);\r\n (window as any).gigya.accounts.hideScreenSet(brand + \"-in-page\");\r\n };\r\n }, []);\r\n\r\n \r\n const setCDCSettingsFunction=(open:boolean) => {\r\n setCdcSettings(open);\r\n if(!open) {\r\n (window as any).gigya.accounts.hideScreenSet(brand + \"-in-page\");\r\n }\r\n }\r\n\r\n const showLogin = () => {\r\n store.dispatch(setCdcSettings(true));\r\n const lang = getCulture().substr(0, 2);\r\n\r\n setShowButton(false);\r\n\r\n (window as any).gigya.accounts.showScreenSet({\r\n onError: function (err: any) {\r\n console.log(err);\r\n setShowButton(false);\r\n },\r\n onLoad: function () {\r\n setpluginInitialized(true);\r\n },\r\n onHide: function () {\r\n setShowButton(true);\r\n if (mode === \"configuratorLogin\" && checkUserLogin) {\r\n checkUserLogin();\r\n }\r\n setCDCSettingsFunction(false);\r\n },\r\n loaded: function () {\r\n setShowButton(true);\r\n },\r\n onAfterScreenLoad: function () {\r\n },\r\n onBeforeScreenLoad: function (event) {\r\n if (aborted) {\r\n // see gigya documentation\r\n return false;\r\n }\r\n },\r\n onAfterSubmit: function (eventObj) {\r\n if (eventObj.response && eventObj.response.errorCode == 0) {\r\n if (mode == \"saveUserConfigurationCDC\") {\r\n saveUserConfigurationCDC();\r\n } else {\r\n loadAccountInfo();\r\n }\r\n setShowButton(true);\r\n }\r\n },\r\n startScreen: brand + \"-login\",\r\n screenSet: brand + \"-in-page\",\r\n lang: lang,\r\n containerID: \"cdc-login-container\",\r\n });\r\n };\r\n\r\n const saveUserConfigurationCDC = () => {\r\n setShowButton(true);\r\n (window as any).gigya.accounts.getAccountInfo({\r\n callback: function (data: any) {\r\n (window as any).gigya.accounts.getJWT({\r\n callback: function (JWTdata: any) {\r\n setSavedStatus(false);\r\n http\r\n .saveUserConfigurationCDC(data.UID, appliedParts, `Bearer ${JWTdata.id_token}`)\r\n .then((response: AxiosResponse<{ ConfigurationId: number }>) => {\r\n setConfigurationId(response.data.ConfigurationId);\r\n setSavedStatus(true);\r\n showSavedSuccess(true);\r\n onSaveSuccess && onSaveSuccess();\r\n })\r\n .catch((err: AxiosError) => {\r\n // log error if nothing else applies\r\n console.error(\"Error during save user configuration\", err);\r\n showSavedSuccess(false);\r\n });\r\n },\r\n });\r\n },\r\n });\r\n };\r\n\r\n const loadAccountInfo = () => {\r\n setShowButton(true);\r\n const gigya = (window as any).gigya;\r\n gigya &&\r\n gigya.accounts &&\r\n gigya.accounts.getAccountInfo &&\r\n gigya.accounts.getAccountInfo({\r\n callback: function (data: UserData) {\r\n if (data.profile) {\r\n setUserLoggedIn(true);\r\n if (onUserLoggedIn) onUserLoggedIn(data);\r\n } else {\r\n if (onUserLoggedIn) onUserLoggedIn(undefined);\r\n }\r\n },\r\n });\r\n };\r\n\r\n const logOut = () => {\r\n (window as any).gigya.accounts.logout();\r\n setUserLoggedIn(false);\r\n if (onUserLoggedIn) onUserLoggedIn(undefined);\r\n };\r\n\r\n // called when the plug in loaded\r\n const onClickButton = () => {\r\n if (!(pluginInitialized && showButton)) {\r\n return;\r\n }\r\n\r\n if ((window as any).gigya && (window as any).gigya.hasSession) {\r\n (window as any).gigya\r\n .hasSession()\r\n .then(function (sessionExist: any) {\r\n if (sessionExist) {\r\n setShowButton(false);\r\n if (mode == \"saveUserConfigurationCDC\") {\r\n saveUserConfigurationCDC();\r\n } else {\r\n loadAccountInfo();\r\n }\r\n\r\n setShowButton(true);\r\n } else {\r\n showLogin();\r\n }\r\n })\r\n .catch((err: any) => {\r\n console.log(err);\r\n showSavedSuccess(false);\r\n });\r\n } else {\r\n if (mode == \"saveUserConfigurationCDC\") {\r\n showSavedSuccess(false);\r\n }\r\n }\r\n onSaveIconClicked && onSaveIconClicked();\r\n };\r\n\r\n const showSavedSuccess = (success: boolean) => {\r\n const dialogProps: ShowDialogProps = {\r\n title: success ? `${t(\"dialogs.savedConfiguration.title\")}` : `${t(\"dialogs.savedConfiguration.error.title\")}`,\r\n data: { success },\r\n contentType: DialogTypes.savedConfiguration,\r\n };\r\n props.showDialog(dialogProps);\r\n };\r\n\r\n const loadButtonContent = () => {\r\n if (mode === \"saveUserConfigurationCDC\") {\r\n return (\r\n
\r\n {showSaveIcon && showButton && (\r\n
\r\n \r\n \r\n \r\n
\r\n )}\r\n {!showSaveIcon && (\r\n
\r\n
\r\n {!showButton && loading}\r\n {showButton && mode === \"saveUserConfigurationCDC\" && !showSaveIcon && (\r\n \r\n {t(\"buttons.save\")}\r\n \r\n )}\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n } else if (mode === \"loadAccountInfo\") {\r\n return (\r\n
\r\n
\r\n {showButton && !userLoggedIn && (\r\n \r\n {t(\"buttons.login\")}\r\n \r\n )}\r\n\r\n {showButton && userLoggedIn && (\r\n \r\n {t(\"buttons.logout\")}\r\n \r\n )}\r\n
\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n };\r\n\r\n if (aborted) return null;\r\n\r\n return <>{loadButtonContent()};\r\n};\r\n\r\nexport const isReady = (): boolean => {\r\n return (window as any).gigya && (window as any).gigya.isReady;\r\n};\r\n\r\nexport const loadCDCPluginScript = (applicationSettings: ApplicationSettings) => {\r\n const existingScript = document.getElementById(\"cdc\");\r\n\r\n return new Promise((resolve, reject) => {\r\n if (!existingScript) {\r\n let url = applicationSettings.CdcApplicationSettings.Url;\r\n let api = applicationSettings.CdcApplicationSettings.Api;\r\n let script = document.createElement(\"script\");\r\n script.type = \"text/javascript\";\r\n script.charset = \"UTF-8\";\r\n script.setAttribute(\"id\", \"cdc\");\r\n script.onload = () => {\r\n resolve();\r\n };\r\n script.onerror = () => {\r\n reject();\r\n console.error(\"error script not loaded\");\r\n };\r\n\r\n document.head.appendChild(script);\r\n script.src = url + api;\r\n } else {\r\n resolve();\r\n }\r\n });\r\n};\r\n\r\nexport const makeCancelable = (promise: Promise) => {\r\n let hasCanceled_ = false;\r\n\r\n const wrappedPromise = new Promise((resolve, reject) => {\r\n promise.then(\r\n (val) => (hasCanceled_ ? reject({ isCanceled: true }) : resolve(val)),\r\n (error) => (hasCanceled_ ? reject({ isCanceled: true }) : reject(error))\r\n );\r\n });\r\n\r\n return {\r\n promise: wrappedPromise,\r\n cancel() {\r\n hasCanceled_ = true;\r\n },\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CdcLogin);\r\n","import { useEffect, useState } from \"react\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport { StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport React from \"react\";\r\n\r\nexport const TechnicalDetails: React.FunctionComponent = (props: any) => {\r\n\r\n const {\r\n overview,\r\n } = props;\r\n\r\n const [displacementData, setDisplacementData] = useState({\r\n title: \"\",\r\n value: \"\",\r\n unit: \"CM³\"\r\n });\r\n const [dryWeightData, setDryWeightData] = useState({\r\n title: \"\",\r\n value: \"\",\r\n unit: \"KG\"\r\n });\r\n const [powerData, setPowerData] = useState({\r\n title: \"\",\r\n value: \"\",\r\n unit: \"KW\"\r\n });\r\n const [torqueData, setTorqueData] = useState({\r\n title: \"\",\r\n value: \"\",\r\n unit: \"NM\"\r\n });\r\n \r\n const [showTechnicalDetails, setShowTechnicalDetails] = useState(false);\r\n\r\n useEffect(() => {\r\n getTechnicalDetails();\r\n }, [])\r\n\r\n const getTechnicalDetails = () => {\r\n if (overview.Attributes) {\r\n const attributes = overview.Attributes.find(item => item.ProductCode === props.configuration.VariationCode);\r\n if (attributes) {\r\n const displacement = attributes.Attributes.find(item => item.Key === \"DISPLACEMENT\");\r\n if (displacement && displacement.Description !== \"\" && displacement.Values[0].Key !== \"\") {\r\n setDisplacementData({ title: displacement.Description, value: displacement.Values[0].Key, unit: displacementData.unit });\r\n setShowTechnicalDetails(true);\r\n }\r\n const dryWeight = attributes.Attributes.find(item => item.Key === \"DRYWEIGHT\");\r\n if (dryWeight && dryWeight.Description !== \"\" && dryWeight.Values[0].Key !== \"\") {\r\n setDryWeightData({ title: dryWeight.Description, value: dryWeight.Values[0].Key, unit: dryWeightData.unit });\r\n setShowTechnicalDetails(true);\r\n }\r\n const power = attributes.Attributes.find(item => item.Key === \"POWER_KW\");\r\n if (power && power.Description !== \"\" && power.Values[0].Key !== \"\") {\r\n setPowerData({ title: power.Description, value: power.Values[0].Key, unit: powerData.unit });\r\n setShowTechnicalDetails(true);\r\n }\r\n const torque = attributes.Attributes.find(item => item.Key === \"TORQUE\");\r\n if (torque && torque.Description !== \"\" && torque.Values[0].Key !== \"\") {\r\n setTorqueData({ title: torque.Description, value: torque.Values[0].Key, unit: torqueData.unit });\r\n setShowTechnicalDetails(true);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return (
\r\n {displacementData.title !== \"\" &&\r\n
\r\n
{displacementData.title}
\r\n
{displacementData.value} {displacementData.unit}
\r\n
\r\n }\r\n {torqueData.title !== \"\" &&\r\n
\r\n
{torqueData.title}
\r\n
{torqueData.value} {torqueData.unit}
\r\n
\r\n }\r\n {powerData.title !== \"\" &&\r\n
\r\n
{powerData.title}
\r\n
{powerData.value} {powerData.unit}
\r\n
\r\n }\r\n {dryWeightData.title !== \"\" &&\r\n
\r\n
{dryWeightData.title}
\r\n
{dryWeightData.value} {dryWeightData.unit}
\r\n
\r\n }\r\n
);\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { StateManagementProps } from \"../../../utils/addReduxProps\";\r\nimport { translate, WithNamespaces } from \"react-i18next\";\r\nimport formatter from \"../../../utils/formatter\";\r\nimport { CircularProgress, Grid } from \"@material-ui/core\";\r\nimport VehicleImage from \"../../vehicle-overview/VehicleImage\";\r\nimport { Part } from \"../../parts/PartsList\";\r\nimport { RouteComponentProps } from \"react-router\";\r\nimport { Setup } from \"../../setups/SetupsList\";\r\nimport { ShowDialogProps } from \"../../../redux/actions\";\r\nimport { DialogTypes } from \"../../../enums/dialogTypes\";\r\nimport { sendConfigurationToDealer, sortAscendingByProperty, hashCode, handlePDFData, getIsMobile } from \"../../../utils/helpers\";\r\nimport NotVisualizedIcon from \"@material-ui/icons/VisibilityOffOutlined\";\r\nimport PDF from \"../../../assets/icons/pdf\";\r\nimport Wheel from \"../../../assets/icons/wheel\";\r\nimport Share from \"../../../assets/icons/share\";\r\nimport Send from \"../../../assets/icons/send\";\r\nimport http from \"../../../services/http\";\r\nimport ConfigurationSummaryHeader from \"./ConfigurationSummaryHeader\";\r\nimport CdcLogin from \"../cdc/CdcLogin\";\r\nimport { TechnicalDetails } from \"../technicalDetails\";\r\nimport { isTablet } from \"react-device-detect\";\r\n\r\nexport interface TestRideProps {\r\n testRideUrl: string;\r\n testRideStatus: boolean;\r\n}\r\n\r\nexport interface ShowAllPrices {\r\n showAllPrices: boolean;\r\n}\r\n\r\nexport interface Is3DProp {\r\n updatesetShowSummary?: () => void;\r\n onSendToDealerSuccess?: () => void;\r\n onSendSuccess?: () => void;\r\n onShareLinkSuccess?: () => void;\r\n isPortraitMode?: boolean;\r\n}\r\n\r\nexport interface ShareConfigurationResponse {\r\n Url: string;\r\n ConfigurationId: number;\r\n}\r\n\r\nexport interface FullImage {\r\n Perspective: number;\r\n Url: string;\r\n}\r\n\r\nexport interface PriceNotes {\r\n priceNote: string;\r\n montageNote: string | null;\r\n}\r\n\r\nexport type ConfigurationSummaryProps = StateManagementProps & WithNamespaces & TestRideProps & ShowAllPrices & Is3DProp & RouteComponentProps<{ modelId: string }>;\r\n\r\nexport const ConfigurationSummary: React.FunctionComponent = (props) => {\r\n const {\r\n t,\r\n appliedSetup,\r\n appliedParts,\r\n selectedModel,\r\n totalPrice,\r\n models: { ShowPricesInConfigurator: hasPrices },\r\n hideDialog,\r\n showDialog,\r\n applicationSettings,\r\n updatesetShowSummary,\r\n onShareLinkSuccess,\r\n onSendSuccess,\r\n isPortraitMode,\r\n currentVariation,\r\n testRideUrl,\r\n showAllPrices,\r\n models,\r\n testRideStatus,\r\n overview,\r\n configurationState,\r\n } = props;\r\n\r\n const [loaded, setLoaded] = useState(true);\r\n const [isMobile, setIsMobile] = useState(() => getIsMobile());\r\n const [priceNotes, setPriceNotes] = useState(null);\r\n\r\n const componentContainer: HTMLElement | null = document.getElementById(\"componentContainer\");\r\n const maxShownParts = 4;\r\n let scrollContainer: React.CSSProperties = { maxHeight: `auto` };\r\n let deviderHeight: React.CSSProperties = { height: `${isTablet ? \"400px\" : \"150px\"}` };\r\n const noStyle: React.CSSProperties = {};\r\n\r\n if (componentContainer && componentContainer.offsetHeight !== 0) {\r\n scrollContainer = {\r\n maxHeight: `calc(${componentContainer.offsetHeight * maxShownParts}px + 1.3rem)`,\r\n };\r\n }\r\n\r\n const scrollToRef = React.createRef();\r\n\r\n const handleResize = () => {\r\n setIsMobile(getIsMobile);\r\n };\r\n\r\n useEffect(() => {\r\n handleResize();\r\n\r\n if (!priceNotes) {\r\n let item = overview.Variations.find((color) => color.Code === configurationState.currentVariation);\r\n\r\n if (item) {\r\n setPriceNotes({ priceNote: item.PriceNote, montageNote: item.MontageNote });\r\n }\r\n }\r\n\r\n return () => {\r\n hideDialog();\r\n window.addEventListener(\"remove\", handleResize);\r\n };\r\n }, []);\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n\r\n const shareConfiguration = () => {\r\n const dialogProps: ShowDialogProps = {\r\n title: `${t(\"dialogs.shareConfiguration.title\")}`,\r\n data: {},\r\n contentType: DialogTypes.shareConfiguration,\r\n };\r\n showDialog(dialogProps);\r\n onShareLinkSuccess && onShareLinkSuccess();\r\n };\r\n\r\n const sendConfiguration = () => {\r\n const dialogProps: ShowDialogProps = {\r\n title: `${t(\"dialogs.shareConfiguration.title\")}`,\r\n data: { isPortraitMode: isPortraitMode },\r\n contentType: DialogTypes.sendConfiguration,\r\n };\r\n showDialog(dialogProps);\r\n onSendSuccess && onSendSuccess();\r\n };\r\n\r\n const parts: Part[] = appliedParts;\r\n\r\n /**\r\n * This function handles the pdf download for all the summary pages and the summary header\r\n * if the header is used set the ignoreState to true so that the following summary page is not messed up\r\n * TOOD needs more cleanup\r\n */\r\n const downloadPdf = () => {\r\n let partsHash: string = hashCode(selectedModel, currentVariation, parts) as string;\r\n setLoaded(false);\r\n http\r\n .downloadConfigurationSummaryPdf(partsHash)\r\n .then((response) => {\r\n handlePDFData(response);\r\n })\r\n .finally(() => {\r\n setLoaded(true);\r\n });\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n\r\n \r\n \r\n

{t(`configuration.summary.title.${applicationSettings.Brand}`)}

\r\n

{t(\"configuration.summary.description\")}

\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n {selectedModel.Name}\r\n

\r\n
\r\n
\r\n \r\n
\r\n {appliedSetup &&

{(appliedSetup as Setup).Name}

}\r\n\r\n
4 ? \"scrollable\" : \"\"}`} style={parts.length > 4 ? scrollContainer : noStyle}>\r\n {parts.sort(sortAscendingByProperty>(\"Name\")).map((part: Part, index: number) => {\r\n return (\r\n
\r\n
\r\n {part.Name}\r\n \r\n {t(\"configuration.parts.reference\")} \r\n {part.PartId}\r\n \r\n
\r\n
\r\n
\r\n {formatter.currency(part.Price)}\r\n {!part.CanBeRendered && }\r\n
\r\n {part.Racing && {t(\"configuration.summary.ece\")}}\r\n
\r\n
\r\n );\r\n })}\r\n {/*\r\n Mobility Service, do not delete\r\n\r\n
\r\n
\r\n {t('configuration.summary.mobilityService')}\r\n\r\n
\r\n
\r\n
\r\n {t('free')}\r\n
\r\n
\r\n
\r\n */}\r\n
\r\n
\r\n \r\n \r\n {hasPrices && showAllPrices && (\r\n <>\r\n
{t(`configuration.summary.total.${applicationSettings.Brand}`)}
\r\n
{formatter.currency(totalPrice)}
\r\n {priceNotes && (\r\n

\r\n \r\n {priceNotes.montageNote && }\r\n

\r\n )}\r\n \r\n )}\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n {applicationSettings.DealerSearch2DEnabled && models.ShowOfferButton && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {applicationSettings.CdcApplicationSettings.CdcEnabled && }\r\n\r\n {/*props.testRideStatus && (\r\n
\r\n {\r\n window.open(props.testRideUrl, \"_blank\");\r\n }}\r\n >\r\n {t(\"configuration.testride.title\")}\r\n \r\n
\r\n )*/}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n {parts.length !== 0 ?
: null}\r\n\r\n {testRideStatus && (\r\n <>\r\n {\r\n if (scrollToRef && scrollToRef.current) {\r\n scrollToRef.current.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n }}\r\n >\r\n {t(\"configuration.testride.ride\")}\r\n
\r\n\r\n
\r\n\r\n
\r\n

{t(\"configuration.testride.title\")}

\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
{t(\"configuration.testride.title\")}
\r\n
{t(`configuration.testride.text.${applicationSettings.Brand}`)}
\r\n {testRideStatus && (\r\n \r\n {t(\"buttons.book\")}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n )}\r\n\r\n
\r\n
shareConfiguration()}>\r\n \r\n
\r\n\r\n {!loaded && }\r\n\r\n {loaded && (\r\n
downloadPdf()} aria-disabled={loaded ? \"false\" : \"true\"}>\r\n \r\n
\r\n )}\r\n\r\n {testRideStatus && (\r\n \r\n \r\n \r\n )}\r\n\r\n
sendConfiguration()}>\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default translate()(ConfigurationSummary);\r\n","import http from '../../services/http';\r\nimport { AxiosResponse } from 'axios';\r\nimport { VehicleOverviewState, getCategoryInformation } from '../reducers/vehicleOverview';\r\nimport { addPrice, selectSetup, addVehicleOverview } from '../actions';\r\nimport { toastMessage, getVehicleById } from '../../utils/helpers';\r\nimport { Store as appState } from '../reducers';\r\nimport { ThunkDispatch, ThunkAction } from 'redux-thunk';\r\nimport { VehicleInformation, VehicleOverviewResponse } from '../../models/vehicle';\r\n\r\nexport default function getOverview(modelId: string): ThunkAction, appState, {}, any> {\r\n\treturn function (dispatch: ThunkDispatch, getState) {\r\n\t\treturn http.getOverview(modelId).then(\r\n\t\t\t(response: AxiosResponse) => {\r\n\t\t\t\tconst Vehicle = getVehicleById(modelId) as VehicleInformation;\r\n\t\t\t\tconst { Setups: [firstSetup] } = response.data;\r\n\t\t\t\tconst vehicleOverviewData: VehicleOverviewState = {\r\n\t\t\t\t\t...response.data,\r\n\t\t\t\t\tVehicle,\r\n\t\t\t\t\tCategories: getCategoryInformation(response.data.Parts)\r\n\t\t\t\t};\r\n\t\t\t\t// selects hero price (may need rework when setups are applied)\r\n\t\t\t\tconst configurationState=getState();\r\n\t\t\t\tif(configurationState.configurationState.price && configurationState.configurationState.price.Value === 0) {\r\n\t\t\t\t\tdispatch(addPrice(Vehicle.Hero.Price));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// only marks setup as selected, user has to choose and confirm\r\n\t\t\t\tdispatch(selectSetup(firstSetup));\r\n\r\n\t\t\t\t//populates vehicle overview part of the state\r\n\t\t\t\tdispatch(addVehicleOverview(vehicleOverviewData));\r\n\t\t\t},\r\n\t\t\t(reason: any) => {\r\n\t\t\t\ttoastMessage('A server error occured.')\r\n\t\t\t\tconsole.error(\"A http error occured.\", reason);\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n}\r\n","import { StreamingService } from '@monkeyway/streaming-lib/dist/streaming/streaming';\r\nimport { StreamInfo } from '@monkeyway/streaming-lib/dist/types/stream-info';\r\nimport { StreamingControlService } from '@monkeyway/streaming-control-lib/dist/control';\r\nimport { debug, error, info } from '../../utils/helpers';\r\nimport { ServiceOptions } from '@monkeyway/streaming-lib/dist/types/service-options';\r\nimport { BitrateLimitData } from '@monkeyway/streaming-lib/dist/types/stream-monitoring';\r\nimport * as Commands from './commands';\r\n\r\nexport enum StreamState {\r\n INITIALIZING,\r\n LOAD_BIKE,\r\n LOAD_ENV,\r\n LOAD_BASE,\r\n LOAD_COLORS,\r\n LOAD_PP,\r\n LOAD_VIDEO_SRC,\r\n INIT_DONE,\r\n BROKEN,\r\n ACCEPTING,\r\n BITRATE_DROPPED,\r\n}\r\n\r\nexport const SOCKET = '3DcommunicationSocket';\r\nexport const STREAM_SUBSCRIPTION = 'streamSubscription';\r\nexport const STREAM_SERVICE = 'streamService';\r\nexport const STREAM_CONTROL_SERVICE = 'streamControlService';\r\n\r\nlet streamingService: StreamingService = document[STREAM_SERVICE];\r\nlet streamingControlService: StreamingControlService = document[STREAM_CONTROL_SERVICE];\r\nlet streamSubscription = document[STREAM_SUBSCRIPTION]; //Subscription | null = null;\r\nlet streamInfo: StreamInfo | null = null;\r\nlet socket: WebSocket = document[SOCKET]; //commands socket\r\n\r\nexport const socketMessagesCallbacks: { [key: string]: (message: string) => void } = {};\r\n\r\nlet messageBuffer: string[] = []; //queue for sending messages\r\n\r\n/**\r\n * Send message to the web socket\r\n * @param message\r\n */\r\nexport const sendMessage = (message: string, lighting?: string) => {\r\n return new Promise((resolve) => {\r\n debug('*** sending message: ', message);\r\n let socket: WebSocket = document[SOCKET];\r\n if (socket) {\r\n if (messageBuffer.length === 0) {\r\n socket.send(message);\r\n\r\n debug('*** message sent');\r\n if (lighting) {\r\n socketMessagesCallbacks[Commands.ENVIRONMENT_DONE] = (message: string) => {\r\n if (message.includes(Commands.ENVIRONMENT_DONE)) {\r\n debug('ENV DONE');\r\n delete socketMessagesCallbacks[Commands.ENVIRONMENT_DONE];\r\n debug('extra lighting msg sent');\r\n socket.send(lighting);\r\n }\r\n };\r\n }\r\n } else {\r\n debug('*** message added to buffer, will be send on socket response: ', message);\r\n messageBuffer.push(message); //will be removed on socket response\r\n }\r\n } else {\r\n debug('*** sending command failed, socket is null', message);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Streaming Events\r\n */\r\nconst onConnected = (initializeBike: Function) => {\r\n debug('On connected');\r\n\r\n if (!streamInfo) {\r\n error('Fatal: streamInfo is not defined');\r\n return;\r\n }\r\n\r\n socket = new WebSocket(`wss://${streamInfo.specs.publicDomainName}`);\r\n //add socket to document to prevent closing on rerender\r\n document[SOCKET] = socket;\r\n\r\n socket.onopen = (e) => {\r\n initializeBike(streamInfo);\r\n };\r\n socket.onclose = (e) => {\r\n debug('Socket closed');\r\n };\r\n socket.onmessage = (e) => {\r\n debug('Socket msg: ', e);\r\n onSocketMessageReceived(e);\r\n };\r\n socket.onerror = (e) => {\r\n console.error(e);\r\n };\r\n};\r\n\r\nexport const setBitRateDroppedCallback = (callback: (param: any) => void) => {\r\n bitRateDroppedCallback = callback;\r\n};\r\n\r\nlet bitRateDroppedCallback: (evt: any) => void;\r\n\r\nconst onBitrateDroppedCallCallback = (evt: any) => {\r\n bitRateDroppedCallback && bitRateDroppedCallback(evt);\r\n};\r\n\r\n/**\r\n *\r\n * @param e contains object of engine response. e.data in particular is interesting\r\n */\r\nconst onSocketMessageReceived = (e: MessageEvent) => {\r\n debug('*** engine response received');\r\n let notSendMessage = messageBuffer.shift();\r\n if (notSendMessage) {\r\n debug('*** found unsent message, try sending again');\r\n sendMessage(notSendMessage);\r\n }\r\n\r\n //run all callbacks... TODO: remove them after tests\r\n Object.values(socketMessagesCallbacks).forEach((cb) => cb(e.data));\r\n};\r\n\r\n/**\r\n * Render part in the 3D engine by sending commands over the stream.\r\n * @param commandCategory\r\n * @param commandValue\r\n * @param silent true - cam will focus the part added, false - only the part will be rendered.\r\n * @returns\r\n */\r\nexport const renderParts = (commandCategory: string, commandValue: string, silent: boolean) => {\r\n return new Promise((resolve) => {\r\n let categories: string[] = commandCategory.split(',').map((x) => x.trim());\r\n\r\n const render = (command: string) => {\r\n categories.forEach((category) => sendMessage(`confopt ${category} ${command}`));\r\n resolve();\r\n };\r\n\r\n if (silent) {\r\n return render(commandValue);\r\n }\r\n\r\n sendMessage(`confcam ${categories[0]}`);\r\n\r\n const waiting = 2500; // fallback time to send the command if the engine was too slow to response\r\n const timeout = setTimeout(() => {\r\n info(`Warning: Call render after TIMEOUT ${waiting}.`);\r\n render(commandValue);\r\n }, waiting);\r\n\r\n socketMessagesCallbacks[Commands.CONFCAM_DONE] = (message: string) => {\r\n if (message.includes(Commands.CONFCAM_DONE)) {\r\n clearTimeout(timeout);\r\n debug('CONFCAM DONE');\r\n delete socketMessagesCallbacks[Commands.CONFCAM_DONE];\r\n render(commandValue);\r\n }\r\n };\r\n });\r\n};\r\n\r\n/**\r\n * Controls\r\n */\r\nexport const startStop = (\r\n isStart = true,\r\n initializeBike: Function,\r\n onDisconnected: Function,\r\n soundEnabled: boolean,\r\n streamingOptions: ServiceOptions,\r\n videoDivRef: React.RefObject,\r\n) => {\r\n if (isStart) {\r\n debug('starting...');\r\n streamingService = new StreamingService(streamingOptions);\r\n document[STREAM_SERVICE] = streamingService;\r\n streamingControlService = new StreamingControlService();\r\n document[STREAM_CONTROL_SERVICE] = streamingControlService;\r\n startSession(initializeBike, onDisconnected, soundEnabled, videoDivRef);\r\n } else {\r\n debug('stopping...');\r\n stopSession(onDisconnected);\r\n }\r\n};\r\n\r\nconst startSession = (\r\n initializeBike: Function,\r\n onDisconnected: Function,\r\n soundEnabled: boolean,\r\n videoDivRef: React.RefObject,\r\n) => {\r\n if (streamSubscription) {\r\n debug('Wont start because there is already a subscription.');\r\n return;\r\n }\r\n\r\n const minBitrate = 3000;\r\n\r\n const streamInfo$ = streamingService.start(\r\n {},\r\n {\r\n streamLimits: { minBitrate: minBitrate, maxBitrate: 15000, startBitrate: 5000 },\r\n useAudio: soundEnabled,\r\n cutStreamLimits: {\r\n bitrate: minBitrate,\r\n handler: (evt: any) => {\r\n onBitrateDroppedCallCallback(evt);\r\n return false;\r\n },\r\n },\r\n },\r\n );\r\n\r\n streamSubscription = streamInfo$.subscribe(\r\n (info) => {\r\n if (!info) {\r\n // session ended\r\n onDisconnected();\r\n removeStreamSubscription();\r\n } else if (!streamInfo || streamInfo.stream !== info.stream) {\r\n // session established\r\n\r\n const options = streamingControlService.createOptions(info);\r\n streamingControlService.connect(videoDivRef!.current!, options).subscribe(\r\n (_) => {\r\n streamInfo = info;\r\n onConnected(initializeBike);\r\n },\r\n async (err) => {\r\n console.error(`error connecting to renderer: ${err}`);\r\n streamInfo = info; // TODO\r\n onDisconnected(); //was setFailedToStart(true);\r\n //ask: why us this call here? onConnected();\r\n await stopSession(onDisconnected);\r\n },\r\n );\r\n }\r\n },\r\n async (error) => {\r\n // TODO: handle no available session gracefully (will follow with an updated streaming library)\r\n if (error instanceof Error) {\r\n console.error(error);\r\n } else {\r\n console.error('connection to stream failed');\r\n }\r\n\r\n onDisconnected();\r\n\r\n streamSubscription = null;\r\n document[STREAM_SUBSCRIPTION] = null;\r\n },\r\n );\r\n\r\n document[STREAM_SUBSCRIPTION] = streamSubscription;\r\n};\r\n\r\nexport const stopSession = async (onDisconnected: Function) => {\r\n debug('Stopping...');\r\n\r\n streamingService = document[STREAM_SUBSCRIPTION];\r\n if (streamSubscription) {\r\n removeStreamSubscription();\r\n }\r\n\r\n streamingService = document[STREAM_SERVICE];\r\n if (streamingService) {\r\n debug('Stop streamingService');\r\n await streamingService.stop();\r\n document[STREAM_SERVICE] = null;\r\n streamingService = document[STREAM_SERVICE];\r\n onDisconnected();\r\n }\r\n\r\n streamingControlService.close();\r\n socket = document[SOCKET];\r\n if (socket) {\r\n debug('socket.close');\r\n socket.close();\r\n }\r\n};\r\n\r\nexport const removeStreamSubscription = () => {\r\n debug('Remove streamSubscription');\r\n if (streamSubscription) {\r\n streamSubscription.unsubscribe();\r\n }\r\n streamSubscription = null;\r\n document[STREAM_SUBSCRIPTION] = null;\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from '../../../utils/addReduxProps';\r\nimport { connect } from \"react-redux\";\r\nimport ArrowHead from \"../../../assets/icons/arrowHead\";\r\nimport { getCulture, getMarket } from '../../../utils/helpers';\r\nimport Cookies from 'js-cookie';\r\nimport { WithNamespaces } from 'react-i18next';\r\n\r\nexport type FinanceProps = StateManagementProps & WithNamespaces;\r\n\r\nexport type PluginValues = {\r\n assetId: string;\r\n assetPrice: number;\r\n country: string;\r\n language: string;\r\n showButton: boolean;\r\n assetImage: string;\r\n containerId: string;\r\n}\r\n\r\nconst FinancePlugin:React.FC = (props) => {\r\n\r\n var [variation, setVariation] = useState('');\r\n var [currentPrice, setCurrentPrice] = useState({\r\n value: 0,\r\n currency: \"\"\r\n });\r\n var [monthlyPrice, setMonthlyPrice] = useState(0);\r\n var [pluginInitialized, setpluginInitialized] = useState(false);\r\n var [trackingCookie, setTrackingCookies] = useState(false);\r\n const [PriceNote, setPriceNote] = useState('');\r\n\r\n const scrollToRef = React.createRef();\r\n const translation = props.t;\r\n\r\n useEffect(() => {\r\n const santanderID = props.overview.Finance.FinanceConfiguration.FinanceServiceUrl;\r\n const pluginPromise = makeCancelable(loadFinancePluginScript(santanderID))\r\n if (!pluginInitialized) { \r\n if(santanderID) {\r\n pluginPromise.promise\r\n .then(()=>{\r\n const plugin = (window as any).scfSimulation;\r\n try {\r\n let pluginValues:PluginValues|null = getFinanceValues();\r\n setVariation(props.configuration.VariationCode);\r\n if(props.totalPrice) {\r\n setCurrentPrice({value:props.totalPrice.Value,currency:props.totalPrice.CurrencySymbol});\r\n }\r\n \r\n if(pluginValues && plugin) {\r\n plugin.configure(pluginValues);\r\n plugin.openSimulator();\r\n setpluginInitialized(true);\r\n }\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n });\r\n }\r\n }\r\n \r\n let variation = props.configuration.VariationCode;\r\n\t\tlet item = props.overview.Variations.find(color => color.Code === variation);\r\n\t\tif(item) {\r\n\t\t\tsetPriceNote(item.PriceNote)\r\n\t\t}\r\n\r\n return () => {\r\n const plugin = (window as any).scfSimulation;\r\n pluginPromise.cancel();\r\n \r\n if(plugin) {\r\n plugin.configure(null);\r\n plugin.closeSimulator();\r\n }\r\n removeFinancePlugin();\r\n clearInterval(interval);\r\n setVariation('');\r\n setCurrentPrice({value: 0,currency: \"\"});\r\n setMonthlyPrice(0);\r\n setpluginInitialized(false);\r\n setTrackingCookies(false);\r\n setPriceNote('');\r\n }\r\n },[]);\r\n\r\n const makeCancelable = (promise:Promise) => {\r\n let hasCanceled_ = false;\r\n \r\n const wrappedPromise = new Promise((resolve, reject) => {\r\n promise.then(\r\n val => hasCanceled_ ? reject({isCanceled: true}) : resolve(val),\r\n error => hasCanceled_ ? reject({isCanceled: true}) : reject(error)\r\n );\r\n });\r\n \r\n return {\r\n promise: wrappedPromise,\r\n cancel() {\r\n hasCanceled_ = true;\r\n },\r\n };\r\n };\r\n\r\n const interval = setInterval(()=>{\r\n const plugin = (window as any).scfSimulation;\r\n if (plugin && plugin.selectedSimulation && plugin.selectedSimulation.monthlyPayment.value !== monthlyPrice) {\r\n setMonthlyPrice(plugin.selectedSimulation.monthlyPayment.value);\r\n }\r\n let cookie = Cookies.get('OptanonConsent');\r\n if(cookie && cookie !== \"\") {\r\n let cookiesArray= cookie.split('&');\r\n let cookieGroup = \"\";\r\n for(let i = 0; cookiesArray.length > i; i++) {\r\n if(cookiesArray[i].includes('groups')) {\r\n cookieGroup = cookiesArray[i];\r\n }\r\n if(cookieGroup !== \"\") {\r\n var inclusion = cookieGroup.includes('C0004:1');\r\n if(inclusion !== trackingCookie) {\r\n setTrackingCookies(inclusion);\r\n }\r\n }\r\n }\r\n }\r\n },200);\r\n\r\n const loadFinancePluginScript = (clientID:string) => {\r\n const existingScript = document.getElementById(\"santander\");\r\n \r\n return new Promise((resolve,reject)=> {\r\n if(!existingScript) { \r\n let script = document.createElement(\"script\");\r\n script.type = \"text/javascript\";\r\n script.src = clientID;\r\n script.charset = \"UTF-8\";\r\n script.setAttribute(\"id\", \"santander\");\r\n document.head.appendChild(script);\r\n script.onload = () => {\r\n resolve();\r\n }\r\n script.onerror = () => {\r\n reject();\r\n setpluginInitialized(false);\r\n }\r\n }\r\n else {\r\n resolve();\r\n }\r\n }); \r\n }\r\n\r\n const removeFinancePlugin = () => {\r\n const script = document.querySelector(\"#santander\");\r\n if(script)\r\n document.head.removeChild(script);\r\n }\r\n\r\n const getFinanceValues = () => {\r\n if (props.totalPrice) {\r\n const item = props.overview.Finance.FinanceData.find(item => item.Available && item.Variation === props.configuration.VariationCode);\r\n if (item) {\r\n \r\n return {\r\n assetId: item.Key,\r\n assetPrice: props.totalPrice.Value,\r\n country: getMarket(),\r\n language: getCulture().split('-')[0],\r\n showButton: false,\r\n assetImage: props.selectedModel.Hero.ImageUrl, \r\n model: props.selectedModel.Name,\r\n containerId: \"iframe-zone\",\r\n cookie: 0\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n const changePrice = () => {\r\n if(props.totalPrice) {\r\n (window as any).scfSimulation.configure({assetPrice: props.totalPrice.Value, deposit: 4000});\r\n setCurrentPrice({value: props.totalPrice.Value, currency: currentPrice.currency});\r\n } \r\n }\r\n\r\n useEffect(() => {\r\n if(pluginInitialized && variation !== props.currentVariation && props.currentVariation != \"\") {\r\n const item = props.overview.Finance.FinanceData.find(item => item.Available && item.Variation === props.currentVariation);\r\n setVariation(props.currentVariation);\r\n if(item) {\r\n (window as any).scfSimulation.configure({assetId: item.Key, assetImage:props.selectedModel.Hero.ImageUrl});\r\n }\r\n }\r\n\r\n return () => {\r\n setVariation(\"\");\r\n }\r\n },[props.currentVariation]);\r\n\r\n useEffect(() => {\r\n if(pluginInitialized) {\r\n var i = trackingCookie ? 1 : 0;\r\n (window as any).scfSimulation.configure({cookie: i});\r\n }\r\n \r\n },[trackingCookie, pluginInitialized]);\r\n\r\n useEffect(() => {\r\n if(pluginInitialized && props.totalPrice && props.totalPrice.Value !== currentPrice.value) {\r\n changePrice();\r\n }\r\n },[(props.totalPrice ? props.totalPrice.Value : '')]);\r\n \r\n return (\r\n
\r\n
\r\n \r\n {monthlyPrice !== 0 &&\r\n <>\r\n
{translation('financing.monthlyPrice')}
\r\n
{(Math.round(monthlyPrice * 100) / 100).toFixed(2)} {currentPrice.currency}
\r\n {PriceNote !== \"\" &&\r\n
\r\n
\r\n }\r\n {PriceNote === \"\" &&\r\n
{translation('configuration.summary.priceInfo')}
\r\n }\r\n \r\n } \r\n
{\r\n\t\t\t\t\t\tif (scrollToRef && scrollToRef.current) {\r\n\t\t\t\t\t\t\tscrollToRef.current.scrollIntoView({ behavior: \"smooth\" });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}}>{translation('financing.header')}
\r\n
\r\n
\r\n
\r\n \r\n
What are you waiting for?
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n ); \r\n}\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FinancePlugin);","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst MenuHQV: React.FunctionComponent = () => {\r\n return (\r\n \r\n Menu Icon\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MenuHQV;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst MenuKTM: React.FunctionComponent = () => {\r\n return (\r\n \r\n Menu Icon\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MenuKTM;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport MenuHQV from \"./menu_hqv\";\r\nimport MenuKTM from \"./menu_ktm\";\r\n\r\nconst Menu: React.FunctionComponent = props => {\r\n const brand = props.applicationSettings.Brand;\r\n const ktm = brand === \"KTM\" ? true : false;\r\n return (\r\n <>\r\n {ktm && }\r\n {!ktm && }\r\n \r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Menu);\r\n","export const CONFCAM_DONE = 'confcam done';\r\nexport const UERESET_DONE = \"uereset succ\"; // RESET of Engine has been done\r\nexport const HEROLVL_DONE = \"herolvl done\"; // LOADING of bike has been done\r\nexport const ENVIRONMENT_DONE = \"envilvl done\"; // ENVIRONMENT switch done \r\nexport const INTROGO_COMMAND = \"introgo 1\";\r\nexport const INTROIN_COMMNAD = \"introin 1\";\r\nexport const PORTRMD_COMMAND = \"portrmd \"; \r\nexport const TOUCHMD_COMMAND = \"touchmd \"; ","import { VehicleSettingsPayload, CustomColorConfigurationsPayload, updateConfigurationForUser, ToolsConfigurationPayload, UpdateConfigurationPayload } from \"../../services/http/real\";\r\n\r\n /**\r\n * this method is used to store the user id to the configuration within the database for identification purposes.\r\n * @param props state props\r\n */\r\n export const updateConfiguration = (props, toolsData?: ToolsConfigurationPayload, colorData?: CustomColorConfigurationsPayload) => {\r\n (window as any).gigya && (window as any).gigya.accounts && (window as any).gigya.accounts.getAccountInfo && (window as any).gigya.accounts.getAccountInfo({\r\n callback: (callbackObject) => {\r\n updateConfigurationForUser(\r\n { ColorCode: \"\", VariationCode: props.newVariation ? props.newVariation : props.configuration.VariationCode, VehicleSettings: { ToolsConfiguration: toolsData, CustomColorConfiguration: colorData } as VehicleSettingsPayload } as UpdateConfigurationPayload,\r\n callbackObject.UID\r\n );\r\n },\r\n });\r\n };","import { useEffect, useRef } from \"react\";\r\n\r\nconst useInterval = (callback, delay) => {\r\n const savedCallback = useRef();\r\n\r\n useEffect(() => {\r\n savedCallback.current = callback;\r\n }, [callback]);\r\n\r\n useEffect(() => {\r\n function tick() {\r\n savedCallback.current();\r\n }\r\n if (delay !== null) {\r\n let id = setInterval(tick, delay);\r\n return () => clearInterval(id);\r\n }\r\n }, [delay]);\r\n};\r\n\r\nexport default useInterval;\r\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport { RouteComponentProps } from \"react-router\";\r\nimport { debug } from \"../../../utils/helpers\";\r\nimport { removeStreamSubscription, sendMessage, socketMessagesCallbacks, startStop, stopSession, StreamState, setBitRateDroppedCallback } from \"../../../lib/streaming/core\";\r\nimport { ENVIRONMENT_DONE, HEROLVL_DONE, INTROGO_COMMAND, INTROIN_COMMNAD, PORTRMD_COMMAND, UERESET_DONE, TOUCHMD_COMMAND } from \"../../../lib/streaming/commands\";\r\nimport { ServiceOptions } from \"@monkeyway/streaming-lib/dist/types/service-options\";\r\nimport { StreamInfo } from \"@monkeyway/streaming-lib/dist/types/stream-info\";\r\nimport Arrow from \"../../../assets/icons/arrow\";\r\nimport { updateConfiguration } from \"../updateConfiguration\";\r\nimport { timer, Subscription } from \"rxjs\";\r\nimport { take } from \"rxjs/operators\";\r\nimport useInterval from \"../../../lib/hooks/useInterval\";\r\nimport { config } from \"process\";\r\n\r\nexport interface RenderingProps {\r\n onStreamStateChanged: (streamState: StreamState, event?: any) => void;\r\n setUserInactiveFunction: (inactivity: boolean) => void;\r\n displaySummary: boolean;\r\n}\r\n\r\nconst Rendering3D: React.FunctionComponent = (props) => {\r\n const { t, history, setUserInactiveFunction, setUserDidTimeoutInStream, overview, configurationState, onStreamStateChanged, applicationSettings, displaySummary, dealerInquiryDialogOpen, isXBow } =\r\n props;\r\n\r\n const isDevMode = false; //to enable dev mode\r\n const debugMessagesON = false; //to enable debug messages\r\n\r\n const MAX_INACTIVE_TIME_SECONDS = !isDevMode ? 120 : 20;\r\n const WAIT_TO_PRESS_OK_BUTTON = !isDevMode ? 30 : 10;\r\n\r\n const NO_STREAM_AVAILABLE_WAIT = 20000;\r\n const NO_STREAM_AVAILABLE_TICK_INTERVAL = 1000;\r\n\r\n const fixedMobileWidth = 1024;\r\n\r\n const [windowInnerHeight, setWindowInnerHeight] = useState(window.innerHeight);\r\n const [windowInnerWidth, setWindowInnerWidth] = useState(window.innerWidth);\r\n const [isMobile, setIsMobile] = useState(windowInnerWidth < fixedMobileWidth);\r\n\r\n const landscape = window.matchMedia(\"(orientation: landscape)\");\r\n const [isLandscapeMode, setIsLandscapeMode] = useState(landscape.matches);\r\n landscape.addEventListener(\"change\", function (e) {\r\n if (e.matches) {\r\n setIsLandscapeMode(true);\r\n } else {\r\n setIsLandscapeMode(false);\r\n }\r\n });\r\n\r\n useEffect(() => {\r\n setIsMobile(windowInnerWidth < fixedMobileWidth);\r\n }, [windowInnerHeight, windowInnerWidth]);\r\n\r\n let renderSettings = overview.RenderSettings;\r\n let appSettings = renderSettings!.AppSettings;\r\n\r\n let videoDivRef = useRef(null);\r\n let bike3Ref = useRef(null);\r\n let resetRef = useRef(null);\r\n\r\n const [failedToStart, setFailedToStart] = useState(false);\r\n const [busy, setBusy] = useState(true);\r\n const [bikeRenderingLoaded, setBikeRenderingLoaded] = useState(false);\r\n const [lastUserActivity, setLastUserActivity] = useState(Date.now());\r\n const [userInactive, setUserInactive] = useState(false);\r\n const [inactiveTime, setInactiveTime] = useState(0);\r\n const [showDebugTools, setShowDebugTools] = useState(false);\r\n const [tryAgainDisabled, setTryAgainDisabled] = useState(true);\r\n const [noStreamAvailableTimeLeft, setNoStreamAvailableTimeLeft] = useState(0);\r\n const [listenerForUserInactivityAdded, setListenerForUserInactivityAdded] = useState(false);\r\n\r\n let noStreamAvailableTimer: Subscription;\r\n\r\n const streamingOptions: ServiceOptions = {\r\n baseUrl: appSettings.URL,\r\n appEnvId: appSettings.ENV,\r\n apiKey: appSettings.KEY,\r\n };\r\n\r\n const RESET_COMMAND = renderSettings!.Reset.Command + \" \" + renderSettings!.Reset.Value;\r\n const ENVIRONMENT_LEVEL = isDevMode ? \"envilvl debug\" : renderSettings!.Tools.Environments.Command + \" \" + renderSettings!.Tools.Environments.List[0].Value; // take first environment in list as default;\r\n const DEFAULT_LIGHTING_COMMAND = renderSettings!.Tools.Lighting.CommandInitial + \" \" + renderSettings!.Tools.Lighting.ValueFrom;\r\n const DEFAULT_LIGHTING_SLIDE_TO_COMMAND = renderSettings!.Tools.Lighting.CommandSlider + \" \" + renderSettings!.Tools.Lighting.ValueTo;\r\n\r\n //sound for bike per configuration enabled -\r\n let soundEnabled: boolean = renderSettings!.Sound.Enabled;\r\n\r\n // US Enduro 2023 FIX\r\n const REMAP: any = { F7475X3: \"F7475X3\", F0475X7: \"F0475X7\" };\r\n\r\n /**\r\n * Fetch the bike variation from the configuration state and check if it is part of the remap dictionary. if so use the mapped value - otherwise use\r\n * settings from database\r\n * @returns vehicle loading command\r\n */\r\n const GetHeroLevel = (): string => {\r\n if (configurationState && configurationState && configurationState.configuration.VariationCode && REMAP[configurationState.configuration.VariationCode]) {\r\n const remapped = REMAP[configurationState.configuration.VariationCode];\r\n console.log(\"FORCING VEHICLE REMAP :::\", remapped);\r\n return renderSettings!.Data.Command + \" \" + remapped;\r\n }\r\n else if(configurationState && configurationState && configurationState.configuration.VariationCode && overview.Variations.length > 1) {\r\n return isDevMode ? \"herolvl dummy\" : renderSettings!.Data.Command + \" \" +configurationState.configuration.VariationCode;\r\n }\r\n\r\n return isDevMode ? \"herolvl dummy\" : renderSettings!.Data.Command + \" \" + renderSettings!.Data.Value;\r\n };\r\n\r\n const goBackToMain = () => {\r\n history.push(\"/main\");\r\n };\r\n\r\n /**\r\n * Bike Initialization Procedure\r\n */\r\n const initializeBike = (streamInfo: StreamInfo) => {\r\n const waiting = 30000; // close one\r\n const timeout = setTimeout(() => {\r\n if (debugMessagesON) debug(\"CALL VIA TIMEOUT - FALLBACK\");\r\n loadBike();\r\n }, waiting); // this might load the bike without the env now.\r\n setBusy(true);\r\n\r\n /**\r\n * UE RESET\r\n * LOAD BIKE\r\n * LOAD ENVI\r\n *\r\n * SET LIGHTIN 0\r\n * 2sec\r\n * SHOW STREAM\r\n * SPAWN GO spawngo 1\r\n * SET LIGHTSC 22\r\n * FALLBACK -> x sekunden -> LOAD BIKE ENTRY\r\n */\r\n\r\n // FIRST STEP\r\n if (renderSettings) {\r\n sendMessage(\"ueversn 1\"); // Version Number Response\r\n sendMessage(RESET_COMMAND);\r\n socketMessagesCallbacks[UERESET_DONE] = (message: string) => {\r\n if (message === UERESET_DONE) {\r\n // INTENTIONAL\r\n if (debugMessagesON) debug(\"INIT UERESET DONE\");\r\n sendMessage(\"soundfx 0\");\r\n delete socketMessagesCallbacks[UERESET_DONE];\r\n loadBike();\r\n }\r\n };\r\n }\r\n\r\n // SECOND STEP\r\n const loadBike = () => {\r\n onStreamStateChanged(StreamState.LOAD_BIKE);\r\n sendMessage(GetHeroLevel());\r\n socketMessagesCallbacks[HEROLVL_DONE] = (message: string) => {\r\n if (message === HEROLVL_DONE) {\r\n clearTimeout(timeout);\r\n if (debugMessagesON) debug(\"INIT HEROLVL DONE\");\r\n delete socketMessagesCallbacks[HEROLVL_DONE];\r\n\r\n if (isDevMode) {\r\n setInitialEnvironmentValues();\r\n } else {\r\n loadEnvironment();\r\n }\r\n }\r\n };\r\n };\r\n\r\n const loadEnvironment = () => {\r\n /**\r\n * Load Environment according to load/store or default from constants\r\n */\r\n onStreamStateChanged(StreamState.LOAD_ENV);\r\n if (configurationState.VehicleSettings && configurationState.VehicleSettings.ToolsConfiguration && configurationState.VehicleSettings.ToolsConfiguration.Environments) {\r\n renderRestoredStringCommand(configurationState.VehicleSettings.ToolsConfiguration.Environments);\r\n } else {\r\n sendMessage(ENVIRONMENT_LEVEL);\r\n }\r\n socketMessagesCallbacks[ENVIRONMENT_DONE] = (message: string) => {\r\n if (message === ENVIRONMENT_DONE) {\r\n if (debugMessagesON) debug(\"INIT ENVILVL DONE\");\r\n delete socketMessagesCallbacks[ENVIRONMENT_DONE];\r\n setInitialEnvironmentValues();\r\n }\r\n };\r\n };\r\n\r\n const setInitialEnvironmentValues = () => {\r\n onStreamStateChanged(StreamState.LOAD_BASE);\r\n sendMessage(DEFAULT_LIGHTING_COMMAND);\r\n sendMessage(`${PORTRMD_COMMAND}${+isMobile}`); //TODO determine wether we are on mobile and implement a switch, this is for mobile to rotate the camera\r\n sendMessage(`${TOUCHMD_COMMAND}${+isMobile}`);\r\n sendMessage(INTROIN_COMMNAD);\r\n if (isXBow) {\r\n onStreamStateChanged(StreamState.LOAD_COLORS);\r\n }\r\n\r\n /*** Render Color Settings that were saved previously before video is shown*/\r\n if (configurationState.VehicleSettings && configurationState.VehicleSettings.CustomColorConfiguration) {\r\n Object.values(configurationState.VehicleSettings.CustomColorConfiguration).forEach((elem) => {\r\n renderRestoredStringCommand(elem);\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n bikeInitializationComplete();\r\n }, 3000);\r\n };\r\n\r\n // INIT COMPLETE\r\n const bikeInitializationComplete = () => {\r\n if (videoDivRef && videoDivRef.current && streamInfo) {\r\n onStreamStateChanged(StreamState.LOAD_VIDEO_SRC);\r\n videoDivRef.current.srcObject = streamInfo.stream;\r\n videoDivRef.current.muted = true; // iOS Fix?\r\n videoDivRef.current.play();\r\n }\r\n\r\n showVideo();\r\n showDetails(streamInfo);\r\n setBusy(false);\r\n /**\r\n * Set Lighting\r\n */\r\n if (configurationState.VehicleSettings && configurationState.VehicleSettings.ToolsConfiguration && configurationState.VehicleSettings.ToolsConfiguration.Lighting) {\r\n // TODO make sure to use the lighting props in tools.tsx accordingly to set the frontend slider state. the value probably has to be parsed\r\n renderRestoredStringCommand(configurationState.VehicleSettings.ToolsConfiguration.Lighting);\r\n } else {\r\n sendMessage(DEFAULT_LIGHTING_SLIDE_TO_COMMAND);\r\n }\r\n\r\n sendMessage(INTROGO_COMMAND);\r\n onStreamStateChanged(StreamState.ACCEPTING);\r\n /**\r\n * Send all things that should happen after IntroGo\r\n */\r\n setTimeout(() => {\r\n if (configurationState.VehicleSettings && configurationState.VehicleSettings.ToolsConfiguration && configurationState.VehicleSettings.ToolsConfiguration.Perspectives) {\r\n // TODO make sure to use the lighting props in tools.tsx accordingly to set the frontend slider state. the value probably has to be parsed\r\n renderRestoredStringCommand(configurationState.VehicleSettings.ToolsConfiguration.Perspectives);\r\n }\r\n // restore animations (open hood, doors, etc)\r\n if (configurationState.VehicleSettings && configurationState.VehicleSettings.ToolsConfiguration && configurationState.VehicleSettings.ToolsConfiguration.Animations) {\r\n configurationState.VehicleSettings.ToolsConfiguration.Animations.forEach((x) => {\r\n renderRestoredStringCommand(x);\r\n });\r\n }\r\n }, 2000);\r\n\r\n setBikeRenderingLoaded(true);\r\n if (debugMessagesON) debug(\"INIT COMPLETE\");\r\n onStreamStateChanged(StreamState.INIT_DONE);\r\n setLastUserActivity(Date.now()); // reset activity because it's running in the background although the user is waiting (in case of being in the waiting room)\r\n startInactivityChecks();\r\n setBitRateDroppedCallback(bitRateDropCallback);\r\n };\r\n };\r\n\r\n const bitRateDropCallback = (evt) => {\r\n //console.log(\"DROPPED\");\r\n //console.log(evt);\r\n onStreamStateChanged(StreamState.BITRATE_DROPPED, evt);\r\n };\r\n\r\n useEffect(() => {\r\n sendMessage(`${PORTRMD_COMMAND}${+isMobile}`); //TODO determine wether we are on mobile and implement a switch, this is for mobile to rotate the camera\r\n sendMessage(`${TOUCHMD_COMMAND}${+isMobile}`);\r\n }, [isMobile]);\r\n\r\n const renderRestoredStringCommand = (stringCommand: string) => {\r\n if (stringCommand) {\r\n let commands: string[] = stringCommand.split(\";\");\r\n commands.forEach((command) => sendMessage(command));\r\n }\r\n };\r\n\r\n const onConnecting = () => {\r\n if (debugMessagesON) debug(\"connecting\");\r\n setBusy(true);\r\n onStreamStateChanged(StreamState.INITIALIZING);\r\n };\r\n\r\n const onDisconnected = () => {\r\n if (debugMessagesON) debug(\"disconnected\");\r\n hideVideo();\r\n hideDetails();\r\n setFailedToStart(true);\r\n setBikeRenderingLoaded(false);\r\n\r\n if (debugMessagesON) debug(\"videoDivRef.pause\");\r\n if (videoDivRef && videoDivRef!.current) {\r\n videoDivRef!.current!.pause();\r\n videoDivRef!.current!.srcObject = null;\r\n }\r\n\r\n onStreamStateChanged(StreamState.BROKEN);\r\n };\r\n\r\n const control = (event: any /*MouseEvent*/) => {\r\n let command: string = (event.target as HTMLButtonElement).getAttribute(\"data-command\") as string;\r\n sendMessage(command);\r\n };\r\n\r\n const showDetails = (streamInfo: StreamInfo) => {\r\n if (debugMessagesON) debug(streamInfo!.specs.publicDomainName);\r\n };\r\n\r\n const hideDetails = () => {\r\n if (debugMessagesON) debug(\"hide details\");\r\n };\r\n\r\n const showVideo = () => {\r\n if (videoDivRef && videoDivRef!.current) {\r\n videoDivRef!.current!.style.display = \"block\";\r\n }\r\n };\r\n\r\n const hideVideo = () => {\r\n if (videoDivRef && videoDivRef!.current) {\r\n videoDivRef!.current!.style.display = \"none\";\r\n }\r\n };\r\n\r\n /**\r\n * Start this hot mess\r\n */\r\n useEffect(() => {\r\n setFailedToStart(false);\r\n removeStreamSubscription();\r\n setTimeout(() => {\r\n // Tries start 3d Rendering when backend rendering settings available\r\n if (debugMessagesON) debug(\"WARNING: THIS LINE SHALL BE SHOWN ONLY ONCE. OTHERWISE SEEMS THE COMPONENT IS RENDERED MULTIPLE TIMES. THIS IS A PROBLEM!\");\r\n\r\n updateConfiguration(props);\r\n tryStart();\r\n }, 1000);\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", onResize);\r\n if (debugMessagesON) debug(\"Unmount: Anything in here is fired on component unmount.\");\r\n sendCommand();\r\n stopSession(onDisconnected);\r\n noStreamAvailableTimer && noStreamAvailableTimer.unsubscribe && noStreamAvailableTimer.unsubscribe();\r\n };\r\n }, []);\r\n\r\n useCallback(() => {\r\n if (bikeRenderingLoaded) {\r\n setInactiveTime(0);\r\n onVideoMouseMove();\r\n setUserDidTimeoutInStream(false);\r\n }\r\n }, [bikeRenderingLoaded]);\r\n\r\n const onResize = () => {\r\n setWindowInnerHeight(window.innerHeight);\r\n setWindowInnerWidth(window.innerWidth);\r\n };\r\n\r\n window.addEventListener(\"resize\", onResize);\r\n\r\n const tryStart = () => {\r\n if (renderSettings) {\r\n if (debugMessagesON) debug(\"Start Rendering for:\", renderSettings.Data);\r\n setFailedToStart(false);\r\n onConnecting();\r\n startStop(true, initializeBike, onDisconnected, soundEnabled, streamingOptions, videoDivRef);\r\n } else {\r\n if (debugMessagesON) debug(\"Missing rendering settings!\", null);\r\n }\r\n };\r\n\r\n const sendCommand = () => {\r\n let el: HTMLInputElement | null = document.getElementById(\"addCommand\") as HTMLInputElement;\r\n if (el && el.value) {\r\n sendMessage(el.value);\r\n }\r\n };\r\n\r\n const onVideoLoaded = () => {\r\n if (debugMessagesON) debug(\"onVideoLoaded called\");\r\n };\r\n\r\n const onVideoMouseMove = () => {\r\n if (debugMessagesON) debug(\"onVideoMouseMove called\");\r\n setLastUserActivity(Date.now());\r\n setInactiveTime(0);\r\n setUserInactive(false);\r\n setUserInactiveFunction(false);\r\n };\r\n\r\n useInterval(() => {\r\n //THIS HANDLES THE TIMEOUT\r\n if (!lastUserActivity) {\r\n onVideoMouseMove();\r\n }\r\n\r\n const inactiveForSeconds = Math.round((Date.now() - lastUserActivity) / 1000);\r\n setInactiveTime(inactiveForSeconds);\r\n\r\n if (inactiveForSeconds > MAX_INACTIVE_TIME_SECONDS) {\r\n setUserInactive(true);\r\n setUserInactiveFunction(true);\r\n }\r\n\r\n if (inactiveForSeconds > MAX_INACTIVE_TIME_SECONDS + WAIT_TO_PRESS_OK_BUTTON) {\r\n stopSession(onDisconnected);\r\n setUserDidTimeoutInStream(true);\r\n }\r\n }, 1000);\r\n\r\n const startInactivityChecks = () => {\r\n addEventListenerForUserInactivity();\r\n };\r\n\r\n const addEventListenerForUserInactivity = () => {\r\n //add listener to the cats browsing for user inactivity\r\n if (listenerForUserInactivityAdded) {\r\n return;\r\n }\r\n var catsContainer = document.getElementsByClassName(\"category-container\");\r\n if (catsContainer.length > 0) {\r\n if (debugMessagesON) debug(\"Add event listeners for user inactivity\", null);\r\n catsContainer[0].removeEventListener(\"mousemove\", onVideoMouseMove);\r\n catsContainer[0].removeEventListener(\"touchstart\", onVideoMouseMove);\r\n catsContainer[0].addEventListener(\"mousemove\", onVideoMouseMove);\r\n catsContainer[0].addEventListener(\"touchstart\", onVideoMouseMove);\r\n setListenerForUserInactivityAdded(true);\r\n }\r\n };\r\n\r\n /**\r\n * This part handles user inactivity\r\n */\r\n const confirmActive = () => {\r\n setInactiveTime(0);\r\n setUserInactive(false);\r\n setUserInactiveFunction(false);\r\n setLastUserActivity(Date.now());\r\n onVideoMouseMove();\r\n if (failedToStart) {\r\n tryStart(); //try to start again\r\n }\r\n };\r\n\r\n /**\r\n * This part handles no streams available in the waiting room.\r\n */\r\n const noStreamAvailableRetryClick = useCallback(() => {\r\n setTryAgainDisabled(true);\r\n tryStart();\r\n }, [tryAgainDisabled]);\r\n\r\n useEffect(() => {\r\n if (failedToStart && !userInactive && tryAgainDisabled) {\r\n const countdown = timer(0, NO_STREAM_AVAILABLE_TICK_INTERVAL).pipe(take(NO_STREAM_AVAILABLE_WAIT / NO_STREAM_AVAILABLE_TICK_INTERVAL + 1));\r\n noStreamAvailableTimer = countdown.subscribe({\r\n next: (val) => {\r\n setNoStreamAvailableTimeLeft(NO_STREAM_AVAILABLE_WAIT / NO_STREAM_AVAILABLE_TICK_INTERVAL - val);\r\n },\r\n error: (err) => {\r\n setTryAgainDisabled(false);\r\n },\r\n complete: () => {\r\n setTryAgainDisabled(false);\r\n },\r\n });\r\n }\r\n }, [failedToStart, userInactive, tryAgainDisabled]);\r\n\r\n return (\r\n <>\r\n {isLandscapeMode &&\r\n isMobile &&\r\n !busy && ( //Hint for mobile users to turn to landscape mode\r\n
\r\n {t(\"rendering3d.useLandscape\")}\r\n
\r\n \"turn\r\n
\r\n
\r\n \r\n \r\n \r\n {t(\"navigation.goBack\")}\r\n
\r\n
\r\n )}\r\n\r\n {failedToStart &&\r\n !userInactive && ( //Hint for failed to start\r\n
\r\n

{t(\"rendering3d.engineBusy\")}

\r\n {noStreamAvailableTimeLeft > 0 && (\r\n

\r\n {`${noStreamAvailableTimeLeft}s`}\r\n

\r\n )}\r\n \r\n
\r\n \r\n \r\n \r\n {t(\"navigation.goBack\")}\r\n
\r\n
\r\n )}\r\n\r\n {userInactive &&\r\n bikeRenderingLoaded &&\r\n !displaySummary &&\r\n !dealerInquiryDialogOpen && ( //Hint for user inactivity\r\n
\r\n

{t(\"rendering3d.inactiveTooLong\")}

\r\n

\r\n {t(\"rendering3d.inactiveTime\").replace(\"{inactiveTime}\", \"\" + inactiveTime)}\r\n
\r\n {t(\"rendering3d.inactiveConfirm\")}\r\n

\r\n\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n {t(\"navigation.goBack\")}\r\n
\r\n
\r\n )}\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n {applicationSettings.Show3DDebugTools && (\r\n
\r\n {\r\n setShowDebugTools(!showDebugTools);\r\n }}\r\n >\r\n D\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n )}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Rendering3D);\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst AddCustomColorIcon: React.FunctionComponent = () => {\r\n return (\r\n \r\n Add custom color\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AddCustomColorIcon;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { HueSlider, SaturationSlider, LightnessSlider } from \"react-slider-color-picker\";\r\nimport { ColorOption } from \"../../../models/vehicle\";\r\nimport { hslToHex, setHexToHSLA } from \"../../../utils/helpers\";\r\n\r\nexport interface ColorSliderProps {\r\n selectedColor: ColorOption;\r\n setSelectedColor: (color: ColorOption) => void;\r\n isMobile: boolean;\r\n}\r\n\r\ninterface HSLAColor {\r\n h: number;\r\n s: number;\r\n l: number;\r\n a: number;\r\n}\r\n\r\nconst HSLAColorSlider: React.FunctionComponent = props => {\r\n const { selectedColor, setSelectedColor, isMobile } = props;\r\n\r\n const convertHexToHSLA = (hex: string): HSLAColor => setHexToHSLA(hex);\r\n const convertHSLAToHex = (hsl: HSLAColor): string => hslToHex(hsl.h, hsl.s, hsl.l);\r\n\r\n const [sliderColor, setSliderColor] = useState(convertHexToHSLA(selectedColor.FrontendColorCode));\r\n\r\n useEffect(() => {\r\n setSliderColor(convertHexToHSLA(selectedColor.FrontendColorCode));\r\n }, [selectedColor]);\r\n\r\n const handleHSLASliderColorChange = (newColor: HSLAColor) => {\r\n setSliderColor(newColor);\r\n\r\n const newColorObj: ColorOption = {\r\n ColorName: selectedColor.ColorName,\r\n FrontendColorCode: convertHSLAToHex(newColor),\r\n RenderColorCode: selectedColor.RenderColorCode,\r\n IsMatte: selectedColor.IsMatte,\r\n };\r\n setSelectedColor(newColorObj);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default HSLAColorSlider;\r\n","import React from \"react\";\r\n\r\nexport interface xBowColorFinishSelectorProps {\r\n updateColorFinish: () => void;\r\n colorFinish: string;\r\n display: boolean;\r\n isMobile: boolean;\r\n}\r\n\r\nconst XBowColorFinishSelector: React.FunctionComponent = props => {\r\n const { updateColorFinish, colorFinish, display, isMobile } = props;\r\n\r\n const checkUpdateColorFinish = (currentClick: string) => {\r\n if (currentClick !== colorFinish) {\r\n updateColorFinish();\r\n }\r\n };\r\n\r\n return display ? (\r\n
\r\n checkUpdateColorFinish(\"Matte\")}>\r\n

Matte

\r\n
\r\n checkUpdateColorFinish(\"Glossy\")}>\r\n

Glossy

\r\n
\r\n
\r\n ) : null;\r\n};\r\n\r\nexport default XBowColorFinishSelector;\r\n","import React from \"react\";\r\n\r\nexport interface XBowCustomColorHexCodeProps {\r\n hexCode: string;\r\n display: boolean;\r\n isMobile: boolean;\r\n}\r\n\r\nconst XBowCustomColorHexCode: React.FunctionComponent = props => {\r\n const { hexCode, display, isMobile } = props;\r\n\r\n return display ? (\r\n
\r\n \r\n

{hexCode}

\r\n
\r\n
\r\n ) : null;\r\n};\r\n\r\nexport default XBowCustomColorHexCode;\r\n","import React, { useState } from \"react\";\r\nimport { useEffect } from \"react\";\r\nimport AddCustomColorIcon from \"../../../assets/icons/xbow/add_custom_color\";\r\nimport { ColorOption } from \"../../../models/vehicle\";\r\nimport HSLAColorSlider from \"./colorSlider\";\r\nimport XBowColorFinishSelector from \"./xBowColorFinishSelection\";\r\nimport XBowCustomColorHexCode from \"./XBowCustomColorHexCode\";\r\n\r\nexport interface XBowColorSelectorProps {\r\n selectedColor: ColorOption;\r\n colorSelectionCategoriesModel: string;\r\n predefinedColors: ColorOption[];\r\n setPredefinedColor: (color: ColorOption) => void;\r\n customColors: ColorOption[];\r\n addCustomColor: (color: ColorOption) => void;\r\n setCustomColor: (color: ColorOption) => void;\r\n colorFinish: string;\r\n updateColorFinish: () => void;\r\n isMobile: boolean;\r\n closeColorSliderOnBackButton: boolean;\r\n setCloseColorSliderOnBackButton: (isColorSliderOpen: boolean) => void;\r\n setIsCustomColor: (isCustomColor: boolean) => void;\r\n}\r\n\r\nconst XBowColorSelector: React.FunctionComponent = (props) => {\r\n const {\r\n closeColorSliderOnBackButton,\r\n setCloseColorSliderOnBackButton,\r\n isMobile,\r\n selectedColor,\r\n colorSelectionCategoriesModel,\r\n predefinedColors,\r\n setPredefinedColor,\r\n customColors,\r\n addCustomColor,\r\n setCustomColor,\r\n colorFinish,\r\n updateColorFinish,\r\n setIsCustomColor,\r\n } = props;\r\n\r\n const [currentSelectedColor, setCurrentSelectedColor] = useState(selectedColor);\r\n const [isCustomColorSelected, setCustomColorSelected] = useState(selectedColor.RenderColorCode.includes(\"CUSTOM_COLOR\"));\r\n const [hideColorSquaresForMobile, setHideColorSquaresForMobile] = useState(false);\r\n const [hideCustomColorSelectionSliderForMobile, setHideCustomColorSelectionSliderForMobile] = useState(true);\r\n\r\n const displayCustomColorSelection = colorSelectionCategoriesModel !== \"Rims\";\r\n const displayMatteGlossySection = colorSelectionCategoriesModel === \"Body\";\r\n const isSuspensionAndLogo = colorSelectionCategoriesModel === \"Suspension and Logo\";\r\n const displayRimSize = colorSelectionCategoriesModel === \"Rims\";\r\n\r\n useEffect(() => {\r\n setCurrentSelectedColor(selectedColor);\r\n setCustomColorSelected(() => {\r\n const isCustomColor = selectedColor.RenderColorCode.includes(\"CUSTOM_COLOR\");\r\n if (isMobile) {\r\n if (isCustomColor) {\r\n setCloseColorSliderOnBackButton(true);\r\n }\r\n }\r\n setIsCustomColor(isCustomColor);\r\n return isCustomColor;\r\n });\r\n }, [selectedColor]);\r\n\r\n useEffect(() => {\r\n if (closeColorSliderOnBackButton) {\r\n setHideColorSquaresForMobile(true);\r\n setHideCustomColorSelectionSliderForMobile(false);\r\n } else {\r\n setHideColorSquaresForMobile(false);\r\n setHideCustomColorSelectionSliderForMobile(true);\r\n }\r\n }, [closeColorSliderOnBackButton]);\r\n\r\n const setCustomColorInColorSelector = (color: ColorOption) => {\r\n setCustomColor(color);\r\n };\r\n\r\n const renderPredefinedColor = (predefinedColor: ColorOption, index: number) => {\r\n return (\r\n \r\n {\r\n setPredefinedColor(predefinedColor);\r\n }}\r\n >\r\n \r\n );\r\n };\r\n\r\n const getColorTitle = () => {\r\n return `/ ${currentSelectedColor.ColorName}`;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {displayRimSize &&
19/20'' (5-Bolt)
}\r\n {predefinedColors.map((predefinedColor, index) => (!displayRimSize || predefinedColor.RimSize === 19) && <>{renderPredefinedColor(predefinedColor, index)})}\r\n\r\n {displayCustomColorSelection && (\r\n <>\r\n {customColors.map((customColor, index) => (\r\n
\r\n
setCustomColor(customColor)}>
\r\n
\r\n ))}\r\n\r\n {customColors.length <= 2 && (\r\n
\r\n {\r\n const newColor: ColorOption = {\r\n ColorName: `Individual Color ${customColors.length + 1}`,\r\n FrontendColorCode: \"#785DB2\",\r\n RenderColorCode: \"CUSTOM_COLOR\",\r\n IsMatte: false,\r\n };\r\n addCustomColor(newColor);\r\n setCustomColor(newColor);\r\n }}\r\n >\r\n \r\n
\r\n
\r\n )}\r\n \r\n )}\r\n
\r\n\r\n {displayRimSize && (\r\n
\r\n
20/21'' (Center Lock)
\r\n {predefinedColors.map((predefinedColor, index) => predefinedColor.RimSize === 20 && renderPredefinedColor(predefinedColor, index))}\r\n
\r\n )}\r\n\r\n {isMobile && !hideCustomColorSelectionSliderForMobile && (\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n )}\r\n\r\n
\r\n \r\n

{getColorTitle()}

\r\n
\r\n {isCustomColorSelected && isMobile && }\r\n
\r\n
\r\n\r\n {!isMobile && (\r\n <>\r\n
\r\n\r\n
\r\n {isCustomColorSelected && (\r\n <>\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n )}\r\n
\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default XBowColorSelector;\r\n","import React, { useEffect, useMemo, useState } from \"react\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport { sendMessage } from \"../../../lib/streaming/core\";\r\nimport { ColorOption, ColorSelectionCategoriesModel } from \"../../../models/vehicle\";\r\nimport { Collapse } from \"@material-ui/core\";\r\nimport XBowColorSelector from \"./XBowColorSelectorComponent\";\r\nimport { CustomColorConfigurationsPayload } from \"../../../services/http/real\";\r\nimport { Part, PartImages } from \"../../parts/PartsList\";\r\nimport ArrowHead from \"../../../assets/icons/arrowHead\";\r\nimport XBowColorFinishSelector from \"./xBowColorFinishSelection\";\r\n\r\nexport interface ColorProps {\r\n setSubMenuState?: (open: boolean) => void;\r\n sendColorData: (CustomColorConfiguration: CustomColorConfigurationsPayload) => void;\r\n isMobile: boolean;\r\n updateIsColorSelectorOpen: (open: boolean) => void;\r\n isColorSelectorOpen: boolean;\r\n}\r\n\r\nexport type XBowColorsProps = ColorProps & StateManagementProps & WithNamespaces;\r\n\r\nconst XBowColors: React.FunctionComponent = (props) => {\r\n const { isColorSelectorOpen, updateIsColorSelectorOpen, overview, configurationState, appliedParts, sendColorData, isMobile } = props;\r\n\r\n const { BodyColor, BrakeCaliperColor, RimColor, SuspensionSpringAndLogoColor, ContrastStitchingColor } = overview.RenderSettings!.Tools.ColorSelection.PreDefined;\r\n\r\n const paraseFinish = (savedColorOption: string | undefined) => {\r\n if (savedColorOption) {\r\n if (savedColorOption.includes(\"nb\") && savedColorOption.includes(matte.toLowerCase())) {\r\n return matte;\r\n }\r\n }\r\n return glossy;\r\n };\r\n\r\n const parseIncomingColors = (ColorArray: ColorOption[], savedColorOption: string | undefined) => {\r\n if (savedColorOption) {\r\n // individual color\r\n if (savedColorOption.indexOf(\"#\") >= 0) {\r\n const parsedHexCode = savedColorOption.split(\";\")[0].split(\" \")[2]; // TODO this also contains matt or glossy, set accordingly\r\n\r\n const isMatte: boolean = savedColorOption.includes(\"matte\");\r\n\r\n const customColorToAdd: ColorOption = {\r\n ColorName: `Individual Color ${customColors.length + 1}`,\r\n FrontendColorCode: parsedHexCode,\r\n RenderColorCode: \"CUSTOM_COLOR\",\r\n IsMatte: isMatte,\r\n };\r\n\r\n // only push color if not available - otherwise re-draw messes it up\r\n if (customColors.findIndex((x) => x.FrontendColorCode == customColorToAdd.FrontendColorCode) <= 0) {\r\n customColors.push(customColorToAdd);\r\n }\r\n\r\n if (isMatte) {\r\n setColorFinish(matte);\r\n }\r\n return customColorToAdd;\r\n \r\n } else {\r\n const isPreDefinedAndMatte = savedColorOption.split(\";\").length > 1;\r\n let foundIndex = 0;\r\n ColorArray.forEach((colors, index) => {\r\n if (savedColorOption.indexOf(colors.RenderColorCode) >= 0 && colors.IsMatte === isPreDefinedAndMatte) {\r\n foundIndex = index;\r\n return;\r\n }\r\n });\r\n return ColorArray[foundIndex];\r\n }\r\n }\r\n return ColorArray[0];\r\n };\r\n\r\n /**\r\n * This sets the color Setting to Glossy or Matte\r\n */\r\n const matte = \"Matte\";\r\n const glossy = \"Glossy\";\r\n\r\n /**\r\n * The state has to be restored properly not only for the command that is being sent to the engine but also frontend wise and command-wise\r\n */\r\n const [colorFinish, setColorFinish] = useState(() => paraseFinish(configurationState.VehicleSettings.CustomColorConfiguration.SelectedBodyColor));\r\n const [customColors, setCustomColors] = useState([]);\r\n const [selectedColorBody, setSelectedColorBody] = useState(() => parseIncomingColors(BodyColor, configurationState.VehicleSettings.CustomColorConfiguration.SelectedBodyColor));\r\n const [selectedColorCalipers, setSelectedColorCalipers] = useState(() => parseIncomingColors(BrakeCaliperColor, configurationState.VehicleSettings.CustomColorConfiguration.SelectedCaliperColor));\r\n const [selectedColorRims, setSelectedColorRims] = useState(() => parseIncomingColors(RimColor, configurationState.VehicleSettings.CustomColorConfiguration.SelectedRimsColor));\r\n const [selectedColorSuspensionAndLogo, setSelectedColorSuspensionAndLogo] = useState(() =>\r\n parseIncomingColors(SuspensionSpringAndLogoColor, configurationState.VehicleSettings.CustomColorConfiguration.SelectedSuspensionAndLogoColor)\r\n );\r\n const [selectedColorContrastStitching, setSelectedColorContrastStitching] = useState(() =>\r\n parseIncomingColors(ContrastStitchingColor, configurationState.VehicleSettings.CustomColorConfiguration.SelectedStitchingColor)\r\n );\r\n\r\n const initialColorCommandState = (command?: string) => {\r\n if (command && command !== \"\") {\r\n return command;\r\n }\r\n return \"\";\r\n };\r\n\r\n const [bodyColorCommand, setBodyColorCommand] = useState(() => initialColorCommandState(configurationState.VehicleSettings.CustomColorConfiguration.SelectedBodyColor));\r\n const [brakeCaliperColorCommand, setBrakeCaliperColorCommand] = useState(() => initialColorCommandState(configurationState.VehicleSettings.CustomColorConfiguration.SelectedCaliperColor));\r\n const [rimColorCommand, setRimColorCommand] = useState(() => initialColorCommandState(configurationState.VehicleSettings.CustomColorConfiguration.SelectedRimsColor));\r\n const [suspensionSpringAndLogoColorCommand, setsuspensionSpringAndLogoColorCommand] = useState(\r\n () => initialColorCommandState(configurationState.VehicleSettings.CustomColorConfiguration.SelectedSuspensionAndLogoColor)\r\n );\r\n const [contrastStitchingColorCommand, setContrastStitchingColorCommand] = useState(() => initialColorCommandState(configurationState.VehicleSettings.CustomColorConfiguration.SelectedStitchingColor));\r\n\r\n useEffect(() => {\r\n const patchedCommand = bodyColorCommand.includes(\"indvcol\") && isMatte() ? `${bodyColorCommand};confopt ExteriorFinish matte` : bodyColorCommand;\r\n sendColorData({\r\n SelectedBodyColor: patchedCommand,\r\n SelectedRimsColor: rimColorCommand,\r\n SelectedCaliperColor: brakeCaliperColorCommand,\r\n SelectedStitchingColor: contrastStitchingColorCommand,\r\n SelectedSuspensionAndLogoColor: suspensionSpringAndLogoColorCommand,\r\n } as CustomColorConfigurationsPayload);\r\n }, [bodyColorCommand, brakeCaliperColorCommand, rimColorCommand, suspensionSpringAndLogoColorCommand, contrastStitchingColorCommand]);\r\n\r\n const selectedCommandMapping: { [key: string]: any } = {\r\n BodyColor: setBodyColorCommand,\r\n BrakeCaliperColor: setBrakeCaliperColorCommand,\r\n RimColor: setRimColorCommand,\r\n SuspensionSpringAndLogoColor: setsuspensionSpringAndLogoColorCommand,\r\n ContrastStitchingColor: setContrastStitchingColorCommand,\r\n };\r\n\r\n const predefinedColors: { [key: string]: ColorOption[] } = {\r\n BodyColor: BodyColor,\r\n BrakeCaliperColor: BrakeCaliperColor,\r\n RimColor: RimColor,\r\n SuspensionSpringAndLogoColor: SuspensionSpringAndLogoColor,\r\n ContrastStitchingColor: ContrastStitchingColor,\r\n };\r\n\r\n const selectedColorsMapping = useMemo(() => {\r\n return {\r\n BodyColor: selectedColorBody,\r\n BrakeCaliperColor: selectedColorCalipers,\r\n RimColor: selectedColorRims,\r\n SuspensionSpringAndLogoColor: selectedColorSuspensionAndLogo,\r\n ContrastStitchingColor: selectedColorContrastStitching,\r\n };\r\n }, [selectedColorBody, selectedColorCalipers, selectedColorRims, selectedColorSuspensionAndLogo, selectedColorContrastStitching]);\r\n\r\n const colorCategories = overview.RenderSettings!.Tools.ColorSelection.Categories;\r\n const [currentSection, setCurrentSection] = useState(colorCategories[0]);\r\n const [lastSelectedColorSection, setLastSelectedColorSection] = useState({} as ColorSelectionCategoriesModel);\r\n\r\n /**\r\n * this applies only to the xbow as bikes do not have color data\r\n */\r\n useEffect(() => {\r\n colorDataToFakeParts().forEach((x) => {\r\n let parts = appliedParts.filter((y) => y.PartId === x.PartId);\r\n if (parts.length === 0) {\r\n appliedParts.push(x);\r\n } else {\r\n let index = appliedParts.findIndex((y) => y.PartId === x.PartId);\r\n appliedParts[index] = x;\r\n }\r\n });\r\n }, [selectedColorBody, selectedColorCalipers, selectedColorRims, selectedColorSuspensionAndLogo, selectedColorContrastStitching, colorFinish]);\r\n\r\n const parseText = (color: ColorOption, withFinish: boolean = false): string => {\r\n if (color.RenderColorCode === \"CUSTOM_COLOR\") {\r\n return withFinish ? color.FrontendColorCode + \" \" + colorFinish + \" (custom)\" : color.FrontendColorCode + \" (custom)\";\r\n } else if (color.RimSize) {\r\n return color.ColorName;\r\n }\r\n return color.ColorName + \" (standard)\";\r\n };\r\n\r\n const colorDataToFakeParts = (): Part[] => {\r\n let result: Part[] = [];\r\n selectedColorBody &&\r\n result.push({\r\n CanBeRendered: false,\r\n Name: `Color Body`,\r\n CategoryName: \"SelectedBodyColor\",\r\n PartId: \"-12345\",\r\n Racing: true,\r\n Price: null,\r\n Description: parseText(selectedColorBody, true),\r\n Images: {} as PartImages,\r\n ApprovalInfo: \"xbow\",\r\n IsColorPart: true,\r\n } as Part);\r\n\r\n selectedColorCalipers &&\r\n result.push({\r\n CanBeRendered: false,\r\n Name: `Color Calipers`,\r\n CategoryName: \"SelectedCaliperColor\",\r\n PartId: \"-12346\",\r\n Racing: true,\r\n Price: null,\r\n Description: parseText(selectedColorCalipers),\r\n Images: {} as PartImages,\r\n ApprovalInfo: \"xbow\",\r\n IsColorPart: true,\r\n } as Part);\r\n\r\n selectedColorRims &&\r\n result.push({\r\n CanBeRendered: false,\r\n Name: `Color Rims`,\r\n CategoryName: \"SelectedRimsColor\",\r\n PartId: \"-12347\",\r\n Racing: true,\r\n Price: null,\r\n Description: parseText(selectedColorRims),\r\n Images: {} as PartImages,\r\n ApprovalInfo: \"xbow\",\r\n IsColorPart: true,\r\n } as Part);\r\n\r\n selectedColorContrastStitching &&\r\n result.push({\r\n CanBeRendered: false,\r\n Name: `Color Contrast Stitching`,\r\n CategoryName: \"SelectedStitchingColor\",\r\n PartId: \"-12348\",\r\n Racing: true,\r\n Price: null,\r\n Description: parseText(selectedColorContrastStitching),\r\n Images: {} as PartImages,\r\n ApprovalInfo: \"xbow\",\r\n IsColorPart: true,\r\n } as Part);\r\n\r\n selectedColorSuspensionAndLogo &&\r\n result.push({\r\n CanBeRendered: false,\r\n Name: `Color Suspension and Logo`,\r\n CategoryName: \"SelectedSuspensionAndLogoColor\",\r\n PartId: \"-12349\",\r\n Racing: true,\r\n Price: null,\r\n Description: parseText(selectedColorSuspensionAndLogo),\r\n Images: {} as PartImages,\r\n ApprovalInfo: \"xbow\",\r\n IsColorPart: true,\r\n } as Part);\r\n return result;\r\n };\r\n\r\n const setColorMapping: { [key: string]: any } = {\r\n BodyColor: setSelectedColorBody,\r\n BrakeCaliperColor: setSelectedColorCalipers,\r\n RimColor: setSelectedColorRims,\r\n SuspensionSpringAndLogoColor: setSelectedColorSuspensionAndLogo,\r\n ContrastStitchingColor: setSelectedColorContrastStitching,\r\n };\r\n\r\n const setColorForCurrentSegment = (color: ColorOption) => {\r\n setColorMapping[currentSection.Value](color);\r\n };\r\n\r\n /**\r\n * This sets the pre-defined color for the currently active category\r\n */\r\n const { Command, CommandIndividual } = overview.RenderSettings!.Tools.ColorSelection;\r\n\r\n const getPredefinedColors = () => predefinedColors[currentSection.Value];\r\n\r\n const setPredefinedColor = (color: ColorOption) => {\r\n updateColorSelectionCamera();\r\n if (currentSection.Value === \"BodyColor\") {\r\n if (color.IsMatte && !isMatte()) {\r\n updateColorFinish();\r\n }\r\n if (!color.IsMatte && isMatte()) {\r\n updateColorFinish();\r\n }\r\n }\r\n\r\n setColorForCurrentSegment(color);\r\n if (color.IsMatte && currentSection.Value === \"BodyColor\") {\r\n selectedCommandMapping[currentSection.Value](`${Command} ${currentSection.Value} ${color.RenderColorCode};confopt ExteriorFinish matte`);\r\n } else {\r\n selectedCommandMapping[currentSection.Value](`${Command} ${currentSection.Value} ${color.RenderColorCode}`);\r\n }\r\n render(Command, color.RenderColorCode, currentSection.Value);\r\n };\r\n\r\n /**\r\n * this funcition determines if a camera movement on color selection is necessary and does if so\r\n */\r\n const updateColorSelectionCamera = () => {\r\n if (currentSection.Value !== lastSelectedColorSection.Value) {\r\n setLastSelectedColorSection(currentSection);\r\n sendMessage(`confcam ${currentSection.Value}`);\r\n }\r\n };\r\n\r\n const isMatte = () => colorFinish === matte || colorFinish.toLowerCase() === \"matte\";\r\n\r\n /**\r\n * Determines the exterior finish command based on the props parameter from the db and the current se lected value which\r\n * can be either Glossy or Matte. Glossy is the default.\r\n * @param key can/should be \"Glossy\" or \"Matte\"\r\n * @returns command as string - like 'confopgt ExteriorFinish default'\r\n */\r\n const getColorFinishCommandValue = (key: string) => {\r\n const exteriorFinishCommmand = \"confopt ExteriorFinish\";\r\n const arr = overview.RenderSettings!.Tools.ColorSelection.FinishOptions.filter((x) => x.Name === key);\r\n if (arr && arr.length > 0) {\r\n return exteriorFinishCommmand + \" \" + arr[0].Value;\r\n }\r\n return exteriorFinishCommmand + \" default\";\r\n };\r\n\r\n const updateColorFinish = () => {\r\n const toggle = isMatte() ? glossy : matte;\r\n sendMessage(getColorFinishCommandValue(toggle));\r\n setColorFinish(toggle);\r\n // body only!!\r\n selectedCommandMapping[currentSection.Value](\r\n `${CommandIndividual} ${currentSection.Value} ${selectedColorBody.FrontendColorCode};${getColorFinishCommandValue(toggle)};${Command} ${currentSection.Value} ni`\r\n );\r\n };\r\n\r\n /**\r\n * This sets the individual color for the currently active category\r\n */\r\n const addCustomColor = (customColor: ColorOption) => setCustomColors((x) => [...x, customColor]);\r\n\r\n const setCustomColor = (customColor: ColorOption) => {\r\n setCustomColors((x) => {\r\n let v = x;\r\n const index = v.findIndex((c) => c.ColorName === customColor.ColorName);\r\n if (index > -1) {\r\n v[index] = customColor;\r\n }\r\n return v;\r\n });\r\n\r\n setColorForCurrentSegment(customColor);\r\n setCustomColorInStream(customColor);\r\n };\r\n\r\n const setCustomColorInStream = (color: ColorOption) => {\r\n updateColorSelectionCamera();\r\n selectedCommandMapping[currentSection.Value](`${CommandIndividual} ${currentSection.Value} ${color.FrontendColorCode};${Command} ${currentSection.Value} ni`);\r\n render(CommandIndividual, color.FrontendColorCode, currentSection.Value);\r\n render(Command, \"ni\", currentSection.Value);\r\n };\r\n\r\n const render = (command: string, renderColorCode: string, section: string) => {\r\n const message = `${command} ${section} ${renderColorCode}`;\r\n sendMessage(message); //Just a test message, please add correct message\r\n };\r\n\r\n const [selectedIndex, setSelectedIndex] = useState(\"\"); //\"\" if no color-category is selected\r\n\r\n function handleOnSubMenuClick(currentIndex: string) {\r\n if (selectedIndex === currentIndex) {\r\n setSelectedIndex(\"\");\r\n updateIsColorSelectorOpen(false);\r\n } else {\r\n setSelectedIndex(currentIndex);\r\n updateIsColorSelectorOpen(true);\r\n }\r\n }\r\n\r\n const [closeColorSliderOnBackButton, setCloseColorSliderOnBackButton] = useState(false);\r\n\r\n const handleMobileBackButtonClicked = () => {\r\n if (closeColorSliderOnBackButton) {\r\n setCloseColorSliderOnBackButton(false);\r\n } else {\r\n updateIsColorSelectorOpen(false);\r\n }\r\n };\r\n\r\n const [isCustomColor, setIsCustomColor] = useState(false);\r\n\r\n return (\r\n <>\r\n {colorCategories.map((colorSelectionCategoriesModel: ColorSelectionCategoriesModel, index: number) => {\r\n const currentIndex = index.toString();\r\n const activeCategory = currentIndex === selectedIndex;\r\n\r\n return (\r\n
\r\n {\r\n handleOnSubMenuClick(currentIndex);\r\n setCurrentSection(colorCategories[index]);\r\n }}\r\n id={`color-category-list-item-${index}`}\r\n className={`category-item ${activeCategory ? \"active\" : \"\"} ${selectedIndex === \"\" ? \"not-selected\" : \"hide-not-selected\"}`}\r\n >\r\n
{colorSelectionCategoriesModel.Name}
\r\n
\r\n\r\n
\r\n\r\n {!isMobile && (\r\n \r\n
\r\n \r\n
\r\n
\r\n )}\r\n\r\n {isMobile && activeCategory && isColorSelectorOpen && (\r\n
\r\n
\r\n
\r\n \r\n {colorSelectionCategoriesModel.Name}\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n )}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(XBowColors);\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport Close from \"../../assets/icons/close\";\r\nimport { RouteComponentProps } from \"react-router\";\r\nimport XBowColors from \"../configuration/colorSelection/xBowColors\";\r\nimport { CustomColorConfigurationsPayload } from \"../../services/http/real\";\r\nimport { CategoryListComponent } from \"./CategoryList\";\r\n\r\nexport interface CatContainerProps {\r\n setCatsOpenFunc: () => void;\r\n is3D?: boolean;\r\n renderingCommands?: string[] | null;\r\n updateRenderingCommands?: (renderingCommandList) => void;\r\n catsOpen: boolean;\r\n isMobile: boolean;\r\n sendColorData: (colorData: CustomColorConfigurationsPayload) => void;\r\n}\r\n\r\nexport type CatContainerAllProps = StateManagementProps & WithNamespaces & CatContainerProps & RouteComponentProps;\r\n\r\nconst CategoryContainer: React.FunctionComponent = props => {\r\n const { isXBow, setCatsOpenFunc, applicationSettings, catsOpen, t, sendColorData, isMobile, appliedParts } = props;\r\n\r\n const [isColorSelectorOpen, setColorSelectorOpen] = useState(false);\r\n\r\n const updateIsColorSelectorOpen = (open: boolean) => setColorSelectorOpen(open);\r\n\r\n useEffect(()=>{\r\n if(isMobile && catsOpen) {\r\n setCatsOpenFunc();\r\n }\r\n },[appliedParts])\r\n\r\n return (\r\n \r\n
\r\n
\r\n
setCatsOpenFunc()}>\r\n
\r\n <>\r\n \r\n {!isXBow ? t(`buttons.categories.${applicationSettings.Brand}`) : \"Customization\"}\r\n \r\n
\r\n
\r\n
\r\n
setCatsOpenFunc()}>\r\n \r\n
\r\n {isXBow ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CategoryContainer);\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Movie: React.FunctionComponent = () => {\r\n return (\r\n \r\n Movie Icon\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Movie;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Mountain: React.FunctionComponent = () => {\r\n return (\r\n \r\n Mountains Icon\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Mountain;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst VideoCam: React.FunctionComponent = () => {\r\n return (\r\n \r\n Video Cam Icon\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default VideoCam;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Daytime: React.FunctionComponent = () => {\r\n return (\r\n \r\n Daytime Icon\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Daytime;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Moon: React.FunctionComponent = () => {\r\n return (\r\n \r\n Moon Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Moon;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Sun: React.FunctionComponent = () => {\r\n return (\r\n \r\n Sun Icon\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Sun;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst XBow: React.FunctionComponent = () => {\r\n return (\r\n \r\n XBow\r\n \r\n \r\n );\r\n};\r\n\r\nexport default XBow;\r\n","import React, { useEffect, useMemo, useState } from \"react\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport Close from \"../../../assets/icons/close\";\r\nimport Movie from \"../../../assets/icons/movie\";\r\nimport Mountain from \"../../../assets/icons/mountain\";\r\nimport VideoCam from \"../../../assets/icons/video_cam\";\r\nimport Daytime from \"../../../assets/icons/daytime\";\r\nimport { Lighting } from \"../../../models/vehicle\";\r\nimport Moon from \"../../../assets/icons/moon\";\r\nimport Sun from \"../../../assets/icons/sun\";\r\nimport XBow from \"../../../assets/icons/xbow/xBow\";\r\nimport { ToolsConfigurationPayload } from \"../../../services/http/real\";\r\nimport { CircularInput, CircularThumb, CircularTrack } from \"react-circular-input\";\r\nimport ArrowHead from \"../../../assets/icons/arrowHead\";\r\n\r\nexport interface ToolProps {\r\n toolsOpen: boolean;\r\n setToolsOpenFunc: () => void;\r\n sendToolOption: (message: string, lighting?:string) => void;\r\n sendToolData: (toolsConfiguration: ToolsConfigurationPayload) => void;\r\n}\r\ninterface toolCats {\r\n Command: string;\r\n List: toolCat[];\r\n Value?: string;\r\n}\r\ninterface toolCat {\r\n Name: string;\r\n Value: string;\r\n}\r\n\r\ntype AllProps = StateManagementProps & WithNamespaces & ToolProps;\r\n\r\nconst Tools: React.FunctionComponent = (props) => {\r\n const { t, overview, toolsOpen, setToolsOpenFunc, configurationState, sendToolOption, sendToolData, applicationSettings, isXBow } = props;\r\n\r\n const cinematics: toolCats | null = overview.RenderSettings && overview.RenderSettings.Tools.Cinematics ? overview.RenderSettings.Tools.Cinematics : null;\r\n const environments: toolCats | null = overview.RenderSettings && overview.RenderSettings.Tools.Environments ? overview.RenderSettings.Tools.Environments : null;\r\n const perspectives: toolCats | null = overview.RenderSettings && overview.RenderSettings.Tools.Perspectives ? overview.RenderSettings.Tools.Perspectives : null;\r\n const lighting: Lighting | null = overview.RenderSettings && overview.RenderSettings.Tools.Lighting ? overview.RenderSettings.Tools.Lighting : null;\r\n const animation: any | null = overview.RenderSettings && overview.RenderSettings.Tools.Views ? overview.RenderSettings.Tools.Views : null;\r\n\r\n const [selectedToolOptions, setSelectedToolOptions] = useState({\r\n Cinematics: \"\",\r\n Environments:\r\n configurationState.VehicleSettings && configurationState.VehicleSettings.ToolsConfiguration && configurationState.VehicleSettings.ToolsConfiguration.Environments\r\n ? configurationState.VehicleSettings.ToolsConfiguration.Environments\r\n : \"\",\r\n Perspectives: \"\",\r\n Lighting:\r\n configurationState.VehicleSettings && configurationState.VehicleSettings.ToolsConfiguration && configurationState.VehicleSettings.ToolsConfiguration.Lighting\r\n ? configurationState.VehicleSettings.ToolsConfiguration.Lighting\r\n : \"\",\r\n Animations:\r\n configurationState.VehicleSettings && configurationState.VehicleSettings.ToolsConfiguration && configurationState.VehicleSettings.ToolsConfiguration.Animations\r\n ? configurationState.VehicleSettings.ToolsConfiguration.Animations\r\n : [],\r\n });\r\n\r\n const [selectedToolsCategory, setSelectedToolsCategory] = useState(cinematics ? cinematics.Command : \"\");\r\n\r\n useEffect(\r\n () => sendToolData(selectedToolOptions),\r\n [selectedToolOptions.Cinematics, selectedToolOptions.Environments, selectedToolOptions.Lighting, selectedToolOptions.Perspectives, selectedToolOptions.Animations!.length]\r\n );\r\n\r\n /**\r\n * Change the frontend state about the selected animations.\r\n * @param animation the animation to add or delete\r\n * @returns the changed array\r\n */\r\n const changeSelectedAnimations = (animation: string): string[] => {\r\n if (!selectedToolOptions.Animations!.includes(animation)) {\r\n selectedToolOptions.Animations!.push(animation);\r\n } else {\r\n selectedToolOptions.Animations = selectedToolOptions.Animations!.filter((x) => x !== animation);\r\n }\r\n return selectedToolOptions.Animations!;\r\n };\r\n\r\n const getKnobColor = () => {\r\n const brand = applicationSettings.Brand;\r\n if (brand === \"KTM\") {\r\n return \"#ff6600\";\r\n } else if (brand === \"HQV\") {\r\n return \"#FFED00\";\r\n } else if (brand === \"GG\") {\r\n return \"#CB0D25\";\r\n } else return \"#ff6600\";\r\n };\r\n\r\n const sendSelectedTool = (event: any, fallback?: string) => {\r\n const dataCommand = event ? ((event.target as HTMLElement).getAttribute(\"data-command\") as string) : fallback ? fallback : \"\";\r\n if (dataCommand && dataCommand !== \"\") {\r\n const dataArray = dataCommand.split(\" \");\r\n const newCat = dataArray[0];\r\n\r\n setSelectedToolOptions({\r\n Cinematics: cinematics ? (newCat === cinematics.Command ? dataCommand : selectedToolOptions.Cinematics) : \"\",\r\n Environments: environments ? (newCat === environments.Command ? dataCommand : selectedToolOptions.Environments) : \"\",\r\n Perspectives: perspectives ? (newCat === perspectives.Command ? dataCommand : selectedToolOptions.Perspectives) : \"\",\r\n Lighting: lighting ? (newCat === lighting.CommandSlider ? dataCommand : selectedToolOptions.Lighting) : \"\",\r\n Animations: animation ? (newCat === animation.Command ? changeSelectedAnimations(dataCommand) : selectedToolOptions.Animations) : [],\r\n });\r\n if(newCat === \"envilvl\") {\r\n sendToolOption(dataCommand, selectedToolOptions.Lighting);\r\n }\r\n sendToolOption(dataCommand);\r\n }\r\n };\r\n\r\n const toggleOnchangeFunction = () => {};\r\n\r\n const renderAnimations = (options: toolCat[], name: string) => {\r\n return (\r\n <>\r\n {name === selectedToolsCategory && (\r\n
\r\n {options.map((cat: toolCat, index: number) => {\r\n const dataCommand = name + \" \" + cat.Value;\r\n return (\r\n
\r\n
{cat.Name}
\r\n
\r\n \r\n
\r\n
\r\n );\r\n })}\r\n
\r\n )}\r\n \r\n );\r\n };\r\n\r\n const renderOptions = (options: toolCat[], name: string) => {\r\n return (\r\n <>\r\n {name === selectedToolsCategory && (\r\n
\r\n {options.map((cat: toolCat, index: number) => {\r\n const dataCommand = name + \" \" + cat.Value;\r\n return (\r\n
\r\n {cat.Name}\r\n
\r\n );\r\n })}\r\n
\r\n )}\r\n \r\n );\r\n };\r\n\r\n const renderCategories = (category: toolCats | null, lightingObject: Lighting | null) => {\r\n if (cinematics && category && category.Command === cinematics.Command) {\r\n return (\r\n
setSelectedToolsCategory(category.Command)}>\r\n \r\n
\r\n );\r\n } else if (environments && category && category.Command === environments.Command) {\r\n return (\r\n
setSelectedToolsCategory(category.Command)}>\r\n \r\n
\r\n );\r\n } else if (perspectives && category && category.Command === perspectives.Command) {\r\n return (\r\n
setSelectedToolsCategory(category.Command)}>\r\n \r\n
\r\n );\r\n } else if (lighting && lightingObject && lightingObject.CommandSlider === lighting.CommandSlider) {\r\n return (\r\n setSelectedToolsCategory(lightingObject.CommandSlider)}\r\n >\r\n \r\n \r\n );\r\n } else if (animation && category && animation.Command === category.Command) {\r\n return (\r\n
setSelectedToolsCategory(animation.Command)}>\r\n \r\n
\r\n );\r\n } else {\r\n return <>;\r\n }\r\n };\r\n\r\n const sendCommand = () => lighting && sendSelectedTool(null, lighting.CommandSlider + \" \" + numericTime);\r\n\r\n const [sliderValue, handleSliderChange] = useState(\r\n configurationState.VehicleSettings && configurationState.VehicleSettings.ToolsConfiguration && configurationState.VehicleSettings.ToolsConfiguration.Lighting\r\n ? +(+configurationState.VehicleSettings.ToolsConfiguration.Lighting.split(\" \")[1] * (1 / 23)).toFixed(2)\r\n : lighting\r\n ? +(lighting.ValueTo * (1 / 23)).toFixed(2)\r\n : 0.25\r\n );\r\n\r\n useEffect(() => {\r\n sendCommand();\r\n }, [sliderValue]);\r\n\r\n const numericTime = useMemo(() => {\r\n const val = Math.round(sliderValue / (1 / 23));\r\n return val === 0 ? 24 : val;\r\n }, [sliderValue]);\r\n\r\n const displayTime = useMemo(() => {\r\n const morning = numericTime <= 12;\r\n const newValue = morning ? numericTime : numericTime - 12;\r\n const daytime = String(newValue).padStart(2, \"0\") + \":00 \" + ((morning && newValue !== 12) || (!morning && newValue === 12) ? \"a.m\" : \"p.m\");\r\n return daytime;\r\n }, [numericTime]);\r\n\r\n const getSlider = () => {\r\n if (lighting && lighting.CommandSlider === selectedToolsCategory)\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {displayTime}\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n if (!overview.RenderSettings || (overview.RenderSettings && !overview.RenderSettings.Tools)) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
setToolsOpenFunc()}>\r\n
\r\n <>\r\n \r\n
\r\n \r\n {t(\"configuration.tools\")}\r\n
\r\n \r\n
\r\n
\r\n
\r\n <>\r\n
\r\n <>\r\n {cinematics ? renderCategories(cinematics, null) : \"\"}\r\n {environments ? renderCategories(environments, null) : \"\"}\r\n {perspectives ? renderCategories(perspectives, null) : \"\"}\r\n {lighting ? renderCategories(null, lighting) : \"\"}\r\n {animation ? renderCategories(animation, null) : \"\"}\r\n \r\n
\r\n {cinematics && renderOptions(cinematics.List, cinematics.Command)}\r\n {environments && renderOptions(environments.List, environments.Command)}\r\n {perspectives && renderOptions(perspectives.List, perspectives.Command)}\r\n {lighting && getSlider()}\r\n {animation && renderAnimations(animation.Animations, animation.Command)}\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Tools);\r\n","import React from \"react\";\r\nimport { getBrandLogoSvgComponent } from \"../../redux/reducers/applicationSettings\";\r\nimport { StateManagementProps } from \"../../utils/addReduxProps\";\r\n\r\nexport interface BrandLogoProps {\r\n customClass?: string;\r\n}\r\n\r\nexport const BrandLogo: React.FunctionComponent = (props) => {\r\n const { culture, applicationSettings, customClass } = props;\r\n const brand = applicationSettings.Brand;\r\n\r\n const brandLink = applicationSettings.BrandLink + culture.toLowerCase() + \".html\";\r\n const brandSvg = getBrandLogoSvgComponent(brand);\r\n\r\n return (\r\n \r\n {brandSvg}\r\n \r\n );\r\n};\r\n\r\nexport default BrandLogo;\r\n","import React from \"react\";\r\nimport { RouteComponentProps } from \"react-router\";\r\nimport ArrowHead from \"../../assets/icons/arrowHead\";\r\nimport { StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport BrandLogo from \"./BrandLogo\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\n\r\nexport interface HeaderProps {\r\n loggedIn?: boolean;\r\n engineReady?: boolean;\r\n cdcLoaded?: boolean;\r\n selectedModelName?: string;\r\n displayWaitingroom?: boolean;\r\n}\r\n\r\nexport const Header: React.FunctionComponent = props => {\r\n const { applicationSettings, loggedIn, cdcLoaded, history, t, engineReady, selectedModelName, displayWaitingroom, dealerInquirySent } = props;\r\n const brand = applicationSettings.Brand;\r\n\r\n const backToMain = () => {\r\n (window as any).gigya.accounts.hideScreenSet(brand + \"-overlay-3d\");\r\n history.push(\"/main\");\r\n };\r\n\r\n return (\r\n
\r\n {!(loggedIn && !engineReady) && (\r\n
\r\n \r\n {t(\"navigation.goBack\")}\r\n
\r\n )}\r\n\r\n {selectedModelName && !engineReady && (\r\n
\r\n

\r\n {!dealerInquirySent ? selectedModelName : \"\"}\r\n

\r\n
\r\n )}\r\n\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst BarItemDevider: React.FunctionComponent = () => {\r\n return (\r\n \r\n BarItemDevider\r\n \r\n \r\n );\r\n};\r\n\r\nexport default BarItemDevider;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst RotateIcon: React.FunctionComponent = () => {\r\n return (\r\n \r\n Rotate\r\n \r\n \r\n );\r\n};\r\n\r\nexport default RotateIcon;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst ZoomIcon: React.FunctionComponent = () => {\r\n return (\r\n \r\n Zoom\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ZoomIcon;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst FocusIcon: React.FunctionComponent = () => {\r\n return (\r\n \r\n Focus\r\n \r\n \r\n );\r\n};\r\n\r\nexport default FocusIcon;\r\n","import { useEffect, useState } from \"react\";\r\nimport useInterval from \"./useInterval\";\r\n\r\nimport LoadingGif_KTM from \"../../assets/gifs/waitingroom/ktm/gif.gif\";\r\nimport LoadingGif_HQV from \"../../assets/gifs/waitingroom/hqv/loading.gif\";\r\nimport LoadingGif_GG from \"../../assets/gifs/waitingroom/gg/loading.gif\";\r\n\r\nimport RotateGif_KTM from \"../../assets/gifs/waitingroom/ktm/rotation.gif\";\r\nimport RotateGif_HQV from \"../../assets/gifs/waitingroom/hqv/rotate.gif\";\r\nimport RotateGif_GG from \"../../assets/gifs/waitingroom/gg/rotate.gif\";\r\n\r\nimport RotateHandGif_KTM from \"../../assets/gifs/waitingroom/ktm/ktm_rotate_finger.gif\";\r\nimport RotateHandGif_HQV from \"../../assets/gifs/waitingroom/hqv/hqv_rotate_finger.gif\";\r\nimport RotateHandGif_GG from \"../../assets/gifs/waitingroom/gg/gg_rotate_finger.gif\";\r\n\r\nimport ZoomGif_KTM from \"../../assets/gifs/waitingroom/ktm/zooming.gif\";\r\nimport ZoomGif_HQV from \"../../assets/gifs/waitingroom/hqv/zoom.gif\";\r\nimport ZoomGif_GG from \"../../assets/gifs/waitingroom/gg/zoom.gif\";\r\n\r\nimport ZoomHandGif_KTM from \"../../assets/gifs/waitingroom/ktm/ktm_zoom_finger.gif\";\r\nimport ZoomHandGif_HQV from \"../../assets/gifs/waitingroom/hqv/hqv_zoom_finger.gif\";\r\nimport ZoomHandGif_GG from \"../../assets/gifs/waitingroom/gg/gg_zoom_finger.gif\";\r\n\r\nimport FocusGif_KTM from \"../../assets/gifs/waitingroom/ktm/focusing.gif\";\r\nimport FocusGif_HQV from \"../../assets/gifs/waitingroom/hqv/focus.gif\";\r\nimport FocusGif_GG from \"../../assets/gifs/waitingroom/gg/focus.gif\";\r\n\r\nimport FocusHandGif_KTM from \"../../assets/gifs/waitingroom/ktm/ktm_focus_finger.gif\";\r\nimport FocusHandGif_HQV from \"../../assets/gifs/waitingroom/hqv/hqv_focus_finger.gif\";\r\nimport FocusHandGif_GG from \"../../assets/gifs/waitingroom/gg/gg_focus_finger.gif\";\r\n\r\ninterface UseWaitingroomProps {\r\n brand: string;\r\n isXBow: boolean;\r\n isMobile: boolean;\r\n isStreet: boolean;\r\n}\r\n\r\ninterface UseWaitingroomReturns {\r\n rotate: string;\r\n zoom: string;\r\n focus: string;\r\n loadingGif: string;\r\n rotateGif: string;\r\n zoomGif: string;\r\n focusGif: string;\r\n displayProp: string;\r\n showRotate: string;\r\n showZoom: string;\r\n showFocus: string;\r\n}\r\n\r\nconst useWaitingroom = (props: UseWaitingroomProps): UseWaitingroomReturns => {\r\n const { brand, isXBow, isMobile, isStreet } = props;\r\n\r\n const isKTM = () => brand === \"KTM\";\r\n const isHQV = () => brand === \"HQV\";\r\n\r\n const showRotate = \"showRotate\";\r\n const showZoom = \"showZoom\";\r\n const showFocus = \"showFocus\";\r\n\r\n const BikeRotate_KTM = \"/videos/ktm/ktm_rotate.mp4\";\r\n const BikeRotate_HQV = \"/videos/hqv/hqv_rotate.mp4\";\r\n const BikeRotate_GG = \"/videos/gg/gg_rotate.mp4\";\r\n\r\n const BikeZoom_KTM = \"/videos/ktm/ktm_zoom.mp4\";\r\n const BikeZoom_HQV = \"/videos/hqv/hqv_zoom.mp4\";\r\n const BikeZoom_GG = \"/videos/gg/gg_zoom.mp4\";\r\n\r\n const BikeFocus_KTM = \"/videos/ktm/ktm_focus.mp4\";\r\n const BikeFocus_HQV = \"/videos/hqv/hqv_focus.mp4\";\r\n const BikeFocus_GG = \"/videos/gg/gg_focus.mp4\";\r\n\r\n const XBowRotate = \"/videos/xbow/xbow_rotate.mp4\";\r\n const XBowZoom = \"/videos/xbow/xbow_zoom.mp4\";\r\n const XBowFocus = \"/videos/xbow/xbow_focus.mp4\";\r\n\r\n const StreetRotate = \"/videos/street/street_rotate.mp4\";\r\n const StreetZoom = \"/videos/street/street_zoom.mp4\";\r\n const StreetFocus = \"/videos/street/street_focus.mp4\";\r\n \r\n\r\n const getLoadingGif = () => (isKTM() ? LoadingGif_KTM : isHQV() ? LoadingGif_HQV : LoadingGif_GG);\r\n\r\n const getRotateKTMGif = () => (isMobile ? RotateHandGif_KTM : RotateGif_KTM);\r\n const getRotateHQVGif = () => (isMobile ? RotateHandGif_HQV : RotateGif_HQV);\r\n const getRotateGsGGif = () => (isMobile ? RotateHandGif_GG : RotateGif_GG);\r\n const getRotateGif = () => (isKTM() ? getRotateKTMGif() : isHQV() ? getRotateHQVGif() : getRotateGsGGif());\r\n\r\n const getZoomKTMGif = () => (isMobile ? ZoomHandGif_KTM : ZoomGif_KTM);\r\n const getZoomHQVGif = () => (isMobile ? ZoomHandGif_HQV : ZoomGif_HQV);\r\n const getZoomGsGGif = () => (isMobile ? ZoomHandGif_GG : ZoomGif_GG);\r\n const getZoomGif = () => (isKTM() ? getZoomKTMGif() : isHQV() ? getZoomHQVGif() : getZoomGsGGif());\r\n\r\n const getFocusKTMGif = () => (isMobile ? FocusHandGif_KTM : FocusGif_KTM);\r\n const getFocusHQVGif = () => (isMobile ? FocusHandGif_HQV : FocusGif_HQV);\r\n const getFocusGsGGif = () => (isMobile ? FocusHandGif_GG : FocusGif_GG);\r\n const getFocusGif = () => (isKTM() ? getFocusKTMGif() : isHQV() ? getFocusHQVGif() : getFocusGsGGif());\r\n\r\n const getRotateVideo = () => {\r\n if (isXBow) return XBowRotate;\r\n else if(isStreet) return StreetRotate;\r\n else if (isKTM()) return BikeRotate_KTM;\r\n else if (isHQV()) return BikeRotate_HQV;\r\n return BikeRotate_GG;\r\n };\r\n\r\n const getZoomVideo = () => {\r\n if (isXBow) return XBowZoom;\r\n else if(isStreet) return StreetZoom;\r\n else if (isKTM()) return BikeZoom_KTM;\r\n else if (isHQV()) return BikeZoom_HQV;\r\n return BikeZoom_GG;\r\n };\r\n\r\n const getFocusVideo = () => {\r\n if (isXBow) return XBowFocus;\r\n else if(isStreet) return StreetFocus;\r\n else if (isKTM()) return BikeFocus_KTM;\r\n else if (isHQV()) return BikeFocus_HQV;\r\n return BikeFocus_GG;\r\n };\r\n\r\n const [rotate, setRotate] = useState(getRotateVideo());\r\n const [zoom, setZoom] = useState(getZoomVideo());\r\n const [focus, setFocus] = useState(getFocusVideo());\r\n const [loadingGif, setLoadingGif] = useState(getLoadingGif());\r\n const [rotateGif, setRotateGif] = useState(getRotateGif());\r\n const [zoomGif, setZoomGif] = useState(getZoomGif());\r\n const [focusGif, setFocusGif] = useState(getFocusGif());\r\n const [displayProp, setDisplayProp] = useState(showRotate);\r\n\r\n const [returnValues, setReturnValues] = useState({\r\n rotate,\r\n zoom,\r\n focus,\r\n loadingGif,\r\n rotateGif,\r\n zoomGif,\r\n focusGif,\r\n displayProp,\r\n showRotate,\r\n showFocus,\r\n showZoom,\r\n });\r\n\r\n const setReturningValues = () => {\r\n const values = {\r\n rotate,\r\n zoom,\r\n focus,\r\n loadingGif,\r\n rotateGif,\r\n zoomGif,\r\n focusGif,\r\n displayProp,\r\n showRotate,\r\n showFocus,\r\n showZoom,\r\n };\r\n setReturnValues(values);\r\n };\r\n\r\n useEffect(() => {\r\n setLoadingGif(getLoadingGif());\r\n }, [brand]);\r\n\r\n useEffect(() => {\r\n setRotate(getRotateVideo());\r\n setZoom(getZoomVideo());\r\n setFocus(getFocusVideo());\r\n setLoadingGif(getLoadingGif());\r\n }, [brand, isXBow]);\r\n\r\n useEffect(() => {\r\n setRotateGif(getRotateGif());\r\n setZoomGif(getZoomGif());\r\n setFocusGif(getFocusGif());\r\n }, [brand, isMobile]);\r\n\r\n useInterval(() => {\r\n if (displayProp === showRotate) {\r\n setDisplayProp(showZoom);\r\n }\r\n if (displayProp === showZoom) {\r\n setDisplayProp(showFocus);\r\n }\r\n if (displayProp === showFocus) {\r\n setDisplayProp(showRotate);\r\n }\r\n }, 4000);\r\n\r\n useEffect(() => {\r\n setReturningValues();\r\n }, [displayProp]);\r\n\r\n return returnValues;\r\n};\r\n\r\nexport default useWaitingroom;\r\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\n\r\nimport BarItemDevider from \"../../../assets/icons/waitingroom/bar-item-devider\";\r\n\r\nimport RotateIcon from \"../../../assets/icons/waitingroom/rotate\";\r\nimport ZoomIcon from \"../../../assets/icons/waitingroom/zoom\";\r\nimport FocusIcon from \"../../../assets/icons/waitingroom/focus\";\r\n\r\nimport { getIsMobile } from \"../../../utils/helpers\";\r\nimport useWaitingroom from \"../../../lib/hooks/useWaitingroom\";\r\nimport { StreamState } from \"../../../lib/streaming/core\";\r\n\r\nexport interface WaitingRoomStateProps {\r\n currentStreamState: StreamState;\r\n}\r\n\r\ntype WaitingroomProps = StateManagementProps & WithNamespaces & WaitingRoomStateProps;\r\n\r\nconst WaitingRoom: React.FunctionComponent = (props) => {\r\n const { t, applicationSettings, isXBow, currentStreamState } = props;\r\n const brand = applicationSettings.Brand;\r\n\r\n const [isMobile, setIsMobile] = useState(() => getIsMobile());\r\n const streetModels = [\"M-990DUKER2024\",\"M-990DUKE2024\", \"M-1390SUPERDUKEREVO2024\",\"M-1390SUPERDUKER2024\"]\r\n const getIsStreet = () => streetModels.includes(props.selectedModel.ModelId);\r\n const [isStreet] = useState(getIsStreet);\r\n\r\n const setMobileColumnHeight = () => setCurrentColumnHeight(getMobileColumnHeight());\r\n\r\n const getMobileColumnHeight = () => {\r\n const d = document.getElementById(\"waiting-room-column-1\");\r\n const height = d && d.offsetHeight ? `${d.offsetHeight}px` : \"410px\";\r\n return height;\r\n };\r\n\r\n const getContentHeight = () => {\r\n const h = document.getElementById(\"header\");\r\n const headerHeight = h && h.offsetHeight ? h.offsetHeight : 5;\r\n const windowHeight = window.innerHeight;\r\n return windowHeight - headerHeight + \"px\";\r\n };\r\n\r\n const setIsMobileState = () => {\r\n setIsMobile(getIsMobile());\r\n };\r\n\r\n const setContainerHeight = () => {\r\n setContentHeight(getContentHeight);\r\n };\r\n\r\n const handleResize = () => {\r\n setMobileColumnHeight();\r\n setIsMobileState();\r\n setContainerHeight();\r\n };\r\n\r\n const setCurrentLoadingState = () => {\r\n switch (currentStreamState) {\r\n case StreamState.INITIALIZING:\r\n return \"0% Loading Factory\";\r\n case StreamState.LOAD_BIKE:\r\n if (isXBow) {\r\n return \" 20% assembling car\";\r\n }\r\n return \"20% assembling bike\";\r\n case StreamState.LOAD_ENV:\r\n return \"40% Preparing Environment\";\r\n case StreamState.LOAD_BASE:\r\n return \"60% Flashing Base Settings\";\r\n case StreamState.LOAD_COLORS:\r\n return \"80% Flashing Cutsom Settings\";\r\n case StreamState.LOAD_VIDEO_SRC:\r\n return \"99% Starting Engine\";\r\n default:\r\n return \"loading\";\r\n }\r\n };\r\n\r\n const [currentColumnHeight, setCurrentColumnHeight] = useState(getMobileColumnHeight());\r\n const [contentHeight, setContentHeight] = useState(() => getContentHeight());\r\n\r\n const { rotate, zoom, focus, loadingGif, rotateGif, zoomGif, focusGif, displayProp, showFocus, showRotate, showZoom } = useWaitingroom({ brand, isXBow, isMobile, isStreet });\r\n\r\n const rotateVideoRef = useRef(null);\r\n const zoomVideoRef = useRef(null);\r\n const focusVideoRef = useRef(null);\r\n\r\n useEffect(() => {\r\n if (rotateVideoRef.current && zoomVideoRef.current && focusVideoRef.current) {\r\n if (displayProp === showRotate) {\r\n rotateVideoRef!.current!.play();\r\n zoomVideoRef!.current!.pause();\r\n focusVideoRef!.current!.pause();\r\n }\r\n\r\n if (displayProp === showZoom) {\r\n zoomVideoRef!.current!.play();\r\n rotateVideoRef!.current!.pause();\r\n focusVideoRef!.current!.pause();\r\n }\r\n\r\n if (displayProp === showFocus) {\r\n focusVideoRef!.current!.play();\r\n zoomVideoRef!.current!.pause();\r\n rotateVideoRef!.current!.pause();\r\n }\r\n }\r\n }, [displayProp]);\r\n\r\n const checkDisplay = useMemo(() => {\r\n return {\r\n showRotate: displayProp === showRotate,\r\n showZoom: displayProp === showZoom,\r\n showFocus: displayProp === showFocus,\r\n };\r\n }, [displayProp]);\r\n\r\n useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n handleResize();\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n };\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n \r\n

{t(`waitingroom.headerText.${isXBow ? \"car\" : \"bike\"}`)}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n

{t(\"waitingroom.barHeaderTextRotate\")}

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {!isMobile ?

{t(\"waitingroom.Mouse1Text\")}

:

{t(\"waitingroom.Finger1Text\")}

}
\r\n
\r\n
\r\n \"rotate_mouse_gif\"\r\n
\r\n
\r\n
\r\n
\r\n \r\n

{t(\"waitingroom.barHeaderTextZoom\")}

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {!isMobile ?

{t(\"waitingroom.Mouse2Text\")}

:

{t(\"waitingroom.Finger2Text\")}

}
\r\n
\r\n
\r\n \"zoom_mouse_gif\"\r\n
\r\n
\r\n
\r\n
\r\n \r\n

{t(\"waitingroom.barHeaderTextFocus\")}

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {!isMobile ?

{t(\"waitingroom.Mouse3Text\")}

:

{t(\"waitingroom.Finger3Text\")}

}
\r\n
\r\n
\r\n \"focus_mouse_gif\"\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"loading..\"\r\n
\r\n
\r\n \r\n

{setCurrentLoadingState()}

\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(WaitingRoom);\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Screenshot: React.FunctionComponent = () => {\r\n return (\r\n \r\n Screenshot Icon\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Screenshot;\r\n","import React, { useEffect, useMemo, useState } from \"react\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport SoundOn from \"../../../assets/icons/sound_on\";\r\nimport SoundOff from \"../../../assets/icons/sound_off\";\r\nimport PDF from \"../../../assets/icons/pdf\";\r\nimport { Share } from \"@material-ui/icons\";\r\nimport Screenshot from \"../../../assets/icons/screenshot_ktm\";\r\nimport CdcLogin from \"../cdc/CdcLogin\";\r\nimport { getBrandLogoSvgComponent } from \"../../../redux/reducers/applicationSettings\";\r\nimport { CircularProgress } from \"@material-ui/core\";\r\nimport { StreamState } from \"../../../lib/streaming/core\";\r\n\r\nexport interface TechnicalDetailsProps {\r\n engineReady: boolean;\r\n loggedIn: boolean;\r\n soundON: boolean;\r\n setSoundON: (soundONOff: boolean) => void;\r\n sendSoundOnOff: (soundONOff: boolean) => void;\r\n isPDFBusy: boolean;\r\n takeScreenshotAndDownloadPDF: (onStartedCallback?: () => void, onFinishedCallback?: () => void) => void;\r\n shareConfiguration: () => void;\r\n takeScreenshot: () => void;\r\n onSaveSuccess: () => void;\r\n currentStreamState: StreamState;\r\n}\r\n\r\ntype AllProps = StateManagementProps & WithNamespaces & TechnicalDetailsProps;\r\n\r\nconst TechnicalDetails3D: React.FunctionComponent = (props) => {\r\n const {\r\n t,\r\n selectedModel,\r\n isXBow,\r\n engineReady,\r\n loggedIn,\r\n setSoundON,\r\n sendSoundOnOff,\r\n soundON,\r\n isPDFBusy,\r\n applicationSettings,\r\n takeScreenshotAndDownloadPDF,\r\n shareConfiguration,\r\n takeScreenshot,\r\n onSaveSuccess,\r\n currentStreamState,\r\n } = props;\r\n\r\n const brandSvg = getBrandLogoSvgComponent(applicationSettings.Brand);\r\n\r\n const onDownloadClicked = (event) => {\r\n takeScreenshotAndDownloadPDF();\r\n };\r\n\r\n const renderStreamingState = () => {\r\n let svgClass = \"\";\r\n let streamingStatus = \"\";\r\n switch (currentStreamState) {\r\n case StreamState.INIT_DONE:\r\n svgClass = \"svg-done\";\r\n streamingStatus = \"stream connected\";\r\n break;\r\n case StreamState.BITRATE_DROPPED:\r\n svgClass = \"svg-dropped\";\r\n streamingStatus = \"slow connection\";\r\n break;\r\n }\r\n\r\n return (\r\n \r\n \r\n {streamingStatus}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

\r\n {selectedModel.Name}\r\n

\r\n
\r\n\r\n
\r\n\r\n
\r\n {!isXBow && (\r\n <>\r\n {engineReady && loggedIn && (\r\n {\r\n setSoundON(!soundON);\r\n sendSoundOnOff(!soundON);\r\n }}\r\n className={`mute-button ${soundON ? \"active\" : \"inactive\"}`}\r\n >\r\n {soundON ? : }\r\n \r\n )}\r\n
\r\n \r\n )}\r\n {!isPDFBusy ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n\r\n shareConfiguration()}>\r\n \r\n \r\n {applicationSettings.CdcApplicationSettings.CdcEnabled && }\r\n takeScreenshot()}>\r\n \r\n \r\n {/*
{renderStreamingState()}
*/}\r\n \r\n \r\n {brandSvg}\r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TechnicalDetails3D);\r\n","import React, { useEffect } from \"react\";\r\nimport { Part } from \"../../parts/PartsList\";\r\nimport Minus from \"../../../assets/icons/minus\";\r\nimport { ConfigurationState } from \"../../../redux/reducers/configuration\";\r\nimport formatter from \"../../../utils/formatter\";\r\nimport { Price } from \"../../../models/vehicle\";\r\nimport Minus3D from \"../../../assets/icons/minus3D\";\r\nimport { StateManagementProps } from \"../../../utils/addReduxProps\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport { removePart } from \"../../../utils/partsHelpers\";\r\n\r\nexport interface SelectedPartsListProps {\r\n parts: Part[];\r\n configurationState: ConfigurationState;\r\n totalPrice?: Price;\r\n isMobile?: boolean;\r\n}\r\n\r\ntype AllProps = SelectedPartsListProps & StateManagementProps & WithNamespaces;\r\n\r\nexport const SelectedPartsList: React.FunctionComponent = (props) => {\r\n const { parts, isXBow, is3DMode, isMobile } = props;\r\n\r\n return is3DMode ? (\r\n <>\r\n {parts.map((part) => {\r\n return (\r\n <>\r\n
\r\n
{part.Name}
\r\n {part.IsColorPart && (
{part.Description}
)}\r\n {!part.IsColorPart && (\r\n <>\r\n
Ref: {part.PartId}
\r\n
\r\n {formatter.currency(part.Price, isXBow)}\r\n
\r\n
removePart(part)}>\r\n \r\n Remove\r\n \r\n \r\n
\r\n \r\n )}\r\n
\r\n {parts.length !== 1 && !isMobile && (\r\n
\r\n )}\r\n \r\n );\r\n })}\r\n \r\n ) : (\r\n
\r\n {parts.map((part) => {\r\n return (\r\n
\r\n
{part.Name}
\r\n
removePart(part)}>\r\n \r\n
\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n};\r\n\r\nexport default SelectedPartsList;\r\n","import { useEffect, useState } from \"react\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport { generateScreenshotForPDFGeneration, getAppliedPartsCount, getIsMobile, sendConfigurationToDealer } from \"../../utils/helpers\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport React from \"react\";\r\nimport SelectedPartsList from \"./selectedPartsList/SelectedPartsList\";\r\nimport ArrowHead from \"../../assets/icons/arrowHead\";\r\nimport formatter from \"../../utils/formatter\";\r\nimport { Part } from \"../parts/PartsList\";\r\nimport { Price } from \"../../models/vehicle\";\r\nimport TechnicalDetails, { TechnicalDetailsProps } from \"./bottomSection/technicalDetails\";\r\nimport { connect } from \"react-redux\";\r\n\r\nexport interface ConfigOverviewProps {\r\n listOpen: boolean;\r\n setOverviewOpen?: (open: boolean) => void;\r\n isPortraitMode?: boolean;\r\n}\r\n\r\ntype AllProps = StateManagementProps & WithNamespaces & ConfigOverviewProps & TechnicalDetailsProps;\r\n\r\nexport const ConfigurationOverview3D: React.FunctionComponent = (props) => {\r\n const { t, appliedParts, listOpen, applicationSettings, setOverviewOpen, totalPrice, overview, isXBow, isPortraitMode } = props;\r\n\r\n const brand = applicationSettings.Brand;\r\n\r\n const getInnerHeight = (open) => {\r\n let windowInnerheight = window.innerHeight;\r\n if (window.innerWidth < 1024) {\r\n windowInnerheight = (windowInnerheight / 3) * 2.5;\r\n }\r\n if (open) {\r\n let summary = document.getElementById(\"summary-button-section\");\r\n if (summary) {\r\n let summaryHeight = summary.offsetHeight;\r\n return windowInnerheight - summaryHeight + \"px\";\r\n }\r\n return windowInnerheight + \"px\";\r\n } else {\r\n let header = document.getElementById(\"overview-header\");\r\n if (header) {\r\n let headerheight = header.offsetHeight;\r\n return headerheight + \"px\";\r\n } else {\r\n return 68 + \"px\";\r\n }\r\n }\r\n };\r\n\r\n const [innerOverviewHeight, getInnerOverviewHeight] = useState(getInnerHeight(listOpen));\r\n const [isMobile, setIsMobile] = useState(getIsMobile());\r\n const [showPPPrice, setShowPPPrice] = useState(false);\r\n\r\n const setInnerHeight = () => {\r\n getInnerOverviewHeight(getInnerHeight(listOpen));\r\n };\r\n\r\n const setIsMobileState = () => {\r\n setIsMobile(getIsMobile());\r\n };\r\n\r\n const handleResize = () => {\r\n setInnerHeight();\r\n setIsMobileState();\r\n };\r\n\r\n const completeConfigurationClick = () => {\r\n if (setOverviewOpen) {\r\n getInnerOverviewHeight(getInnerHeight(false));\r\n setOverviewOpen && setOverviewOpen(false);\r\n }\r\n\r\n sendConfigurationToDealer(props);\r\n };\r\n\r\n useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n\r\n getInnerOverviewHeight(getInnerHeight(listOpen));\r\n setIsMobileState();\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n setShowPPPrice(Boolean(totalPrice && overview.Vehicle.Hero.Price && totalPrice.Value !== overview.Vehicle.Hero.Price.Value));\r\n }, [totalPrice]);\r\n\r\n const toggleList = () => {\r\n if (setOverviewOpen) {\r\n getInnerOverviewHeight(getInnerHeight(!listOpen));\r\n setOverviewOpen(!listOpen);\r\n }\r\n };\r\n\r\n const getAppliedPowerPartsPrice = () => {\r\n let ppPrice = 0;\r\n let currency = \"\";\r\n appliedParts.forEach((part: Part) => {\r\n if (currency === \"\" && part.Price && part.Price.CurrencySymbol) {\r\n currency = part.Price.CurrencySymbol;\r\n }\r\n if (part.Price && part.Price.Value) {\r\n ppPrice += part.Price.Value;\r\n }\r\n });\r\n const priceElement: Price = {\r\n CurrencySymbol: currency,\r\n Value: ppPrice,\r\n };\r\n\r\n return <>{formatter.currency(priceElement)};\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n {!isXBow && <>{getAppliedPartsCount()}}\r\n\r\n {!isXBow ? <>{t(\"configuration.summary.summary_message.\" + brand)} : <>Overview}\r\n
\r\n
\r\n {!listOpen && {formatter.currency(totalPrice, isXBow)}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n {!isXBow && (\r\n
\r\n {(applicationSettings.Brand === \"KTM\" || isMobile) &&
}\r\n\r\n
\r\n
\r\n
\r\n {brand === \"KTM\" ? <>Powerparts : <>Accessories}\r\n
\r\n
{getAppliedPowerPartsPrice()}
\r\n
\r\n
\r\n {totalPrice && (\r\n <>\r\n
Total
\r\n
{formatter.currency(totalPrice)}
\r\n \r\n )}\r\n
\r\n
\r\n
\r\n )}\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {(isXBow || applicationSettings.DealerSearch3DEnabled) && (\r\n {\r\n //Set the screenshot to session storage here\r\n const promise = generateScreenshotForPDFGeneration(!!isPortraitMode, getIsMobile(), document.getElementById(\"stream\") as HTMLVideoElement);\r\n promise &&\r\n promise.then((data) => {\r\n try {\r\n if (sessionStorage) {\r\n sessionStorage.removeItem(\"pdfScreenshot\");\r\n sessionStorage.setItem(\"pdfScreenshot\", data);\r\n }\r\n } catch (e) {\r\n console.log(\"Error while setting pdfScreenshot in session storage\", e);\r\n }\r\n });\r\n completeConfigurationClick();\r\n }}\r\n >\r\n Complete configuration\r\n \r\n )}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ConfigurationOverview3D);\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst CheckOk: React.FunctionComponent = () => {\r\n return (\r\n \r\n Check Icon\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CheckOk;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { translate, WithNamespaces } from \"react-i18next\";\r\nimport { CircularProgress } from \"@material-ui/core\";\r\nimport { ShowDialogProps } from \"../../../redux/actions\";\r\nimport { DialogTypes } from \"../../../enums/dialogTypes\";\r\nimport { hashCode, handlePDFData } from \"../../../utils/helpers\";\r\nimport PDF from \"../../../assets/icons/pdf\";\r\nimport Share from \"../../../assets/icons/share\";\r\nimport http from \"../../../services/http\";\r\nimport ConfigurationSummaryHeader from \"./ConfigurationSummaryHeader\";\r\nimport CdcLogin from \"../cdc/CdcLogin\";\r\nimport CheckOk from \"../../../assets/icons/check_ok\";\r\nimport { Is3DProp } from \"./ConfigurationSummary\";\r\nimport { StateManagementProps } from \"../../../utils/addReduxProps\";\r\nimport { RouteComponentProps } from \"react-router\";\r\n\r\nexport interface ScreenshotPDFProps {\r\n takeScreenshotAndDownloadPDF?: (onStartedCallback?: () => void, onFinishedCallback?: () => void) => void;\r\n}\r\n\r\nexport type ConfigurationCompletionProps = StateManagementProps & WithNamespaces & Is3DProp & RouteComponentProps<{ modelId: string }> & ScreenshotPDFProps;\r\n\r\nexport const ConfigurationCompletion: React.FunctionComponent = props => {\r\n const { t, showDialog, applicationSettings, takeScreenshotAndDownloadPDF, updatesetShowSummary, dealerInquirySent, setDealerInquirySent, history, is3DMode, selectedModel, parts, currentVariation } =\r\n props;\r\n\r\n enum PDF_STATUS {\r\n Initial,\r\n Processing,\r\n Done,\r\n }\r\n\r\n const [pdfStatus, setPdfStatus] = useState(PDF_STATUS.Initial);\r\n\r\n const brand = applicationSettings.Brand;\r\n\r\n const [loaded, setLoaded] = useState(true);\r\n const [shareClicked, setShareClicked] = useState(false);\r\n const [saveClicked, setSaveClicked] = useState(false);\r\n\r\n // use useEffect to access lifecycle methods, as componentDidMount etc. are not available on function components.\r\n useEffect(() => {\r\n return () => {\r\n if (history.action === \"POP\") {\r\n // Code here will run when back button fires. Note that it's after the `return` for useEffect's callback; code before the return will fire after the page mounts, code after when it is about to unmount.\r\n console.debug(\"BROWSER BACK\", history.location.pathname);\r\n // updatesetShowSummary && updatesetShowSummary();\r\n\r\n if (dealerInquirySent) {\r\n setDealerInquirySent(false);\r\n }\r\n }\r\n if (history.location.pathname === \"/main\") {\r\n if (dealerInquirySent) {\r\n setDealerInquirySent(false);\r\n }\r\n }\r\n };\r\n }, []);\r\n\r\n /**\r\n * This function handles the pdf download for all the summary pages and the summary header\r\n * if the header is used set the ignoreState to true so that the following summary page is not messed up\r\n * TOOD needs more cleanup\r\n */\r\n const downloadPdf = (ignoreState: boolean) => {\r\n onStartedCallback();\r\n let partsHash: string = hashCode(selectedModel, currentVariation, parts) as string;\r\n setLoaded(false);\r\n http\r\n .downloadConfigurationSummaryPdf(partsHash)\r\n .then(response => {\r\n handlePDFData(response);\r\n })\r\n .finally(() => {\r\n setLoaded(true);\r\n !ignoreState && onFinishedCallback();\r\n });\r\n };\r\n\r\n const shareConfiguration = () => {\r\n const dialogProps: ShowDialogProps = {\r\n title: `${t(\"dialogs.shareConfiguration.title\")}`,\r\n data: {},\r\n contentType: DialogTypes.shareConfiguration,\r\n };\r\n showDialog(dialogProps);\r\n props.onShareLinkSuccess && props.onShareLinkSuccess();\r\n };\r\n\r\n const handlePDFClick = () => {\r\n if (is3DMode) {\r\n takeScreenshotAndDownloadPDF && takeScreenshotAndDownloadPDF(onStartedCallback, onFinishedCallback);\r\n } else {\r\n downloadPdf && downloadPdf(false);\r\n }\r\n };\r\n\r\n const onStartedCallback = () => {\r\n setPdfStatus(PDF_STATUS.Processing);\r\n };\r\n\r\n const onFinishedCallback = () => {\r\n setPdfStatus(PDF_STATUS.Done);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n {brand === \"KTM\" ? (\r\n <>\r\n
{t(\"configuration.summary.screen.title_one\")}
\r\n
{t(\"configuration.summary.screen.title_two\")}
\r\n \r\n ) : (\r\n
{t(\"configuration.summary.screen.title_hqv\")}
\r\n )}\r\n
\r\n\r\n
\r\n
{t(\"configuration.summary.screen.text_desc_one\")}
\r\n
{t(\"configuration.summary.screen.text_desc_two\")}
\r\n
\r\n\r\n \r\n
\r\n {pdfStatus.valueOf() !== PDF_STATUS.Processing.valueOf() ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n\r\n
{pdfStatus === PDF_STATUS.Done ? t(\"configuration.summary.screen.pdfDownloaded\") : t(\"configuration.summary.screen.pdfDownload\")}
\r\n
\r\n\r\n
\r\n {\r\n setShareClicked(true);\r\n shareConfiguration();\r\n }}\r\n >\r\n \r\n \r\n
{!shareClicked ? t(\"configuration.summary.screen.share\") : t(\"configuration.summary.screen.shared\")}
\r\n
\r\n\r\n {applicationSettings.CdcApplicationSettings.CdcEnabled && (\r\n
\r\n {\r\n !saveClicked && setSaveClicked(true);\r\n }}\r\n />\r\n
{!saveClicked ? t(\"configuration.summary.screen.save\") : t(\"configuration.summary.screen.saved\")}
\r\n
\r\n )}\r\n
\r\n\r\n
\r\n {\r\n updatesetShowSummary && updatesetShowSummary();\r\n setDealerInquirySent(false);\r\n history.push(\"/main\");\r\n }}\r\n >\r\n {t(\"configuration.summary.screen.newconfiguration\")}\r\n
\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default translate()(ConfigurationCompletion);\r\n","import { useEffect, useState } from \"react\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport { StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport Rendering3D from \"./3DRendering/rendering3D\";\r\nimport CdcLogin, { loadCDCPluginScript, makeCancelable, isReady } from \"./cdc/CdcLogin\";\r\nimport React from \"react\";\r\nimport CategoryContainer from \"../categories/CategoryContainer\";\r\nimport { debug, generateRawScreenshot, generateScreenshotForPDFGeneration, getIsMobile, hashCodeScreenShot } from \"../../utils/helpers\";\r\nimport Tools, { ToolProps } from \"./3Dtools/tools\";\r\nimport Header, { HeaderProps } from \"../shared/Header\";\r\nimport WaitingRoom from \"./3DRendering/waitingRoom\";\r\nimport { Part } from \"../parts/PartsList\";\r\nimport { RouteComponentProps } from \"react-router\";\r\nimport { renderParts, sendMessage, socketMessagesCallbacks, StreamState } from \"../../lib/streaming/core\";\r\nimport http from \"../../services/http\";\r\nimport contentDisposition from \"content-disposition\";\r\nimport { saveAs } from \"file-saver\";\r\nimport {\r\n CustomColorConfigurationsPayload,\r\n ToolsConfigurationPayload,\r\n UpdateConfigurationPayload,\r\n sendBitrateDroppedTelemetryData,\r\n shareConfiguration as shareConfigurationURL,\r\n} from \"../../services/http/real\";\r\nimport { updateConfiguration } from \"./updateConfiguration\";\r\nimport { ShowDialogProps } from \"../../redux/actions\";\r\nimport { DialogTypes } from \"../../enums/dialogTypes\";\r\nimport TechnicalDetails3D, { TechnicalDetailsProps } from \"./bottomSection/technicalDetails\";\r\nimport Plus3D from \"../../assets/icons/plus3D\";\r\nimport ConfigurationOverview3D from \"./configurationOverview3D\";\r\nimport { getBrandLogoSvgComponent } from \"../../redux/reducers/applicationSettings\";\r\nimport ConfigurationCompletion from \"./configurationSummary/ConfigurationCompletion\";\r\nimport { ColorVarations } from \"../../models/vehicle\";\r\nimport ColorSelection, { ColorSelectionProps } from \"../vehicle-overview/colorSelection\";\r\nimport { HEROLVL_DONE, INTROGO_COMMAND } from \"../../lib/streaming/commands\";\r\n\r\nexport interface Configuration3DProps {\r\n itemClicked?: () => void;\r\n showDetails?: () => void;\r\n setUserInactiveFunction: (inactivity: boolean) => void;\r\n isPortraitMode: boolean;\r\n userInactive: boolean;\r\n variationCode: string;\r\n}\r\n\r\ntype AllConfigurationView3DProps = StateManagementProps & WithNamespaces & Configuration3DProps & RouteComponentProps;\r\n\r\nexport const ConfigurationView3D: React.FunctionComponent = (props) => {\r\n const {\r\n t,\r\n selectedModel,\r\n configurationState,\r\n appliedParts,\r\n showDialog,\r\n toggleSummary,\r\n applicationSettings,\r\n overview,\r\n isXBow,\r\n setIsXBow,\r\n currentVariation,\r\n dealerInquirySent,\r\n setUserInactiveFunction,\r\n isPortraitMode,\r\n userInactive,\r\n cdcSettings,\r\n setCdcSettings,\r\n userDidTimeoutInStream,\r\n history,\r\n setUserDidTimeoutInStream,\r\n setVehicleVariation,\r\n variationCode,\r\n preselectedVariationCode\r\n } = props;\r\n\r\n const debugMessagesON = false; //to enable debug messages\r\n\r\n const [renderingCommands, setRenderingCommands] = useState(null);\r\n const [createConfigurationState, setCreateConfigurationState] = useState({\r\n exists: configurationState.configuration.hasOwnProperty(\"ConfigurationId\"),\r\n loading: false,\r\n });\r\n const [cdcLoaded, setCDCLoaded] = useState(false);\r\n const [loggedIn, setLoggedIn] = useState(false);\r\n const [engineReady, setEngineReady] = useState(false); //show Tools, Categories, Overview & Tec Details after loading stream\r\n const [catsOpen, setCatsOpen] = useState(false);\r\n const [toolsOpen, setToolsOpen] = useState(false);\r\n const [listOpen, setListOpen] = useState(false);\r\n const [colorsOpen, setColorsOpen] = useState(false);\r\n const [isPDFBusy, setIsPDFBusy] = useState(false);\r\n const [toolsData, setToolsData] = useState({});\r\n const [colorData, setColorData] = useState({});\r\n const [soundON, setSoundON] = useState(false);\r\n const [ColorArray, setColorArray] = React.useState([]);\r\n const [bitrateDroppedEvent, setBitrateDroppedEvent] = useState({});\r\n const [initialColorSet, setInitialColorSet] = useState(false);\r\n\r\n //keeps the already rendered parts as array\r\n const emptyList: Part[] = [];\r\n const [renderedParts, setRenderedParts] = useState(emptyList);\r\n const [userId, setUserId] = useState(\"\"); // the user id configuring\r\n\r\n const [currentStreamState, setCurrentStreamState] = useState(StreamState.INITIALIZING);\r\n\r\n // Control UI\r\n const [displayLoginScreen, setDisplayLoginScreen] = useState(false);\r\n const [displayWaitingroom, setDisplayWaitingroom] = useState(false);\r\n const [displaySummary, setDisplaySummary] = useState(false);\r\n const [displayToolsAndPowerPartsAndBottomSection3d, setDisplayToolsAndPowerPartsAndBottomSection3d] = useState(false);\r\n const [isMobile, setIsMobile] = useState(() => getIsMobile());\r\n\r\n const setIsMobileState = () => {\r\n setIsMobile(getIsMobile());\r\n };\r\n\r\n useEffect(() => {\r\n handleBitrateDropped(bitrateDroppedEvent);\r\n }, [bitrateDroppedEvent]);\r\n\r\n useEffect(() => {\r\n makeCancelable(loadCDCPluginScript(applicationSettings)).promise.then(() => {\r\n if (isReady()) {\r\n // this is the fallback version if the cdc has been loaded previously. the\r\n setCDCLoaded(true);\r\n }\r\n if (ColorArray.length === 0) {\r\n setColorArray(overview.Variations);\r\n }\r\n if(preselectedVariationCode.code !== \"\") {\r\n overview.Variations.forEach(Variation => {\r\n if(Variation.Code === preselectedVariationCode.code) {\r\n changeBikeColor(Variation.Code, Variation.ColorCode);\r\n }\r\n });\r\n }\r\n \r\n \r\n });\r\n\r\n const onResize = () => {\r\n setIsMobileState();\r\n };\r\n window.addEventListener(\"resize\", onResize);\r\n setIsXBow(Boolean(configurationState.configuration.VariationCode === \"X3001U0\"));\r\n setIsMobile(getIsMobile());\r\n\r\n //@ts-ignore\r\n window.onGigyaServiceReady = () => {\r\n // this is the callback from the CDC itselt - TOOD move to library - this is only called once when the cdc has not been loaded previously.\r\n const gigyaobject =\r\n (window as any).gigya &&\r\n (window as any).gigya.accounts &&\r\n (window as any).gigya.accounts.getAccountInfo &&\r\n (window as any).gigya.accounts.getAccountInfo({\r\n callback: (callbackObject) => {\r\n updateUserId(callbackObject.UID as string);\r\n },\r\n });\r\n setCDCLoaded(true);\r\n };\r\n // this is a fallback solution\r\n (window as any).gigya &&\r\n (window as any).gigya.accounts &&\r\n (window as any).gigya.accounts.getAccountInfo &&\r\n (window as any).gigya.accounts.getAccountInfo({\r\n callback: (callbackObject) => {\r\n updateUserId(callbackObject.UID as string);\r\n setCDCLoaded(true);\r\n },\r\n });\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", onResize);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n setDisplayLoginScreen(!loggedIn && cdcLoaded);\r\n setDisplayWaitingroom(loggedIn && !engineReady);\r\n setDisplayToolsAndPowerPartsAndBottomSection3d(loggedIn && engineReady && !dealerInquirySent);\r\n setDisplaySummary(dealerInquirySent);\r\n }, [engineReady, cdcLoaded, loggedIn, dealerInquirySent]);\r\n\r\n useEffect(() => {\r\n if (cdcLoaded) {\r\n checkCDCStatus();\r\n }\r\n }, [cdcLoaded]);\r\n\r\n useEffect(() => {\r\n if (userInactive) {\r\n setListOpen(false);\r\n setCatsOpen(false);\r\n setToolsOpen(false);\r\n }\r\n }, [userInactive]);\r\n\r\n enum Tiltshift {\r\n None = 0,\r\n ShiftToLeft = 1,\r\n ShiftToRight = 2,\r\n }\r\n\r\n const [tiltShiftState, setTiltShiftState] = useState(Tiltshift.None);\r\n\r\n const changeBikeColor = (VariationCode: string, ColorCode: string) => {\r\n //update configuration\r\n setVehicleVariation(VariationCode);\r\n const data: UpdateConfigurationPayload = {\r\n ColorCode: ColorCode,\r\n VariationCode: VariationCode,\r\n newVariation: VariationCode,\r\n };\r\n updateConfiguration(data);\r\n\r\n //load new bike\r\n sendMessage(\"herolvl \" + VariationCode);\r\n socketMessagesCallbacks[HEROLVL_DONE] = (message: string) => {\r\n if (message === HEROLVL_DONE) {\r\n //load selected pp\r\n resendAppliedPartsForRendering();\r\n }\r\n };\r\n };\r\n\r\n const checkUserLogin = () => {\r\n cdcLoaded && checkCDCStatus();\r\n };\r\n\r\n const onStreamStateChanged = (streamState: StreamState, event?: any) => {\r\n if (debugMessagesON) {\r\n debug(\"onStreamStateChanged\", streamState);\r\n }\r\n setCurrentStreamState(streamState);\r\n switch (streamState) {\r\n case StreamState.INIT_DONE:\r\n setEngineReady(true);\r\n break;\r\n case StreamState.INITIALIZING:\r\n setEngineReady(false);\r\n break;\r\n case StreamState.BROKEN:\r\n setEngineReady(false);\r\n break;\r\n case StreamState.ACCEPTING:\r\n setEngineReady(false);\r\n resendAppliedPartsForRendering();\r\n break;\r\n case StreamState.BITRATE_DROPPED:\r\n setBitrateDroppedEvent(event);\r\n break;\r\n }\r\n };\r\n\r\n const handleSummaryClosing = () => {\r\n if (debugMessagesON) debug(\"handleSummaryClosing\");\r\n setDisplayToolsAndPowerPartsAndBottomSection3d(true);\r\n setDisplaySummary(false);\r\n };\r\n\r\n const checkCDCStatus = () => {\r\n if ((window as any).gigya && (window as any).gigya.hasSession) {\r\n (window as any).gigya\r\n .hasSession()\r\n .then(function (sessionExists: boolean) {\r\n setCDCLoaded(!sessionExists);\r\n setLoggedIn(sessionExists);\r\n setCdcSettings(!sessionExists);\r\n setDisplayLoginScreen(!sessionExists);\r\n })\r\n .catch((error: any) => {\r\n setCreateConfigurationState({\r\n exists: false,\r\n loading: false,\r\n });\r\n });\r\n }\r\n };\r\n\r\n const updateUserId = (userId: string) => {\r\n setUserId(userId);\r\n };\r\n\r\n function handleBitrateDropped(event?: any) {\r\n event && engineReady && sendBitrateDroppedTelemetryData(userId, event.currentBitrate, isMobile).then((x) => {});\r\n }\r\n\r\n function handleSummaryClick(isXBow?: boolean) {\r\n if (isXBow) {\r\n setListOpen(false);\r\n return;\r\n }\r\n toggleSummary(true);\r\n setDisplaySummary(true);\r\n }\r\n\r\n const updateRenderingCommands = (renderingCommandList: string[] | null) => {\r\n renderingCommandList && setRenderingCommands(renderingCommandList);\r\n };\r\n\r\n useEffect(() => {\r\n /** this helps to prevent the parts being initially rendered the real way when loading a configuration */\r\n if (engineReady) {\r\n sendPartsForRendering(appliedParts, renderedParts, engineReady);\r\n }\r\n }, [appliedParts]);\r\n\r\n useEffect(() => {\r\n loggedIn && updateConfiguration(props, toolsData, colorData);\r\n }, [toolsData, colorData]);\r\n\r\n /**\r\n * Handle tilt shifting on menu state change\r\n */\r\n useEffect(() => {\r\n engineReady && handleTiltShifting();\r\n }, [toolsOpen, catsOpen, listOpen]);\r\n\r\n useEffect(() => {\r\n engineReady && !isMobile && sendMessage(\"tiltsft \" + tiltShiftState);\r\n }, [tiltShiftState]);\r\n\r\n useEffect(() => {\r\n if (currentVariation === \"\") {\r\n setVehicleVariation(variationCode);\r\n }\r\n }, [currentVariation]);\r\n\r\n /**\r\n * Resend again the full configuration\r\n */\r\n const resendAppliedPartsForRendering = () => {\r\n if (debugMessagesON) debug(\"resend appliedParts\");\r\n setRenderedParts(emptyList); //remove all parts, because on reconnect they are not rendered\r\n sendPartsForRendering(appliedParts, emptyList, false);\r\n sendMessage(\"perspct default\");\r\n };\r\n\r\n /**\r\n * Tilt Shift Commandas depending on UI Menu Open State wh\r\n */\r\n const handleTiltShifting = () => {\r\n toolsOpen && !catsOpen && !listOpen && setTiltShiftState(Tiltshift.ShiftToRight); // Tools Menu Open\r\n !toolsOpen && catsOpen && !listOpen && setTiltShiftState(Tiltshift.ShiftToLeft); // Color Selection/PowerPart Open\r\n !toolsOpen && !catsOpen && !listOpen && setTiltShiftState(Tiltshift.None); // Menus Closed\r\n listOpen && setTiltShiftState(Tiltshift.ShiftToLeft); // Menu Drop UP Open\r\n };\r\n\r\n // Send applied parts for 3d rendering\r\n const sendPartsForRendering = (appliedParts: Part[], renderedParts: Part[], engineReadyState: boolean) => {\r\n if (debugMessagesON) debug(\"appliedParts changed\", appliedParts);\r\n let renderSettings = overview.RenderSettings;\r\n\r\n const mapToPartWithCategory = (acc, cur) => {\r\n const powerPart3D = renderSettings!.PowerParts.List.find((pp) => pp.Id === cur.PartId);\r\n if (powerPart3D) {\r\n const categories = powerPart3D.Category.split(\",\").map((p) => p.trim());\r\n return [\r\n ...acc,\r\n ...categories.map((c, index) => ({\r\n ...cur,\r\n Category: c,\r\n Value: powerPart3D.Value,\r\n Silent: index > 0,\r\n })),\r\n ];\r\n } else {\r\n acc.push(cur);\r\n return acc;\r\n }\r\n };\r\n\r\n // TODO fix type\r\n const newAddedParts: any[] = appliedParts.filter((p) => renderedParts.indexOf(p) < 0).reduce(mapToPartWithCategory, []);\r\n\r\n const removedParts: {\r\n Category?: string;\r\n Silent?: boolean;\r\n [key: string]: any;\r\n }[] = renderedParts\r\n .filter((p) => appliedParts.indexOf(p) < 0)\r\n .reduce(mapToPartWithCategory, [])\r\n .filter((p) => !newAddedParts.find((n) => n.Category == p.Category));\r\n\r\n const promises = removedParts.map((removedPart) => {\r\n if (removedPart.Category) {\r\n if (debugMessagesON) {\r\n debug(\"found matching part in the 3d rendering configuration\", removedPart);\r\n }\r\n return renderParts(`${removedPart.Category}`, \"default\", removedPart.Silent!);\r\n } else {\r\n // for test only\r\n if (debugMessagesON) {\r\n debug(\"Cannot match applied part id with one from the 3d rendering confriguration. Send sample to 3d engine...\");\r\n }\r\n sendMessage(\"confopt mat default\");\r\n return Promise.resolve();\r\n }\r\n });\r\n\r\n Promise.all(promises).then(() => {\r\n newAddedParts.forEach((appliedPart) => {\r\n if (appliedPart.Category) {\r\n if (debugMessagesON) {\r\n debug(\"found matching part in the 3d rendering configuration\", appliedPart);\r\n }\r\n renderParts(\r\n `${appliedPart.Category}`,\r\n `${appliedPart.Value}`,\r\n engineReadyState ? appliedPart.Silent : true // do not use confcam when engine is not ready - this is for loading\r\n );\r\n } else {\r\n // for test only\r\n if (debugMessagesON) {\r\n debug(\"Cannot match applied part id with one from the 3d rendering confriguration. Send sample to 3d engine...\");\r\n }\r\n sendMessage(\"confopt mat =79012906200\");\r\n }\r\n });\r\n\r\n //copy the current array\r\n setRenderedParts([...appliedParts]);\r\n });\r\n };\r\n\r\n /**\r\n * Callback from the Tools Component to update the ConfigurationView3D about the tools sate\r\n */\r\n const sendToolData = (toolsConfiguration: ToolsConfigurationPayload) => setToolsData(toolsConfiguration);\r\n\r\n /**\r\n * Callback from the Color Component to update the ConfigurationView3D about the colors sate\r\n */\r\n const sendColorData = (colorData: CustomColorConfigurationsPayload) => setColorData(colorData);\r\n\r\n /**\r\n * Callback from the Tools component to render the selected tools.\r\n * @returns\r\n */\r\n const sendToolOption = (message: string, lighting?:string) => sendMessage(message, lighting);\r\n\r\n /**\r\n * Calls the HTTP Rest lib to update the configuration on the backend service.\r\n * @returns\r\n */\r\n const update3DConfiguration = () => {}; // TODO refactor\r\n\r\n /**\r\n * Saving the Configuration was triggered explicitly (save to motohub)\r\n * @returns\r\n */\r\n const onSaveSuccess = () => update3DConfiguration();\r\n\r\n /**\r\n * Callback from the ConfigurationSummary component when send to dealer was done\r\n * @returns\r\n */\r\n const onSendToDealerSuccess = () => handleSummaryClick(false);\r\n\r\n /**\r\n * Callback from the ConfigurationSummary component when send to self was done\r\n * @returns\r\n */\r\n const onSendSuccess = () => update3DConfiguration();\r\n\r\n /**\r\n * Handle the various menu open state changes\r\n */\r\n const toggleToolsMenuCallback = () => {\r\n setToolsOpen(() => !toolsOpen);\r\n setCatsOpen(false);\r\n setListOpen(false);\r\n };\r\n\r\n const togglePowerPartsMenuCallback = () => {\r\n setCatsOpen(() => !catsOpen);\r\n setToolsOpen(false);\r\n };\r\n\r\n const toggleColorSelectionMenuCallback = () => {\r\n setColorsOpen(() => !colorsOpen);\r\n setCatsOpen(() => !catsOpen);\r\n setToolsOpen(false);\r\n };\r\n\r\n const toggleOverviewSelectionMenuCallback = (open?: boolean) => {\r\n if (open !== undefined) {\r\n setListOpen(() => open);\r\n } else {\r\n setListOpen(() => !listOpen);\r\n }\r\n setCatsOpen(false);\r\n setToolsOpen(false);\r\n };\r\n\r\n const startedCallback = (callback?: () => void) => {\r\n setIsPDFBusy(true);\r\n callback && callback();\r\n };\r\n\r\n const finishedCallback = (callback?: () => void) => {\r\n setIsPDFBusy(false);\r\n callback && callback();\r\n };\r\n\r\n /**\r\n * This function handles the PDF screenshot functionality - it works for mobile and desktop\r\n * but the mobile version needs to be different because of the portrait mode.\r\n * @returns\r\n */\r\n const takeScreenshotAndDownloadPDF = (onStartedCallback?: () => void, onFinishedCallback?: () => void) => {\r\n startedCallback(onStartedCallback);\r\n\r\n const video = document.getElementById(\"stream\") as HTMLVideoElement;\r\n\r\n if (!video) {\r\n finishedCallback(onFinishedCallback);\r\n return;\r\n }\r\n\r\n const storePdfScreenshot = sessionStorage.getItem(\"pdfScreenshot\");\r\n\r\n if (storePdfScreenshot) {\r\n takeScreenshotAndDownloadPDFFunction(storePdfScreenshot, onFinishedCallback);\r\n } else {\r\n const promise = generateScreenshotForPDFGeneration(isPortraitMode, isMobile, video);\r\n //also check for sth in session storage here\r\n promise &&\r\n promise.then((screenshot) => {\r\n takeScreenshotAndDownloadPDFFunction(screenshot, onFinishedCallback);\r\n });\r\n }\r\n\r\n update3DConfiguration();\r\n };\r\n\r\n const takeScreenshotAndDownloadPDFFunction = (screenshot: string, onFinishedCallback?: () => void) => {\r\n let partsHash: string = selectedModel.ModelId + currentVariation;\r\n appliedParts.forEach((part: Part) => {\r\n partsHash += part.Images.Main;\r\n });\r\n partsHash = \"\" + hashCodeScreenShot(partsHash);\r\n\r\n http\r\n .downloadConfigurationSummaryPdfWithScreenshot(partsHash, screenshot)\r\n .then((response) => {\r\n var headers = response.headers;\r\n var headersArray = Object.entries(headers);\r\n var contentDispos: any;\r\n headersArray.forEach(([key, value]) => {\r\n if (key === \"content-disposition\") {\r\n contentDispos = value;\r\n }\r\n });\r\n\r\n var blob = response.data;\r\n var disposition = contentDisposition.parse(contentDispos);\r\n var fileName = disposition.parameters.filename ? disposition.parameters.filename : \"configuration.pdf\";\r\n saveAs(blob, fileName);\r\n })\r\n .finally(() => {\r\n finishedCallback(onFinishedCallback);\r\n });\r\n };\r\n\r\n /** Make screenshot of the 3D Video and add copyright to it */\r\n const takeScreenshot = () => {\r\n const video = document.getElementById(\"stream\") as HTMLVideoElement;\r\n let screenshotElement: HTMLElement;\r\n if (video) {\r\n if (isMobile && isPortraitMode) {\r\n screenshotElement = document.getElementById(\"screenshot-div-mobile-portrait-mode\") as HTMLDivElement;\r\n } else {\r\n screenshotElement = document.getElementById(\"screenshot-div\") as HTMLDivElement;\r\n }\r\n generateRawScreenshot(isPortraitMode, isMobile, screenshotElement, video, applicationSettings.Brand)!.then((base64Image) => {\r\n saveAs(base64Image, `screenshot-my-${applicationSettings.Brand}.png`);\r\n });\r\n }\r\n };\r\n\r\n const sendSoundOnOff = (soundON: boolean) => {\r\n if (soundON) {\r\n sendMessage(\"soundfx 1\");\r\n } else {\r\n sendMessage(\"soundfx 0\");\r\n }\r\n\r\n const video = document.getElementById(\"stream\") as HTMLVideoElement;\r\n\r\n if (video) {\r\n video.muted = !soundON;\r\n }\r\n };\r\n\r\n const shareConfiguration = () => {\r\n const dialogProps: ShowDialogProps = {\r\n title: `${t(\"dialogs.shareConfiguration.title\")}`,\r\n data: {},\r\n contentType: DialogTypes.shareConfiguration,\r\n };\r\n if (debugMessagesON) debug(\"shareConfiguration clicked\");\r\n showDialog(dialogProps);\r\n update3DConfiguration();\r\n };\r\n\r\n const getReturnUrl = async () => {\r\n return await shareConfigurationURL().then((res) => {\r\n return res.data.Url;\r\n });\r\n };\r\n\r\n const returnToConfiguration = async () => {\r\n let data = await getReturnUrl();\r\n setTimeout(() => {\r\n if (process.env.NODE_ENV == \"development\") {\r\n data = data.replace(\"5000\", \"5001\");\r\n }\r\n window.location.href = data;\r\n }, 600);\r\n };\r\n\r\n const selectedModelName = selectedModel.Name;\r\n\r\n const headerProps: HeaderProps = { loggedIn, cdcLoaded, engineReady, selectedModelName };\r\n\r\n const setToolsOpenFunc = toggleToolsMenuCallback;\r\n const toolProps: ToolProps = { toolsOpen, setToolsOpenFunc, sendToolOption, sendToolData };\r\n const technicalDetailProps: TechnicalDetailsProps = {\r\n engineReady,\r\n loggedIn,\r\n soundON,\r\n setSoundON,\r\n sendSoundOnOff,\r\n isPDFBusy,\r\n takeScreenshotAndDownloadPDF,\r\n shareConfiguration,\r\n takeScreenshot,\r\n onSaveSuccess,\r\n currentStreamState,\r\n };\r\n const colorSelectionProps: ColorSelectionProps = {\r\n ColorArray,\r\n changeBikeColor,\r\n };\r\n\r\n const brandSvg = getBrandLogoSvgComponent(applicationSettings.Brand);\r\n\r\n return (\r\n <>\r\n {!cdcSettings && loggedIn &&
}\r\n \r\n \r\n {brandSvg}\r\n \r\n \r\n\r\n {displayLoginScreen && cdcLoaded && }\r\n\r\n {displayToolsAndPowerPartsAndBottomSection3d && (\r\n <>\r\n

{selectedModelName}

\r\n \r\n \r\n \r\n )}\r\n\r\n {loggedIn && }\r\n\r\n {displayToolsAndPowerPartsAndBottomSection3d && (\r\n \r\n )}\r\n\r\n {((displayToolsAndPowerPartsAndBottomSection3d && overview.RenderSettings && overview.RenderSettings.Tools && overview.RenderSettings.Tools.ColorSelection) ||\r\n displayToolsAndPowerPartsAndBottomSection3d) && (\r\n
togglePowerPartsMenuCallback()}>\r\n {!isXBow ? t(`buttons.categories.${applicationSettings.Brand}`) : \"Customization\"}\r\n \r\n
\r\n )}\r\n\r\n {displayWaitingroom && !userDidTimeoutInStream && }\r\n\r\n {displayToolsAndPowerPartsAndBottomSection3d && (\r\n <>\r\n
\r\n
Powerparts
\r\n \r\n\r\n \r\n
\r\n \r\n )}\r\n\r\n {displaySummary && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {loggedIn && userDidTimeoutInStream && (\r\n
\r\n {\r\n setUserDidTimeoutInStream(false);\r\n setUserInactiveFunction(false);\r\n history.push(\"/main\");\r\n }}\r\n >\r\n {t(`history.header.chooseModel`)}\r\n \r\n \r\n \r\n
\r\n )}\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Finance: React.FunctionComponent = () => {\r\n return (\r\n \r\n Finance Icon\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Finance;\r\n","import { useEffect, useState } from \"react\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport { getAppliedPartsCount, getIsMobileXS, sendConfigurationToDealer } from \"../../utils/helpers\";\r\nimport { StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport React from \"react\";\r\nimport Finance from \"../../assets/icons/finance\";\r\nimport { Check, Close } from \"@material-ui/icons\";\r\nimport Menu, { MenuProps } from \"@material-ui/core/Menu\";\r\nimport { Button, withStyles } from \"@material-ui/core\";\r\nimport store from \"../../redux/store\";\r\nimport SelectedPartsList from \"./selectedPartsList/SelectedPartsList\";\r\nimport { noConflictingParts, removeNoConflictingParts } from \"../../redux/actions\";\r\nimport { AddPartPayload, RemovePartPayload } from \"../../services/http/real\";\r\nimport ArrowHead from \"../../assets/icons/arrowHead\";\r\n\r\nexport interface ConfigOverviewMenuProps {\r\n handleSummaryClick?: (isXBow?: boolean) => void;\r\n onSendToDealerSuccess?: () => void;\r\n}\r\n\r\ntype AllProps = StateManagementProps & WithNamespaces & ConfigOverviewMenuProps;\r\n\r\nexport const ConfigurationOverviewMenu: React.FunctionComponent = (props) => {\r\n const {\r\n t,\r\n appliedParts,\r\n handleSummaryClick, } = props;\r\n\r\n\r\n let portraitMode = Boolean(window.orientation === 0);\r\n\r\n const [financeAvailable] = useState(false);\r\n const [anchorAppliedEl, setAppliedAnchorEl] = useState(null);\r\n const scrollToFinance = React.createRef();\r\n const [isMobile, setIsMobile] = useState(()=>getIsMobileXS());\r\n\r\n const setIsMobileState = () => {\r\n setIsMobile(getIsMobileXS());\r\n }\r\n\r\n useEffect(() => {\r\n setIsMobileState();\r\n window.addEventListener(\"resize\", setIsMobileState);\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\",setIsMobileState);\r\n }\r\n }, []);\r\n\r\n \r\n\r\n const StyledMenu = withStyles({\r\n paper: {},\r\n })((props: MenuProps) => (\r\n \r\n ));\r\n\r\n function resetConflictingPartsStatus() {\r\n let sendPayload: AddPartPayload = {\r\n PartId: \"\",\r\n SelectedParts: [],\r\n RemoveParts: [],\r\n DryRun: false,\r\n };\r\n store.dispatch(noConflictingParts(sendPayload));\r\n let sendRemovePayload: RemovePartPayload = {\r\n PartId: \"\",\r\n RemoveParts: [],\r\n DryRun: false,\r\n };\r\n store.dispatch(removeNoConflictingParts(sendRemovePayload));\r\n }\r\n\r\n function handleClickApplied(event: React.MouseEvent) {\r\n resetConflictingPartsStatus();\r\n setAppliedAnchorEl(event.currentTarget);\r\n }\r\n\r\n const getAppliedClosed = () => {\r\n setAppliedAnchorEl(null);\r\n };\r\n\r\n return (\r\n<>\r\n {/*Mobile Header*/}\r\n {(isMobile || portraitMode) && (\r\n
\r\n
\r\n \r\n
\r\n {financeAvailable && (\r\n {\r\n if (scrollToFinance && scrollToFinance.current) {\r\n scrollToFinance.current.scrollIntoView({\r\n behavior: \"smooth\",\r\n block: \"start\",\r\n });\r\n }\r\n }}\r\n >\r\n \r\n
\r\n )}\r\n\r\n
handleSummaryClick && handleSummaryClick()}>\r\n \r\n
\r\n \r\n )}\r\n\r\n {/*Desktop Header*/}\r\n
\r\n \r\n {anchorAppliedEl && (\r\n = 3 ? \"fullheight\" : \"\"}`}\r\n >\r\n \r\n \r\n \r\n {getAppliedPartsCount() !== 0 && }\r\n {getAppliedPartsCount() <= 0 && {t(\"configuration.parts.noParts\")}}\r\n \r\n )}\r\n
\r\n \r\n )\r\n};\r\n","import React, { useEffect } from \"react\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport ArrowHead from \"../../../assets/icons/arrowHead\";\r\nimport BrandLogo from \"../../shared/BrandLogo\";\r\nimport { RouteComponentProps } from \"react-router\";\r\n\r\nexport type UserProfile = {\r\n firstName: string;\r\n lastName: string;\r\n country: string;\r\n email: string;\r\n photoURL: string;\r\n thumbnailURL: string;\r\n};\r\n\r\nexport type UserData = {\r\n UID: string;\r\n UIDSignature: string;\r\n profile: UserProfile;\r\n};\r\n\r\nexport type CDCLoginProps = {\r\n onUserLoggedIn?(data: UserData | undefined): void | undefined;\r\n mode: \"saveUserConfigurationCDC\" | \"loadAccountInfo\" | \"configuratorLogin\";\r\n showSaveIcon?: boolean;\r\n onSaveIconClicked?(): void;\r\n onSaveSuccess?(): void;\r\n userProfileChecked?: boolean;\r\n removeTabIndexToMakeCDCWorking?(): void;\r\n mobile?: boolean;\r\n checkUserLogin?: () => void;\r\n isSummary?: boolean;\r\n};\r\n\r\nexport type CDCProps = StateManagementProps & WithNamespaces & RouteComponentProps;\r\n\r\nconst CDCLoginContainer: React.FunctionComponent = (props) => {\r\n const { t, applicationSettings, is3DMode, cdcSettings, history, dealerInquiryDialogOpen } = props;\r\n const brand = applicationSettings.Brand.toLowerCase();\r\n\r\n const goBackToMain = () => {\r\n history.push(\"/main\");\r\n };\r\n\r\n const goBackButtonClick = () => {\r\n if (is3DMode && !props.dialogState.isOpen) {\r\n goBackToMain();\r\n\r\n const timer = setTimeout(() => {\r\n props.setCdcSettings(false);\r\n\r\n if ((window as any).gigya) {\r\n (window as any).gigya.accounts.hideScreenSet(brand + \"-in-page\");\r\n }\r\n\r\n clearTimeout(timer);\r\n }, 300);\r\n } else {\r\n props.setCdcSettings(false);\r\n\r\n if ((window as any).gigya) {\r\n (window as any).gigya.accounts.hideScreenSet(brand + \"-in-page\");\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n return () => {\r\n if ((window as any).gigya) {\r\n (window as any).gigya.accounts.hideScreenSet(brand + \"-in-page\");\r\n }\r\n };\r\n });\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n {t(\"buttons.closeDialog\")}\r\n
\r\n
\r\n\r\n {}\r\n
\r\n\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CDCLoginContainer);\r\n","import React, { useRef, useState, useEffect } from \"react\";\r\nimport VehicleOverview, { VehicleOverviewProps } from \"../vehicle-overview/VehicleOverview\";\r\nimport { connect } from \"react-redux\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport Categories, { CategoryListAllProps } from \"../categories/CategoryList\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport { Location } from \"history\";\r\nimport ConfigurationSummary from \"./configurationSummary/ConfigurationSummary\";\r\nimport http from \"../../services/http\";\r\nimport { AxiosResponse } from \"axios\";\r\nimport { store } from \"../../redux/store\";\r\nimport getOverview from \"../../redux/async-actions/getOverview\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport Collapse from \"@material-ui/core/Collapse\";\r\nimport List from \"@material-ui/core/List\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport { StaticContext, useHistory } from \"react-router\";\r\nimport FinancePlugin from \"./financePlugin/financePlugin\";\r\nimport ArrowHead from \"../../assets/icons/arrowHead\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Menu, { MenuProps } from \"@material-ui/core/Menu\";\r\nimport MenuIcon from \"../../assets/icons/menu\";\r\nimport CloseIcon from \"../../assets/icons/close\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport { noConflictingParts, removeNoConflictingParts } from \"../../redux/actions\";\r\nimport { AddPartPayload, RemovePartPayload } from \"../../services/http/real\";\r\nimport { ConfigurationView3D } from \"./ConfigurationView3D\";\r\nimport { ConfigurationOverviewMenu } from \"./ConfigurationOverviewMenu\";\r\nimport BrandLogo from \"../shared/BrandLogo\";\r\nimport { Hero } from \"../../models/vehicle\";\r\nimport PartDetailDialog from \"../parts/PartDetailDialog\";\r\nimport { getIsMobileXS } from \"../../utils/helpers\";\r\nimport ConfigurationCompletion from \"./configurationSummary/ConfigurationCompletion\";\r\nimport CDCLoginContainer from \"./cdc/CdcLoginContainer\";\r\n\r\nexport interface CreateConfigurationResponse {\r\n ConfigurationId: number;\r\n FullImages: FullImage[];\r\n TestRideData: TestRideData;\r\n VariationCode: string;\r\n}\r\n\r\nexport interface FullImage {\r\n Perspective: number;\r\n Url: string;\r\n}\r\n\r\nexport interface TestRideData {\r\n Data: TestRideLink;\r\n Status: TestRideStatus;\r\n}\r\n\r\nexport interface TestRideLink {\r\n Url: string;\r\n}\r\n\r\nexport interface TestRideStatus {\r\n Success: boolean;\r\n Messages: [any];\r\n}\r\n\r\nexport type ConfigurationAllProps = StateManagementProps & CreateConfigurationResponse & WithNamespaces & RouteComponentProps<{ modelId: string }, StaticContext, { hero: Hero }>;\r\n\r\nconst StyledMenu = withStyles({\r\n paper: {},\r\n})((props: MenuProps) => (\r\n \r\n));\r\n\r\nexport const Configuration: React.FunctionComponent = (props) => {\r\n const {\r\n t,\r\n configuration,\r\n configurationState,\r\n addCreatedConfiguration,\r\n views,\r\n applicationSettings,\r\n hideGuidance,\r\n togglePartDetail,\r\n deselectPart,\r\n setDealerInquirySent,\r\n dealerInquirySent,\r\n is3DMode,\r\n setIs3DMode,\r\n } = props;\r\n\r\n const history = useHistory();\r\n\r\n const [showCategories, setShowCategories] = useState(false);\r\n const [open, setOpen] = useState(false);\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const [showSummary, setShowSummary] = useState(false);\r\n const [showPartDetail, setShowPartDetail] = useState(false);\r\n const [bookATestRideUrl, setBookATestRideUrl] = useState(\"\");\r\n const scrollElement = useRef(null);\r\n const [dataLoaded, setDataLoaded] = useState(false);\r\n const [successState, setSuccessState] = useState(false);\r\n const [portraitModeState, setPortraitMode] = useState(false);\r\n const [showAllPrices, setShowAllPrices] = useState(false);\r\n const [createConfigurationState, setCreateConfigurationState] = useState({\r\n exists: configurationState.configuration.hasOwnProperty(\"ConfigurationId\"),\r\n loading: false,\r\n });\r\n const [getOverViewState, setGetOverViewState] = useState({\r\n exists: props.overview.Vehicle.Hero.Description.length > 0,\r\n loading: false,\r\n });\r\n const [redirectToMain, setRedirectToMain] = useState(false);\r\n const [financeAvailable, setFinanceAvailable] = useState(false);\r\n const [subMenuOpen, setSubMenuOpen] = useState(false);\r\n const [userInactive, setUserInactive] = useState(false);\r\n const [jtsPushed, setJtsPushed] = useState(false);\r\n\r\n // keep the next line for setups\r\n // const setuplistProps = createSetupProps(props);\r\n const bookATestride = configuration.TestRideData;\r\n const hasTestRideData = () => (bookATestride && bookATestride.Data ? true : false);\r\n const [isMobile, setIsMobile] = useState(() => getIsMobileXS());\r\n let portraitMode = Boolean(window.orientation === 0); //TODO: valentins solution\r\n\r\n const setIsMobileState = () => {\r\n setIsMobile(getIsMobileXS());\r\n };\r\n\r\n let { modelId } = props.match.params;\r\n\r\n let pathName = props.location.pathname;\r\n let pathParts = pathName.split(\"/\");\r\n const urlModelId = pathParts[3];\r\n const scrollToRef = React.createRef();\r\n const scrollToFinance = React.createRef();\r\n\r\n const updateBATLink = (newVehicleCode?: string | undefined) => {\r\n if (newVehicleCode) {\r\n let urlArray = bookATestRideUrl.split(\"/\");\r\n let oldVehicleCode = urlArray[urlArray.length - 1];\r\n urlArray.forEach(function (item, i) {\r\n if (item === oldVehicleCode) urlArray[i] = newVehicleCode;\r\n });\r\n let newUrl = urlArray.join(\"/\");\r\n setBookATestRideUrl(newUrl);\r\n }\r\n };\r\n\r\n if (modelId === urlModelId) {\r\n modelId = urlModelId;\r\n }\r\n\r\n const checkFinancePlugin = () => {\r\n let financeArray = props.overview.Finance.FinanceData;\r\n if (financeArray && financeArray[0] && financeArray[0].Key !== \"\") {\r\n for (let i = 0; i < financeArray.length; i++) {\r\n if (financeArray[i].Available && financeArray[i].Variation === props.currentVariation) {\r\n setFinanceAvailable(true);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const setUserInactiveFunction = (inactivity: boolean) => {\r\n setUserInactive(inactivity);\r\n };\r\n\r\n const setSubMenuState = (open: boolean) => {\r\n setSubMenuOpen(open);\r\n };\r\n const resetSubMenuState = () => {\r\n setSubMenuOpen(false);\r\n };\r\n\r\n useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n hideGuidance();\r\n handleResize();\r\n\r\n setIs3DMode(props.overview && props.overview.Vehicle.RenderingEngine === \"Engine3D\" && !is3DMode);\r\n\r\n return () => {\r\n setGetOverViewState({\r\n exists: props.overview.Vehicle.Hero.Description.length > 0,\r\n loading: false,\r\n });\r\n setCreateConfigurationState({\r\n exists: configurationState.configuration.hasOwnProperty(\"ConfigurationId\"),\r\n loading: false,\r\n });\r\n setRedirectToMain(false);\r\n window.removeEventListener(\"resize\", handleResize);\r\n };\r\n }, []);\r\n\r\n const handleResize = () => {\r\n setPortraitMode(window.innerHeight > window.innerWidth);\r\n setIsMobileState();\r\n };\r\n\r\n useEffect(() => {\r\n if (!jtsPushed && (window as any)._jts) {\r\n const jts = (window as any)._jts;\r\n jts.push({ track: \"pageview\" });\r\n jts.push({ track: \"submit\" });\r\n setJtsPushed(true);\r\n }\r\n });\r\n\r\n useEffect(() => {\r\n checkFinancePlugin();\r\n }, [props.overview.Finance, props.currentVariation]);\r\n\r\n useEffect(() => {\r\n if (redirectToMain) {\r\n history.push(\"/main\");\r\n }\r\n }, [redirectToMain]);\r\n\r\n useEffect(() => {\r\n if (props.location.state) {\r\n setShowAllPrices(Boolean(props.location.state.hero.Price.Value));\r\n }\r\n }, [isMobile, props.location.state, portraitModeState]);\r\n\r\n useEffect(() => {\r\n if (configurationState && configurationState.culture && configurationState.market && configurationState.companyId) {\r\n if (!getOverViewState.exists && !getOverViewState.loading) {\r\n setGetOverViewState({ ...getOverViewState, loading: true });\r\n store.dispatch(getOverview(modelId) as any).then(() => {\r\n // Quick fix too check if loading is done, it should be done in redux\r\n setGetOverViewState({ ...getOverViewState, loading: false });\r\n });\r\n } else if (props.overview.Vehicle.Hero.Description.length > 0) {\r\n setGetOverViewState({ ...getOverViewState, loading: false, exists: true });\r\n }\r\n }\r\n if (props.selectedModel.Hero.Price) {\r\n setShowAllPrices(Boolean(props.selectedModel.Hero.Price.Value));\r\n }\r\n }, [configurationState, props.overview.Vehicle]);\r\n\r\n useEffect(() => {\r\n if (!createConfigurationState.loading && !createConfigurationState.exists && configurationState && configurationState.culture && configurationState.market && configurationState.companyId) {\r\n setCreateConfigurationState({ ...createConfigurationState, loading: true });\r\n http\r\n .createConfiguration(modelId)\r\n .then((response: AxiosResponse) => {\r\n addCreatedConfiguration(response.data);\r\n setCreateConfigurationState({ ...createConfigurationState, loading: false, exists: true });\r\n })\r\n .catch((reason: any) => {\r\n console.log(\"no config\", reason);\r\n setRedirectToMain(true);\r\n });\r\n }\r\n }, [configurationState, createConfigurationState]);\r\n\r\n if (hasTestRideData() && !dataLoaded && configuration) {\r\n setBookATestRideUrl(bookATestride.Data.Url);\r\n setSuccessState(bookATestride.Status.Success);\r\n setDataLoaded(true);\r\n }\r\n\r\n if (getOverViewState.loading || createConfigurationState.loading) {\r\n return ;\r\n }\r\n\r\n if (!getOverViewState.loading && !getOverViewState.exists && !hasTestRideData()) {\r\n return ;\r\n }\r\n\r\n function handleClick() {\r\n setOpen(!open);\r\n setShowCategories(!showCategories);\r\n }\r\n\r\n function resetConflictingPartsStatus() {\r\n let sendPayload: AddPartPayload = {\r\n PartId: \"\",\r\n SelectedParts: [],\r\n RemoveParts: [],\r\n DryRun: false,\r\n };\r\n store.dispatch(noConflictingParts(sendPayload));\r\n let sendRemovePayload: RemovePartPayload = {\r\n PartId: \"\",\r\n RemoveParts: [],\r\n DryRun: false,\r\n };\r\n store.dispatch(removeNoConflictingParts(sendRemovePayload));\r\n }\r\n\r\n function handleSummaryClick() {\r\n resetConflictingPartsStatus();\r\n if (scrollToRef && scrollToRef.current) {\r\n scrollToRef.current.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n setOpen(false);\r\n setShowCategories(false);\r\n props.toggleSummary(true);\r\n setShowSummary(true);\r\n }\r\n\r\n const getMobileMenuClosed = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n function handleClose() {\r\n getMobileMenuClosed();\r\n resetSubMenuState();\r\n }\r\n\r\n function handleClickMobileMenu(event: React.MouseEvent) {\r\n setAnchorEl(event.currentTarget);\r\n }\r\n\r\n function isRenderingEngine3D(): boolean {\r\n return props.overview.Vehicle.RenderingEngine === \"Engine3D\";\r\n }\r\n\r\n if (isRenderingEngine3D()) {\r\n return (\r\n <>\r\n setShowPartDetail(true)}\r\n itemClicked={() => setAnchorEl(null)}\r\n userInactive={userInactive}\r\n setUserInactiveFunction={setUserInactiveFunction}\r\n variationCode={configuration.VariationCode}\r\n >\r\n {showPartDetail && (\r\n {\r\n togglePartDetail(false);\r\n deselectPart();\r\n setShowPartDetail(false);\r\n document.body.classList.remove(\"lock-scroll\");\r\n }}\r\n {...props}\r\n userInactive={userInactive}\r\n >\r\n )}\r\n {}\r\n \r\n );\r\n }\r\n\r\n function closeSummary() {\r\n setShowSummary(false);\r\n setDealerInquirySent(false);\r\n }\r\n\r\n function createSummary(props: ConfigurationAllProps, testRideUrl: string, testRideStatus: boolean, showAllPrices: boolean): React.ReactNode {\r\n if (dealerInquirySent) {\r\n return ;\r\n }\r\n return ;\r\n }\r\n\r\n function createVehicleOverview(\r\n props: ConfigurationAllProps,\r\n location: Location,\r\n showDescription: boolean,\r\n configurationExists: boolean,\r\n showAllPrices: boolean,\r\n variationCode: string,\r\n updateBATLink: () => void,\r\n financeAvailable: boolean\r\n ): React.ReactNode {\r\n // make sure not to render anything before configuration becomes available\r\n if (!configurationExists) {\r\n return null;\r\n }\r\n\r\n let vehicleOverviewProps: VehicleOverviewProps = { location, showDescription, variationCode, updateBATLink, financeAvailable };\r\n\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n {!showSummary && }\r\n\r\n {showSummary &&
}\r\n\r\n {!showSummary && (isMobile || portraitMode) && (\r\n
\r\n
\r\n \r\n \r\n \r\n setShowPartDetail(true)} setSubMenuState={setSubMenuState} resetSubMenuState={resetSubMenuState} />\r\n \r\n
\r\n
\r\n )}\r\n\r\n \r\n \r\n
\r\n\r\n \r\n {/* Left: Bike overview: Image & Description*/}\r\n \r\n {createVehicleOverview(props, props.location, !showCategories, createConfigurationState.exists, showAllPrices, configuration.VariationCode, updateBATLink, financeAvailable)}\r\n \r\n\r\n {/* Right: Category List */}\r\n {!isMobile && !portraitMode && (\r\n \r\n \r\n
\r\n \r\n {t(`buttons.categories.${applicationSettings.Brand}`)}\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n setShowPartDetail(true)} itemClicked={() => setAnchorEl(null)} resetSubMenuState={resetSubMenuState} />\r\n
\r\n
\r\n
\r\n\r\n {!showCategories &&

{t(`configuration.summary.configureText.${applicationSettings.Brand}`)}

}\r\n\r\n
\r\n \r\n
\r\n
\r\n )}\r\n
\r\n\r\n {showSummary && views.showConfigurationSummary && (\r\n
{createSummary(props, bookATestRideUrl, successState, showAllPrices)}
\r\n )}\r\n\r\n
\r\n {financeAvailable && }\r\n {}\r\n
\r\n );\r\n};\r\n\r\nexport default withNamespaces()(connect(mapStateToProps, mapDispatchToProps)(Configuration));\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nexport interface Indicator3DProps {\r\n color: string;\r\n}\r\n\r\nconst Indicator3DKTM: React.FunctionComponent = props => {\r\n return (\r\n \r\n Indicator 3D KTM\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Indicator3DKTM;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Indicator3DDefault: React.FunctionComponent = () => {\r\n return (\r\n \r\n Indicator 3D Default\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Indicator3DDefault;\r\n","import React from \"react\";\r\nimport { StateManagementProps, mapStateToProps, mapDispatchToProps } from \"../../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport Indicator3DKTM from \"./indicator3d_ktm\";\r\nimport Indicator3DDefault from \"./indicator3d_default\";\r\n\r\nexport interface Indicator3DProps {\r\n useDefault: boolean;\r\n}\r\n\r\nexport type Indicator3DPropsAll = Indicator3DProps & StateManagementProps;\r\n\r\nconst Indicator3D: React.FunctionComponent = props => {\r\n const { applicationSettings, useDefault } = props;\r\n const brand = applicationSettings.Brand;\r\n\r\n return (\r\n <>\r\n {brand === \"KTM\" && !useDefault && }\r\n {brand === \"HQV\" && !useDefault && }\r\n {brand === \"GG\" && !useDefault && }\r\n {useDefault && }\r\n \r\n );\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Indicator3D);\r\n","import React, { useState } from \"react\";\r\nimport { withStyles, WithStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { Grid } from \"@material-ui/core\";\r\nimport Swipeable from \"react-swipeable\";\r\nimport ArrowHead from \"../../../assets/icons/arrowHead\";\r\nimport {\r\n mapDispatchToProps,\r\n mapStateToProps,\r\n StateManagementProps,\r\n} from \"../../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport { VehicleInformation } from \"../../../models/vehicle\";\r\nimport BrandLogo from \"../../shared/BrandLogo\";\r\nimport Indicator3d from \"../../../assets/icons/3d/indicator3d\";\r\n\r\nexport interface MotorcycleMenuProps {\r\n updateState: (link: string) => void;\r\n links: string[];\r\n link: string;\r\n}\r\n\r\nconst classes = (theme: Theme) => ({\r\n typeList: {\r\n display: \"flex\",\r\n justifyContent: \"flex-start\",\r\n verticalAlign: \"middle\",\r\n alignItems: \"center\",\r\n },\r\n navLink: {\r\n //remove problem with safari lineHeight: 1.625,\r\n margin: \"initial\" as \"initial\",\r\n marginRight: \"2.5rem\",\r\n },\r\n menuWrapper: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n padding: \"0 70px 0 140px\",\r\n },\r\n});\r\n\r\nexport const MotorcycleMenu: React.FunctionComponent<\r\n MotorcycleMenuProps & WithStyles & StateManagementProps\r\n> = (props: MotorcycleMenuProps & WithStyles & StateManagementProps) => {\r\n const models = props.models;\r\n\r\n const { navLink, typeList, menuWrapper } = props.classes;\r\n const { applicationSettings } = props;\r\n const { Brand } = applicationSettings;\r\n const headlineClasses = `ktm-headline ${Brand === \"KTM\" ? \"uppercase\" : \"\"}`;\r\n const [currentlyActiveLink, setCurrentlyActiveLink] = useState(0);\r\n const sortedLinks = props.links;\r\n\r\n function swipeToLink(index: number, nextLink: number) {\r\n let currentLinkIndex: number = index + nextLink;\r\n const min = 0;\r\n const max = props.links.length - 1;\r\n if (currentLinkIndex < min) currentLinkIndex = max;\r\n if (currentLinkIndex > max) currentLinkIndex = min;\r\n let currentLink = props.links[currentLinkIndex];\r\n props.updateState(currentLink);\r\n setCurrentlyActiveLink(currentLinkIndex);\r\n }\r\n \r\n const has3DModels = (segmentName: string): boolean => {\r\n if (!models || !segmentName) return false;\r\n\r\n let found: VehicleInformation | null = null;\r\n models.Segments.forEach(s =>\r\n s.Vehicles.forEach(v => {\r\n if (s.Name === segmentName && v.RenderingEngine === \"Engine3D\")\r\n found = v;\r\n })\r\n );\r\n return found !== null;\r\n };\r\n\r\n return (\r\n \r\n
\r\n
    \r\n {sortedLinks.map((link: string, idx: number) => {\r\n const selected = link === props.link ? \"selected\" : \"\";\r\n const linkClass = link.replace(/\\s/g, \"-\").toLowerCase();\r\n return (\r\n \r\n \r\n {link}\r\n {has3DModels(link) && (\r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n })}\r\n
\r\n \r\n \r\n
\r\n {\r\n //mobile only\r\n sortedLinks.map((link: string, idx: number) => {\r\n if (currentlyActiveLink === idx) {\r\n return (\r\n \r\n {\r\n swipeToLink(idx, -1);\r\n }}\r\n >\r\n \r\n \r\n {\r\n swipeToLink(idx, -1);\r\n }}\r\n onSwipedRight={() => {\r\n swipeToLink(idx, 1);\r\n }}\r\n >\r\n {link}\r\n \r\n {\r\n swipeToLink(idx, 1);\r\n }}\r\n >\r\n \r\n \r\n
\r\n );\r\n }\r\n })\r\n }\r\n
\r\n );\r\n};\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(classes)(MotorcycleMenu));\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport { withStyles, WithStyles, Theme } from \"@material-ui/core/styles\";\r\nimport {\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n StateManagementProps,\r\n} from \"../../../utils/addReduxProps\";\r\nimport { connect } from \"react-redux\";\r\nimport Swipeable from \"react-swipeable\";\r\nimport ArrowHead from \"../../../assets/icons/arrowHead\";\r\nimport store from \"../../../redux/store\";\r\n\r\nimport {\r\n exitVehicleConfiguration,\r\n setImageArray,\r\n} from \"../../../redux/actions\";\r\nimport { Hero, SegmentData, VehicleInformation } from \"../../../models/vehicle\";\r\nimport Indicator3d from \"../../../assets/icons/3d/indicator3d\";\r\n\r\nexport interface ModelsProps {\r\n data: SegmentData;\r\n}\r\n\r\nconst classes = _ => ({\r\n modelLink: {\r\n fontSize: \"14px\",\r\n lineHeight: \"22px\",\r\n },\r\n modelList: {\r\n margin: \"0 0 0 0\",\r\n },\r\n spacer: {\r\n marginTop: \"0px\",\r\n marginBottom: \"24px\",\r\n },\r\n selectionWrapper: {\r\n marginTop: \"0\",\r\n overflowY: \"auto\" as \"auto\",\r\n },\r\n modelSelectionWrapper: {\r\n height: \"calc(100% - 75px)\",\r\n },\r\n VehicleInformation: {\r\n backgroundRepeat: \"no-repeat\",\r\n },\r\n bikePreview: {\r\n backgroundPosition: \"right top\",\r\n backgroundSize: \"auto 93%\",\r\n },\r\n heroIntro: {\r\n fontSize: \"1.25em\",\r\n marginBottom: \"13px\",\r\n },\r\n heroPrice: {\r\n fontSize: \"1.25em\",\r\n },\r\n heroDescription: {\r\n fontSize: \"1em\",\r\n },\r\n});\r\n\r\nexport type AllModelProps = StateManagementProps &\r\n ModelsProps &\r\n WithNamespaces &\r\n WithStyles;\r\n\r\nexport const Models: React.FunctionComponent = props => {\r\n const { data, t, classes, applicationSettings, toggleSummary, appliedParts } = props;\r\n\r\n const { Hero }: SegmentData = data;\r\n\r\n const [hero, setHero] = useState(Hero);\r\n const [currentPosition, setCurrentPositon] = useState(0);\r\n const [selectedModel, setSelectedModel] = useState({\r\n Name: \"\",\r\n ModelId: \"\",\r\n EngineType: null,\r\n Hero: hero,\r\n RenderingEngine: \"\",\r\n });\r\n const [hideBikeImg, setHideBikeImg] = useState(false);\r\n\r\n let maxPosition = 0;\r\n\r\n const selectHero = (Hero: Hero) => {\r\n setHero(Hero);\r\n };\r\n\r\n // update state on every change of props.data\r\n useEffect(() => {\r\n let segmentChanged = true;\r\n\r\n let sortedVehicles = Vehicles.sort(sortModels);\r\n\r\n for (let i = 0; sortedVehicles.length <= i; i++) {\r\n if (sortedVehicles[i].ModelId === selectedModel.ModelId) {\r\n segmentChanged = false;\r\n }\r\n }\r\n if (selectedModel.ModelId === \"\" || segmentChanged) {\r\n selectModel(null);\r\n }\r\n setHero(data.Hero);\r\n setCurrentPositon(0);\r\n }, [data]);\r\n\r\n const extract = (\r\n str: string\r\n ): { engineSize: number; name: string; year: number } => {\r\n let spacedModelName = str.replace(/\\s/g, \" \");\r\n spacedModelName = spacedModelName.replace(/\\|/g, \"\");\r\n\r\n // if detection pattern fails,\r\n // provide default to let model sink to the bottom of list\r\n if (spacedModelName.split(\" \").length < 3) {\r\n return {\r\n engineSize: 0,\r\n name: \"\",\r\n year: 0,\r\n };\r\n }\r\n\r\n let spacedArray = spacedModelName.split(\" \");\r\n let filteredArray = spacedArray.filter(entry => {\r\n return entry !== \"\";\r\n });\r\n\r\n let year = 0;\r\n let engineSize = 0;\r\n\r\n const remainingName: string[] = [];\r\n\r\n filteredArray.forEach(x => {\r\n let maybeNumber = Number(x.replace(/[^0-9]/g, ''));\r\n \r\n if (!isNaN(maybeNumber) && maybeNumber > 0) {\r\n if (maybeNumber > 2000) { // let's hope that all our bikes stay below 2000cc\r\n year = maybeNumber;\r\n } else {\r\n engineSize = maybeNumber;\r\n }\r\n } else {\r\n if (x !== undefined)\r\n remainingName.push(x);\r\n }\r\n });\r\n\r\n let name = remainingName.join(' ');\r\n\r\n return {\r\n engineSize: +engineSize,\r\n name: name,\r\n year: +year,\r\n };\r\n };\r\n\r\n // sort 1. by year then 2. by engine size then 3. by name\r\n const sortModels = (prev: VehicleInformation, next: VehicleInformation) => {\r\n const [extractedPrevious, extractedNext] = [\r\n extract(prev.Name),\r\n extract(next.Name),\r\n ];\r\n if (\r\n applicationSettings.Brand === \"KTM\" ||\r\n applicationSettings.Brand === \"GG\"\r\n ) {\r\n return (\r\n -(extractedPrevious.year - extractedNext.year) ||\r\n -(extractedPrevious.engineSize - extractedNext.engineSize) ||\r\n -(extractedPrevious.name.split(' ').length - extractedNext.name.split(' ').length)\r\n );\r\n } else {\r\n return (\r\n -(extractedPrevious.year - extractedNext.year) ||\r\n -(extractedNext.engineSize - extractedPrevious.engineSize) ||\r\n -(extractedPrevious.name.split(' ').length - extractedNext.name.split(' ').length)\r\n );\r\n }\r\n };\r\n\r\n const selectModel = (v: VehicleInformation | null) => {\r\n if (v) {\r\n setSelectedModel(v);\r\n selectHero(v.Hero);\r\n } else {\r\n let sortedVehicles = Vehicles.sort(sortModels);\r\n setSelectedModel(sortedVehicles[0]);\r\n selectHero(sortedVehicles[0].Hero);\r\n }\r\n };\r\n\r\n const { Vehicles } = data;\r\n const {\r\n spacer,\r\n selectionWrapper,\r\n modelSelectionWrapper,\r\n heroIntro,\r\n modelList,\r\n } = classes;\r\n\r\n const engineTypes: Array = Vehicles.reduce(\r\n (acc: Array, vehicle: VehicleInformation) => {\r\n return acc.includes(vehicle.EngineType)\r\n ? [...acc]\r\n : [...acc, vehicle.EngineType];\r\n },\r\n []\r\n );\r\n\r\n const orangeUpperText = \"uppercase\";\r\n\r\n const handleSwipe = (position: number) => {\r\n let newPosition: number = currentPosition + position;\r\n const max = maxPosition - 1;\r\n const min = 0;\r\n if (newPosition < min) {\r\n newPosition = max;\r\n }\r\n if (newPosition > max) {\r\n newPosition = min;\r\n }\r\n setCurrentPositon(newPosition);\r\n };\r\n\r\n const resetConfiguration = () => {\r\n appliedParts.length = 0; //reseting the applied parts array to prevent XBow colors in powerparts list of other vehicles\r\n store.dispatch(exitVehicleConfiguration());\r\n store.dispatch(setImageArray({ currentImageArray: [] }));\r\n toggleSummary(false);\r\n setHideBikeImg(true);\r\n };\r\n\r\n return (\r\n \r\n {/* MODEL SELECTION PART */}\r\n \r\n \r\n {engineTypes.map((version: string | null, index: number) => {\r\n const filtered = Vehicles.filter(\r\n (item: VehicleInformation) => item.EngineType === version\r\n ).sort(sortModels);\r\n if (!filtered.length) {\r\n return null;\r\n }\r\n return (\r\n \r\n
    \r\n {filtered.map((item: VehicleInformation, index: number) => {\r\n const itemClass = item.Name.replace(/[^a-zA-Z0-9]/g, \"-\")\r\n .replace(/---/g, \"-\")\r\n .toLowerCase();\r\n return (\r\n
  • \r\n selectModel(item)}\r\n className={`ktm-headline ${\r\n applicationSettings.Brand === \"KTM\"\r\n ? \"uppercase\"\r\n : \"\"\r\n } motorcycle-selection ${\r\n item.ModelId === selectedModel.ModelId\r\n ? \"selected\"\r\n : \"\"\r\n } inline-block ${spacer}`}\r\n >\r\n \r\n {item.Name} \r\n {item.RenderingEngine === \"Engine3D\" && (\r\n \r\n )}\r\n \r\n

    \r\n
  • \r\n );\r\n })}\r\n
\r\n
\r\n );\r\n })}\r\n \r\n \r\n {/* PREVIEW PART */}\r\n \r\n \r\n \r\n \r\n {applicationSettings.Brand === \"GG\" && (\r\n \r\n {selectedModel.Name.substring(\r\n 0,\r\n selectedModel.Name.length - 4\r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {selectedModel.Hero.Title}\r\n \r\n

\r\n {selectedModel.Name}\r\n

\r\n

\r\n resetConfiguration()}\r\n to={{\r\n pathname: `/main/configuration/${selectedModel.ModelId}/categories`,\r\n state: { hero: selectedModel.Hero },\r\n }}\r\n className={`${\r\n applicationSettings.Brand === \"HQV\" ? \"secondary\" : \"primary\"\r\n } models-configure-button ${orangeUpperText}`}\r\n >\r\n

\r\n {t(\"buttons.configure\")}\r\n {applicationSettings.Brand !== \"HQV\" && }\r\n

\r\n \r\n
\r\n
\r\n
\r\n \r\n handleSwipe(1)}\r\n onSwipedRight={() => handleSwipe(-1)}\r\n >\r\n {engineTypes.map((version: string | null, index: number) => {\r\n const filtered = Vehicles.filter(\r\n (item: VehicleInformation) => item.EngineType === version\r\n ).sort(sortModels);\r\n maxPosition = filtered.length;\r\n if (!filtered.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n
\r\n {filtered.map((item: VehicleInformation, index: number) => {\r\n if (index === currentPosition) {\r\n return (\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
{item.Hero.Title}
\r\n \r\n \r\n {item.Name}\r\n {item.RenderingEngine === \"Engine3D\" && (\r\n <> \r\n )}\r\n \r\n \r\n
\r\n
\r\n
\r\n resetConfiguration()}\r\n to={{\r\n pathname: `/main/configuration/${item.ModelId}/categories`,\r\n state: { hero: item.Hero },\r\n }}\r\n className={` models-configure-button ${orangeUpperText} ${\r\n applicationSettings.Brand === \"HQV\"\r\n ? \"secondary\"\r\n : \"primary\"\r\n }`}\r\n >\r\n

\r\n {t(\"buttons.configure\")}\r\n {applicationSettings.Brand !== \"HQV\" && (\r\n \r\n )}\r\n

\r\n \r\n
\r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n })}\r\n \r\n
\r\n );\r\n })}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(classes)(withNamespaces()(Models)));\r\n","import React, { useEffect, useState } from \"react\";\r\nimport MotorcycleMenu from \"./MotorcycleMenu\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\nimport { withStyles, WithStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { CSSProperties } from \"@material-ui/core/styles/withStyles\";\r\nimport { connect } from \"react-redux\";\r\nimport Action from \"../../../redux/reducers/models/action\";\r\nimport Models from \"./Models\";\r\nimport {\r\n StateManagementProps,\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n} from \"../../../utils/addReduxProps\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport { ShowDialogProps } from \"../../../redux/actions\";\r\nimport { DialogTypes } from \"../../../enums/dialogTypes\";\r\nimport { MotorcycleModelResponse, SegmentData } from \"../../../models/vehicle\";\r\n\r\nexport interface MotorcyclesProps {\r\n getMotorcycleModels: MotorcycleModelResponse;\r\n addMotorcycleModels: (payload: MotorcycleModelResponse) => Action;\r\n}\r\n\r\nexport interface MotorcycleState {\r\n link: string;\r\n loaded: boolean;\r\n}\r\n\r\nexport const classes: (theme: Theme) => Record = _ => ({\r\n motorcycles: {\r\n height: \"calc(100% - 76px)\",\r\n boxSizing: \"border-box\",\r\n },\r\n wrapper: {\r\n borderBottom: \"1px solid #eee\",\r\n padding: \"0 10px 0 10px\",\r\n maxWidth: 800,\r\n },\r\n});\r\n\r\nexport type MotorcycleViewAllProps = MotorcyclesProps &\r\n RouteComponentProps &\r\n WithStyles &\r\n WithNamespaces &\r\n StateManagementProps;\r\n\r\nexport const Motorcycles: React.FunctionComponent<\r\n MotorcycleViewAllProps & MotorcycleState\r\n> = props => {\r\n const { models, t, classes, showDialog, userGuidanceState, hideGuidance } =\r\n props;\r\n const [showUser, setShowUser] = useState(true);\r\n const [link, setLink] = useState(\"\");\r\n const [jtsPushed, setJtsPushed] = useState(false);\r\n\r\n const showUserGuidance = () => {\r\n if (userGuidanceState.show) {\r\n const dialogProps: ShowDialogProps = {\r\n title: \"\",\r\n data: { models },\r\n contentType: DialogTypes.userGuidance,\r\n };\r\n showDialog(dialogProps);\r\n hideGuidance();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (window.innerWidth <= 767 && showUser) {\r\n showUserGuidance();\r\n setShowUser(false);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if(!jtsPushed && (window as any)._jts) {\r\n const jts = (window as any)._jts;\r\n jts.push({ track: \"pageview\" });\r\n jts.push({ track: \"submit\" });\r\n setJtsPushed(true);\r\n }\r\n });\r\n\r\n const { Segments } = models;\r\n const links = Segments.map((segment: SegmentData) => segment.Name);\r\n const selectedSegment = link || links[0];\r\n const menuProps = {\r\n updateState: (link: string) => {\r\n setLink(link);\r\n },\r\n links,\r\n link: selectedSegment,\r\n models,\r\n };\r\n\r\n const { motorcycles } = classes;\r\n const segmentData: SegmentData = Segments.find(\r\n (segment: SegmentData) => segment.Name === selectedSegment\r\n ) as SegmentData;\r\n\r\n if (segmentData) {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(classes)(withNamespaces()(Motorcycles)));\r\n","import React, { useEffect } from \"react\";\r\nimport { RouteComponentProps, Link } from \"react-router-dom\";\r\nimport { StaticContext } from \"react-router\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport { connect } from \"react-redux\";\r\nimport {\r\n\tmapStateToProps,\r\n\tmapDispatchToProps,\r\n\tStateManagementProps\r\n} from \"../../../utils/addReduxProps\";\r\nimport { WithNamespaces, withNamespaces } from \"react-i18next\";\r\nimport store from \"../../../redux/store\";\r\nimport getOverview from '../../../redux/async-actions/getOverview';\r\nimport { exitVehicleConfiguration } from \"../../../redux/actions\";\r\nimport Format from '../../../utils/formatter';\r\nimport { Hero } from \"../../../models/vehicle\";\r\n\r\nexport type OverviewAllProps = RouteComponentProps<{ modelId: string }, StaticContext, { hero: Hero }> &\r\n\tStateManagementProps &\r\n\tWithNamespaces;\r\n\r\nexport const Overview: React.FunctionComponent = props => {\r\n\tconst {\r\n\t\tmatch: {\r\n\t\t\tpath,\r\n\t\t\tparams //: { modelId }\r\n\t\t},\r\n\t\tlocation: { state }\r\n\t} = props;\r\n\r\n\tuseEffect(() => {\r\n\r\n\t\tif (!hasOverviewData()) {\r\n\t\t\t// @todo: better types when available\r\n\t\t\tstore.dispatch(getOverview(props.match.params.modelId) as any)\r\n\t\t}\r\n\t}, [props.overview.Vehicle.ModelId])\r\n\r\n\tconst resetAndGoToModels = () => {\r\n\t\tstore.dispatch(exitVehicleConfiguration());\r\n\t\tprops.history.goBack();\r\n\t}\r\n\r\n\r\n\tconst hasOverviewData = () => (props.overview.Vehicle.ModelId.length);\r\n\r\n\tif (!hasOverviewData()) {\r\n\t\treturn ;\r\n\t}\r\n\r\n\tconst { hero } = props.location.state;\r\n\tconst {\r\n\t\tVehicle: {\r\n\t\t\tHero: { Description }\r\n\t\t},\r\n\t\tFastFacts\r\n\t} = props.overview;\r\n\tconst { modelId } = props.match.params;\r\n\tconst imageProps = {\r\n\t\tsrc: process.env.REACT_APP_SERVER_ROOT + hero.ImageUrl\r\n\t};\r\n\tconst { t } = props;\r\n\r\n\tconst { Intro, Title, Price } = hero;\r\n\tconst orangeUpperText = 'uppercase arrow-link';\r\n\r\n\treturn (\r\n\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{t('configuration.summary.overview')}\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\r\n\t\t\t\t{/* CONTENT Body */}\r\n\t\t\t\t\r\n\t\t\t\t\t{/* Bike Intro */}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

{Title}

\r\n\t\t\t\t\t\t\t

{Intro}

\r\n\t\t\t\t\t\t\t

{hero.Description}

\r\n\t\t\t\t\t\t\t

{t('configuration.summary.total')}

\r\n\t\t\t\t\t\t\t

{Format.currency(Price)}

\r\n\t\t\t\t\t\t\t

{t('configuration.summary.priceInfo')}

\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{/* BIKE IMAGE */}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{/* BIKE DESCRIPTION */}\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\t\t{/* @todo: REMOVE '/categores' from the next when setups become active */}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t

Go to Configuration-Page

\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

{t('configuration.summary.configureText')}

\r\n\t\t\t\t\t\t\t\t

note: this component/page is only temporary

\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t
\r\n\r\n\t\t\t{/* GO BACK item */}\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{t('navigation.goBack')}\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t);\r\n\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withNamespaces()(Overview));\r\n","import http from '../../services/http';\r\nimport { AxiosResponse } from 'axios';\r\nimport { addMotorcycleModels } from '../actions';\r\nimport { ThunkDispatch, ThunkAction } from 'redux-thunk';\r\nimport { MotorcycleModelResponse } from '../../models/vehicle';\r\n\r\nexport default function getModels(): ThunkAction, {}, {}, any> {\r\n return function (dispatch: ThunkDispatch) {\r\n return http.getModels().then((response: AxiosResponse) => {\r\n dispatch(addMotorcycleModels(response.data));\r\n }).catch((reason) => {\r\n console.error('An http error occured', JSON.stringify(reason));\r\n })\r\n }\r\n}","export interface FormControlState {\r\n\tvalue: V;\r\n\tpristine: boolean;\r\n\tvalidators: Validators;\r\n\trequired: boolean;\r\n\tname: string;\r\n}\r\n\r\nexport type Validator = (value: FormControlState) => boolean;\r\n\r\nexport type Validators = (DefaultValidators | string)[];\r\n\r\nexport type ValidatorType = { [key: string]: Validator };\r\n\r\nexport function createControl(name: string, value: any, validators: Validators = [], required = false): FormControlState {\r\n\treturn { name, value, validators, required, pristine: true };\r\n}\r\n\r\nexport enum DefaultValidators {\r\n\tnotEmpty = 'notEmpty',\r\n\temail = 'email',\r\n}\r\n\r\ntype SetStateType = React.Dispatch>;\r\n\r\nconst defaultValidators: ValidatorType = {\r\n\t[DefaultValidators.notEmpty]: (control: FormControlState) => {\r\n\t\treturn !!control.value.trim().length;\r\n\t},\r\n\t[DefaultValidators.email]: (control: FormControlState) => {\r\n\t\t// eslint-disable-next-line\r\n\t\tconst pattern = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/i;\r\n\t\treturn !!control.value.match(pattern);\r\n\t},\r\n}\r\n\r\nexport class FormManager {\r\n\tprivate validators: ValidatorType = { ...defaultValidators };\r\n\tprivate controls: { [key: string]: FormControlState } = {};\r\n\tprivate controlSetters: { [key: string]: SetStateType } = {};\r\n\tprivate touched = false;\r\n\r\n\tconstructor(customValidators: ValidatorType = {}) {\r\n\t\tthis.validators = { ...this.validators, ...customValidators };\r\n\t}\r\n\r\n\tpublic addValidator(validator: ValidatorType) {\r\n\t\tthis.validators = { ...this.validators, ...validator };\r\n\t}\r\n\r\n\tpublic addAllControls(controls: Array<[FormControlState, SetStateType]>) {\r\n\t\tcontrols.forEach(\r\n\t\t\t([control, setControl]: [FormControlState, SetStateType]) => {\r\n\t\t\t\tthis.addControl(control);\r\n\t\t\t\tthis.addControlSetter({ [control.name]: setControl });\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tpublic get formIsValid(): boolean {\r\n\t\treturn Object.keys(this.controls).every((name: string) => {\r\n\t\t\tconst control = this.controls[name];\r\n\t\t\tif (!control.required || control.validators.length === 0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn this._controlIsValid(control);\r\n\t\t});\r\n\t}\r\n\r\n\tpublic touchControls(controls: FormControlState[] = []) {\r\n\t\t// touch only selected otherwise all controls\r\n\t\tconst controlNames = !controls.length ? Object.keys(this.controls) : controls.map(control => control.name);\r\n\t\tcontrolNames.forEach((name) => this.controlSetters[name]({ ...this.controls[name], pristine: false }));\r\n\t\tthis.touched = true;\r\n\t}\r\n\r\n\tpublic controlIsValid(control: FormControlState): boolean {\r\n\t\treturn this._controlIsValid(this.controls[control.name]);\r\n\r\n\t}\r\n\r\n\tpublic getHashValues(): T {\r\n\t\treturn Object\r\n\t\t\t.keys(this.controls)\r\n\t\t\t.reduce((acc, formName) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\t...acc,\r\n\t\t\t\t\t[formName]: this.controls[formName].value,\r\n\t\t\t\t}\r\n\t\t\t}, {} as T);\r\n\r\n\t}\r\n\r\n\tpublic get formIsTouched() {\r\n\t\treturn this.touched;\r\n\t}\r\n\r\n\tpublic reset() {\r\n\t\tthis.touched = false;\r\n\t}\r\n\r\n\tprivate addControlSetter(controlSetter: { [key: string]: SetStateType }) {\r\n\t\tthis.controlSetters = {\r\n\t\t\t...this.controlSetters,\r\n\t\t\t...controlSetter\r\n\t\t};\r\n\t}\r\n\r\n\tprivate addControl(control: FormControlState) {\r\n\t\tthis.controls = {\r\n\t\t\t...this.controls,\r\n\t\t\t[control.name]: control\r\n\t\t};\r\n\t}\r\n\r\n\tprivate _controlIsValid(control: FormControlState): boolean {\r\n\t\treturn control.validators.every((validatorKey: string) => {\r\n\t\t\tif (!(this.validators as Object).hasOwnProperty(validatorKey)) {\r\n\t\t\t\tthrow new Error(`A validator with key: ${validatorKey} does not exist in FormManager validators!`);\r\n\t\t\t}\r\n\t\t\treturn this.validators[validatorKey](control);\r\n\t\t});\r\n\t}\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group';\r\n\r\ninterface FadeInLettersProps {\r\n\ttext: string;\r\n\tspeed?: number\r\n}\r\n\r\nexport const FadeInLetters: React.FunctionComponent = ({ text, speed = 25 }) => {\r\n\tconst textLength = text.length;\r\n\tconst [substringArray, setSubstringArray] = useState>([]);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst timer = setInterval(() => {\r\n\t\t\tsetSubstringArray((substringArray) => {\r\n\t\t\t\tif (substringArray.length === textLength) {\r\n\t\t\t\t\tclearInterval(timer)\r\n\t\t\t\t\treturn [...substringArray];\r\n\t\t\t\t}\r\n\t\t\t\treturn [...substringArray, text[substringArray.length]];\r\n\t\t\t});\r\n\t\t}, speed);\r\n\t}, [speed, text, textLength]);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{substringArray.map((letter, idx) => {letter})}\r\n\t\t\r\n\r\n\t)\r\n}\r\n\r\nexport default FadeInLetters;\r\n","import React from \"react\";\r\nimport List from \"@material-ui/core/List\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Clear from \"@material-ui/icons/Clear\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { Product } from \"../setups/SetupsList\";\r\nimport { DialogProps } from \"./dialogRouter\";\r\nimport FadeInLetters from \"../shared/FadeInLetters\";\r\n\r\nexport const SetupPartsDialog: React.FunctionComponent = ({ data, title, hideDialog }) => {\r\n return (\r\n \r\n \r\n \r\n

\r\n \r\n

\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {data.map((part: Product, idx: number) => (\r\n \r\n {part.Name.toUpperCase()}\r\n \r\n ))}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default SetupPartsDialog;\r\n","import React from \"react\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Clear from \"@material-ui/icons/Clear\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { DialogProps } from \"./dialogRouter\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport store from \"../../redux/store\";\r\nimport { exitVehicleConfiguration } from \"../../redux/actions\";\r\nimport http from \"../../services/http\";\r\nimport FadeInLetters from \"../shared/FadeInLetters\";\r\n\r\nexport const WarnBeforeExit: React.FunctionComponent = ({ title, hideDialog, t, data }) => {\r\n\tconst handleConfigurationExit = () => {\r\n\t\t// Since configurations are stored in the database when starting the configuration\r\n\t\t// we need to delete from the database again if the user decides to leave without saving.\r\n\t\thttp.dismissUnsavedChanges().then(() => {\r\n\t\t\tconsole.log(\"configuration reset\");\r\n\t\t});\r\n\r\n\t\tstore.dispatch(exitVehicleConfiguration());\r\n\t};\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t{data}\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default withNamespaces()(WarnBeforeExit);\r\n","import React from 'react'\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport { DialogProps } from './dialogRouter';\r\nimport { withNamespaces, WithNamespaces } from 'react-i18next';\r\nimport FadeInLetters from '../shared/FadeInLetters';\r\n\r\nexport type DeleteConfigurationProps = DialogProps<\r\n\t{ text: string, deleteAndReloadHistory: (id: number) => void, id: number }\r\n> & WithNamespaces\r\n\r\nexport const DeleteConfiguration: React.FunctionComponent = (\r\n\t{\r\n\t\ttitle,\r\n\t\thideDialog,\r\n\t\tt,\r\n\t\tdata: {\r\n\t\t\ttext,\r\n\t\t\tdeleteAndReloadHistory,\r\n\t\t\tid,\r\n\t\t}\r\n\t}\r\n) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t{text}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default withNamespaces()(DeleteConfiguration);\r\n","import React from \"react\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport { DialogProps } from \"./dialogRouter\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport { RequiredParts, ConflictingPartErrorResponse } from './conflictingParts';\r\nimport { RemovePartPayload } from \"../../services/http/real\";\r\nimport store from '../../redux/store';\r\nimport removePartAsync from '../../redux/async-actions/removePart';\r\nimport Close from \"../../assets/icons/close\";\r\nimport Arrow from \"../../assets/icons/arrow\";\r\nimport { StateManagementProps } from \"../../utils/addReduxProps\";\r\n\r\nconst RemoveConflictingParts: React.FunctionComponent & WithNamespaces & StateManagementProps> = ({ hideDialog, t, data, applicationSettings, title }) => {\r\n\tconst rulesResult = data.RulesResult;\r\n\tconst removePart = () => {\r\n\t\tconst payload: RemovePartPayload = {\r\n\t\t\tPartId: rulesResult.Part.Code,\r\n\t\t\tRemoveParts: rulesResult.Parts.map((part) => part.Code),\r\n\t\t}\r\n\t\tstore.dispatch(removePartAsync(payload) as any);\r\n\t}\r\n\r\n\tconst renderHeadline = () => {\r\n\t\tif (applicationSettings.Brand === \"KTM\") {\r\n\t\t\treturn \r\n\t\t\t\t{title}\r\n\t\t\t\r\n\t\t}\r\n\t\tif (applicationSettings.Brand === \"HQV\") {\r\n\t\t\treturn \r\n\t\t\t\t{title}\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{renderHeadline()}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default withNamespaces()(RemoveConflictingParts);\r\n","import React, { FormEvent, useEffect, useState } from \"react\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Clear from \"@material-ui/icons/Clear\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { DialogProps } from \"./dialogRouter\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport { FormManager, createControl, FormControlState, DefaultValidators as Validators } from \"../../utils/FormManager\";\r\nimport http from \"../../services/http\";\r\nimport { AxiosResponse, AxiosError } from \"axios\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport { toastMessage, getPreservedSaveDetailsData } from \"../../utils/helpers\";\r\nimport Action from \"../../redux/reducers/models/action\";\r\nimport store from \"../../redux/store\";\r\nimport { preserveSaveDetailsData, setConfigurationWasRecentlyCreated, setConfigurationIsDirty } from \"../../redux/actions\";\r\nimport FadeInLetters from \"../shared/FadeInLetters\";\r\n\r\nexport interface SaveDetailsData {\r\n Vin: string;\r\n OrderNumber: string;\r\n Firstname: string;\r\n Lastname: string;\r\n Comment: string;\r\n}\r\n\r\nexport enum SavingState {\r\n none = \"none\",\r\n sending = \"sending\",\r\n success = \"success\",\r\n error = \"error\",\r\n}\r\n\r\ntype SubmitButtonType = \"default\" | \"save-new\";\r\n\r\nexport interface SaveConfigurationProps {\r\n setConfigurationId: (id: number) => Action;\r\n configurationWasRecentlyCreated: boolean;\r\n}\r\n\r\nconst VinControl = createControl(\"Vin\", \"\");\r\nconst OrderNumberControl = createControl(\"OrderNumber\", \"\");\r\nconst FirstNameControl = createControl(\"Firstname\", \"\", [Validators.notEmpty], true);\r\nconst LastNameControl = createControl(\"Lastname\", \"\", [Validators.notEmpty], true);\r\nconst CommentControl = createControl(\"Comment\", \"\");\r\nconst formManager = new FormManager();\r\n\r\nexport const SaveConfiguration: React.FunctionComponent = ({ title, hideDialog, t, setConfigurationId, configurationWasRecentlyCreated }) => {\r\n const [vin, setVin] = useState(VinControl);\r\n const [orderNumber, setOrderNumber] = useState(OrderNumberControl);\r\n const [firstName, setFirstName] = useState(FirstNameControl);\r\n const [lastName, setLastName] = useState(LastNameControl);\r\n const [comment, setComment] = useState(CommentControl);\r\n const [submitButtonSavingState, setSubmitButtonSavingState] = useState(SavingState.none);\r\n const [saveNewButtonSavingState, setSaveNewButtonSavingState] = useState(SavingState.none);\r\n const [error, setError] = useState(\"\");\r\n const { Vin: preservedVin, OrderNumber: preservedOrderNumber, Firstname: preservedFirstname, Lastname: preservedLastname, Comment: preservedComment } = getPreservedSaveDetailsData();\r\n\r\n // load form control values from redux store\r\n useEffect(() => {\r\n setVin({ ...vin, value: preservedVin });\r\n setOrderNumber({ ...orderNumber, value: preservedOrderNumber });\r\n setFirstName({ ...firstName, value: preservedFirstname });\r\n setLastName({ ...lastName, value: preservedLastname });\r\n setComment({ ...comment, value: preservedComment });\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n // make sure to sync controls on every render\r\n formManager.addAllControls([\r\n [vin, setVin],\r\n [orderNumber, setOrderNumber],\r\n [firstName, setFirstName],\r\n [lastName, setLastName],\r\n [comment, setComment],\r\n ]);\r\n\r\n const isFormDirty = () =>\r\n vin.value !== preservedVin || orderNumber.value !== preservedOrderNumber || firstName.value !== preservedFirstname || lastName.value !== preservedLastname || comment.value !== preservedComment;\r\n\r\n const handleSubmit = (e: FormEvent, saveAsNew: boolean = false) => {\r\n e.preventDefault();\r\n\r\n if (!formManager.formIsValid) {\r\n formManager.touchControls();\r\n return;\r\n }\r\n\r\n //inform UI and send request\r\n setButtonSavingState(saveAsNew ? \"save-new\" : \"default\", SavingState.sending);\r\n\r\n const values = formManager.getHashValues>();\r\n\r\n store.dispatch(\r\n preserveSaveDetailsData({\r\n ...values,\r\n Vin: values.Vin || \"\",\r\n OrderNumber: values.OrderNumber || \"\",\r\n } as SaveDetailsData)\r\n );\r\n\r\n http\r\n .saveConfiguration(values, saveAsNew)\r\n .then((response: AxiosResponse<{ ConfigurationId: number }>) => {\r\n setButtonSavingState(saveAsNew ? \"save-new\" : \"default\", SavingState.success);\r\n setConfigurationId(response.data.ConfigurationId);\r\n hideDialog();\r\n toastMessage(t(\"toasts.configurationSaved\"));\r\n formManager.reset();\r\n store.dispatch(setConfigurationWasRecentlyCreated(false));\r\n store.dispatch(setConfigurationIsDirty(false));\r\n })\r\n .catch((error: AxiosError) => {\r\n // this assumes network error\r\n if (!error.response) {\r\n setError(t(\"errors.networkError\"));\r\n } else {\r\n // show error message if available\r\n if (error.response.data && error.response.data.Message) {\r\n setError(error.response.data.Message);\r\n } else {\r\n // log error if nothing else applies\r\n console.log(\"Error\", error);\r\n }\r\n }\r\n\r\n // show the retry button\r\n setButtonSavingState(saveAsNew ? \"save-new\" : \"default\", SavingState.error);\r\n });\r\n };\r\n\r\n const setButtonSavingState = (buttonType: SubmitButtonType, state: SavingState) => (buttonType === \"save-new\" ? setSaveNewButtonSavingState(state) : setSubmitButtonSavingState(state));\r\n\r\n const getButtonContentFromSavingState = (state: SavingState, buttonType: SubmitButtonType) => {\r\n switch (state) {\r\n case SavingState.none:\r\n return buttonType === \"save-new\" ? t(\"buttons.save-as-new\") : t(\"buttons.submit\");\r\n case SavingState.sending:\r\n return (\r\n
\r\n \r\n
\r\n );\r\n case SavingState.success:\r\n return t(\"buttons.success\");\r\n case SavingState.error:\r\n return t(\"buttons.retry\");\r\n default:\r\n return buttonType === \"save-new\" ? t(\"buttons.save-as-new\") : t(\"buttons.submit\");\r\n }\r\n };\r\n\r\n const onDialogClose = () => {\r\n formManager.reset();\r\n hideDialog();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n

\r\n \r\n

\r\n \r\n \r\n \r\n
\r\n
\r\n
handleSubmit(e)} noValidate>\r\n
\r\n {formManager.formIsTouched && !formManager.formIsValid &&

{t(\"errors.saveConfigurationErrorsMsg\")}

}\r\n {submitButtonSavingState === SavingState.error &&

{error}

}\r\n setVin({ ...vin, value, pristine: false })}\r\n margin=\"normal\"\r\n autoFocus\r\n />\r\n setOrderNumber({ ...orderNumber, value, pristine: false })}\r\n margin=\"normal\"\r\n />\r\n setFirstName({ ...firstName, value, pristine: false })}\r\n margin=\"normal\"\r\n required={true}\r\n error={!firstName.pristine && !formManager.controlIsValid(FirstNameControl)}\r\n helperText={t(\"errors.required\")}\r\n />\r\n setLastName({ ...lastName, value, pristine: false })}\r\n margin=\"normal\"\r\n required={true}\r\n error={!lastName.pristine && !formManager.controlIsValid(LastNameControl)}\r\n helperText={t(\"errors.required\")}\r\n />\r\n setComment({ ...comment, value, pristine: false })}\r\n margin=\"normal\"\r\n multiline\r\n />\r\n
\r\n \r\n \r\n {!configurationWasRecentlyCreated && (\r\n handleSubmit(e, true)}\r\n type=\"button\"\r\n className=\"secondary\"\r\n >\r\n {getButtonContentFromSavingState(saveNewButtonSavingState, \"save-new\")}\r\n \r\n )}\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default withNamespaces()(SaveConfiguration);\r\n","import React, { useEffect } from \"react\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { DialogProps } from \"./dialogRouter\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport Action from \"../../redux/reducers/models/action\";\r\nimport { StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport Arrow from \"../../assets/icons/arrow\";\r\nimport Close from \"../../assets/icons/close\";\r\n\r\nexport const SaveConfiguration: React.FunctionComponent = ({ title, hideDialog, t, applicationSettings, data }) => {\r\n const renderDesktopBackButton = () => {\r\n if (applicationSettings.Brand === \"HQV\") {\r\n return (\r\n <>\r\n \r\n \r\n \r\n {t(\"buttons.closeDialog\")}\r\n \r\n );\r\n }\r\n return (\r\n <>\r\n {t(\"buttons.closeDialog\")}\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const renderText = () => {\r\n if (data && data.success) {\r\n return (\r\n <>\r\n

{t(\"dialogs.savedConfiguration.text.first\")}

\r\n

\r\n {t(\"dialogs.savedConfiguration.text.second\")}\r\n \r\n {t(\"dialogs.savedConfiguration.text.third\")}\r\n \r\n {t(\"dialogs.savedConfiguration.text.fourth\")}\r\n

\r\n

{t(\"dialogs.savedConfiguration.text.fifth\")}

\r\n \r\n );\r\n }\r\n return

{t(\"dialogs.savedConfiguration.error.text\")}

;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n

{title}

\r\n
{renderText()}
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default withNamespaces()(SaveConfiguration);\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst Hand: React.FunctionComponent = () => {\r\n return (\r\n \r\n Hand\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Hand;\r\n","import React from \"react\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport { DialogProps } from \"./dialogRouter\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport { StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport ArrowHead from '../../assets/icons/arrowHead';\r\nimport Hand from '../../assets/icons/hand';\r\nimport { DialogContent } from \"@material-ui/core\";\r\n\r\nconst UserGuidance: React.FunctionComponent = ({ hideDialog, t, data, applicationSettings, title }) => {\r\n\tconst { ImageUrl } = data.models.Segments[0].Vehicles[0].Hero;\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{t(\"dialogs.userGuidance.arrows\")}\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{t(\"dialogs.userGuidance.swipe\")}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{t('buttons.configure')}\r\n\t\t\t\t\t\t{applicationSettings.Brand !== \"HQV\" && }\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{t(\"dialogs.userGuidance.configure\")}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{t(\"dialogs.userGuidance.accept\")}\r\n\t\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default withNamespaces()(UserGuidance);\r\n","import React, { useState, useEffect } from \"react\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Clear from \"@material-ui/icons/Clear\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { DialogProps } from \"./dialogRouter\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport {\r\n\tFormManager,\r\n\tFormControlState,\r\n\tcreateControl,\r\n\tDefaultValidators as Validators\r\n} from \"../../utils/FormManager\";\r\nimport {\r\n\tgetPreservedSaveDetailsData,\r\n\tgetConfigurationId,\r\n\tgetLocaleQuery\r\n} from \"../../utils/helpers\";\r\nimport store from \"../../redux/store\";\r\nimport { preserveSaveDetailsData } from \"../../redux/actions\";\r\nimport { SaveDetailsData } from \"./saveConfiguration\";\r\n\r\nconst firstnameControl = createControl(\r\n\t\"Firstname\",\r\n\t\"\",\r\n\t[Validators.notEmpty],\r\n\ttrue\r\n);\r\nconst lastnameControl = createControl(\r\n\t\"Lastname\",\r\n\t\"\",\r\n\t[Validators.notEmpty],\r\n\ttrue\r\n);\r\nconst commentControl = createControl(\"Comment\", \"\");\r\nconst emailControl = createControl(\"Email\", \"@\", [Validators.email], true);\r\nconst formManager = new FormManager();\r\n\r\nexport interface ExportConfigurationValueNames {\r\n\tFirstname: string;\r\n\tLastname: string;\r\n\tComment: string;\r\n\tEmail: string;\r\n}\r\n\r\nexport const ExportConfiguration: React.FunctionComponent<\r\n\tDialogProps & WithNamespaces\r\n> = ({ title, hideDialog, t }) => {\r\n\t// intialize state\r\n\tconst [firstname, setFirstname] = useState(\r\n\t\tfirstnameControl\r\n\t);\r\n\tconst [lastname, setLastname] = useState(lastnameControl);\r\n\tconst [comment, setComment] = useState(commentControl);\r\n\tconst [email, setEmail] = useState(emailControl);\r\n\r\n\t// load form control values from redux store\r\n\tuseEffect(() => {\r\n\t\tconst {\r\n\t\t\tFirstname: preservedName,\r\n\t\t\tLastname: preservedSurName,\r\n\t\t\tComment: preservedComment\r\n\t\t} = getPreservedSaveDetailsData();\r\n\r\n\t\tsetFirstname({ ...firstname, value: preservedName });\r\n\t\tsetLastname({ ...lastname, value: preservedSurName });\r\n\t\tsetComment({ ...comment, value: preservedComment });\r\n\t\t// eslint-disable-next-line\r\n\t}, []);\r\n\r\n\tconst saveCustomerData = (values: ExportConfigurationValueNames) => {\r\n\t\tconst { Vin, OrderNumber } = getPreservedSaveDetailsData();\r\n\r\n\t\tstore.dispatch(\r\n\t\t\tpreserveSaveDetailsData({\r\n\t\t\t\t...values,\r\n\t\t\t\tVin,\r\n\t\t\t\tOrderNumber\r\n\t\t\t} as SaveDetailsData)\r\n\t\t);\r\n\t};\r\n\r\n\tconst customerNameIsInvalid = () =>\r\n\t\t!formManager.controlIsValid(firstnameControl) ||\r\n\t\t!formManager.controlIsValid(lastnameControl);\r\n\r\n\tconst getDownloadProps = () => {\r\n\t\tif (customerNameIsInvalid()) {\r\n\t\t\treturn {};\r\n\t\t}\r\n\r\n\t\tconst values = formManager.getHashValues();\r\n\t\tconst firstname = encodeURIComponent(values.Firstname);\r\n\t\tconst lastname = encodeURIComponent(values.Lastname);\r\n\t\tconst href = `/api/posconfigurator/configuration/${getConfigurationId()}/export${getLocaleQuery()}&firstname=${firstname}&lastname=${lastname}`;\r\n\t\treturn { href };\r\n\t};\r\n\r\n\tconst saveAndClose = () => {\r\n\t\tsaveCustomerData(\r\n\t\t\tformManager.getHashValues()\r\n\t\t);\r\n\t\thideDialog();\r\n\t};\r\n\r\n\t// update controls on every render\r\n\tformManager.addAllControls([\r\n\t\t[firstname, setFirstname],\r\n\t\t[lastname, setLastname],\r\n\t\t[comment, setComment],\r\n\t\t[email, setEmail]\r\n\t]);\r\n\r\n\tconst emailError =\r\n\t\t!email.pristine && !formManager.controlIsValid(emailControl);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\ttitle\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\tsetFirstname({ ...firstname, value })\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tmargin=\"normal\"\r\n\t\t\t\t\t\trequired={true}\r\n\t\t\t\t\t\terror={\r\n\t\t\t\t\t\t\t!firstname.pristine &&\r\n\t\t\t\t\t\t\t!formManager.controlIsValid(firstnameControl)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thelperText={t(\"errors.required\")}\r\n\t\t\t\t\t\tautoFocus\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\tsetLastname({ ...lastname, value })\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tmargin=\"normal\"\r\n\t\t\t\t\t\trequired={true}\r\n\t\t\t\t\t\terror={\r\n\t\t\t\t\t\t\t!lastname.pristine && !formManager.controlIsValid(lastnameControl)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thelperText={t(\"errors.required\")}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t{/*\r\n\t\t\t\t\t\t\tsetComment({ ...comment, value })\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tmargin=\"normal\"\r\n\t\t\t\t\t\tmultiline\r\n\t\t\t\t\t/>*/}\r\n\t\t\t\t\t setEmail({ ...email, value })}\r\n\t\t\t\t\t\tmargin=\"normal\"\r\n\t\t\t\t\t\trequired={true}\r\n\t\t\t\t\t\terror={emailError}\r\n\t\t\t\t\t\thelperText={emailError ? t(\"errors.invalidEmail\") : \"\"}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{t(\"buttons.download\")}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{/*\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t*/}\r\n\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default withNamespaces()(ExportConfiguration);\r\n","import React, { useState, useEffect } from \"react\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { DialogProps } from \"./dialogRouter\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport Arrow from \"../../assets/icons/arrow\";\r\nimport Close from \"../../assets/icons/close\";\r\nimport { AxiosResponse } from \"axios\";\r\nimport { shareConfiguration } from \"../../services/http/real\";\r\nimport { useClipboard } from \"use-clipboard-copy\";\r\nimport Action from \"../../redux/reducers/models/action\";\r\nimport { ShareConfigurationResponse } from \"../configuration/configurationSummary/ConfigurationSummary\";\r\nimport { connect } from \"react-redux\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\n\r\nexport interface ShareConfigurationProps {\r\n setConfigurationId: (id: number) => Action;\r\n configurationWasRecentlyCreated: boolean;\r\n}\r\n\r\ntype AllProps = DialogProps & ShareConfigurationProps & StateManagementProps & WithNamespaces;\r\n\r\nexport const ShareConfiguration: React.FunctionComponent = props => {\r\n const { applicationSettings, hideDialog, t, setConfigurationId, isXBow } = props;\r\n const [configurationUrl, setConfigurationUrl] = useState(\"\");\r\n const [hasConfig, setHasConfig] = useState(false);\r\n\r\n const clipboard = useClipboard({\r\n copiedTimeout: 0, // timeout duration in milliseconds\r\n onSuccess: hideDialog, //close dialog after copy\r\n });\r\n\r\n useEffect(() => {\r\n return () => {\r\n hideDialog();\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!hasConfig) {\r\n shareConfiguration().then(\r\n (response: AxiosResponse) => {\r\n setConfigurationUrl(response.data.Url);\r\n setConfigurationId(response.data.ConfigurationId);\r\n setHasConfig(true);\r\n return response.data.Url;\r\n },\r\n error => {\r\n console.log(\"Cannot create shareable Link \", error);\r\n return \"no link availiable\";\r\n }\r\n );\r\n }\r\n }, []);\r\n\r\n const renderDesktopBackButton = () => {\r\n if (applicationSettings.Brand === \"HQV\") {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (applicationSettings.Brand === \"GG\") {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {renderDesktopBackButton()}\r\n \r\n
\r\n
\r\n \r\n

{t(\"configuration.summary.shareOptions.sendLink.title\")}

\r\n
\r\n
{t(`configuration.summary.shareOptions.sendLink.description.${isXBow ? \"car\" : \"bike\"}`)}
\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default withNamespaces()(connect(mapStateToProps, mapDispatchToProps)(ShareConfiguration));\r\n","import React, { useState, useEffect } from 'react';\r\n\r\ntype DotType = 1 | 2 | 3 | 4 | 5;\r\n\r\nexport const DotsLoader: React.FunctionComponent<{}> = () => {\r\n const [value, setValue] = useState(1);\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setValue((value) => value === 5 ? 1 : ++value as DotType);\r\n }, 1000);\r\n return () => {\r\n clearInterval(timer);\r\n }\r\n }, []);\r\n\r\n const style: React.CSSProperties = {\r\n display: 'inline-block',\r\n width: '20px',\r\n textAlign: 'left',\r\n };\r\n\r\n return (\r\n {new Array(value).fill('item').map((item, idx) => .)}\r\n )\r\n}\r\n\r\nexport default DotsLoader;","import React, { FormEvent, useState } from \"react\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { DialogProps } from \"./dialogRouter\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport http from \"../../services/http\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport {\r\n\tFormManager,\r\n\tFormControlState,\r\n\tcreateControl,\r\n\tDefaultValidators as Validators\r\n} from \"../../utils/FormManager\";\r\nimport { toastMessage } from \"../../utils/helpers\";\r\nimport DotsLoader from \"../shared/DotsLoader\";\r\nimport Arrow from \"../../assets/icons/arrow\";\r\nimport Close from \"../../assets/icons/close\";\r\nimport { AxiosResponse } from \"axios\";\r\nimport Action from \"../../redux/reducers/models/action\";\r\nimport { connect } from \"react-redux\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nexport interface SendConfigurationProps {\r\n\tsetConfigurationId: (id: number) => Action;\r\n\tconfigurationWasRecentlyCreated: boolean;\r\n}\r\n\r\nconst EmailControl = createControl(\"Email\", \"Type Email\", [Validators.email], true);\r\nconst formManager = new FormManager();\r\n\r\nexport const SendConfiguration: React.FunctionComponent<\r\n\tDialogProps & SendConfigurationProps & StateManagementProps & WithNamespaces> = ({ title, hideDialog, t, setConfigurationId, applicationSettings }) => {\r\n\t\tconst [email, setEmail] = useState(EmailControl);\r\n\t\tconst [error, setError] = useState(false);\r\n\t\tconst [generating, setGenerating] = useState(false);\r\n\r\n\r\n\t\tconst handleSubmit = (e: FormEvent) => {\r\n\t\t\te.preventDefault();\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t\tif (!formManager.formIsValid) {\r\n\t\t\t\tformManager.touchControls();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tsetGenerating(true);\r\n\r\n\t\t\thttp\r\n\t\t\t\t.sendPdfSummary(email.value)\r\n\t\t\t\t.then((response: AxiosResponse<{ ConfigurationId: number }>) => {\r\n\t\t\t\t\tsetConfigurationId(response.data.ConfigurationId);\r\n\t\t\t\t\tsetGenerating(false);\r\n\t\t\t\t\ttoastMessage(t(\"toasts.summarySent\"));\r\n\t\t\t\t\thideDialog();\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tsetGenerating(false);\r\n\t\t\t\t\tsetError(true);\r\n\t\t\t\t\tconsole.log(`an error occured: ${error}.`);\r\n\t\t\t\t});\r\n\t\t};\r\n\r\n\t\t// update controls on every render\r\n\t\tformManager.addAllControls([[email, setEmail]]);\r\n\r\n\r\n\t\tconst emailError =\r\n\t\t\t!email.pristine && !formManager.controlIsValid(EmailControl);\r\n\r\n\t\tconst renderDesktopBackButton = () => {\r\n\t\t\tif (applicationSettings.Brand === \"HQV\") {\r\n\t\t\t\treturn ();\r\n\t\t\t}\r\n\t\t\telse if (applicationSettings.Brand === \"GG\") {\r\n\t\t\t\treturn()\r\n\t\t\t}\r\n\t\t\treturn ();\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{renderDesktopBackButton()}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t{title}\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t{t('configuration.summary.shareOptions.sendMail.description')}\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{error && (\r\n\t\t\t\t\t\t\t\t\t\t

{t(\"errors.sendingEmail\")}

\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t setEmail({ ...email, value })}\r\n\t\t\t\t\t\t\t\t\t\tmargin=\"normal\"\r\n\t\t\t\t\t\t\t\t\t\trequired={true}\r\n\t\t\t\t\t\t\t\t\t\terror={emailError}\r\n\t\t\t\t\t\t\t\t\t\thelperText={emailError ? t(\"errors.invalidEmail\") : \"\"}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{t(`buttons.${generating ? \"generating\" : \"send\"}`)}\r\n\t\t\t\t\t\t\t\t\t\t{generating && }\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t);\r\n\t};\r\n\r\nexport default withNamespaces()(\r\n\tconnect(\r\n\t\tmapStateToProps,\r\n\t\tmapDispatchToProps\r\n\t)(SendConfiguration)\r\n);\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nconst MapPin: React.FunctionComponent = () => {\r\n return (\r\n \r\n Pin Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default MapPin;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst PinCircle: React.FunctionComponent = () => {\r\n return (\r\n \r\n PinCircle Icon\r\n \r\n \r\n );\r\n};\r\n\r\nexport default PinCircle;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nexport interface PinIconProps {\r\n brand?: string;\r\n}\r\n\r\nconst Pin: React.FunctionComponent = props => {\r\n const { brand } = props;\r\n return (\r\n \r\n Pin Icon\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Pin;\r\n","import React from \"react\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\n\r\nconst User: React.FunctionComponent = () => {\r\n return (\r\n \r\n User Icon\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default User;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { DialogProps } from \"./dialogRouter\";\r\nimport { WithNamespaces } from \"react-i18next\";\r\nimport { StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport BrandLogo from \"../shared/BrandLogo\";\r\nimport ArrowHead from \"../../assets/icons/arrowHead\";\r\n\r\nexport interface DialogHeaderProps {\r\n generating?: boolean;\r\n}\r\n\r\nexport type AllSendConfigurationToDealerProps = DialogProps & StateManagementProps & WithNamespaces & DialogHeaderProps;\r\n\r\nexport const DialogHeaderWithLogo: React.FunctionComponent = (props) => {\r\n const { hideDialog, t, userDidTimeoutInStream, generating } = props;\r\n\r\n return (\r\n <>\r\n
\r\n {!userDidTimeoutInStream && !generating ? (\r\n \r\n ) : (\r\n
\r\n )}\r\n\r\n \r\n
\r\n\r\n
\r\n {!userDidTimeoutInStream && !generating ? (\r\n \r\n ) : (\r\n
\r\n )}\r\n \r\n
\r\n \r\n );\r\n};\r\n","import React, { FormEvent, useCallback, useEffect, useState } from \"react\";\r\nimport { DialogContent, DialogActions, Dialog, CircularProgress } from \"@material-ui/core\";\r\nimport { DialogProps } from \"./dialogRouter\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport http from \"../../services/http\";\r\nimport { FormManager, FormControlState, createControl, DefaultValidators as Validators } from \"../../utils/FormManager\";\r\nimport { getConfigurationId, toastMessage, isPortraitMode, generateScreenshotForPDFGeneration, getIsMobile } from \"../../utils/helpers\";\r\nimport { AxiosResponse } from \"axios\";\r\nimport Action from \"../../redux/reducers/models/action\";\r\nimport { connect } from \"react-redux\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport { DealerSearchComponent } from \"ktm-dealer-search\";\r\nimport \"ktm-dealer-search/dist/index.css\";\r\nimport CdcLogin, { UserData, UserProfile } from \"../configuration/cdc/CdcLogin\";\r\nimport { DealerOption } from \"ktm-dealer-search/dist/lib/hooks/useDealerSearch\";\r\nimport { ConfigurationSummaryProps, ShareConfigurationResponse } from \"../configuration/configurationSummary/ConfigurationSummary\";\r\nimport { getCurrentCountry } from \"../../redux/selectors\";\r\nimport store from \"../../redux/store\";\r\nimport formatter from \"../../utils/formatter\";\r\nimport MapPin from \"../../assets/icons/map_pin\";\r\nimport PinCircle from \"../../assets/icons/pin_circle\";\r\nimport Pin from \"../../assets/icons/pin\";\r\nimport User from \"../../assets/icons/user\";\r\nimport CheckOk from \"../../assets/icons/check_ok\";\r\nimport { DialogHeaderWithLogo } from \"./dialogHeaderWithLogo\";\r\nimport { shareConfiguration } from \"../../services/http/real\";\r\n\r\nconst EmailControl = createControl(\"Email\", \"Type Email\", [Validators.email], true);\r\n\r\nconst formManager = new FormManager();\r\n\r\nexport interface Offer {\r\n dealer?: DealerOption;\r\n configurationId?: number;\r\n userProfileId?: string;\r\n userProfile?: UserProfile;\r\n screenshotData?: string;\r\n}\r\n\r\nexport interface SendConfigurationProps {\r\n setConfigurationId: (id: number) => Action;\r\n configurationWasRecentlyCreated: boolean;\r\n isPortraitMode?: boolean;\r\n}\r\n\r\nexport type AllSendConfigurationToDealerProps = DialogProps & SendConfigurationProps & StateManagementProps & WithNamespaces;\r\n\r\nexport const SendConfigurationToDealer: React.FunctionComponent = (props) => {\r\n const { hideDialog, t, setConfigurationId, applicationSettings, data, isXBow, setDealerInquirySent, is3DMode, userDidTimeoutInStream } = props;\r\n\r\n const brand = applicationSettings.Brand;\r\n const _offer: Offer = { configurationId: getConfigurationId() };\r\n\r\n const configSummaryProps: ConfigurationSummaryProps = data;\r\n\r\n const [email, setEmail] = useState(EmailControl);\r\n const [error, setError] = useState(false);\r\n const [generating, setGenerating] = useState(false);\r\n const [dealerChecked, setDealerChecked] = useState(false);\r\n const [configurationChecked, setConfigurationChecked] = useState(getConfigurationId() != undefined);\r\n const [userProfileChecked, setUserProfileChecked] = useState(false);\r\n const [dealerSearchOpen, setDealerSearchOpen] = useState(false);\r\n const [offer, setOffer] = useState(_offer);\r\n const [selectedDealerNo, setSelectedDealerNo] = useState(0);\r\n const [reloadConfigurationUrl, setReloadConfigurationUrl] = useState(\"\");\r\n\r\n //user starts dealer search\r\n const showDealerSearch = () => {\r\n setDealerSearchOpen(!dealerSearchOpen);\r\n setOffer(offer);\r\n };\r\n\r\n useEffect(() => {\r\n addRemoveClassToFooter(true, \"send-configuration\");\r\n props.setDealerInquiryDialogOpen(true);\r\n if (offer.configurationId != getConfigurationId()) {\r\n offer.configurationId = getConfigurationId();\r\n setOffer({ ...offer });\r\n }\r\n\r\n return () => {\r\n addRemoveClassToFooter(false, \"send-configuration\");\r\n props.setDealerInquiryDialogOpen(false);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n shareConfiguration().then(\r\n (response: AxiosResponse) => {\r\n const configurationUrl = response.data.Url;\r\n setReloadConfigurationUrl(configurationUrl);\r\n },\r\n (error) => {\r\n console.log(\"Cannot create shareable Link \", error);\r\n return \"no link availiable\";\r\n }\r\n );\r\n }, [userDidTimeoutInStream]);\r\n\r\n // when the dealer is selected\r\n const onSelectDealer = useCallback(\r\n (dealer: DealerOption) => {\r\n offer.dealer = dealer;\r\n setOffer({ ...offer });\r\n setSelectedDealerNo(dealer.DealerNo);\r\n setDealerChecked(true);\r\n setDealerSearchOpen(false);\r\n },\r\n [setSelectedDealerNo]\r\n );\r\n\r\n const changeConfiguration = () => hideDialog();\r\n\r\n // when the user is logged in into CDC\r\n const onUserLoggedIn = (userData: UserData) => {\r\n if (userData) {\r\n setUserProfileChecked(true);\r\n offer.userProfileId = userData.UID;\r\n offer.userProfile = userData.profile;\r\n offer.configurationId = getConfigurationId();\r\n setOffer({ ...offer });\r\n } else {\r\n setUserProfileChecked(false);\r\n offer.userProfileId = undefined;\r\n offer.userProfile = undefined;\r\n setOffer({ ...offer });\r\n }\r\n };\r\n\r\n const sendToDealerWithScreenShotFunction = () =>\r\n http\r\n .sendToDealerWithScreenShot(offer)\r\n .then((response: AxiosResponse<{ ConfigurationId: number }>) => {\r\n setConfigurationId(response.data.ConfigurationId);\r\n setGenerating(false);\r\n toastMessage(t(\"toasts.offerSent\"));\r\n hideDialog();\r\n setDealerInquirySent(true);\r\n })\r\n .catch((error) => {\r\n setGenerating(false);\r\n setError(true);\r\n console.log(`an error occured: ${error}.`);\r\n });\r\n\r\n //Send form data to backend .. email to dealer\r\n const handleSubmit = (e: FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (!(dealerChecked && configurationChecked && userProfileChecked)) return;\r\n setGenerating(true);\r\n\r\n if (is3DMode) {\r\n const storePdfScreenshot = sessionStorage.getItem(\"pdfScreenshot\");\r\n\r\n if (storePdfScreenshot) {\r\n offer.screenshotData = storePdfScreenshot;\r\n sendToDealerWithScreenShotFunction();\r\n } else {\r\n const promise = generateScreenshotForPDFGeneration(props.isPortraitMode || isPortraitMode(), getIsMobile(), document.getElementById(\"stream\") as HTMLVideoElement);\r\n\r\n promise &&\r\n promise.then((base64Image) => {\r\n offer.screenshotData = base64Image;\r\n sendToDealerWithScreenShotFunction();\r\n });\r\n }\r\n } else {\r\n http\r\n .sendToDealer(offer)\r\n .then((response: AxiosResponse<{ ConfigurationId: number }>) => {\r\n setConfigurationId(response.data.ConfigurationId);\r\n setGenerating(false);\r\n toastMessage(t(\"toasts.offerSent\"));\r\n hideDialog();\r\n setDealerInquirySent(true);\r\n })\r\n .catch((error) => {\r\n setGenerating(false);\r\n setError(true);\r\n console.log(`an error occured: ${error}.`);\r\n });\r\n }\r\n };\r\n\r\n function getGoogleMapsKey(): string {\r\n return applicationSettings.GoogleMapsKey;\r\n }\r\n\r\n function removeTabIndexToMakeCDCWorking() {\r\n const element = document.getElementById(\"sendConfigurationToDealerDialog\");\r\n if (element) {\r\n element.children[1].removeAttribute(\"tabindex\");\r\n }\r\n }\r\n\r\n // update controls on every render\r\n formManager.addAllControls([[email, setEmail]]);\r\n\r\n const toDealerSearchBrand = (configuratorBrand: string) => {\r\n console.log(\"*** toDealerSearchBrand\", configuratorBrand);\r\n switch (configuratorBrand) {\r\n case \"KTM\":\r\n return \"ktm\";\r\n case \"HQV\":\r\n return \"husqvarna\";\r\n case \"GG\":\r\n return \"gasGas\";\r\n default:\r\n return \"all\";\r\n }\r\n };\r\n\r\n const getDealerQualification = (): string | undefined => {\r\n if (configSummaryProps.selectedModel.Name.toLowerCase().indexOf(\"bow\") >= 0) return \"1000681369\"; //X-Bow Qualifikation-ID \"1000681369\"\r\n return undefined;\r\n };\r\n\r\n function addRemoveClassToFooter(add: boolean, className: string) {\r\n const footer = document.getElementById(\"footer\");\r\n if (footer) {\r\n if (add) {\r\n (footer as any).classList.add(className);\r\n } else {\r\n (footer as any).classList.remove(className);\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n\r\n
\r\n \r\n {dealerSearchOpen ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n {generating && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
{configurationChecked && }
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
{configSummaryProps.selectedModel.Name}
\r\n
\r\n {configSummaryProps.totalPrice && !isXBow && (\r\n <>\r\n {formatter.currency(configSummaryProps.totalPrice)}\r\n {brand === \"KTM\" ? <>{\" (incl. ktm powerparts)\"} : <>{\" (incl. accessories)\"}}\r\n \r\n )}\r\n
\r\n
\r\n {\r\n if (!userDidTimeoutInStream) {\r\n changeConfiguration();\r\n } else {\r\n window.location.href = reloadConfigurationUrl;\r\n }\r\n }}\r\n >\r\n {!userDidTimeoutInStream ? t(\"configuration.offer.changeconfiguration\") : t(\"configuration.offer.reloadconfiguration\")}\r\n \r\n
\r\n
\r\n
\r\n\r\n
{configurationChecked && }
\r\n\r\n
\r\n {\r\n if (!userDidTimeoutInStream) {\r\n changeConfiguration();\r\n } else {\r\n let reRoute = reloadConfigurationUrl;\r\n if (process.env.REACT_APP_ENVIRONMENT === \"DEV\") {\r\n reRoute = reloadConfigurationUrl.replace(\"5000\", \"5001\");\r\n }\r\n window.location.href = reRoute;\r\n }\r\n }}\r\n >\r\n {!userDidTimeoutInStream ? t(\"configuration.offer.changeconfiguration\") : t(\"configuration.offer.reloadconfiguration\")}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
{dealerChecked && }
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n {dealerChecked && offer && offer.dealer && <>{offer.dealer.Name}}\r\n {!dealerChecked && <>{t(\"configuration.offer.nodealer\")}}\r\n
\r\n
\r\n {dealerChecked && offer && offer.dealer && (\r\n <>\r\n {offer.dealer.Street}\r\n {offer.dealer.Street && offer.dealer.Street !== \"\" && \", \"}\r\n {offer.dealer.PostCode} {offer.dealer.Town}\r\n \r\n )}\r\n
\r\n
\r\n {\r\n showDealerSearch();\r\n }}\r\n >\r\n {t(\"configuration.offer.finddealer\")}\r\n \r\n
\r\n
\r\n
\r\n\r\n
{dealerChecked && }
\r\n\r\n
\r\n {\r\n showDealerSearch();\r\n }}\r\n >\r\n {t(\"configuration.offer.finddealer\")}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
{userProfileChecked && }
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n {offer && offer.userProfile && (\r\n <>\r\n {offer.userProfile.firstName} {offer.userProfile.lastName}\r\n \r\n )}\r\n {!userProfileChecked && <>{t(\"configuration.offer.loginhint\")}}\r\n
\r\n
{offer && offer.userProfile && <>{offer.userProfile.email}}
\r\n \r\n
\r\n
\r\n\r\n
{userProfileChecked && }
\r\n\r\n \r\n
\r\n
\r\n
\r\n )}\r\n\r\n {error &&

{t(\"errors.sendingEmail\")}

}\r\n
\r\n\r\n {!dealerSearchOpen && (\r\n \r\n \r\n {t(`buttons.${generating ? \"generating\" : \"send\"}`)}\r\n \r\n \r\n )}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default withNamespaces()(connect(mapStateToProps, mapDispatchToProps)(SendConfigurationToDealer));\r\n","import React, { useState } from \"react\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { DialogProps } from \"./dialogRouter\";\r\nimport { withNamespaces, WithNamespaces } from \"react-i18next\";\r\nimport { CircularProgress, FormControl, MenuItem, Select } from \"@material-ui/core\";\r\nimport { getCulture } from \"../../utils/helpers\";\r\nimport ArrowHead from \"../../assets/icons/arrowHead\";\r\nimport store from \"../../redux/store\";\r\nimport Action from \"../../redux/reducers/models/action\";\r\nimport { SET_COUNTRY, SET_CULTURE } from \"../../redux/actionTypes\";\r\nimport Arrow from '../../assets/icons/arrow';\r\nimport queryString from 'query-string';\r\nimport { StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport { RouteComponentProps } from \"react-router\";\r\nimport * as H from 'history';\r\nimport i18next from \"i18next\";\r\nimport Close from \"../../assets/icons/close\";\r\n\r\nexport interface CountryLanguageType {\r\n CountryName: string;\r\n CountryCode: string;\r\n LanguageCode: any;\r\n ImprintCode: string|null;\r\n}\r\n\r\nexport interface LanguageSelectionProps {\r\n history: H.History;\r\n}\r\nexport const SaveConfiguration: React.FunctionComponent<\r\n\tDialogProps & WithNamespaces & RouteComponentProps & LanguageSelectionProps & StateManagementProps\r\n> = ({\r\n\thideDialog,\r\n t,\r\n history,\r\n applicationSettings,\r\n countryArray\r\n}) => {\r\n\r\n const [showActiveClass, setShowActiveClass] = useState(false);\r\n let CountriesArray:CountryLanguageType[] = countryArray.currentCountryArray;\r\n const [culture, setCulture] = useState(getCulture());\r\n\r\n const handleChange = (event: React.ChangeEvent<{ value: string}>) => {\r\n let currentQueryString = history.location.search;\r\n let parsedQueryString = queryString.parse(currentQueryString);\r\n let country = (event.target.value).split('-');\r\n let additionalQueryString=\"\";\r\n let newQueryString =\"\";\r\n if(currentQueryString && currentQueryString !== \"\") {\r\n if ('culture' in parsedQueryString && 'country' in parsedQueryString && parsedQueryString.culture) {\r\n parsedQueryString.culture = event.target.value;\r\n parsedQueryString.country = country[1]\r\n }\r\n else if(\"culture\" in parsedQueryString){\r\n parsedQueryString.culture = event.target.value;\r\n additionalQueryString = \"&country=\"+country[1];\r\n }\r\n else if(\"country\" in parsedQueryString) {\r\n parsedQueryString.country = country[1];\r\n additionalQueryString = \"&culture=\"+event.target.value;\r\n }\r\n else {\r\n additionalQueryString=\"&country=\"+country[1]+\"&culture=\"+event.target.value;\r\n }\r\n newQueryString= queryString.stringify(parsedQueryString);\r\n }\r\n else {\r\n newQueryString = \"culture=\"+event.target.value+\"&country=\"+country[1];\r\n }\r\n store.dispatch({type: SET_COUNTRY, payload: country[1]});\r\n store.dispatch({type: SET_CULTURE, payload: event.target.value});\r\n i18next.changeLanguage(event.target.value as string);\r\n history.push(history.location.pathname+'?'+newQueryString+additionalQueryString);\r\n hideDialog();\r\n window.location.reload();\r\n };\r\n\r\n if ( CountriesArray.length === 0) {\r\n\t\treturn ;\r\n }\r\n\r\n if(CountriesArray.length !==0) {\r\n return (\r\n \r\n \r\n {culture !== \"\" &&\r\n \r\n }\r\n\t\t\t\t\r\n \r\n {culture !== \"\" && applicationSettings.Brand !== \"GG\" &&\r\n hideDialog()}>\r\n {applicationSettings.Brand === \"HQV\" &&\r\n \r\n }\r\n {t('buttons.closeDialog')}\r\n {applicationSettings.Brand === \"KTM\" &&\r\n \r\n }\r\n \r\n }\r\n {culture !== \"\" && applicationSettings.Brand === \"GG\" &&\r\n \r\n }\r\n \r\n \r\n

{t('dialogs.languageSelection.heading')}

\r\n
\r\n setShowActiveClass(!showActiveClass)}>\r\n \r\n setShowActiveClass(false)}\r\n open={showActiveClass}\r\n onOpen={e => {}}\r\n MenuProps={{\r\n anchorOrigin: {\r\n vertical: \"top\",\r\n horizontal: \"left\"\r\n },\r\n transformOrigin: {\r\n vertical: \"top\",\r\n horizontal: \"left\"\r\n },\r\n getContentAnchorEl: null\r\n }}\r\n >\r\n {CountriesArray.map(function(country, index){\r\n return {country.CountryName};\r\n })}\r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n }\r\n return null;\r\n\r\n};\r\n\r\nexport default withNamespaces()(SaveConfiguration);\r\n","import React from \"react\";\r\nimport { DialogTypes } from \"../../enums/dialogTypes\";\r\nimport SetupPartsDialog from \"./setupParts\";\r\nimport { StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport { DialogState } from \"../../redux/reducers/modals\";\r\nimport Action from \"../../redux/reducers/models/action\";\r\nimport WarnBeforeExit from \"./warnBeforeExit\";\r\nimport DeleteConfiguration from \"./deleteConfiguration\";\r\nimport ConflictingParts from \"./conflictingParts\";\r\nimport RemoveConflictingParts from \"./removeConflictingParts\";\r\nimport SaveConfiguration from \"./saveConfiguration\";\r\nimport SavedConfiguration from \"./savedConfiguration\";\r\nimport UserGuidance from \"./UserGuidance\";\r\nimport ExportConfiguration from \"./exportConfiguration\";\r\nimport ShareConfiguration from \"./shareConfiguration\";\r\nimport SendConfiguration from \"./sendConfiguration\";\r\nimport SendConfigurationToDealer from \"./sendConfigurationToDealer\";\r\nimport LanguageSelection from \"./languageSelection\";\r\nimport { RouteComponentProps } from \"react-router\";\r\n\r\nexport interface DialogProps extends DialogState {\r\n hideDialog: () => Action;\r\n}\r\n\r\nexport const defaultMessage = \"Something went wrong, we are working on it.\";\r\n\r\nexport class DialogRouter extends React.Component {\r\n renderDialog() {\r\n const { contentType } = this.props.dialogState;\r\n const props: DialogProps = {\r\n ...this.props.dialogState,\r\n hideDialog: this.props.hideDialog,\r\n };\r\n\r\n switch (contentType) {\r\n case DialogTypes.setupParts:\r\n return ;\r\n case DialogTypes.warnBeforeExit:\r\n return ;\r\n case DialogTypes.deleteConfiguraion:\r\n return ;\r\n case DialogTypes.conflictWhileAddPart:\r\n return ;\r\n case DialogTypes.removeConflictingPart:\r\n return ;\r\n case DialogTypes.saveConfiguration:\r\n return ;\r\n case DialogTypes.exportConfiguration:\r\n return ;\r\n case DialogTypes.shareConfiguration:\r\n return ;\r\n case DialogTypes.sendConfiguration:\r\n return ;\r\n case DialogTypes.sendConfigurationToDealer:\r\n return ;\r\n case DialogTypes.savedConfiguration:\r\n return ;\r\n case DialogTypes.userGuidance:\r\n return ;\r\n case DialogTypes.languageSelection:\r\n return ;\r\n default:\r\n return
{defaultMessage}
;\r\n }\r\n }\r\n\r\n render() {\r\n if (!this.props.dialogState.isOpen) {\r\n return null;\r\n }\r\n return this.renderDialog();\r\n }\r\n}\r\n","import React, { useEffect, useContext, useState } from \"react\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { Route, Switch, RouteComponentProps } from \"react-router-dom\";\r\nimport Motorcycles from \"./motorcycles/MotorcycleView\";\r\nimport Overview from \"./overview/Overview\";\r\nimport store from \"../../redux/store\";\r\nimport { Theme, withStyles, WithStyles } from \"@material-ui/core/styles\";\r\nimport { CSSProperties } from \"@material-ui/core/styles/withStyles\";\r\nimport { WithNamespaces, withNamespaces } from \"react-i18next\";\r\nimport queryString from \"query-string\";\r\nimport Action from \"../../redux/reducers/models/action\";\r\nimport { SET_CULTURE, SET_COMPANY_ID, SET_COUNTRY } from \"../../redux/actionTypes\";\r\nimport { getCulture, getMarket } from \"../../utils/helpers\";\r\nimport Footer from \"../navigation/Footer\";\r\nimport ConfigurationView from \"../configuration/ConfigurationView\";\r\nimport { CompanyIdContext, CompanyIdProvider } from \"../../App\";\r\nimport getModels from \"../../redux/async-actions/getModels\";\r\nimport loadConfiguration from \"../../redux/async-actions/loadConfiguration\";\r\nimport i18next from \"i18next\";\r\nimport { connect } from \"react-redux\";\r\nimport { mapDispatchToProps, mapStateToProps, StateManagementProps } from \"../../utils/addReduxProps\";\r\nimport { CircularProgress } from \"@material-ui/core\";\r\nimport TagManager from \"react-gtm-module\";\r\nimport { DialogRouter } from \"../dialogs/dialogRouter\";\r\nimport { getAllMarkets, getFastlyGeoCountry } from \"../../services/http/real\";\r\nimport { AxiosResponse } from \"axios\";\r\nimport { CountryLanguageType } from \"../dialogs/languageSelection\";\r\nimport { CurrentCountryState } from \"../../redux/reducers/currentCountry\";\r\nimport { Helmet } from \"react-helmet\";\r\n\r\nexport const classes: (theme: Theme) => Record = (theme) => ({\r\n alignCenter: {\r\n fontSize: \"1.3em!important\",\r\n },\r\n});\r\n\r\nexport interface MarketResponse {\r\n MarketsData: MarketDetailResponse[];\r\n}\r\n\r\nexport interface MarketDetailResponse {\r\n MarketName: string;\r\n Languages: string[];\r\n Imprint: string | null;\r\n MarketCode: string;\r\n}\r\n\r\ntype MainViewAllProps = StateManagementProps & WithNamespaces & WithStyles & RouteComponentProps<{ modelId: string }>;\r\nexport const MainView: React.FunctionComponent = (props) => {\r\n const {\r\n models,\r\n applicationSettings,\r\n classes,\r\n t,\r\n history,\r\n location: { pathname: string, search: Search },\r\n setCurrentCountry,\r\n countryArray,\r\n setCountryArray,\r\n setPreselectedVariationCode,\r\n is3DMode,\r\n setIs3DMode,\r\n overview,\r\n dealerInquirySent,\r\n } = props;\r\n\r\n const modelSelectionState = {\r\n show: \"show\",\r\n hide: \"hide\",\r\n redirect: \"redirect\",\r\n };\r\n\r\n const path = \"/main\";\r\n const motorcyclesUrl = path + \"/motorcycles\";\r\n const overviewUrl = path + \"/overview/:modelId\";\r\n const configUrl = path + \"/configuration/:modelId\";\r\n let CountriesArray: CountryLanguageType[] = [];\r\n const [openPopUp, setOpenPopUp] = useState(false);\r\n const [correctSettings, setCorrectSettings] = useState(modelSelectionState.hide);\r\n\r\n // eslint-disable-next-line no-restricted-globals\r\n const { search, pathname } = location;\r\n const parsed = queryString.parse(search);\r\n\r\n useEffect(() => {\r\n if ((pathname === \"/main\" || pathname === \"/main/\") && is3DMode) {\r\n setIs3DMode(false);\r\n } else if (pathname !== \"/main\" && pathname !== \"/main/\" && overview && overview.Vehicle.RenderingEngine === \"Engine3D\" && !is3DMode) {\r\n setIs3DMode(true);\r\n } else if (is3DMode && overview && overview.Vehicle.RenderingEngine !== \"Engine3D\" && pathname !== \"/main\" && pathname !== \"/main/\") {\r\n setIs3DMode(false);\r\n }\r\n }, [pathname, overview.Vehicle]);\r\n\r\n const redirectToExistingConfigurationPage = (configurationId: string, country: string, culture: string, companyId: string) => {\r\n store.dispatch(loadConfiguration(configurationId, history, country, culture, companyId) as any);\r\n };\r\n\r\n const setVariationCode = (variation: string) => {\r\n setPreselectedVariationCode({ code: variation });\r\n };\r\n\r\n const getMarketsList = () => {\r\n getAllMarkets().then((response: AxiosResponse) => {\r\n createCountryArray(response.data);\r\n });\r\n };\r\n\r\n const createCountryArray = (axiosResponse: MarketResponse) => {\r\n let marketsData = axiosResponse.MarketsData;\r\n for (let i = 0; i < marketsData.length; i++) {\r\n for (let j = 0; j < marketsData[i].Languages.length; j++) {\r\n let MarketDetails = {\r\n CountryName: marketsData[i].Languages.length !== 1 ? `${marketsData[i].MarketName} (${t(\"dialogs.languageSelection.\" + marketsData[i].Languages[j])})` : `${marketsData[i].MarketName}`,\r\n CountryCode: marketsData[i].MarketCode,\r\n LanguageCode: marketsData[i].Languages[j],\r\n ImprintCode: marketsData[i].Imprint,\r\n };\r\n CountriesArray.push(MarketDetails);\r\n }\r\n }\r\n\r\n CountriesArray = CountriesArray.sort((a, b) => a.CountryName.localeCompare(b.CountryName));\r\n setCountryArray({ currentCountryArray: CountriesArray });\r\n };\r\n\r\n const getGeoLocation = () => {\r\n let userLang = navigator.language || \"\";\r\n\r\n getFastlyGeoCountry()\r\n .then((response: AxiosResponse) => {\r\n let validCountrySettings = checkUserSettings(response.data.Country, userLang);\r\n if (validCountrySettings.CountryCode === \"\" || !validCountrySettings.CountryCode) {\r\n if (!openPopUp) setOpenPopUp(true);\r\n store.dispatch(getModels() as any);\r\n store.dispatch({ type: SET_CULTURE, payload: \"\" });\r\n store.dispatch({ type: SET_COUNTRY, payload: \"\" });\r\n setCorrectSettings(modelSelectionState.show);\r\n } else {\r\n setValidSettings(validCountrySettings.CountryCode, validCountrySettings.LanguageCode);\r\n }\r\n })\r\n .catch((error: AxiosResponse) => {\r\n if (!openPopUp) setOpenPopUp(true);\r\n store.dispatch(getModels() as any);\r\n store.dispatch({ type: SET_CULTURE, payload: \"\" });\r\n store.dispatch({ type: SET_COUNTRY, payload: \"\" });\r\n setCorrectSettings(modelSelectionState.show);\r\n });\r\n };\r\n\r\n const setValidSettings = (country: string, culture: string) => {\r\n updateDocumentLanguage(culture);\r\n\r\n const companyId = \"5b540245-23d2-480b-af90-ec5427e7e479\";\r\n if (parsed.variation) {\r\n setVariationCode(parsed.variation as string);\r\n }\r\n\r\n if (parsed.configurationId) {\r\n redirectToExistingConfigurationPage(parsed.configurationId.toString(), country, culture, companyId);\r\n setCorrectSettings(modelSelectionState.redirect);\r\n } else {\r\n setCorrectSettings(modelSelectionState.show);\r\n }\r\n setGoogleAnayltics(country, culture);\r\n\r\n store.dispatch({ type: SET_CULTURE, payload: culture });\r\n store.dispatch({ type: SET_COUNTRY, payload: country });\r\n i18next.changeLanguage(culture);\r\n store.dispatch({ type: SET_COMPANY_ID, payload: companyId });\r\n if ((getCulture() as string) !== culture && (getMarket() as string) !== country) {\r\n history.push(history.location.pathname + \"?culture=\" + culture + \"&country=\" + country);\r\n }\r\n };\r\n\r\n const setGoogleAnayltics = (country: string, culture: string) => {\r\n TagManager.initialize({\r\n gtmId: applicationSettings.GTM,\r\n events: {\r\n \"gtm.start\": new Date().getTime(),\r\n event: \"gtm.js\",\r\n },\r\n dataLayer: {\r\n country: country,\r\n culture: culture,\r\n },\r\n });\r\n };\r\n\r\n const checkUserSettings = (geoLocation: string, userLang: string) => {\r\n let language = userLang.split(\"-\")[0];\r\n let userLanguageSet = false;\r\n let countryCodeSet = false;\r\n let correctLang = \"\";\r\n let correctCode = \"\";\r\n let correctCountry = \"\";\r\n let correctImprint: string | null = null;\r\n\r\n countryArray.currentCountryArray.forEach((value: CountryLanguageType, index) => {\r\n if (value.CountryCode === geoLocation && value.LanguageCode === language) {\r\n correctCode = value.CountryCode;\r\n correctLang = value.LanguageCode + \"-\" + value.CountryCode;\r\n correctCountry = value.CountryName;\r\n userLanguageSet = true;\r\n countryCodeSet = true;\r\n correctImprint = value.ImprintCode;\r\n } else if (value.CountryCode == geoLocation && !countryCodeSet) {\r\n correctCode = value.CountryCode;\r\n correctCountry = value.CountryName;\r\n correctImprint = value.ImprintCode;\r\n if (!userLanguageSet) {\r\n correctLang = value.LanguageCode + \"-\" + value.CountryCode;\r\n }\r\n }\r\n });\r\n let validCountrySettings: CurrentCountryState = {\r\n CountryName: correctCountry,\r\n CountryCode: correctCode,\r\n LanguageCode: correctLang,\r\n ImprintCode: correctImprint,\r\n };\r\n setCurrentCountry(validCountrySettings);\r\n return validCountrySettings;\r\n };\r\n\r\n const setSettings = () => {\r\n let culture = parsed.culture || getCulture();\r\n let country = parsed.country || getMarket();\r\n let validCountrySettings = checkUserSettings(country as string, culture as string);\r\n\r\n if (validCountrySettings.CountryCode === \"\" || !validCountrySettings.CountryCode) {\r\n getGeoLocation();\r\n } else {\r\n setValidSettings(validCountrySettings.CountryCode, validCountrySettings.LanguageCode);\r\n }\r\n };\r\n\r\n const updateDocumentLanguage = (lang: string) => {\r\n let lng = lang.substring(0, 2);\r\n document.documentElement.lang = lng;\r\n };\r\n\r\n let comanyContext = useContext(CompanyIdContext);\r\n let parsedCompany = parsed.id_company ? parsed.id_company.toString() : null;\r\n let companyId = parsedCompany && parsedCompany !== comanyContext ? parsedCompany : comanyContext;\r\n\r\n //TODO: set 0 to false and 1 to true\r\n const hasModelData = () => ((models ? !!models.Segments.length : 0) && models ? 1 : 0);\r\n\r\n useEffect(() => {\r\n if (countryArray.currentCountryArray.length === 0) getMarketsList();\r\n else {\r\n setSettings();\r\n }\r\n }, [countryArray]);\r\n\r\n useEffect(() => {\r\n if (getMarket() !== \"\" && getCulture() !== \"\") {\r\n store.dispatch(getModels() as any);\r\n }\r\n }, [getMarket(), getCulture()]);\r\n\r\n if (!hasModelData() || correctSettings === modelSelectionState.hide || correctSettings === modelSelectionState.redirect) {\r\n return (\r\n
\r\n {hasModelData() == 0 || correctSettings === modelSelectionState.hide || (correctSettings === modelSelectionState.redirect && )}\r\n {hasModelData() == 1 && correctSettings === modelSelectionState.show && (\r\n \r\n {t(`motorcycles.notAvailable.${applicationSettings.Brand}`)}\r\n \r\n )}\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n {applicationSettings.Brand === \"HQV\" && (\r\n \r\n )}\r\n {applicationSettings.Brand === \"GG\" && (\r\n \r\n )}\r\n {applicationSettings.Brand === \"KTM\" && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n