{"version":3,"sources":["modules/common/components/TextInput.module.css","modules/form/components/iot/DeviceRegistration.module.css","modules/common/components/DatePicker.module.css","modules/form/components/ProductRegistration.module.css","modules/common/components/NumericInput.module.css","modules/common/components/popUp/PopUpProvider.module.css","modules/form/components/iot/DeviceCancellation.module.css","modules/form/components/ProductDetails.module.css","modules/form/components/BWTWorld.module.css","assets/IC_BWT-App.svg","modules/common/components/Error.module.css","modules/form/components/FormContainer.module.css","modules/form/components/pool/PoolForm.module.css","modules/layout/components/Page.module.css","modules/form/components/PeopleInTheHouse.module.css","modules/common/components/CheckBox.module.css","modules/form/components/ProgressBar.module.css","modules/form/components/NoProductCodeHelper.module.css","modules/form/components/PlumberOrProfessional.module.css","assets/products/category/Generic-main.png","assets/products/category/Mobile-main.png","modules/common/components/Button.module.css","assets/appStore/badges/apple/en.svg","assets/IC_Guarantee.svg","assets/IC_Vouchers-02.svg","modules/common/components/CategoryTitle.module.css","modules/common/components/Info.module.css","modules/form/components/iot/AgreeDataProcessing.module.css","modules/common/components/LoadingSpinner.module.css","modules/layout/components/PageIsLoading.module.css","assets/products/category/no-code-header-de.png","assets/products/category/no-code-header-small-de.png","assets/products/category/no-code-header-en.png","assets/products/category/no-code-header-small-en.png","assets/products/category/AQA-Total-Energy-Family.png","assets/products/category/AQUAlizer.png","assets/products/category/Backwashfilter.png","assets/products/category/Cillit.png","assets/products/category/Kitchen-valves.png","assets/products/category/Penguin.png","assets/products/category/Perla-Family.png","assets/products/category/Poolcareset.png","assets/products/category/Poolrobots.png","assets/products/category/Single-lever-filter-E1.png","assets/products/category/Vida.png","assets/products/category/drink-pro-20.png","assets/products/category/Softener-UK.png","assets/products/category/Generic-main-old.png","assets/app.png","assets/camp.png","assets/shop.png","assets/IC_Account_GREY.svg","assets/IC_Account.svg","modules/common/components/CircleIndicator.module.css","modules/common/components/Heading.module.css","assets/appStore/badges/google/en.png","assets/appStore/badges/google/de.png","assets/appStore/badges/google/fr.png","assets/appStore/badges/google/it.png","assets/appStore/badges/google/nl.png","assets/appStore/badges/google/dk.png","assets/appStore/badges/google/hu.png","assets/appStore/badges/google/pl.png","assets/appStore/badges/google/ua.png","assets/appStore/badges/google/ru.png","assets/appStore/badges/google/se.png","assets/appStore/badges/google/no.png","assets/appStore/badges/google/fi.png","assets/appStore/badges/google/es.png","assets/appStore/badges/apple/de.svg","assets/appStore/badges/apple/fr.svg","assets/appStore/badges/apple/it.svg","assets/appStore/badges/apple/nl.svg","assets/appStore/badges/apple/dk.svg","assets/appStore/badges/apple/hu.svg","assets/appStore/badges/apple/pl.svg","assets/appStore/badges/apple/ru.svg","assets/appStore/badges/apple/se.svg","assets/appStore/badges/apple/no.svg","assets/appStore/badges/apple/fi.svg","assets/appStore/badges/apple/es.svg","assets/products/iot/perla.png","assets/products/iot/Perla-Silk.png","assets/products/iot/Cillit-Duo.png","assets/IC_Vouchers-01.svg","assets/IC_Maintenence.svg","assets/IC_Service.svg","modules/form/components/LegalNotice.module.css","modules/common/components/Tooltip.module.css","modules/form/components/noProductCode/NoProductCode.module.css","assets/IC_Info.svg","assets/Arrow_down.svg","modules/form/components/ShareDataWithPartner.module.css","modules/form/components/iot/AgreeStatusUpdates.module.css","modules/common/components/SubHeading.module.css","modules/form/components/iot/DeviceImage.module.css","assets/warning.svg","modules/form/components/iot/ReRegisterOverlay.module.css","modules/form/components/DisplayName.module.css","assets/App-login-register-de.png","assets/App-no-code-de.png","assets/App-login-register-en.png","assets/App-no-code-en.png","modules/form/components/AgreeEmailContact.module.css","modules/form/components/ServiceCheckbox.module.css","assets/IC_Go_Back.svg","assets/IC_Pool.svg","modules/main/components/App.module.css","modules/form/components/RegistrationComplete.module.css","modules/form/components/pool/PoolVolume.module.css","modules/form/components/pool/CreatePoolForm.module.css","modules/form/components/drinkPro20/RoomSize.module.css","modules/layout/components/Header.module.css","modules/layout/components/ExternalLinks.module.css","modules/form/components/drinkPro20/DrinkPro20Form.module.css","i18n/translations/index.ts","i18n/countryTranslations/index.ts","config.ts","modules/form/data/types.ts","modules/api/config.ts","modules/api/endpoints.ts","modules/common/components/LoadingSpinner.tsx","modules/layout/components/PageIsLoading.tsx","modules/auth/components/AuthProvider.tsx","modules/form/reducers/index.ts","modules/intl/components/ConnectedIntlProvider.tsx","modules/form/components/FormContext.tsx","modules/util/constants.ts","modules/util/getProductCategoryImage.ts","modules/common/components/Button.tsx","modules/layout/components/Header.tsx","modules/common/components/popUp/PopUpProvider.tsx","modules/layout/components/Page.tsx","modules/layout/data/externalLinks.ts","modules/form/components/BWTWorld.tsx","modules/common/components/CircleIndicator.tsx","modules/common/components/Heading.tsx","modules/util/getLocalisedAppStoreImage.ts","modules/layout/components/ExternalLinks.tsx","modules/util/getDeviceImage.ts","modules/form/data/benefits.ts","modules/form/components/LegalNotice.tsx","modules/form/components/Benefits.tsx","modules/form/components/RegistrationComplete.tsx","modules/util/regexp.ts","modules/common/components/Tooltip.tsx","modules/common/components/Info.tsx","modules/common/components/CategoryTitle.tsx","modules/form/components/PeopleInTheHouse.tsx","modules/form/data/validation.ts","modules/util/location.ts","modules/form/data/supportedCountries.ts","modules/common/components/TextInput.tsx","modules/common/components/DropDown.tsx","modules/util/useOutsideClick.ts","modules/form/components/ProductLocation.tsx","modules/common/components/CheckBox.tsx","modules/form/components/ShareDataWithPartner.tsx","modules/form/components/iot/AgreeDataProcessing.tsx","modules/form/components/iot/AgreeStatusUpdates.tsx","modules/common/components/SubHeading.tsx","modules/form/components/iot/DeviceImage.tsx","modules/common/components/Error.tsx","modules/form/components/iot/ReRegisterOverlay.tsx","modules/form/components/DisplayName.tsx","modules/common/components/popUp/PopUpContent.tsx","modules/form/components/iot/DeviceRegistration.tsx","modules/form/components/iot/DeviceCancellation.tsx","modules/form/components/noProductCode/NoProductCode.tsx","modules/form/components/ProgressBar.tsx","modules/form/components/NoProductCodeHelper.tsx","modules/form/components/PlumberOrProfessional.tsx","modules/form/components/FormContainer.tsx","modules/form/components/ProductCodeInput.tsx","modules/common/components/DatePicker.tsx","modules/form/components/ProductRegistration.tsx","modules/form/components/Redirect.tsx","modules/form/components/AgreeEmailContact.tsx","modules/form/components/ServiceCheckbox.tsx","modules/common/components/NumericInput.tsx","modules/form/components/pool/PoolVolume.tsx","modules/form/components/pool/CreatePoolForm.tsx","modules/form/components/pool/PoolForm.tsx","modules/form/data/drinkPro20.ts","modules/form/components/drinkPro20/RoomSize.tsx","modules/form/components/drinkPro20/DrinkPro20Form.tsx","modules/form/components/ModalContent.tsx","modules/form/components/ProductDetails.tsx","modules/form/components/FormRoutes.tsx","modules/main/components/Content.tsx","modules/main/components/App.tsx","modules/gaInjection.ts","index.tsx","modules/form/components/ModalContent.module.css","modules/form/components/Benefits.module.css","modules/form/components/ProductCodeInput.module.css","modules/common/components/DropDown.module.css"],"names":["module","exports","de","fr","it","nl","da","hu","pl","ua","ru","se","no","fi","es","cs","en","redirectExt","window","LOCALE_PREFIX","getBasename","index","initialBasename","location","pathname","split","slice","join","config","basename","apiUrl","ajaxApiHeaders","accept","hostname","loginRedirect","includes","token","prompt","Authorization","Co2Bottle","FilterCartridge","PoolMaterial","PoolShape","PoolLocation","PoolDisinfectionType","CustomerBenefits","ProductType","SpecificProductType","Gender","ErrorCode","instance","axios","create","baseURL","timeout","headers","resolveError","error","success","data","errorCode","response","Unknown","unauthorized","status","resolveSuccess","res","checkUserIsLoggedIn","a","get","checkProductCode","productCode","fetchPools","registerPool","args","post","getSupportedCountries","getDrinkPro20Data","registerPoolProduct","registerProduct","getUserProfile","registerAqaDrinkProduct","getDeviceActivationRequest","requestId","approveDeviceActivationRequest","declineDeviceActivationRequest","LoadingSpinner","className","style","root","seg","cx","seg2","seg3","seg4","seg5","seg6","seg7","seg8","seg9","seg10","seg11","seg12","PageIsLoading","initialState","isLoggedIn","isBusy","AuthContext","createContext","state","setAuth","useAuth","React","useContext","AuthProvider","Types","Category","children","useState","setState","useMemo","buildSetter","useEffect","profile","undefined","runEffect","Provider","value","ConnectedIntlProvider","initialLocale","replace","navigator","language","locale","setLocale","preferredLanguage","countryCode","userLocale","messages","Object","entries","translations","forEach","code","staticMessages","path","obj","message","countryTranslations","key","defaultLocale","formReducer","action","type","UpdateForm","payload","category","oldProps","ResetForm","form","installationDate","Date","shareDataWithPartner","street","postCode","city","country","displayName","acceptedContractDate","contractTerms","FormContext","dispatch","useForm","setInState","resetState","buildResetter","FormProvider","useReducer","isGerman","isEnglish","isDanish","getProductCategoryImage","specificProductType","AqaDrinkPro20","srcDrinkPro20","AquaLizer","srcAQUAlizer","BackwashFilter","srcBackwashFilter","Cillit","srcCillitFamily","E1","srcE1Family","Penguin","srcPenguin","Perla","srcPerlaFamily","PoolCareSet","srcPoolTestKit","PoolRobot","srcPoolRobotFamily","AqaTotalEnergy","srcAQATotalEnergyFamily","KitchenValves","srcKitchenValvesFamily","Vida","srcVida","GenericUK","srcGenericUK","Generic","srcGeneric","classnames","bind","Button","name","onClick","btnStyle","disabled","size","icons","colour","ref","useRef","hovered","setHovered","icon","hover","default","onMouseEnter","onMouseLeave","onTouchStart","onTouchEnd","src","alt","defineMessages","button","id","defaultMessage","description","noProductCodeButton","StartProductRegistration","formatMessage","useIntl","sprRoot","title","subTitle","NoProductCodeHeader","body","hiddenHeaderRoutes","Header","scrollToFormRef","useLocation","product","lastProductResponse","productCategoryImage","innerWidth","srcGenericMobile","mainHeader","setMainHeader","srcNoCode","srcNoCodeDE","srcNoCodeEN","srcNoCodeMobile","srcNoCodeMobileDE","srcNoCodeMobileEN","noCodeHeader","setNoCodeHeader","addEventListener","some","route","alternateHeader","backgroundImage","content","productImg","imgAndText","initalState","showClose","hide","PopUpContext","display","PopUp","scrollTo","interactionDisabled","frame","close","extraTopPaddingRoutes","Page","extraTopPadding","padTop","padTopLarge","appTitle","appDesc","benefitsTitle","benefitsDesc","benefitsButton","shopTitle","shopDesc","shopButton","shopLinks","useExternalLinkItems","shopLink","fallback","keys","getShopLink","img","srcApp","desc","links","url","srcCamp","srcShop","BWTWorld","text","link","href","target","rel","srcAccount","srcAccountPink","CircleIndicator","idx","show","completed","errored","fixed","hasIdx","Heading","assets","google","srcGoogleEn","srcGoogleDe","srcGoogleFr","srcGoogleIt","srcGoogleNl","dk","srcGoogleDk","srcGoogleHu","srcGooglePl","srcGoogleUa","srcGoogleRu","srcGoogleSe","srcGoogleNo","srcGoogleFi","srcGoogleEs","apple","srcAppleEn","srcAppleDe","srcAppleFr","srcAppleIt","srcAppleNl","srcAppleDk","srcAppleHu","srcApplePl","srcAppleRu","srcAppleSe","srcAppleNo","srcAppleFi","srcAppleEs","StoreLink","storeLink","open","getDeviceImage","version","srcCillitDuo","srcSilk","srcPerla","voucher_online_shop_body","voucher_online_shop_title","ten_year_warranty_body","ten_year_warranty_title","voucher_hygiene_box_body","voucher_hygiene_box_title","maintenence_and_information_body","maintenence_and_information_title","service_and_help_body","service_and_help_title","best_water_home_app_body","best_water_home_app_title","best_water_home_app_jugs_body","best_water_home_app_pool_tester_body","voucher_pool_agents_body","voucher_pool_agents_title","best_water_home_app_pool_robot_body","softener_free_service_body","softener_free_service_title","defaultBenefits","MaintenanceAndInformation","ServiceAndHelp","BestWaterHomeApp","HACK_danishBenefits","FreeService","HACK_defaultDanishBenefits","VoucherOnlineShop","useBenefits","lastProductResponseData","isGeneric","useDanishBenefits","hideAS400","benefits","displayLegalNote","map","b","benefit","heading","BestWaterHomeAppJugs","BestWaterHomeAppPoolRobot","BestWaterHomeAppPoolTester","srcMaintenence","srcService","TenYearWarranty","srcGuarantee","VoucherHygieneBox","srcVoucher","srcVoucherShop","VoucherPoolAgents","lookupBenefit","LegalNotice","BenefitItem","specific","item","headingText","margLeft","msg","Benefits","ukMessageStart","ukMessageEnd","RegistationComplete","useHistory","elem","document","querySelector","setAttribute","device","lastDeviceResponse","productName","image","deviceType","deviceVersion","storeLinks","find","smallHeader","messageSection","ukLink","info","store","appStore","postCodeRegex","regExp","RegExp","Tooltip","InfoIcon","setShow","srcInfo","CategoryTitle","Info","PeopleInTheHouse","label","input","onChange","event","valueAsInt","parseInt","onKeyDown","e","persist","preventDefault","pattern","max","peoplePerHousehold","validateNumber","isFinite","validatePostCode","countryRegex","val","getPostcodeRegex","test","validateAddress","validateDeviceDetails","iot","agreeDataProcessing","validateProductDetails","productType","Default","Pool","pool","poolId","volume","length","width","depth","WaterDispenser","drinkPro20","dailyWater","dailyWaterUsage","dailySoda","dailySodaUsage","height","currentCartridge","installedCO2Bottle","useLocationQuery","vars","search","substring","out","i","decodeURIComponent","TextInput","defaultValue","update","narrow","errorOverride","focused","hasChanged","showError","placeholder","autoComplete","onFocus","onBlur","circle","DropDown","list","searchRef","checkSearch","found","toLowerCase","callback","handleClick","current","contains","removeEventListener","useOutsideClick","filteredList","filter","startsWith","stopPropagation","srcArrowDown","select","_","selected","address","ProductLocation","defaultSupportedCountries","toLocaleLowerCase","translatedName","countries","setCountries","validPostCode","postalCode","sort","localeCompare","c","CheckBox","checked","tooltip","ShareDataWithPartner","AgreeDataProcessingOverlay","spacer","bold","Label","textDecoration","AgreeDataProcessing","AgreeStatusUpdates","agreeStatusUpdates","SubHeading","DeviceImage","deviceImage","registrationCodeNotFound","registrationCodeForIotDevice","registrationCodeAlreadyRegistered","invalidPersonCount","invalidRegistrationDetails","activationRequestNotFound","activationValidationError","invalidPostalCodeCountryCodeCombination","partnerRoleConflict","invalidVolume","validationError","cannotRegisterADevice","unknown","Error","top","offsetTop","behavior","ActivationRequestNotFound","RegistrationCodeNotFound","RegistrationCodeForIotDevice","RegistrationCodeAlreadyRegistered","InvalidPersonCount","InvalidRegistrationDetails","ActivationValidationError","InvalidPostalCodeCountryCodeCombination","PartnerRoleConflict","InvalidVolume","ValidationError","CannotRegisterADevice","getErrorMessage","srcError","confirmBtn","cancelBtn","ReRegisterOverlay","onConfirm","onReject","sendIsBusy","btnRow","DisplayName","productData","deviceData","PopUpContent","isShowing","subtitle","nameTitle","getCachedRequestForId","localStorage","getItem","DeviceRegistration","push","fetchIsBusy","showSendError","showFetchError","lastErrorCode","overlay","hydrated","isRegistered","properties","deviceDisplayName","acceptTerms","allowSendData","shareDeviceWithPlumber","callApi","useCallback","removeItem","sendRequest","setItem","JSON","stringify","storageItem","cachedFormData","parse","container","getOverlayComponent","errorContainer","topSeg","checks","btn","primaryBtn","secondaryBtn","DeviceCancellation","main","btns","btnPrim","btnSec","NoProductCode","formRef","stepOneRef","stepTwoRef","stepThreeRef","ScrollToStep","stepTitleContainer","step","stepTwo","benefitContentContainer","contentContainer","imgLogin","srcAppLoginDE","srcAppLoginEN","imgNoCode","srcAppNoCodeDE","srcAppNoCodeEN","marginTop","ProgressItem","login","details","ProgressBar","alignStart","alignEnd","alignCenter","NoProductCodeHelper","PlumberOrProfessional","FormContainer","Cell","skip","goBack","onPaste","focus","maxLength","match","blockSpecialCharacters","keyCode","shiftKey","range","start","finish","Array","from","renderCell","chars","focusedIdx","toUpperCase","newIdx","clipboardData","getData","char","ProductCodeInput","setLastErrorCode","formState","full","validLength","inputs","chunk","ok","divide","ci","registerLocale","DatePicker","updateParent","blockFutureDates","now","position","date","maxDate","dayClassName","dateIsInFuture","isAfter","dateIsSelected","isEqual","startOfDay","future","unselected","year","month","day","robotDate","ProductRegistration","isRobot","imageUrl","Redirect","AgreeEmailContact","agreeEmailContact","termsButton","ServiceCheckbox","NumericInput","ranges","min","showFocused","valueAsFloat","parseFloat","PoolVolume","validVolume","validWidth","validDepth","lengthErrored","widthErrored","depthErrored","calcInputsDisabled","volumeInputDisabled","cont","calcSeg","inputGroup","x","outdoor","indoor","disinfection","bromine","chlorine","salt","material","steel","tiles","foil","concrete","fibreglass","shape","round","rectangular","kidney","lShaped","CreatePoolForm","showGoBack","Outdoor","Chlorine","Round","Steel","shapes","Rectangular","Kidney","LShaped","materials","Tiles","Foil","Concrete","GlassFibre","srcGoBack","back","check","Indoor","Bromine","Salt","ddSeg","mat","PoolForm","creativeMode","pools","noPoolsToShow","srcPool","cartridges","filterCartridge","M200","supportsIC50","articleNumber","price","languageCode","M300","M400","Mp200","Mp300","Mp400","Mpc400","Mpc500","Tc200","co2Bottles","co2Bottle","Bottle425g","requiredRoomVolume","Bottle2Kg","Bottle3Kg","Bottle5Kg","Bottle6Kg","Bottle10Kg","RoomSize","validHeight","heightErrored","consumption","sodaWater","roomVolume","installedBottle","hasIC50","DrinkPro20Form","drinkPro20DefaultData","setData","waterUsage","sodaUsage","selectedCartridgeData","selectedBottleData","canSelectIC50","showCO2Warning","minRoomSize","getShowCO2Warning","showWaterUsageWarning","water","attention","label2","notice","yes","ModalContent","buttonNo","buttonYes","btnPositioning","positioning","click","getCachedFormData","ProductDetails","showOverlay","setShowOverlay","valid","disinfectionType","acceptedContractTerms","toISOString","isDataShared","area","hasIc50","dailySodaConsumption","dailyWaterConsumption","personCount","segTop","segBottom","ProductRegistrationContainer","ProductDetailsContainer","FormRoutes","exact","component","Content","RegistrationComplete","App","ScrollRestoration","history","createBrowserHistory","PopUpProvider","addElementFromHTML","htmlString","element","div","createElement","innerHTML","trim","createElementFromHTML","el","getElementsByTagName","firstChild","lastChild","insertBefore","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.bb4d352a.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"TextInput_root__5XIRG\",\"seg\":\"TextInput_seg__33iWv\",\"narrow\":\"TextInput_narrow__1Bolm\",\"disabled\":\"TextInput_disabled__3PP7J\",\"focused\":\"TextInput_focused__2aJPs\",\"errored\":\"TextInput_errored__2HCje\",\"input\":\"TextInput_input__3BORp\",\"placeholder\":\"TextInput_placeholder__3jgc8\",\"circle\":\"TextInput_circle__2_FDG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"topSeg\":\"DeviceRegistration_topSeg__2TM5f\",\"form\":\"DeviceRegistration_form__NnoH2\",\"container\":\"DeviceRegistration_container__3QQRg\",\"errorContainer\":\"DeviceRegistration_errorContainer__3_ceD\",\"btn\":\"DeviceRegistration_btn__1DFXy\",\"checks\":\"DeviceRegistration_checks__2qVsa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"DatePicker_root__iMzIh\",\"selected\":\"DatePicker_selected__1TcCy\",\"unselected\":\"DatePicker_unselected__2K-bW\",\"future\":\"DatePicker_future__1tUmY\",\"label\":\"DatePicker_label__20DYR\",\"date\":\"DatePicker_date__3YxKA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"ProductRegistration_root__2AicS\",\"img\":\"ProductRegistration_img__1Ehoa\",\"show\":\"ProductRegistration_show__3l-Xb\",\"btn\":\"ProductRegistration_btn__34-Rf\",\"overview\":\"ProductRegistration_overview__2t6X4\",\"spacer\":\"ProductRegistration_spacer__26Fvp\",\"content\":\"ProductRegistration_content__3NzXQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"NumericInput_root__1IZMz\",\"seg\":\"NumericInput_seg__37vtG\",\"disabled\":\"NumericInput_disabled__2vdg3\",\"focused\":\"NumericInput_focused__nkWoD\",\"errored\":\"NumericInput_errored__3i0Y2\",\"input\":\"NumericInput_input__1tBjs\",\"placeholder\":\"NumericInput_placeholder__3th2b\",\"circle\":\"NumericInput_circle__1mh-y\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"PopUpProvider_root__3--3J\",\"frame\":\"PopUpProvider_frame__1tLhb\",\"content\":\"PopUpProvider_content__1hmbw\",\"close\":\"PopUpProvider_close__19nCA\",\"interactionDisabled\":\"PopUpProvider_interactionDisabled__37NdC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"DeviceCancellation_root__xSCgG\",\"main\":\"DeviceCancellation_main__20bMJ\",\"btns\":\"DeviceCancellation_btns__3oPJI\",\"btnPrim\":\"DeviceCancellation_btnPrim__2H6cL\",\"btnSec\":\"DeviceCancellation_btnSec__2dXHO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"ProductDetails_root__2yxnL\",\"segTop\":\"ProductDetails_segTop__1tflt\",\"segBottom\":\"ProductDetails_segBottom__2Ysmm\",\"img\":\"ProductDetails_img__P0q0F\",\"btn\":\"ProductDetails_btn__3bZqj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"BWTWorld_root__lkewz\",\"title\":\"BWTWorld_title__ApFtz\",\"text\":\"BWTWorld_text__c1Jjv\",\"link\":\"BWTWorld_link__2wfLZ\"};","module.exports = __webpack_public_path__ + \"static/media/IC_BWT-App.921bf085.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"Error_root__3GdtF\",\"icon\":\"Error_icon__1nCtc\",\"title\":\"Error_title__ZwPYB\",\"body\":\"Error_body__2TQC7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"FormContainer_title__3oZS4\",\"content\":\"FormContainer_content__2cqoP\",\"seg\":\"FormContainer_seg__Tkjbw\",\"root\":\"FormContainer_root__3S-np\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"PoolForm_root__13WH7\",\"img\":\"PoolForm_img__14uPv\",\"pools\":\"PoolForm_pools__2EDcW\",\"item\":\"PoolForm_item__2686h\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"Page_root__2C64o\",\"padTop\":\"Page_padTop__2KeDG\",\"padTopLarge\":\"Page_padTopLarge__zvHT0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"input\":\"PeopleInTheHouse_input__3C6DL\",\"errored\":\"PeopleInTheHouse_errored__1iyzf\",\"circle\":\"PeopleInTheHouse_circle__2AWT9\",\"root\":\"PeopleInTheHouse_root__3oCwK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"CheckBox_root__3OsuM\",\"checkbox\":\"CheckBox_checkbox__1vr7-\",\"checked\":\"CheckBox_checked__2EeQ7\",\"label\":\"CheckBox_label__1t_US\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"ProgressBar_root__1oLPw\",\"item\":\"ProgressBar_item__1nv5_\",\"label\":\"ProgressBar_label__1vgwS\",\"completed\":\"ProgressBar_completed__1pkgb\",\"alignStart\":\"ProgressBar_alignStart__CHanW\",\"alignCenter\":\"ProgressBar_alignCenter__1b9Xu\",\"alignEnd\":\"ProgressBar_alignEnd__1yKQa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"NoProductCodeHelper_root__38K85\",\"title\":\"NoProductCodeHelper_title__P9d0o\",\"body\":\"NoProductCodeHelper_body__3x4AZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"PlumberOrProfessional_root__1mFFw\",\"title\":\"PlumberOrProfessional_title__1R59t\",\"body\":\"PlumberOrProfessional_body__3H0Qk\"};","module.exports = __webpack_public_path__ + \"static/media/Generic-main.15156d31.png\";","module.exports = __webpack_public_path__ + \"static/media/Mobile-main.bd8abd53.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"Button_root__3IZjQ\",\"secondary\":\"Button_secondary__rDTeg\",\"primary\":\"Button_primary__3rMJg\",\"hovered\":\"Button_hovered__3hm4m\",\"disabled\":\"Button_disabled__3_X9i\",\"front\":\"Button_front__12PGE\",\"white\":\"Button_white__bMxSf\",\"small\":\"Button_small__3m2JH\",\"large\":\"Button_large__3h7P9\",\"tiny\":\"Button_tiny__319zp\",\"tiny-wide\":\"Button_tiny-wide__3jMiT\",\"icon\":\"Button_icon__1ERt6\"};","module.exports = __webpack_public_path__ + \"static/media/en.2928664f.svg\";","module.exports = __webpack_public_path__ + \"static/media/IC_Guarantee.d27bb998.svg\";","module.exports = __webpack_public_path__ + \"static/media/IC_Vouchers-02.505273cd.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"CategoryTitle_root__3d-6F\",\"title\":\"CategoryTitle_title__5fiaj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"Info_root__3A9J6\",\"icon\":\"Info_icon__1WPTV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"AgreeDataProcessing_root__3GkCB\",\"title\":\"AgreeDataProcessing_title__1Yzay\",\"text\":\"AgreeDataProcessing_text__r4_lm\",\"bold\":\"AgreeDataProcessing_bold__2iLCn\",\"spacer\":\"AgreeDataProcessing_spacer__3kH2C\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"LoadingSpinner_root__2DCo0\",\"seg\":\"LoadingSpinner_seg__2du3h\",\"fadeDelay\":\"LoadingSpinner_fadeDelay__3uQFU\",\"seg2\":\"LoadingSpinner_seg2__3xe3r\",\"seg3\":\"LoadingSpinner_seg3__1lgvh\",\"seg4\":\"LoadingSpinner_seg4__17Ru8\",\"seg5\":\"LoadingSpinner_seg5__39Qpq\",\"seg6\":\"LoadingSpinner_seg6__3_A30\",\"seg7\":\"LoadingSpinner_seg7__2bDet\",\"seg8\":\"LoadingSpinner_seg8__bG_tB\",\"seg9\":\"LoadingSpinner_seg9__1T4h8\",\"seg10\":\"LoadingSpinner_seg10__1xa4p\",\"seg11\":\"LoadingSpinner_seg11__2KoHr\",\"seg12\":\"LoadingSpinner_seg12__2T27n\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"PageIsLoading_root__3YA3o\"};","module.exports = __webpack_public_path__ + \"static/media/no-code-header-de.804244f9.png\";","module.exports = __webpack_public_path__ + \"static/media/no-code-header-small-de.58eaa715.png\";","module.exports = __webpack_public_path__ + \"static/media/no-code-header-en.009485f0.png\";","module.exports = __webpack_public_path__ + \"static/media/no-code-header-small-en.2aa33b8b.png\";","module.exports = __webpack_public_path__ + \"static/media/AQA-Total-Energy-Family.617897a8.png\";","module.exports = __webpack_public_path__ + \"static/media/AQUAlizer.a5630f37.png\";","module.exports = __webpack_public_path__ + \"static/media/Backwashfilter.ae744e75.png\";","module.exports = __webpack_public_path__ + \"static/media/Cillit.7c98ce11.png\";","module.exports = __webpack_public_path__ + \"static/media/Kitchen-valves.ff56fa2b.png\";","module.exports = __webpack_public_path__ + \"static/media/Penguin.88f4e705.png\";","module.exports = __webpack_public_path__ + \"static/media/Perla-Family.fae7c447.png\";","module.exports = __webpack_public_path__ + \"static/media/Poolcareset.6fe37685.png\";","module.exports = __webpack_public_path__ + \"static/media/Poolrobots.4674cc13.png\";","module.exports = __webpack_public_path__ + \"static/media/Single-lever-filter-E1.6b395ed6.png\";","module.exports = __webpack_public_path__ + \"static/media/Vida.63ccadb4.png\";","module.exports = __webpack_public_path__ + \"static/media/drink-pro-20.08446ea6.png\";","module.exports = __webpack_public_path__ + \"static/media/Softener-UK.21f53b12.png\";","module.exports = __webpack_public_path__ + \"static/media/Generic-main-old.b4d34732.png\";","module.exports = __webpack_public_path__ + \"static/media/app.5610f535.png\";","module.exports = __webpack_public_path__ + \"static/media/camp.613be68b.png\";","module.exports = __webpack_public_path__ + \"static/media/shop.be13708c.png\";","module.exports = __webpack_public_path__ + \"static/media/IC_Account_GREY.ea877e3d.svg\";","module.exports = __webpack_public_path__ + \"static/media/IC_Account.e21abf95.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"circle\":\"CircleIndicator_circle__1v1sV\",\"hasIdx\":\"CircleIndicator_hasIdx__3G-D8\",\"show\":\"CircleIndicator_show__2M2eZ\",\"completed\":\"CircleIndicator_completed__3KrvO\",\"errored\":\"CircleIndicator_errored__HzLnN\",\"fixed\":\"CircleIndicator_fixed__PvXep\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"Heading_root__2YVPx\"};","module.exports = __webpack_public_path__ + \"static/media/en.87635699.png\";","module.exports = __webpack_public_path__ + \"static/media/de.c6626109.png\";","module.exports = __webpack_public_path__ + \"static/media/fr.794df602.png\";","module.exports = __webpack_public_path__ + \"static/media/it.fc73b31c.png\";","module.exports = __webpack_public_path__ + \"static/media/nl.bba00549.png\";","module.exports = __webpack_public_path__ + \"static/media/dk.8ce94cd3.png\";","module.exports = __webpack_public_path__ + \"static/media/hu.164c1da2.png\";","module.exports = __webpack_public_path__ + \"static/media/pl.9f41998d.png\";","module.exports = __webpack_public_path__ + \"static/media/ua.b31132de.png\";","module.exports = __webpack_public_path__ + \"static/media/ru.e9231766.png\";","module.exports = __webpack_public_path__ + \"static/media/se.1cd6f201.png\";","module.exports = __webpack_public_path__ + \"static/media/no.84c17f29.png\";","module.exports = __webpack_public_path__ + \"static/media/fi.0e186960.png\";","module.exports = __webpack_public_path__ + \"static/media/es.4e364faf.png\";","module.exports = __webpack_public_path__ + \"static/media/de.b37fbda5.svg\";","module.exports = __webpack_public_path__ + \"static/media/fr.2cfdd0a7.svg\";","module.exports = __webpack_public_path__ + \"static/media/it.0a6a96b9.svg\";","module.exports = __webpack_public_path__ + \"static/media/nl.c5a46154.svg\";","module.exports = __webpack_public_path__ + \"static/media/dk.f6642fe9.svg\";","module.exports = __webpack_public_path__ + \"static/media/hu.25cdfe31.svg\";","module.exports = __webpack_public_path__ + \"static/media/pl.0cf79557.svg\";","module.exports = __webpack_public_path__ + \"static/media/ru.bb9af37c.svg\";","module.exports = __webpack_public_path__ + \"static/media/se.248a52c5.svg\";","module.exports = __webpack_public_path__ + \"static/media/no.fb752197.svg\";","module.exports = __webpack_public_path__ + \"static/media/fi.894fe300.svg\";","module.exports = __webpack_public_path__ + \"static/media/es.ebdcadff.svg\";","module.exports = __webpack_public_path__ + \"static/media/perla.d6947817.png\";","module.exports = __webpack_public_path__ + \"static/media/Perla-Silk.bd3b7043.png\";","module.exports = __webpack_public_path__ + \"static/media/Cillit-Duo.38d75486.png\";","module.exports = __webpack_public_path__ + \"static/media/IC_Vouchers-01.1eba9a9a.svg\";","module.exports = __webpack_public_path__ + \"static/media/IC_Maintenence.25f55c56.svg\";","module.exports = __webpack_public_path__ + \"static/media/IC_Service.12d4f44e.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"LegalNotice_root__3TeeM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"Tooltip_root__2jc45\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"NoProductCode_root__IavEl\",\"stepTitleContainer\":\"NoProductCode_stepTitleContainer__VY6iO\",\"stepTwo\":\"NoProductCode_stepTwo__2osEK\",\"step\":\"NoProductCode_step__1m__Y\",\"title\":\"NoProductCode_title__2X058\",\"subTitle\":\"NoProductCode_subTitle__2esr4\",\"body\":\"NoProductCode_body__OZm5o\",\"storeLinks\":\"NoProductCode_storeLinks__2V32z\",\"benefitContentContainer\":\"NoProductCode_benefitContentContainer___0koi\",\"imgLogin\":\"NoProductCode_imgLogin__2mdTZ\",\"imgNoCode\":\"NoProductCode_imgNoCode__3u-0S\",\"contentContainer\":\"NoProductCode_contentContainer__c1gbq\",\"seg\":\"NoProductCode_seg__2hXS8\",\"content\":\"NoProductCode_content__1Uzd6\"};","module.exports = __webpack_public_path__ + \"static/media/IC_Info.6941d334.svg\";","module.exports = __webpack_public_path__ + \"static/media/Arrow_down.8f0585dd.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"ShareDataWithPartner_root__2bPeh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"AgreeStatusUpdates_root__2sfkP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"SubHeading_root__1cVj3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"DeviceImage_root__3hkk0\"};","module.exports = __webpack_public_path__ + \"static/media/warning.f61c79cf.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnRow\":\"ReRegisterOverlay_btnRow__39AwV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"DisplayName_root__1WKMF\"};","module.exports = __webpack_public_path__ + \"static/media/App-login-register-de.768d1b0f.png\";","module.exports = __webpack_public_path__ + \"static/media/App-no-code-de.d6950561.png\";","module.exports = __webpack_public_path__ + \"static/media/App-login-register-en.fa054a3b.png\";","module.exports = __webpack_public_path__ + \"static/media/App-no-code-en.675713ac.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"AgreeEmailContact_root__2IXDW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"ServiceCheckbox_root__1uU73\"};","module.exports = __webpack_public_path__ + \"static/media/IC_Go_Back.1470bf52.svg\";","module.exports = __webpack_public_path__ + \"static/media/IC_Pool.ca43dff1.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"App_root__1e0ub\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"RegistrationComplete_root__32PFL\",\"seg\":\"RegistrationComplete_seg__2erPE\",\"product\":\"RegistrationComplete_product__2Iwaz\",\"smallHeader\":\"RegistrationComplete_smallHeader__HEhXt\",\"messageSection\":\"RegistrationComplete_messageSection__3bNLG\",\"name\":\"RegistrationComplete_name__1BxxW\",\"code\":\"RegistrationComplete_code__26jHh\",\"link\":\"RegistrationComplete_link__3Tumw\",\"ukLink\":\"RegistrationComplete_ukLink__1spUK\",\"img\":\"RegistrationComplete_img__2AJoI\",\"text\":\"RegistrationComplete_text__1nroU\",\"store\":\"RegistrationComplete_store__hQgDa\",\"appStore\":\"RegistrationComplete_appStore__3U-6P\",\"info\":\"RegistrationComplete_info__1Eif3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"PoolVolume_root__3du4U\",\"divide\":\"PoolVolume_divide__3FFqA\",\"placeholder\":\"PoolVolume_placeholder__2nYBu\",\"calcSeg\":\"PoolVolume_calcSeg__3fd6Q\",\"disabled\":\"PoolVolume_disabled__3KMQd\",\"inputGroup\":\"PoolVolume_inputGroup__12Pyb\",\"x\":\"PoolVolume_x__Pp83t\",\"input\":\"PoolVolume_input__WQayQ\",\"errored\":\"PoolVolume_errored__Nk67V\",\"cont\":\"PoolVolume_cont__3DRnf\",\"circle\":\"PoolVolume_circle__vWxQ9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"CreatePoolForm_root__1QHGh\",\"checks\":\"CreatePoolForm_checks__KgUZa\",\"check\":\"CreatePoolForm_check__2WybW\",\"spacer\":\"CreatePoolForm_spacer__15DXS\",\"ddSeg\":\"CreatePoolForm_ddSeg__10e_9\",\"back\":\"CreatePoolForm_back__2M8S2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"RoomSize_root__1z1Y4\",\"divide\":\"RoomSize_divide__3PwKK\",\"placeholder\":\"RoomSize_placeholder__383b8\",\"calcSeg\":\"RoomSize_calcSeg__11k10\",\"disabled\":\"RoomSize_disabled__1Xqcp\",\"inputGroup\":\"RoomSize_inputGroup__3CPz7\",\"x\":\"RoomSize_x__3ayYq\",\"input\":\"RoomSize_input__2p1eU\",\"errored\":\"RoomSize_errored__2QN88\",\"circle\":\"RoomSize_circle__2NZJw\",\"cont\":\"RoomSize_cont__WgX1s\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"Header_root__8EG8P\",\"content\":\"Header_content__3nBq6\",\"sprRoot\":\"Header_sprRoot__11_aj\",\"title\":\"Header_title__2BSjv\",\"body\":\"Header_body__2FvAD\",\"subTitle\":\"Header_subTitle__I7auK\",\"productImg\":\"Header_productImg__1OAyN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"ExternalLinks_root__2r0Gk\",\"title\":\"ExternalLinks_title__K734i\",\"items\":\"ExternalLinks_items__1ZQ_E\",\"item\":\"ExternalLinks_item__3wflE\",\"img\":\"ExternalLinks_img__zZv3S\",\"content\":\"ExternalLinks_content__OrRAx\",\"name\":\"ExternalLinks_name__2kFdF\",\"desc\":\"ExternalLinks_desc__1HQ34\",\"links\":\"ExternalLinks_links__1BWXZ\",\"storeLink\":\"ExternalLinks_storeLink__2V1-m\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"DrinkPro20Form_root__ZLkh1\",\"seg\":\"DrinkPro20Form_seg__3879F\",\"consumption\":\"DrinkPro20Form_consumption__2DehL\",\"water\":\"DrinkPro20Form_water__2MKkv\",\"attention\":\"DrinkPro20Form_attention__nUThK\"};","import de from \"./de.json\";\nimport fr from \"./fr.json\";\nimport it from \"./it.json\";\nimport nl from \"./nl.json\";\nimport da from \"./da.json\";\nimport hu from \"./hu.json\";\nimport pl from \"./pl.json\";\nimport ua from \"./ua.json\";\nimport ru from \"./ru.json\";\nimport se from \"./se.json\";\nimport no from \"./no.json\";\nimport fi from \"./fi.json\";\nimport es from \"./es.json\";\n\nexport default { de, fr, it, nl, da, hu, pl, ua, ru, se, no, fi, es };\n","import cs from \"./cs.country_translations.json\";\nimport da from \"./da.country_translations.json\";\nimport de from \"./de.country_translations.json\";\nimport en from \"./en.country_translations.json\";\nimport es from \"./es.country_translations.json\";\nimport fi from \"./fi.country_translations.json\";\nimport fr from \"./fr.country_translations.json\";\nimport hu from \"./hu.country_translations.json\";\nimport it from \"./it.country_translations.json\";\nimport nl from \"./nl.country_translations.json\";\nimport no from \"./no.country_translations.json\";\nimport pl from \"./pl.country_translations.json\";\n\nexport default { cs, da, de, en, es, fi, fr, hu, it, nl, no, pl };\n","declare global {\n interface Window {\n LOCALE_PREFIX: string;\n }\n}\n\nconst localePrefix = window.LOCALE_PREFIX || \"/de\";\nconst redirectExt = localePrefix + \"/api/sitecore/Account/Login\";\n\nconst getBasename = (index: number): string => {\n const initialBasename = window.location.pathname\n .split(\"/\")\n .slice(0, index)\n .join(\"/\");\n const basename =\n initialBasename.slice(-1) === \"/\" ? initialBasename : initialBasename + \"/\";\n return basename;\n};\n\nconst config: {\n basename: string;\n apiUrl: string;\n ajaxApiHeaders: {\n Authorization?: string;\n accept: string;\n };\n loginRedirect?: string;\n} = {\n basename: \"/\",\n apiUrl: \"/api/sitecore/ReactProxy/HandleCall?url=api/\",\n ajaxApiHeaders: {\n accept: \"*/*\",\n },\n};\n\nif (window.location.hostname === \"dev.bwt.com\") {\n config.loginRedirect = \"https://dev.bwt.com\" + redirectExt;\n config.basename = getBasename(4);\n} else if (window.location.hostname === \"dev-customer.bwt.com\") {\n config.loginRedirect = \"https://dev-customer.bwt.com\" + redirectExt;\n config.basename = getBasename(2);\n} else if (window.location.hostname === \"dev-myproduct.bwt.com\") {\n config.loginRedirect = \"https://dev-myproduct.bwt.com\" + redirectExt;\n config.basename = getBasename(2);\n} else if (window.location.hostname === \"test.bwt.com\") {\n config.loginRedirect = \"https://test.bwt.com\" + redirectExt;\n config.basename = getBasename(4);\n} else if (window.location.hostname === \"test-customer.bwt.com\") {\n config.loginRedirect = \"https://test-customer.bwt.com\" + redirectExt;\n config.basename = getBasename(2);\n} else if (window.location.hostname === \"test-myproduct.bwt.com\") {\n config.loginRedirect = \"https://test-myproduct.bwt.com\" + redirectExt;\n config.basename = getBasename(2);\n} else if ([\"bwt.bwt.com\", \"www.bwt.com\"].includes(window.location.hostname)) {\n config.loginRedirect = \"https://bwt.com\" + redirectExt;\n config.basename = getBasename(4);\n} else if (\n [\"customer.bwt.com\", \"preview-customer.bwt.com\"].includes(\n window.location.hostname\n )\n) {\n config.loginRedirect = \"https://customer.bwt.com\" + redirectExt;\n config.basename = getBasename(2);\n} else if (\n [\"myproduct.bwt.com\", \"preview-myproduct.bwt.com\"].includes(\n window.location.hostname\n )\n) {\n config.loginRedirect = \"https://myproduct.bwt.com\" + redirectExt;\n config.basename = getBasename(2);\n} else {\n config.apiUrl = \"/api\";\n if (window.location.hostname === \"localhost\") {\n config.apiUrl = \"https://bwt-dev-customerweb.azurewebsites.net/api/\";\n }\n const token = prompt(\"Please enter a valid bearer token:\");\n config.ajaxApiHeaders.Authorization = `Bearer ${token}`;\n}\n\nexport default config;\n","export enum Co2Bottle {\n Bottle425g = \"Bottle425g\",\n Bottle2Kg = \"Bottle2Kg\",\n Bottle3Kg = \"Bottle3Kg\",\n Bottle5Kg = \"Bottle5Kg\",\n Bottle6Kg = \"Bottle6Kg\",\n Bottle10Kg = \"Bottle10Kg\",\n}\n\nexport enum FilterCartridge {\n M200 = \"M200\",\n M300 = \"M300\",\n M400 = \"M400\",\n Mp200 = \"Mp200\",\n Mp300 = \"Mp300\",\n Mp400 = \"Mp400\",\n Mpc400 = \"Mpc400\",\n Mpc500 = \"Mpc500\",\n Tc200 = \"Tc200\",\n}\n\nexport enum PoolMaterial {\n Concrete = \"Concrete\",\n Tiles = \"Tiles\",\n Foil = \"Foil\",\n Steel = \"Steel\",\n GlassFibre = \"GlassFibre\",\n}\n\nexport enum PoolShape {\n Rectangular = \"Rectangular\",\n Kidney = \"Kidney\",\n Round = \"Round\",\n LShaped = \"LShaped\",\n}\n\nexport enum PoolLocation {\n Outdoor = \"Outdoor\",\n Indoor = \"Indoor\",\n}\n\nexport enum PoolDisinfectionType {\n Salt = \"Salt\",\n Chlorine = \"Chlorine\",\n Bromine = \"Bromine\",\n}\n\nexport enum CustomerBenefits {\n MaintenanceAndInformation = \"MaintenanceAndInformation\",\n ServiceAndHelp = \"ServiceAndHelp\",\n TenYearWarranty = \"TenYearWarranty\",\n FreeService = \"FreeService\",\n VoucherHygieneBox = \"VoucherHygieneBox\",\n VoucherOnlineShop = \"VoucherOnlineShop\",\n VoucherPoolAgents = \"VoucherPoolAgents\",\n BestWaterHomeApp = \"BestWaterHomeApp\",\n BestWaterHomeAppPoolRobot = \"BestWaterHomeAppPoolRobot\",\n BestWaterHomeAppPoolTester = \"BestWaterHomeAppPoolTester\",\n BestWaterHomeAppJugs = \"BestWaterHomeAppJugs\",\n}\n\nexport enum ProductType {\n Default = \"Default\",\n Pool = \"Pool\",\n WaterDispenser = \"WaterDispenser\",\n PerlaIoT = \"PerlaIoT\",\n SilkIoT = \"SilkIoT\",\n}\n\nexport enum SpecificProductType {\n AqaDrinkPro20 = \"AqaDrinkPro20\",\n AquaLizer = \"AquaLizer\",\n BackwashFilter = \"BackwashFilter\",\n Cillit = \"Cillit\",\n E1 = \"E1\",\n Penguin = \"Penguin\",\n Perla = \"Perla\",\n PoolCareSet = \"PoolCareSet\",\n PoolRobot = \"PoolRobot\",\n AqaTotalEnergy = \"AqaTotalEnergy\",\n KitchenValves = \"KitchenValves\",\n Vida = \"Vida\",\n Generic = \"Generic\",\n GenericUK = \"GenericUK\",\n}\n\nexport enum Gender {\n Company = \"Company\",\n Male = \"Male\",\n Female = \"Female\",\n}\n\nexport type Profile = {\n id: number;\n userName: string;\n userSubjectId: string;\n isAccountVerified: boolean;\n prefix: string;\n suffix: string;\n organization: string;\n fax: string;\n uid: string;\n website: string;\n preferredLanguage: string;\n gender: Gender;\n firstName: string;\n lastName: string;\n email: string;\n mobilePhoneNumber: string;\n telephone: string;\n street: string;\n city: string;\n postalCode: string;\n countryCode: string;\n};\n\nexport type Product = {\n productCode: string;\n name: string;\n imageUrl: string;\n productType: ProductType;\n specificProductType: SpecificProductType;\n benefits: CustomerBenefits[];\n displayLegalNote: boolean;\n};\n\ntype PoolProductRegistrations = {\n registrationId: number;\n lastUsedRegistrationCode: string;\n productId: number;\n productName: string;\n installationDate: string;\n poolId: number;\n}[];\n\nexport type Pool = {\n poolProductRegistrations: PoolProductRegistrations;\n id: number;\n name: string;\n lastModification: string;\n volume: number;\n disinfectionType: PoolDisinfectionType;\n location: PoolLocation;\n countryCode: string;\n street: string;\n city: string;\n postalCode: string;\n material: PoolMaterial;\n shape: PoolShape;\n};\n\nexport type Pools = Pool[];\n\nexport type Device = {\n requestId: string;\n trackingId: string;\n countryCode: string;\n languageCode: string;\n installerPartnerId: number;\n installationDate: string;\n isRegistered: boolean;\n firmwareVersion: number;\n deviceId: string;\n deviceType: string;\n deviceVersion: string;\n productName: string;\n productCode: string;\n address: {\n countryCode: string;\n postalCode: string;\n street: string;\n city: string;\n };\n};\n\ntype DrinkPro20ShopLink = {\n countryCode: string;\n link: string | null;\n price: number | null;\n languageCode: string | null;\n};\n\ntype Cartridge = {\n filterCartridge: FilterCartridge;\n supportsIC50: boolean;\n articleNumber: string;\n displayName: string;\n shopLinks: DrinkPro20ShopLink[];\n};\n\ntype Bottle = {\n co2Bottle: Co2Bottle;\n requiredRoomVolume: number;\n articleNumber: string;\n displayName: string;\n shopLinks: DrinkPro20ShopLink[];\n};\n\nexport type DrinkPro20Data = {\n cartridges: Cartridge[];\n co2Bottles: Bottle[];\n};\n\ntype Country = {\n countryCode: string;\n name: string;\n};\n\nexport type Countries = Country[];\n\nexport enum ErrorCode {\n // ProductRegistration\n RegistrationCodeNotFound = \"1000\",\n RegistrationCodeForIotDevice = \"1001\",\n RegistrationCodeAlreadyRegistered = \"1002\",\n InvalidPersonCount = \"1003\",\n InvalidRegistrationDetails = \"1004\",\n CannotRegisterADevice = \"1005\",\n\n //DeviceActivation\n ActivationRequestNotFound = \"2000\",\n ActivationValidationError = \"2001\",\n\n //Location\n InvalidPostalCodeCountryCodeCombination = \"3000\",\n\n //Role\n PartnerRoleConflict = \"4000\",\n\n //Pool\n InvalidVolume = \"5000\",\n ValidationError = \"5001\",\n\n //Other\n // extend me...\n Unknown = \"9999\",\n}\n","import axios from \"axios\";\nimport config from \"../../config\";\n\nexport const instance = axios.create({\n baseURL: config.apiUrl,\n timeout: 10000,\n headers: config.ajaxApiHeaders\n});\n","import { instance } from \"./config\";\n\nimport {\n Co2Bottle,\n FilterCartridge,\n PoolMaterial,\n PoolShape,\n PoolLocation,\n PoolDisinfectionType,\n ErrorCode,\n Profile,\n Pools,\n Product,\n Pool,\n Countries,\n DrinkPro20Data,\n Device,\n} from \"modules/form/data/types\";\nimport { AxiosError, AxiosResponse } from \"axios\";\n\ntype ResponseEnvelope = {\n success: boolean;\n data: T | null;\n errorCode: ErrorCode | null;\n unauthorized: boolean;\n};\n\nfunction resolveError(error: AxiosError) {\n const errorCode = error.response?.data.ErrorCode || ErrorCode.Unknown;\n const unauthorized = error.response?.status === 401;\n return { success: false, data: null, errorCode, unauthorized };\n}\n\nfunction resolveSuccess(res: AxiosResponse): ResponseEnvelope {\n const success = res.status === 200;\n const data = success ? res.data : null;\n const errorCode = success ? null : ErrorCode.Unknown;\n return { success, data, errorCode, unauthorized: false };\n}\n\nexport async function checkUserIsLoggedIn() {\n try {\n const res = await instance.get(\"Authorization/test\");\n return resolveSuccess(res);\n } catch (error) {\n return resolveError(error);\n }\n}\n\nexport async function checkProductCode(productCode: string) {\n try {\n const res = await instance.get(`Product/code/${productCode}`);\n return resolveSuccess(res);\n } catch (error) {\n return resolveError(error);\n }\n}\n\nexport async function fetchPools() {\n try {\n const res = await instance.get(\"Pool\");\n return resolveSuccess(res);\n } catch (error) {\n return resolveError(error);\n }\n}\n\ntype RegisterPoolArgs = {\n name: string;\n volume: number;\n disinfectionType: PoolDisinfectionType;\n location: PoolLocation;\n shape: PoolShape;\n material: PoolMaterial;\n countryCode: string;\n street: string;\n city: string;\n postalCode: string;\n acceptedContractTerms?: boolean;\n acceptedContractDate?: string | null;\n};\n\nexport async function registerPool(args: RegisterPoolArgs) {\n try {\n const res = await instance.post(\"Pool\", args);\n return resolveSuccess(res);\n } catch (error) {\n return resolveError(error);\n }\n}\n\nexport async function getSupportedCountries() {\n try {\n const res = await instance.get(\"General/supportedCountries\");\n return resolveSuccess(res);\n } catch (error) {\n return resolveError(error);\n }\n}\n\nexport async function getDrinkPro20Data() {\n try {\n const res = await instance.get(\"Product/aqadrink\");\n return resolveSuccess(res);\n } catch (error) {\n return resolveError(error);\n }\n}\n\ntype RegisterPoolProductArgs = {\n poolId: number;\n productCode: string;\n installationDate: string;\n isDataShared: boolean;\n};\n\nexport async function registerPoolProduct(args: RegisterPoolProductArgs) {\n try {\n const res = await instance.post(\"Product/register/pool\", args);\n return resolveSuccess(res);\n } catch (error) {\n return resolveError(error);\n }\n}\n\ntype RegisterProductArgs = {\n productCode: string;\n installationDate: string;\n street: string;\n city: string;\n postalCode: string;\n countryCode: string;\n shareDataWithPartner: boolean;\n personCount: number;\n displayName: string;\n acceptedContractTerms?: boolean;\n acceptedContractDate?: string;\n};\n\nexport async function registerProduct(args: RegisterProductArgs) {\n try {\n const res = await instance.post(\"Product/register\", args);\n return resolveSuccess(res);\n } catch (error) {\n return resolveError(error);\n }\n}\n\nexport async function getUserProfile() {\n try {\n const res = await instance.get(\"User/profile\");\n return resolveSuccess(res);\n } catch (error) {\n return resolveError(error);\n }\n}\n\ntype AqaDrinkProductArgs = {\n displayName: string;\n filterCartridge: FilterCartridge;\n co2Bottle: Co2Bottle;\n roomVolume: number;\n hasIc50: boolean;\n dailySodaConsumption: number;\n dailyWaterConsumption: number;\n productCode: string;\n installationDate: string;\n street: string;\n city: string;\n postalCode: string;\n countryCode: string;\n shareDataWithPartner: boolean;\n personCount: number;\n acceptedContractTerms?: boolean,\n acceptedContractDate?: string;\n};\n\nexport async function registerAqaDrinkProduct(args: AqaDrinkProductArgs) {\n try {\n const res = await instance.post(\"Product/register/aqadrink\", args);\n return resolveSuccess(res);\n } catch (error) {\n return resolveError(error);\n }\n}\n\nexport async function getDeviceActivationRequest(requestId: string) {\n try {\n const res = await instance.get(`Device/activation/${requestId}`);\n return resolveSuccess(res);\n } catch (error) {\n return resolveError(error);\n }\n}\n\ntype ApproveDeviceActivationArgs = {\n requestId: string;\n deviceDisplayName: string;\n acceptTerms: boolean;\n allowSendData: boolean;\n shareDeviceWithPlumber: boolean;\n street: string;\n city: string;\n postalCode: string;\n countryCode: string;\n};\n\nexport async function approveDeviceActivationRequest(\n args: ApproveDeviceActivationArgs\n) {\n try {\n const res = await instance.post(\"Device/activation/approve\", args);\n return resolveSuccess(res);\n } catch (error) {\n return resolveError(error);\n }\n}\n\nexport async function declineDeviceActivationRequest(requestId: string) {\n try {\n const res = await instance.post(`Device/activation/decline/${requestId}`);\n return resolveSuccess(res);\n } catch (error) {\n return resolveError(error);\n }\n}\n","import React from \"react\";\nimport cx from \"classnames\";\n\nimport style from \"./LoadingSpinner.module.css\";\n\nconst LoadingSpinner = () => {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n );\n};\n\nexport default LoadingSpinner;\n","import React from \"react\";\n\nimport LoadingSpinner from \"modules/common/components/LoadingSpinner\";\n\nimport style from \"./PageIsLoading.module.css\";\n\nexport default function PageIsLoading() {\n return (\n
\n \n
\n );\n}\n","import React, { createContext, useState, useMemo, useEffect } from \"react\";\n\nimport { checkUserIsLoggedIn, getUserProfile } from \"modules/api/endpoints\";\nimport { Profile } from \"modules/form/data/types\";\n\nimport PageIsLoading from \"modules/layout/components/PageIsLoading\";\n\nexport type AuthContextState = {\n isLoggedIn: boolean;\n profile?: Profile;\n isBusy: boolean;\n};\n\nexport const initialState = {\n isLoggedIn: false,\n isBusy: true,\n};\n\nconst AuthContext = createContext<{\n state: AuthContextState;\n setAuth: (state: AuthContextState) => void;\n}>({\n state: initialState,\n setAuth: () => {},\n});\n\nconst buildSetter = (\n setState: React.Dispatch>\n) => (state: AuthContextState) => setState(state);\n\nconst AuthProvider: React.FC = ({ children }) => {\n const [state, setState] = useState(initialState);\n const setAuth = useMemo(() => buildSetter(setState), [setState]);\n\n useEffect(() => {\n const runEffect = async () => {\n const { success } = await checkUserIsLoggedIn();\n if (success) {\n setAuth({ isBusy: true, isLoggedIn: true, profile: undefined });\n const { data } = await getUserProfile();\n if (data) {\n setAuth({ isBusy: false, isLoggedIn: true, profile: data });\n } else {\n setAuth({ isBusy: false, isLoggedIn: true, profile: undefined });\n }\n } else {\n setAuth({ isBusy: false, isLoggedIn: false, profile: undefined });\n }\n };\n runEffect();\n }, [setAuth]);\n\n if (state.isBusy) return ;\n\n return (\n \n {children}\n \n );\n};\n\nexport function useAuth() {\n const { state, setAuth } = React.useContext(AuthContext);\n return { state, setAuth };\n}\n\nexport default AuthProvider;\n","import {\n FormContextState,\n FormState,\n PoolState,\n DrinkPro20State,\n IoTState,\n initialState,\n} from \"../components/FormContext\";\nimport { Product, Device } from \"../data/types\";\n\ntype ActionMap = {\n [Key in keyof M]: M[Key] extends undefined\n ? {\n type: Key;\n }\n : {\n type: Key;\n payload: M[Key];\n };\n};\n\nexport enum Types {\n UpdateForm = \"UPDATE_FORM\",\n ResetForm = \"RESET_FORM\",\n}\n\nexport enum Category {\n form = \"form\",\n pool = \"pool\",\n drinkPro20 = \"drinkPro20\",\n iot = \"iot\",\n lastProductResponse = \"lastProductResponse\",\n lastDeviceResponse = \"lastDeviceResponse\",\n}\n\ntype UpdateFormPayload = {\n category: Category;\n key: string;\n value: string | number | Date | boolean | Product | Device | undefined;\n};\n\ntype FormPayload = {\n [Types.UpdateForm]: UpdateFormPayload;\n [Types.ResetForm]: null;\n};\n\nexport type FormActions = ActionMap[keyof ActionMap];\n\nexport const formReducer = (state: FormContextState, action: FormActions) => {\n switch (action.type) {\n case Types.UpdateForm: {\n const { category, key, value } = action.payload;\n const castKey: keyof FormContextState = category;\n const oldProps: FormState | PoolState | DrinkPro20State | IoTState | any =\n state[castKey];\n\n return {\n ...state,\n [category]: { ...oldProps, [key]: value },\n };\n }\n case Types.ResetForm: {\n return initialState;\n }\n default:\n return state;\n }\n};\n","import React, { useEffect, useState } from \"react\";\nimport { IntlProvider } from \"react-intl\";\nimport translations from \"i18n/translations\";\nimport countryTranslations from \"i18n/countryTranslations\";\n\nimport { useAuth } from \"modules/auth/components/AuthProvider\";\n\ntype Messages = Record;\n\nconst ConnectedIntlProvider: React.FC = ({ children }) => {\n // window.LOCALE_PREFIX appears unavaialble on fresh run, get from url.\n const sitecoreLocale = window.LOCALE_PREFIX\n ? window.LOCALE_PREFIX.replace(\"/\", \"\")\n : window.location.pathname.split(\"/\")[1];\n const initialLocale = sitecoreLocale || navigator.language;\n\n const [locale, setLocale] = useState(initialLocale);\n const language = locale.split(\"-\")[0];\n\n const {\n state: { profile },\n } = useAuth();\n\n useEffect(() => {\n if (profile) {\n if (profile.preferredLanguage && profile.countryCode) {\n const userLocale =\n profile.preferredLanguage + \"-\" + profile.countryCode;\n setLocale(userLocale);\n }\n }\n }, [profile]);\n\n const de: Messages = {};\n const fr: Messages = {};\n const it: Messages = {};\n const nl: Messages = {};\n const da: Messages = {};\n const hu: Messages = {};\n const pl: Messages = {};\n const ua: Messages = {};\n const ru: Messages = {};\n const se: Messages = {};\n const no: Messages = {};\n const fi: Messages = {};\n const es: Messages = {};\n\n const messages: Record = {\n de,\n fr,\n it,\n nl,\n da,\n hu,\n pl,\n ua,\n ru,\n se,\n no,\n fi,\n es,\n };\n\n Object.entries(translations).forEach(([code, staticMessages]) => {\n Object.entries(staticMessages).forEach(([path, obj]) => {\n messages[code] = {\n ...messages[code],\n [path]: obj.message || \"\",\n };\n });\n });\n\n // add country name translations to app.\n Object.entries(countryTranslations).forEach(([code, staticMessages]) => {\n if (!messages[code]) {\n return;\n }\n Object.entries(staticMessages).forEach(([path, message]) => {\n messages[code] = {\n ...messages[code],\n [path]: message || \"\",\n };\n });\n });\n\n return (\n \n {children}\n \n );\n};\n\nexport default ConnectedIntlProvider;\n","import React, { createContext, useReducer, Dispatch, useMemo } from \"react\";\nimport { formReducer, FormActions, Types, Category } from \"../reducers\";\n\nimport {\n Co2Bottle,\n FilterCartridge,\n PoolMaterial,\n PoolShape,\n PoolLocation,\n PoolDisinfectionType,\n Product,\n Device,\n} from \"../data/types\";\n\nexport type FormState = {\n productCode: string;\n installationDate: Date;\n shareDataWithPartner: boolean;\n street: string;\n postCode: string;\n city: string;\n country: string;\n peoplePerHousehold?: number;\n agreeEmailContact?: boolean;\n contractTerms?: boolean;\n poolId?: number;\n displayName: string;\n acceptedContractDate?: Date | null;\n};\n\nexport type PoolState = {\n name: string;\n volume?: number;\n length?: number;\n width?: number;\n depth?: number;\n location: PoolLocation;\n disinfection: PoolDisinfectionType;\n shape: PoolShape;\n material: PoolMaterial;\n};\n\nexport type DrinkPro20State = {\n dailyWaterUsage: number;\n dailySodaUsage: number;\n volume?: number;\n height?: number;\n width?: number;\n currentCartridge: FilterCartridge;\n installedCO2Bottle: Co2Bottle;\n hasIC50: boolean;\n};\n\nexport type IoTState = {\n agreeDataProcessing: boolean;\n agreeStatusUpdates: boolean;\n};\n\nexport type FormContextState = {\n form: FormState;\n pool?: PoolState;\n drinkPro20?: DrinkPro20State;\n iot?: IoTState;\n lastProductResponse?: { data: Product };\n lastDeviceResponse?: { data: Device };\n};\n\nexport const initialState = {\n form: {\n productCode: \"\",\n installationDate: new Date(),\n shareDataWithPartner: false,\n street: \"\",\n postCode: \"\",\n city: \"\",\n country: \"AT\",\n displayName: \"\",\n acceptedContractDate: null,\n contractTerms: false,\n },\n};\n\nconst FormContext = createContext<{\n state: FormContextState;\n dispatch: Dispatch;\n}>({\n state: initialState,\n dispatch: () => null,\n});\n\nconst FormProvider: React.FC = ({ children }) => {\n const [state, dispatch] = useReducer(formReducer, initialState);\n\n return (\n \n {children}\n \n );\n};\n\nconst buildSetter = (dispatch: Dispatch) => (\n category: string,\n key: string,\n value: string | number | Date | boolean | Product | Device | undefined\n) => {\n dispatch({\n type: Types.UpdateForm,\n payload: {\n category: Category[category as keyof typeof Category],\n key,\n value,\n },\n });\n};\n\nconst buildResetter = (dispatch: Dispatch) => () => {\n dispatch({\n type: Types.ResetForm,\n payload: null,\n });\n};\n\nexport function useForm() {\n const { state, dispatch } = React.useContext(FormContext);\n const setInState = useMemo(() => buildSetter(dispatch), [dispatch]);\n const resetState = useMemo(() => buildResetter(dispatch), [dispatch]);\n\n return { state, setInState, resetState };\n}\n\nexport default FormProvider;\n","declare global {\n interface Window {\n LOCALE_PREFIX: string;\n }\n}\n\nexport const sitecoreLocale = window.LOCALE_PREFIX\n ? window.LOCALE_PREFIX.replace(\"/\", \"\")\n : window.location.pathname.split(\"/\")[1];\nexport const locale = sitecoreLocale || navigator.language;\nexport const isGerman = locale.includes(\"de\");\nexport const isEnglish = locale.includes(\"en\");\nexport const isDanish = locale.includes(\"da\");\n","import { SpecificProductType } from \"modules/form/data/types\";\n\nimport srcAQATotalEnergyFamily from \"assets/products/category/AQA-Total-Energy-Family.png\";\nimport srcAQUAlizer from \"assets/products/category/AQUAlizer.png\";\nimport srcBackwashFilter from \"assets/products/category/Backwashfilter.png\";\nimport srcCillitFamily from \"assets/products/category/Cillit.png\";\nimport srcKitchenValvesFamily from \"assets/products/category/Kitchen-valves.png\";\nimport srcPenguin from \"assets/products/category/Penguin.png\";\nimport srcPerlaFamily from \"assets/products/category/Perla-Family.png\";\nimport srcPoolTestKit from \"assets/products/category/Poolcareset.png\";\nimport srcPoolRobotFamily from \"assets/products/category/Poolrobots.png\";\nimport srcE1Family from \"assets/products/category/Single-lever-filter-E1.png\";\nimport srcVida from \"assets/products/category/Vida.png\";\nimport srcDrinkPro20 from \"assets/products/category/drink-pro-20.png\";\nimport srcGenericUK from \"assets/products/category/Softener-UK.png\";\nimport srcGeneric from \"assets/products/category/Generic-main-old.png\";\n\nexport default function getProductCategoryImage(\n specificProductType?: SpecificProductType\n) {\n switch (specificProductType) {\n case SpecificProductType.AqaDrinkPro20:\n return srcDrinkPro20;\n case SpecificProductType.AquaLizer:\n return srcAQUAlizer;\n case SpecificProductType.BackwashFilter:\n return srcBackwashFilter;\n case SpecificProductType.Cillit:\n return srcCillitFamily;\n case SpecificProductType.E1:\n return srcE1Family;\n case SpecificProductType.Penguin:\n return srcPenguin;\n case SpecificProductType.Perla:\n return srcPerlaFamily;\n case SpecificProductType.PoolCareSet:\n return srcPoolTestKit;\n case SpecificProductType.PoolRobot:\n return srcPoolRobotFamily;\n case SpecificProductType.AqaTotalEnergy:\n return srcAQATotalEnergyFamily;\n case SpecificProductType.KitchenValves:\n return srcKitchenValvesFamily;\n case SpecificProductType.Vida:\n return srcVida;\n case SpecificProductType.GenericUK:\n return srcGenericUK;\n case SpecificProductType.Generic:\n return srcGeneric;\n default:\n return \"\";\n }\n}\n","import React, { useRef, useState } from \"react\";\n\nimport classnames from \"classnames/bind\";\n\nimport style from \"./Button.module.css\";\n\nconst cx = classnames.bind(style);\n\ninterface ButtonProps {\n name: string;\n onClick?: () => void;\n btnStyle: string;\n size?: string;\n disabled?: boolean;\n icons?: {\n default?: string;\n hover?: string;\n };\n colour?: string;\n}\n\nconst Button: React.FC = ({\n name,\n onClick,\n btnStyle,\n disabled,\n size,\n icons,\n colour,\n}) => {\n const ref = useRef(null);\n const [hovered, setHovered] = useState(false);\n const icon = hovered ? icons?.hover : icons?.default;\n return (\n setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n onTouchStart={() => setHovered(true)}\n onTouchEnd={() => setHovered(false)}\n >\n {icon && \"\"}\n {name}\n \n );\n};\n\nexport default Button;\n","import React, { Fragment } from \"react\";\nimport { FormattedMessage, defineMessages, useIntl } from \"react-intl\";\nimport { useLocation } from \"react-router\";\n\nimport srcGeneric from \"assets/products/category/Generic-main.png\";\nimport srcGenericMobile from \"assets/products/category/Mobile-main.png\";\nimport srcNoCodeDE from \"assets/products/category/no-code-header-de.png\";\nimport srcNoCodeMobileDE from \"assets/products/category/no-code-header-small-de.png\";\nimport srcNoCodeEN from \"assets/products/category/no-code-header-en.png\";\nimport srcNoCodeMobileEN from \"assets/products/category/no-code-header-small-en.png\";\n\nimport { useForm } from \"modules/form/components/FormContext\";\nimport { isGerman, locale } from \"modules/util/constants\";\nimport { isDanish } from \"modules/util/constants\";\nimport getProductCategoryImage from \"modules/util/getProductCategoryImage\";\n\nimport Button from \"modules/common/components/Button\";\nimport cx from \"classnames\";\n\nimport style from \"./Header.module.css\";\n\nconst messages = defineMessages({\n button: {\n id: \"start-product-registration.button\",\n defaultMessage: \"Register your BWT product now\",\n description:\n \"button: scrolls down to the enter product code section to begin flow.\",\n },\n noProductCodeButton: {\n id: \"no-product-code.button\",\n defaultMessage: \"This is how it works\",\n description:\n \"button: scrolls down to instructions on what to do if you have no product code\",\n },\n});\n\ninterface StartProductRegistrationProps {\n onClick: () => void;\n}\n\nconst StartProductRegistration = ({\n onClick,\n}: StartProductRegistrationProps) => {\n const { formatMessage } = useIntl();\n return (\n
\n
\n {isDanish ? (\n
\n \n
) : (\n \n )}\n
\n \n
\n
\n
\n \n
\n \n
\n );\n};\n\ninterface NoProductCodeHeaderProps {\n onClick: () => void;\n}\n\nconst NoProductCodeHeader = ({ onClick }: NoProductCodeHeaderProps) => {\n const { formatMessage } = useIntl();\n return (\n
\n
\n \n
\n
\n \n
\n \n
\n );\n};\n\ninterface HeaderProps {\n scrollToFormRef: () => void;\n}\n\nconst hiddenHeaderRoutes = [\"/result\", \"/iot/activation\", \"/iot/cancellation\"];\n\nconst Header = ({ scrollToFormRef }: HeaderProps) => {\n const { state } = useForm();\n const { pathname } = useLocation();\n\n const product = state?.lastProductResponse?.data;\n const productCategoryImage = getProductCategoryImage(\n product?.specificProductType\n );\n\n const [mainHeader, setMainHeader] = React.useState(\n productCategoryImage === \"\"\n ? window.innerWidth > 767\n ? srcGeneric\n : srcGenericMobile\n : \"\"\n );\n\n const srcNoCode = isGerman ? srcNoCodeDE : srcNoCodeEN;\n const srcNoCodeMobile = isGerman ? srcNoCodeMobileDE : srcNoCodeMobileEN;\n\n const [noCodeHeader, setNoCodeHeader] = React.useState(\n window.innerWidth > 767 ? srcNoCode : srcNoCodeMobile\n );\n\n window.addEventListener(\"resize\", () => {\n if (window.innerWidth > 767) {\n setNoCodeHeader(srcNoCode);\n if (productCategoryImage === \"\") {\n setMainHeader(srcGeneric);\n }\n } else {\n setNoCodeHeader(srcNoCodeMobile);\n if (productCategoryImage === \"\") {\n setMainHeader(srcGenericMobile);\n }\n }\n });\n\n const hide = hiddenHeaderRoutes.some((route) => pathname.includes(route));\n if (hide) return ;\n\n const alternateHeader = pathname.includes(\"/noproductcode\");\n\n return (\n
\n {alternateHeader ? (\n \n \n scrollToFormRef()} />\n \n ) : (\n \n
\n
\n scrollToFormRef()} />\n
\n
\n )}\n \n );\n};\n\nexport default Header;\n","import React, { useState, useMemo, useEffect } from \"react\";\n\nimport style from \"./PopUpProvider.module.css\";\n\n\ntype DisplayFunc = (\n content: React.ReactNode,\n showClose?: boolean,\n hide?: () => void\n) => void;\ninterface ContextState {\n display: DisplayFunc;\n}\n\ninterface PopUpState {\n content: React.ReactNode;\n showClose: boolean;\n hide: (() => void) | null;\n}\n\nconst initalState: PopUpState = {\n content: null,\n showClose: true,\n hide: null,\n};\n\nexport const PopUpContext = React.createContext({\n display: () => {},\n});\n\nconst buildSetter = (\n setState: React.Dispatch>\n) => (content: React.ReactNode, showClose?: boolean, hide?: () => void) =>\n setState({ content, hide: hide ?? null, showClose: showClose ?? true });\n\nconst PopUp: React.FC = ({ children }) => {\n const [{ content, hide, showClose }, setState] = useState(initalState);\n\n const display = useMemo(() => buildSetter(setState), [setState]);\n\n useEffect(() => {\n if (content) window.scrollTo(0, 0);\n }, [content]);\n\n return (\n \n
{children}
\n {content && (\n
\n
\n {showClose && (\n
\n )}\n
{content}
\n
\n
\n )}\n \n );\n};\n\nexport function usePopUp(): ContextState {\n const { display } = React.useContext(PopUpContext);\n return { display };\n}\n\nexport default PopUp;\n","import React from \"react\";\nimport classnames from \"classnames/bind\";\nimport { useLocation } from \"react-router\";\n\nimport style from \"./Page.module.css\";\nconst cx = classnames.bind(style);\n\nconst extraTopPaddingRoutes = [\n \"/result\",\n \"/iot/activation\",\n \"/iot/cancellation\",\n];\n\nconst Page: React.FC = ({ children }) => {\n const { pathname } = useLocation();\n const extraTopPadding = extraTopPaddingRoutes.some((route) =>\n pathname.includes(route)\n );\n\n return (\n \n {children}\n
\n );\n};\n\nexport default Page;\n","import { useIntl, defineMessages } from \"react-intl\";\n\nimport srcApp from \"assets/app.png\";\nimport srcCamp from \"assets/camp.png\";\nimport srcShop from \"assets/shop.png\";\n\nexport type LinkType = {\n type: string;\n name: string;\n url: string;\n};\n\nexport type ExternalLinkItemType = {\n img: string;\n title: string;\n desc: string;\n links: LinkType[];\n};\n\nexport type ExternalLinkItems = ExternalLinkItemType[];\n\nconst messages = defineMessages({\n appTitle: {\n id: \"external-links.to-app.title\",\n defaultMessage: \"BWT Best Water Home App\",\n description: \"title: BWT Best Water Home App\",\n },\n appDesc: {\n id: \"external-links.to-app.description\",\n defaultMessage:\n \"Smart: The latest news about your BWT systems are only a tap away.\",\n description: \"text explaining how to download BWT apps.\",\n },\n benefitsTitle: {\n id: \"external-links.to-benefits.title\",\n defaultMessage: \"BWT World of advantages\",\n description: \"title: perks of BWT online.\",\n },\n benefitsDesc: {\n id: \"external-links.to-benefits.description\",\n defaultMessage:\n \"The BWT world of benefits offers you attractive offers and additional services.\",\n description: \"text explaining the additional online services of BWT.\",\n },\n benefitsButton: {\n id: \"external-links.to-benefits.button\",\n defaultMessage: \"Get your benefits now\",\n description: \"button: link to benefits.\",\n },\n shopTitle: {\n id: \"external-links.to-shop.title\",\n defaultMessage: \"BWT Onlineshop\",\n description: \"title: BWT online shop.\",\n },\n shopDesc: {\n id: \"external-links.to-shop.description\",\n defaultMessage:\n \"Now you can easily buy BWT products online with just a few clicks.\",\n description: \"text explaining how to access the shop.\",\n },\n shopButton: {\n id: \"external-links.to-shop.button\",\n defaultMessage: \"Order online now\",\n description: \"button: link to online shop.\",\n },\n});\n\n// copied from at-home cms.\nconst shopLinks: { [locale: string]: string } = {\n \"de-AT\": \"https://l.bwt.com/2d\",\n \"de-DE\": \"https://l.bwt.com/2c\",\n \"de-CH\": \"https://l.bwt.com/1l\",\n \"fr-CH\": \"https://l.bwt.com/1m\",\n \"fr-FR\": \"https://l.bwt.com/3p\",\n \"en-GB\": \"https://l.bwt.com/42\",\n \"it-IT\": \"https://l.bwt.com/51\",\n \"da-DK\": \"https://l.bwt.com/52\",\n \"hu-HU\": \"https://l.bwt.com/5d\",\n};\n\nfunction getShopLink(locale: string): string {\n if (shopLinks[locale]) return shopLinks[locale];\n\n const countryCode = locale.split(\"-\")[1];\n const preferredLanguage = locale.split(\"-\")[0];\n let fallback = null;\n\n Object.keys(shopLinks).forEach((key) => {\n if (key.includes(countryCode)) {\n fallback = key;\n return;\n }\n });\n\n if (!fallback) {\n Object.keys(shopLinks).forEach((key) => {\n if (key.includes(preferredLanguage)) {\n fallback = key;\n return;\n }\n });\n }\n\n if (!fallback) {\n if (shopLinks[countryCode]) fallback = countryCode;\n if (shopLinks[\"de-AT\"]) fallback = \"de-AT\";\n if (shopLinks[\"AT\"]) fallback = \"AT\";\n }\n\n return fallback ? shopLinks[fallback] : Object.keys(shopLinks)[0];\n}\n\nexport const useExternalLinkItems = (): ExternalLinkItems => {\n const { formatMessage, locale } = useIntl();\n const shopLink = getShopLink(locale);\n\n return [\n {\n img: srcApp,\n title: formatMessage(messages.appTitle),\n desc: formatMessage(messages.appDesc),\n links: [\n {\n type: \"store\",\n name: \"apple\",\n url:\n \"https://apps.apple.com/us/app/bwt-best-water-home/id1317692659?ls=1\",\n },\n {\n type: \"store\",\n name: \"google\",\n url:\n \"https://play.google.com/store/apps/details?id=com.bwt.athomeapp\",\n },\n ],\n },\n {\n img: srcCamp,\n title: formatMessage(messages.benefitsTitle),\n desc: formatMessage(messages.benefitsDesc),\n links: [\n {\n type: \"button\",\n name: formatMessage(messages.benefitsButton),\n url: \"\",\n },\n ],\n },\n {\n img: srcShop,\n title: formatMessage(messages.shopTitle),\n desc: formatMessage(messages.shopDesc),\n links: [\n {\n type: \"button\",\n name: formatMessage(messages.shopButton),\n url: shopLink,\n },\n ],\n },\n ];\n};\n","import React from \"react\";\nimport { FormattedMessage, defineMessages, useIntl } from \"react-intl\";\n\nimport Button from \"modules/common/components/Button\";\n\nimport srcAccount from \"assets/IC_Account_GREY.svg\";\nimport srcAccountPink from \"assets/IC_Account.svg\";\n\nimport style from \"./BWTWorld.module.css\";\n\nconst messages = defineMessages({\n button: {\n id: \"bwt-world.button\",\n defaultMessage: \"switch to BWT Account\",\n description: \"button: external link to bwt account.\",\n },\n});\n\nconst BWTWorld = () => {\n const { formatMessage } = useIntl();\n return (\n
\n
\n \n
\n
\n \n
\n \n \n \n
\n );\n};\n\nexport default BWTWorld;\n","import React from \"react\";\n\nimport classnames from \"classnames/bind\";\n\nimport style from \"./CircleIndicator.module.css\";\n\nconst cx = classnames.bind(style);\n\ninterface CircleIndicatorProps {\n idx?: number;\n show?: boolean;\n completed?: boolean;\n errored?: boolean;\n fixed?: boolean;\n}\n\nconst CircleIndicator = ({\n idx,\n show = true,\n completed,\n errored,\n fixed,\n}: CircleIndicatorProps) => {\n const hasIdx = typeof idx === \"number\";\n return (\n
\n {idx}\n
\n );\n};\n\nexport default CircleIndicator;\n","import React from \"react\";\n\nimport style from \"./Heading.module.css\";\n\ninterface HeadingProps {\n message: string;\n}\n\nconst Heading = ({ message }: HeadingProps) => (\n
{message}
\n);\n\nexport default Heading;\n","//google\nimport srcGoogleEn from \"assets/appStore/badges/google/en.png\";\nimport srcGoogleDe from \"assets/appStore/badges/google/de.png\";\nimport srcGoogleFr from \"assets/appStore/badges/google/fr.png\";\nimport srcGoogleIt from \"assets/appStore/badges/google/it.png\";\nimport srcGoogleNl from \"assets/appStore/badges/google/nl.png\";\nimport srcGoogleDk from \"assets/appStore/badges/google/dk.png\";\nimport srcGoogleHu from \"assets/appStore/badges/google/hu.png\";\nimport srcGooglePl from \"assets/appStore/badges/google/pl.png\";\nimport srcGoogleUa from \"assets/appStore/badges/google/ua.png\";\nimport srcGoogleRu from \"assets/appStore/badges/google/ru.png\";\nimport srcGoogleSe from \"assets/appStore/badges/google/se.png\";\nimport srcGoogleNo from \"assets/appStore/badges/google/no.png\";\nimport srcGoogleFi from \"assets/appStore/badges/google/fi.png\";\nimport srcGoogleEs from \"assets/appStore/badges/google/es.png\";\n\n//apple\nimport srcAppleEn from \"assets/appStore/badges/apple/en.svg\";\nimport srcAppleDe from \"assets/appStore/badges/apple/de.svg\";\nimport srcAppleFr from \"assets/appStore/badges/apple/fr.svg\";\nimport srcAppleIt from \"assets/appStore/badges/apple/it.svg\";\nimport srcAppleNl from \"assets/appStore/badges/apple/nl.svg\";\nimport srcAppleDk from \"assets/appStore/badges/apple/dk.svg\";\nimport srcAppleHu from \"assets/appStore/badges/apple/hu.svg\";\nimport srcApplePl from \"assets/appStore/badges/apple/pl.svg\";\nimport srcAppleRu from \"assets/appStore/badges/apple/ru.svg\";\nimport srcAppleSe from \"assets/appStore/badges/apple/se.svg\";\nimport srcAppleNo from \"assets/appStore/badges/apple/no.svg\";\nimport srcAppleFi from \"assets/appStore/badges/apple/fi.svg\";\nimport srcAppleEs from \"assets/appStore/badges/apple/es.svg\";\n\nconst assets: Record> = {\n google: {\n en: srcGoogleEn,\n de: srcGoogleDe,\n fr: srcGoogleFr,\n it: srcGoogleIt,\n nl: srcGoogleNl,\n dk: srcGoogleDk,\n hu: srcGoogleHu,\n pl: srcGooglePl,\n ua: srcGoogleUa,\n ru: srcGoogleRu,\n se: srcGoogleSe,\n no: srcGoogleNo,\n fi: srcGoogleFi,\n es: srcGoogleEs,\n },\n apple: {\n en: srcAppleEn,\n de: srcAppleDe,\n fr: srcAppleFr,\n it: srcAppleIt,\n nl: srcAppleNl,\n dk: srcAppleDk,\n hu: srcAppleHu,\n pl: srcApplePl,\n ua: srcAppleEn, // couldn't find asset, default to EN?\n ru: srcAppleRu,\n se: srcAppleSe,\n no: srcAppleNo,\n fi: srcAppleFi,\n es: srcAppleEs,\n },\n};\n\nexport default function getLocalisedAppStoreImage(\n name: string,\n languageCode: string\n): string {\n return assets[name][languageCode];\n}\n","import React from \"react\";\nimport { useIntl, FormattedMessage } from \"react-intl\";\nimport { useLocation } from \"react-router\";\n\nimport {\n useExternalLinkItems,\n ExternalLinkItemType,\n LinkType,\n} from \"../data/externalLinks\";\nimport getLocalisedAppStoreImage from \"modules/util/getLocalisedAppStoreImage\";\n\nimport Button from \"modules/common/components/Button\";\n\nimport style from \"./ExternalLinks.module.css\";\n\nexport const StoreLink = ({ link }: { link: LinkType }) => {\n const { locale } = useIntl();\n const language = locale.split(\"-\")[0];\n const src = getLocalisedAppStoreImage(link.name, language);\n return (\n window.open(link.url)}\n />\n );\n};\n\nfunction getLinkComponent(link: LinkType, idx: number) {\n if (link.type === \"store\") {\n return ;\n } else {\n return (\n (link.url ? window.open(link.url) : undefined)}\n btnStyle=\"primary\"\n size=\"small\"\n />\n );\n }\n}\n\ninterface ExternalLinkItemProps {\n item: ExternalLinkItemType;\n}\n\nconst ExternalLinkItem = ({ item }: ExternalLinkItemProps) => {\n return (\n
\n \"\"\n
\n
\n
{item.title}
\n
{item.desc}
\n
\n
\n {item.links.map((link, idx) => getLinkComponent(link, idx))}\n
\n
\n
\n );\n};\n\nconst ExternalLinks = () => {\n const { pathname } = useLocation();\n const externalLinkItems = useExternalLinkItems();\n const showTitle = pathname !== \"/result\";\n return (\n
\n {showTitle && (\n
\n \n
\n )}\n
\n {externalLinkItems.map((item, idx) => (\n \n ))}\n
\n
\n );\n};\n\nexport default ExternalLinks;\n","import srcPerla from \"assets/products/iot/perla.png\";\nimport srcSilk from \"assets/products/iot/Perla-Silk.png\";\nimport srcCillitDuo from \"assets/products/iot/Cillit-Duo.png\";\n\nexport default function getDeviceImage(type: string, version: string) {\n if (version === \"Duo\") return srcCillitDuo;\n switch (type) {\n case \"persil\":\n return srcSilk;\n case \"aqa perla\":\n default:\n return srcPerla;\n }\n}\n","import { defineMessages, useIntl } from \"react-intl\";\nimport { useLocation } from \"react-router\";\n\nimport { useForm } from \"../components/FormContext\";\nimport { CustomerBenefits, SpecificProductType } from \"./types\";\nimport { isDanish } from \"modules/util/constants\";\n\nimport srcApp from \"assets/IC_BWT-App.svg\";\nimport srcGuarantee from \"assets/IC_Guarantee.svg\";\nimport srcVoucher from \"assets/IC_Vouchers-01.svg\";\nimport srcVoucherShop from \"assets/IC_Vouchers-02.svg\";\nimport srcMaintenence from \"assets/IC_Maintenence.svg\";\nimport srcService from \"assets/IC_Service.svg\";\n\nconst messages = defineMessages({\n voucher_online_shop_body: {\n id: \"benefits.voucher_online_shop_body\",\n defaultMessage: \"Great price advantages for your registered products.\",\n description: \"product benefit.\",\n },\n voucher_online_shop_title: {\n id: \"benefits.voucher_online_shop_title\",\n defaultMessage: \"Vouchers online shop\",\n description: \"product benefit.\",\n },\n ten_year_warranty_body: {\n id: \"benefits.ten_year_warranty_body\",\n defaultMessage: \"Protect your investments with our guarantee.\",\n description: \"product benefit.\",\n },\n ten_year_warranty_title: {\n id: \"benefits.ten_year_warranty_title\",\n defaultMessage: \"10 year guarantee *\",\n description: \"product benefit.\",\n },\n voucher_hygiene_box_body: {\n id: \"benefits.voucher_hygiene_box_body\",\n defaultMessage:\n \"Your E1 hygiene box subscription at a special price. Complete with a voucher code in the BWT online shop.\",\n description: \"product benefit.\",\n },\n voucher_hygiene_box_title: {\n id: \"benefits.voucher_hygiene_box_title\",\n defaultMessage: \"Voucher: hygiene box *\",\n description: \"product benefit.\",\n },\n maintenence_and_information_body: {\n id: \"benefits.maintenence_and_information_body\",\n defaultMessage:\n \"We will inform you about necessary maintenance measures and product innovations.\",\n description: \"product benefit.\",\n },\n maintenence_and_information_title: {\n id: \"benefits.maintenence_and_information_title\",\n defaultMessage: \"Maintenance & information\",\n description: \"product benefit.\",\n },\n service_and_help_body: {\n id: \"benefits.service_and_help_body\",\n defaultMessage:\n \"Our customer service can focus on you and your BWT products.\",\n description: \"product benefit.\",\n },\n service_and_help_title: {\n id: \"benefits.service_and_help_title\",\n defaultMessage: \"Service & help\",\n description: \"product benefit.\",\n },\n best_water_home_app_body: {\n id: \"benefits.best_water_home_app_body\",\n defaultMessage:\n \"You have an overview of your devices at all times and enjoy maximum service.\",\n description: \"product benefit.\",\n },\n best_water_home_app_title: {\n id: \"benefits.best_water_home_app_title\",\n defaultMessage: \"Best Water Home App\",\n description: \"product benefit.\",\n },\n best_water_home_app_jugs_body: {\n id: \"benefits.best_water_home_app_jugs_body\",\n defaultMessage:\n \"The perfect replacement for the manual or electronic timer.\",\n description: \"product benefit.\",\n },\n best_water_home_app_pool_tester_body: {\n id: \"benefits.best_water_home_app_pool_tester_body\",\n defaultMessage:\n \"Enjoy individual pool care advice for the best bathing pleasure and perfect hygiene.\",\n description: \"product benefit.\",\n },\n voucher_pool_agents_body: {\n id: \"benefits.voucher_pool_agents_body\",\n defaultMessage:\n \"Pool active ingredients from the BWT pool care lines at a special price.\",\n description: \"product benefit.\",\n },\n voucher_pool_agents_title: {\n id: \"benefits.voucher_pool_agents_title\",\n defaultMessage: \"Voucher: pool care products\",\n description: \"product benefit.\",\n },\n best_water_home_app_pool_robot_body: {\n id: \"benefits.best_water_home_app_pool_robot_body\",\n defaultMessage:\n \"You have an overview of your devices at all times and enjoy maximum service.\",\n description: \"product benefit.\",\n },\n softener_free_service_body: {\n id: \"benefits.free_service_body\",\n defaultMessage: \"Get a 2 Year Free Service with your softener\",\n description: \"product benefit.\",\n },\n softener_free_service_title: {\n id: \"benefits.free_service_title\",\n defaultMessage: \"2 Years Free Service\",\n description: \"product benefit.\",\n },\n});\n\nconst defaultBenefits = [\n CustomerBenefits.MaintenanceAndInformation,\n CustomerBenefits.ServiceAndHelp,\n CustomerBenefits.BestWaterHomeApp,\n];\n\n// CustomerBenefitsMapping.cs needs updating and should probably handle per language.\nconst HACK_danishBenefits = [\n CustomerBenefits.MaintenanceAndInformation,\n CustomerBenefits.FreeService,\n CustomerBenefits.BestWaterHomeApp,\n];\n\nconst HACK_defaultDanishBenefits = [\n CustomerBenefits.MaintenanceAndInformation,\n CustomerBenefits.VoucherOnlineShop,\n CustomerBenefits.BestWaterHomeApp,\n];\n\ntype Benefit = {\n icon: string;\n heading: string;\n message: string;\n};\n\nexport type Benefits = {\n benefits: Benefit[];\n displayLegalNote: boolean;\n};\n\nexport function useBenefits(): Benefits {\n const { state } = useForm();\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n\n const lastProductResponseData = state?.lastProductResponse?.data;\n const isGeneric =\n lastProductResponseData?.specificProductType ===\n SpecificProductType.Generic;\n const useDanishBenefits = isDanish && isGeneric;\n const hideAS400 = !state.form.contractTerms && pathname.includes(\"/result\");\n const danishBenefits = hideAS400\n ? HACK_defaultDanishBenefits\n : HACK_danishBenefits;\n\n const benefits = useDanishBenefits\n ? danishBenefits\n : lastProductResponseData?.benefits ?? defaultBenefits;\n const displayLegalNote = lastProductResponseData?.displayLegalNote ?? false;\n\n const lookupBenefit = (benefit: CustomerBenefits) => {\n switch (benefit) {\n case CustomerBenefits.BestWaterHomeApp: {\n return {\n icon: srcApp,\n heading: formatMessage(messages.best_water_home_app_title),\n message: formatMessage(messages.best_water_home_app_body),\n };\n }\n case CustomerBenefits.BestWaterHomeAppJugs: {\n return {\n icon: srcApp,\n heading: formatMessage(messages.best_water_home_app_title),\n message: formatMessage(messages.best_water_home_app_jugs_body),\n };\n }\n case CustomerBenefits.BestWaterHomeAppPoolRobot: {\n return {\n icon: srcApp,\n heading: formatMessage(messages.best_water_home_app_title),\n message: formatMessage(messages.best_water_home_app_pool_robot_body),\n };\n }\n case CustomerBenefits.BestWaterHomeAppPoolTester: {\n return {\n icon: srcApp,\n heading: formatMessage(messages.best_water_home_app_title),\n message: formatMessage(messages.best_water_home_app_pool_tester_body),\n };\n }\n case CustomerBenefits.MaintenanceAndInformation: {\n return {\n icon: srcMaintenence,\n heading: formatMessage(messages.maintenence_and_information_title),\n message: formatMessage(messages.maintenence_and_information_body),\n };\n }\n case CustomerBenefits.ServiceAndHelp: {\n return {\n icon: srcService,\n heading: formatMessage(messages.service_and_help_title),\n message: formatMessage(messages.service_and_help_body),\n };\n }\n case CustomerBenefits.TenYearWarranty: {\n return {\n icon: srcGuarantee,\n heading: formatMessage(messages.ten_year_warranty_title),\n message: formatMessage(messages.ten_year_warranty_body),\n };\n }\n case CustomerBenefits.VoucherHygieneBox: {\n return {\n icon: srcVoucher,\n heading: formatMessage(messages.voucher_hygiene_box_title),\n message: formatMessage(messages.voucher_hygiene_box_body),\n };\n }\n case CustomerBenefits.VoucherOnlineShop: {\n return {\n icon: srcVoucherShop,\n heading: formatMessage(messages.voucher_online_shop_title),\n message: formatMessage(messages.voucher_online_shop_body),\n };\n }\n case CustomerBenefits.VoucherPoolAgents: {\n return {\n icon: srcVoucherShop,\n heading: formatMessage(messages.voucher_pool_agents_title),\n message: formatMessage(messages.voucher_pool_agents_body),\n };\n }\n case CustomerBenefits.FreeService: {\n return {\n icon: srcGuarantee,\n heading: formatMessage(messages.softener_free_service_title),\n message: formatMessage(messages.softener_free_service_body),\n };\n }\n }\n };\n\n return {\n benefits: benefits.map((b: CustomerBenefits) => lookupBenefit(b)),\n displayLegalNote,\n };\n}\n","import React, { Fragment } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\n\nimport style from \"./LegalNotice.module.css\";\n\ninterface LegalNoticeProps {\n display: boolean;\n}\n\nconst LegalNotice = ({ display }: LegalNoticeProps) => {\n if (!display) return ;\n return (\n
\n \n
\n );\n};\n\nexport default LegalNotice;\n","import React from \"react\";\nimport classnames from \"classnames/bind\";\nimport { FormattedMessage } from \"react-intl\";\n\nimport { useForm } from \"./FormContext\";\nimport { useBenefits } from \"../data/benefits\";\n\nimport CircleIndicator from \"modules/common/components/CircleIndicator\";\nimport LegalNotice from \"./LegalNotice\";\n\nimport style from \"./Benefits.module.css\";\n\nconst cx = classnames.bind(style);\n\ninterface ItemProps {\n icon: string;\n heading: string;\n message: string;\n specific: boolean;\n}\n\nconst BenefitItem = ({ icon, heading, message, specific }: ItemProps) => {\n return (\n
\n \"\"\n
\n
\n {specific && }\n \n {heading}\n \n
\n
{message}
\n
\n
\n );\n};\n\nconst Benefits = () => {\n const { state } = useForm();\n const { benefits, displayLegalNote } = useBenefits();\n\n const lastProductResponseData = state?.lastProductResponse?.data || {};\n const specific = !!lastProductResponseData;\n\n return (\n
\n
\n \n
\n
\n {benefits.map((b, idx) => (\n
\n {b && (\n \n )}\n
\n ))}\n \n
\n
\n );\n};\n\nexport default Benefits;\n","import React, { useEffect } from \"react\";\nimport { FormattedMessage, defineMessages, useIntl } from \"react-intl\";\nimport { useHistory } from \"react-router\";\n\nimport { useForm } from \"./FormContext\";\nimport { useExternalLinkItems } from \"modules/layout/data/externalLinks\";\nimport getProductCategoryImage from \"modules/util/getProductCategoryImage\";\n\nimport BWTWorld from \"./BWTWorld\";\nimport CircleIndicator from \"modules/common/components/CircleIndicator\";\nimport Heading from \"modules/common/components/Heading\";\nimport { StoreLink } from \"modules/layout/components/ExternalLinks\";\n\nimport style from \"./RegistrationComplete.module.css\";\nimport getDeviceImage from \"modules/util/getDeviceImage\";\nimport Benefits from \"./Benefits\";\nimport { isEnglish } from \"modules/util/constants\";\n\nconst messages = defineMessages({\n title: {\n id: \"registration-complete.title\",\n defaultMessage: \"Thank you for registering your BWT product.\",\n description:\n \"title: congratulate the user on successfully registering their product.\",\n },\n ukMessageStart: {\n id: \"registration-complete.optional-message.start\",\n defaultMessage: \"Your online shop voucher code is BWTOSV10. Please visit\",\n description: \"message only shown in the uk about shop discounts\",\n },\n ukMessageEnd: {\n id: \"registration-complete.optional-message.end\",\n defaultMessage: \"to save 10% on selected products. Valid for one use only.\",\n description: \"message only shown in the uk about shop discounts\",\n },\n});\n\nconst RegistationComplete = () => {\n const { state, resetState } = useForm();\n const { replace } = useHistory();\n const { formatMessage } = useIntl();\n\n // hide/unhide \"content tiles\" in sitecore.\n useEffect(() => {\n const elem = document.querySelector(\"[data-thankyou-content]\");\n elem?.setAttribute(\"style\", \"display: block\");\n return () => elem?.setAttribute(\"style\", \"display: none\");\n }, []);\n\n const product = state?.lastProductResponse?.data;\n const device = state?.lastDeviceResponse?.data;\n\n const name = device ? device.productName : product ? product.name : \"\";\n const productCode = device\n ? device.productCode\n : product\n ? product.productCode\n : \"\";\n const image = device\n ? getDeviceImage(device.deviceType, device.deviceVersion)\n : getProductCategoryImage(product?.specificProductType);\n\n const externalLinkItems = useExternalLinkItems();\n const storeLinks = externalLinkItems.find((item) =>\n item.links.find((link) => link.type === \"store\")\n )?.links;\n\n return (\n
\n \n {isEnglish && state.form.country === \"GB\" ? (\n
\n {formatMessage(messages.ukMessageStart)}{\" \"}\n window.open(\"https://bwtshop.co.uk\")}\n >\n {\"bwtshop.co.uk\"}\n {\" \"}\n {formatMessage(messages.ukMessageEnd)}\n
\n ) : (\n
\n )}\n
\n
\n
\n
{name}
\n
\n {productCode}\n \n
\n
\n \n {\n resetState();\n replace(\"/\");\n }}\n >\n \n
\n
\n \n
\n
\n \n
\n
\n {storeLinks?.map((link, idx) => (\n
\n \n
\n ))}\n
\n \n
\n );\n};\n\nexport default RegistationComplete;\n","interface CountryPostcodeRegex {\n countryCode: string;\n regExp: RegExp;\n}\n\nexport const getPostcodeRegex = (country?: string) => {\n if (!country) return;\n return postCodeRegex.find((val) => val.countryCode === country)?.regExp;\n};\n\nexport const postCodeRegex: CountryPostcodeRegex[] = [\n {\n countryCode: \"GB\",\n regExp: new RegExp(\n \"GIR[ ]?0AA|((AB|AL|B|BA|BB|BD|BH|BL|BN|BR|BS|BT|CA|CB|CF|CH|CM|CO|CR|CT|CV|CW|DA|DD|DE|DG|DH|DL|DN|DT|DY|E|EC|EH|EN|EX|FK|FY|G|GL|GY|GU|HA|HD|HG|HP|HR|HS|HU|HX|IG|IM|IP|IV|JE|KA|KT|KW|KY|L|LA|LD|LE|LL|LN|LS|LU|M|ME|MK|ML|N|NE|NG|NN|NP|NR|NW|OL|OX|PA|PE|PH|PL|PO|PR|RG|RH|RM|S|SA|SE|SG|SK|SL|SM|SN|SO|SP|SR|SS|ST|SW|SY|TA|TD|TF|TN|TQ|TR|TS|TW|UB|W|WA|WC|WD|WF|WN|WR|WS|WV|YO|ZE)(\\\\d[\\\\dA-Z]?[ ]?\\\\d[ABD-HJLN-UW-Z]{2}))|BFPO[ ]?\\\\d{1,4}$\"\n ),\n },\n {\n countryCode: \"JE\",\n regExp: RegExp(\"JE\\\\d[\\\\dA-Z]?[ ]?\\\\d[ABD-HJLN-UW-Z]{2}$\"),\n },\n {\n countryCode: \"GG\",\n regExp: RegExp(\"GY\\\\d[\\\\dA-Z]?[ ]?\\\\d[ABD-HJLN-UW-Z]{2}$\"),\n },\n {\n countryCode: \"IM\",\n regExp: RegExp(\"IM\\\\d[\\\\dA-Z]?[ ]?\\\\d[ABD-HJLN-UW-Z]{2}$\"),\n },\n { countryCode: \"US\", regExp: RegExp(\"\\\\d{5}([ -]\\\\d{4})?$\") },\n {\n countryCode: \"CA\",\n regExp: RegExp(\n \"[ABCEGHJKLMNPRSTVXY]\\\\d[ABCEGHJ-NPRSTV-Z][ ]?\\\\d[ABCEGHJ-NPRSTV-Z]\\\\d\"\n ),\n },\n { countryCode: \"DE\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"JP\", regExp: RegExp(\"\\\\d{3}-\\\\d{4}$\") },\n { countryCode: \"FR\", regExp: RegExp(\"^(?:[0-8]\\\\d|9[0-8])\\\\d{3}$\") },\n { countryCode: \"AU\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"IT\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"CH\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"AT\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"ES\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"NL\", regExp: RegExp(\"\\\\d{4}\\\\s*([A-Z]{2})$\") },\n { countryCode: \"BE\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"DK\", regExp: RegExp(\"^([D-d][K-k]( |-))?[1-9]{1}[0-9]{3}$\") },\n { countryCode: \"SE\", regExp: RegExp(\"^\\\\d{3}[ ]?\\\\d{2}$\") },\n { countryCode: \"NO\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"BR\", regExp: RegExp(\"\\\\d{5}[-]?\\\\d{3}$\") },\n { countryCode: \"PT\", regExp: RegExp(\"\\\\d{4}([-]\\\\d{3})?$\") },\n { countryCode: \"FI\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"AX\", regExp: RegExp(\"\\\\22d{3}$\") },\n { countryCode: \"KR\", regExp: RegExp(\"\\\\d{3}[-]\\\\d{3}$\") },\n { countryCode: \"CN\", regExp: RegExp(\"^\\\\d{6}$\") },\n { countryCode: \"TW\", regExp: RegExp(\"\\\\d{3}(\\\\d{2})?$\") },\n { countryCode: \"SG\", regExp: RegExp(\"\\\\d{6}$\") },\n { countryCode: \"DZ\", regExp: RegExp(\"\\\\d{5}$\") },\n { countryCode: \"AD\", regExp: RegExp(\"AD\\\\d{3}$\") },\n { countryCode: \"AR\", regExp: RegExp(\"([A-HJ-NP-Z])?\\\\d{4}([A-Z]{3})?$\") },\n { countryCode: \"AM\", regExp: RegExp(\"(37)?\\\\d{4}$\") },\n { countryCode: \"AZ\", regExp: RegExp(\"\\\\d{4}$\") },\n { countryCode: \"BH\", regExp: RegExp(\"((1[0-2]|[2-9])\\\\d{2})?$\") },\n { countryCode: \"BD\", regExp: RegExp(\"\\\\d{4}$\") },\n { countryCode: \"BB\", regExp: RegExp(\"(BB\\\\d{5})?$\") },\n { countryCode: \"BY\", regExp: RegExp(\"\\\\d{6}$\") },\n { countryCode: \"BM\", regExp: RegExp(\"[A-Z]{2}[ ]?[A-Z0-9]{2}$\") },\n { countryCode: \"BA\", regExp: RegExp(\"\\\\d{5}$\") },\n { countryCode: \"IO\", regExp: RegExp(\"BBND 1ZZ$\") },\n { countryCode: \"BN\", regExp: RegExp(\"[A-Z]{2}[ ]?\\\\d{4}$\") },\n { countryCode: \"BG\", regExp: RegExp(\"\\\\d{4}$\") },\n { countryCode: \"KH\", regExp: RegExp(\"\\\\d{5}$\") },\n { countryCode: \"CV\", regExp: RegExp(\"\\\\d{4}$\") },\n { countryCode: \"CL\", regExp: RegExp(\"\\\\d{7}$\") },\n { countryCode: \"CR\", regExp: RegExp(\"\\\\d{4,5}|d{3}-d{4}$\") },\n { countryCode: \"HR\", regExp: RegExp(\"\\\\d{5}$\") },\n { countryCode: \"CY\", regExp: RegExp(\"\\\\d{4}$\") },\n { countryCode: \"CZ\", regExp: RegExp(\"\\\\d{3}[ ]?d{2}$\") },\n { countryCode: \"DO\", regExp: RegExp(\"\\\\d{5}$\") },\n {\n countryCode: \"EC\",\n regExp: RegExp(\"([A-Z]\\\\d{4}[A-Z]|(?:[A-Z]{2})?\\\\d{6})?$\"),\n },\n { countryCode: \"EG\", regExp: RegExp(\"\\\\d{5}$\") },\n { countryCode: \"EE\", regExp: RegExp(\"\\\\d{5}$\") },\n { countryCode: \"FO\", regExp: RegExp(\"\\\\d{3}$\") },\n { countryCode: \"GE\", regExp: RegExp(\"\\\\d{4}$\") },\n { countryCode: \"GR\", regExp: RegExp(\"\\\\d{3}[ ]?\\\\d{2}$\") },\n { countryCode: \"GL\", regExp: RegExp(\"\\\\39d{2}$\") },\n { countryCode: \"GT\", regExp: RegExp(\"\\\\d{5}$\") },\n { countryCode: \"HT\", regExp: RegExp(\"\\\\d{4}$\") },\n { countryCode: \"HN\", regExp: RegExp(\"(?:\\\\d{5})?$\") },\n { countryCode: \"HU\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"IS\", regExp: RegExp(\"\\\\d{3}$\") },\n { countryCode: \"IN\", regExp: RegExp(\"\\\\d{6}$\") },\n { countryCode: \"ID\", regExp: RegExp(\"\\\\d{5}$\") },\n { countryCode: \"IL\", regExp: RegExp(\"\\\\d{5}$\") },\n { countryCode: \"JO\", regExp: RegExp(\"\\\\d{5}$\") },\n { countryCode: \"KZ\", regExp: RegExp(\"\\\\d{6}$\") },\n { countryCode: \"KE\", regExp: RegExp(\"\\\\d{5}$\") },\n { countryCode: \"KW\", regExp: RegExp(\"\\\\d{5}$\") },\n { countryCode: \"LA\", regExp: RegExp(\"\\\\d{5}$\") },\n { countryCode: \"LV\", regExp: RegExp(\"\\\\d{4}$\") },\n { countryCode: \"LB\", regExp: RegExp(\"(\\\\d{4}([ ]?\\\\d{4})?)?$\") },\n { countryCode: \"LI\", regExp: RegExp(\"(948[5-9])|(949[0-7])$\") },\n { countryCode: \"LT\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"LU\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"MK\", regExp: RegExp(\"\\\\d{4}$\") },\n { countryCode: \"MY\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"MV\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"MT\", regExp: RegExp(\"[A-Z]{3}[ ]?\\\\d{2,4}$\") },\n { countryCode: \"MU\", regExp: RegExp(\"(\\\\d{3}[A-Z]{2}\\\\d{3})?$\") },\n { countryCode: \"MX\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"MD\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"MC\", regExp: RegExp(\"980\\\\d{2}$\") },\n { countryCode: \"MA\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"NP\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"NZ\", regExp: RegExp(\"^\\\\d{4}$\") },\n {\n countryCode: \"NI\",\n regExp: RegExp(\"((\\\\d{4}-)?\\\\d{3}-\\\\d{3}(-\\\\d{1})?)?$\"),\n },\n { countryCode: \"NG\", regExp: RegExp(\"(\\\\d{6})?$\") },\n { countryCode: \"OM\", regExp: RegExp(\"(PC )?\\\\d{3}$\") },\n { countryCode: \"PK\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"PY\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"PH\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"PL\", regExp: RegExp(\"\\\\d{2}-\\\\d{3}$\") },\n { countryCode: \"PR\", regExp: RegExp(\"00[679]\\\\d{2}([ -]\\\\d{4})?$\") },\n { countryCode: \"RO\", regExp: RegExp(\"^\\\\d{6}$\") },\n { countryCode: \"RU\", regExp: RegExp(\"^\\\\d{6}$\") },\n { countryCode: \"SM\", regExp: RegExp(\"^\\\\4789d$\") },\n { countryCode: \"SA\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"SN\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"SK\", regExp: RegExp(\"\\\\d{3}[ ]?\\\\d{2}$\") },\n { countryCode: \"SI\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"ZA\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"LK\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"TJ\", regExp: RegExp(\"^\\\\d{6}$\") },\n { countryCode: \"TH\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"TN\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"TR\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"TM\", regExp: RegExp(\"^\\\\d{6}$\") },\n { countryCode: \"UA\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"UY\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"UZ\", regExp: RegExp(\"^\\\\d{6}$\") },\n { countryCode: \"VA\", regExp: RegExp(\"00120$\") },\n { countryCode: \"VE\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"ZM\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"AS\", regExp: RegExp(\"96799$\") },\n { countryCode: \"CC\", regExp: RegExp(\"6799$\") },\n { countryCode: \"CK\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"RS\", regExp: RegExp(\"^\\\\d{6}$\") },\n { countryCode: \"ME\", regExp: RegExp(\"8\\\\d{4}$\") },\n { countryCode: \"CS\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"YU\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"CX\", regExp: RegExp(\"6798$\") },\n { countryCode: \"ET\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"FK\", regExp: RegExp(\"FIQQ 1ZZ$\") },\n { countryCode: \"NF\", regExp: RegExp(\"2899$\") },\n { countryCode: \"FM\", regExp: RegExp(\"(9694[1-4])([ -]\\\\d{4})?$\") },\n { countryCode: \"GF\", regExp: RegExp(\"9[78]3\\\\d{2}$\") },\n { countryCode: \"GN\", regExp: RegExp(\"^\\\\d{3}$\") },\n { countryCode: \"GP\", regExp: RegExp(\"9[78][01]\\\\d{2}$\") },\n { countryCode: \"GS\", regExp: RegExp(\"SIQQ 1ZZ$\") },\n { countryCode: \"GU\", regExp: RegExp(\"969[123]\\\\d([ -]\\\\d{4})?$\") },\n { countryCode: \"GW\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"HM\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"IQ\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"KG\", regExp: RegExp(\"^\\\\d{6}$\") },\n { countryCode: \"LR\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"LS\", regExp: RegExp(\"^\\\\d{3}$\") },\n { countryCode: \"MG\", regExp: RegExp(\"^\\\\d{3}$\") },\n { countryCode: \"MH\", regExp: RegExp(\"969[67]\\\\d([ -]\\\\d{4})?$\") },\n { countryCode: \"MN\", regExp: RegExp(\"^\\\\d{6}$\") },\n { countryCode: \"MP\", regExp: RegExp(\"9695[012]([ -]\\\\d{4})?$\") },\n { countryCode: \"MQ\", regExp: RegExp(\"9[78]2\\\\d{2}$\") },\n { countryCode: \"NC\", regExp: RegExp(\"988\\\\d{2}$\") },\n { countryCode: \"NE\", regExp: RegExp(\"^\\\\d{4}$\") },\n {\n countryCode: \"VI\",\n regExp: RegExp(\"008(([0-4]\\\\d)|(5[01]))([ -]\\\\d{4})?$\"),\n },\n { countryCode: \"PF\", regExp: RegExp(\"987\\\\d{2}$\") },\n { countryCode: \"PG\", regExp: RegExp(\"^\\\\d{3}$\") },\n { countryCode: \"PM\", regExp: RegExp(\"9[78]5\\\\d{2}$\") },\n { countryCode: \"PN\", regExp: RegExp(\"PCRN 1ZZ$\") },\n { countryCode: \"PW\", regExp: RegExp(\"96940$\") },\n { countryCode: \"RE\", regExp: RegExp(\"9[78]4\\\\d{2}$\") },\n { countryCode: \"SH\", regExp: RegExp(\"(ASCN|STHL) 1ZZ$\") },\n { countryCode: \"SJ\", regExp: RegExp(\"^\\\\d{4}$\") },\n { countryCode: \"SO\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"SZ\", regExp: RegExp(\"[HLMS]\\\\d{3}$\") },\n { countryCode: \"TC\", regExp: RegExp(\"TKCA 1ZZ$\") },\n { countryCode: \"WF\", regExp: RegExp(\"986\\\\d{2}$\") },\n { countryCode: \"XK\", regExp: RegExp(\"^\\\\d{5}$\") },\n { countryCode: \"YT\", regExp: RegExp(\"976\\\\d{2}$\") },\n { countryCode: \"AQ\", regExp: RegExp(\"^\\\\d{4}$\") },\n];\n","import React, { Fragment } from \"react\";\n\nimport style from \"./Tooltip.module.css\";\n\ninterface TooltipProps {\n message: string;\n show: boolean;\n}\n\nconst Tooltip = ({ message, show }: TooltipProps) => {\n if (!show) return ;\n return
{message}
;\n};\n\nexport default Tooltip;\n","import React, { Fragment, useState } from \"react\";\n\nimport Tooltip from \"./Tooltip\";\n\nimport srcInfo from \"assets/IC_Info.svg\";\n\nimport style from \"./Info.module.css\";\n\ninterface InfoIconProps {\n message?: string;\n}\n\nconst InfoIcon = ({ message }: InfoIconProps) => {\n const [show, setShow] = useState(false);\n if (!message) return ;\n\n return (\n
\n setShow(true)}\n onMouseLeave={() => setShow(false)}\n />\n \n
\n );\n};\n\nexport default InfoIcon;\n","import React from \"react\";\n\nimport style from \"./CategoryTitle.module.css\";\nimport InfoIcon from \"./Info\";\n\ninterface CategoryTitleProps {\n title: string;\n message?: string;\n}\n\nconst CategoryTitle = ({ title, message }: CategoryTitleProps) => (\n
\n
{title}
\n {message && }\n
\n);\n\nexport default CategoryTitle;\n","import React from \"react\";\nimport { defineMessages, useIntl } from \"react-intl\";\n\nimport { useForm } from \"./FormContext\";\n\nimport CategoryTitle from \"modules/common/components/CategoryTitle\";\n\nimport style from \"./PeopleInTheHouse.module.css\";\n\nconst messages = defineMessages({\n title: {\n id: \"people-in-the-house.title\",\n defaultMessage: \"People in the household\",\n description: \"category title for entering number of people per household section.\",\n },\n description: {\n id: \"people-in-the-house.description\",\n defaultMessage: \"We use this to calculate the salt consumption of your home\",\n description: \"category description for entering number of people per household section.\",\n },\n});\n\nexport const maxPersonCount = 20;\n\nconst PeopleInTheHouse = () => {\n const { state, setInState } = useForm();\n const { formatMessage } = useIntl();\n\n return (\n
\n \n

{formatMessage(messages.description)}

\n {\n const value = event.target.value;\n if (!value) {\n setInState(\"form\", \"peoplePerHousehold\", undefined);\n return;\n }\n const valueAsInt = parseInt(value);\n if (valueAsInt > maxPersonCount) {\n setInState(\"form\", \"peoplePerHousehold\", 20);\n } else if (valueAsInt < 0) {\n setInState(\"form\", \"peoplePerHousehold\", 0);\n } else {\n setInState(\"form\", \"peoplePerHousehold\", valueAsInt);\n }\n }}\n onKeyDown={(e) => {\n e.persist();\n if (e.key === \"-\" || e.key === \"+\") e.preventDefault();\n }}\n type=\"number\"\n pattern=\"[0-9]*\"\n max={maxPersonCount}\n value={state.form.peoplePerHousehold ?? \"\"}\n />\n
\n );\n};\n\nexport default PeopleInTheHouse;\n","import { FormContextState } from \"../components/FormContext\";\nimport { ProductType } from \"./types\";\nimport { getPostcodeRegex } from \"modules/util/regexp\";\nimport { maxPersonCount } from \"../components/PeopleInTheHouse\";\n\nexport function validateNumber(value?: number) {\n if (value === undefined) return false;\n if (!isFinite(value)) return false;\n return true;\n}\n\nexport function validatePostCode(\n postCode: string,\n countryCode: string\n): boolean {\n const countryRegex = getPostcodeRegex(countryCode);\n if (!countryRegex) return true;\n return countryRegex.test(postCode);\n}\n\nfunction validateAddress(state: FormContextState) {\n if (!state.form.street) return false;\n if (!state.form.postCode) return false;\n if (!state.form.city) return false;\n if (!state.form.country) return false;\n\n const validPostCode = validatePostCode(\n state.form.postCode,\n state.form.country\n );\n if (!validPostCode) return false;\n\n return true;\n}\n\nexport function validateDeviceDetails(state: FormContextState) {\n const validAddress = validateAddress(state);\n if (!validAddress) return false;\n if (!state.iot?.agreeDataProcessing) return false;\n if (!state.form.displayName) return false;\n return true;\n}\n\nexport function validateProductDetails(state: FormContextState) {\n const { productType } = state?.lastProductResponse?.data || {};\n\n const validAddress = validateAddress(state);\n if (!validAddress) return false;\n\n switch (productType) {\n case ProductType.Default: {\n if (!state.form.displayName) return false;\n const personCount = state.form.peoplePerHousehold ?? 0;\n if (personCount > maxPersonCount) return false;\n return true;\n }\n case ProductType.Pool: {\n if (!state.pool) return false;\n if (!state.form.poolId) {\n if (!state.pool.name) return false;\n if (!state.pool.volume) {\n if (!state.pool.length) return false;\n if (!state.pool.width) return false;\n if (!state.pool.depth) return false;\n }\n }\n return true;\n }\n case ProductType.WaterDispenser: {\n if (!state.drinkPro20) return false;\n const dailyWater = state.drinkPro20.dailyWaterUsage;\n const dailySoda = state.drinkPro20.dailySodaUsage;\n if (!dailyWater) return false;\n if (!dailySoda) return false;\n if (dailySoda > dailyWater) return false;\n if (!state.drinkPro20.volume) {\n if (!state.drinkPro20.height) return false;\n if (!state.drinkPro20.width) return false;\n }\n if (!state.drinkPro20.currentCartridge) return false;\n if (!state.drinkPro20.installedCO2Bottle) return false;\n if (!state.form.displayName) return false;\n return true;\n }\n default:\n return false;\n }\n}\n","import { useLocation } from \"react-router\";\n\ntype LocationQuery = Record;\n\nexport function useLocationQuery(): LocationQuery {\n const { search } = useLocation();\n const query = search.substring(1);\n const vars = query.split(\"&\");\n const out: LocationQuery = {};\n for (let i = 0; i < vars.length; i++) {\n const [key, value = \"\"] = vars[i].split(\"=\");\n out[decodeURIComponent(key)] = decodeURIComponent(value);\n }\n return out;\n}\n","export default [\n {\n countryCode: \"AT\",\n name: \"Austria\",\n },\n {\n countryCode: \"BE\",\n name: \"Belgium\",\n },\n {\n countryCode: \"CH\",\n name: \"Switzerland\",\n },\n {\n countryCode: \"CN\",\n name: \"China\",\n },\n {\n countryCode: \"DE\",\n name: \"Germany\",\n },\n {\n countryCode: \"DK\",\n name: \"Denmark\",\n },\n {\n countryCode: \"ES\",\n name: \"Spain\",\n },\n {\n countryCode: \"FI\",\n name: \"Finland\",\n },\n {\n countryCode: \"FR\",\n name: \"France\",\n },\n {\n countryCode: \"GB\",\n name: \"United Kingdom\",\n },\n {\n countryCode: \"HU\",\n name: \"Hungary\",\n },\n {\n countryCode: \"IT\",\n name: \"Italy\",\n },\n {\n countryCode: \"LU\",\n name: \"Luxembourg\",\n },\n {\n countryCode: \"NL\",\n name: \"Netherlands\",\n },\n {\n countryCode: \"NO\",\n name: \"Norway\",\n },\n {\n countryCode: \"PL\",\n name: \"Poland\",\n },\n {\n countryCode: \"SE\",\n name: \"Sweden\",\n },\n {\n countryCode: \"UA\",\n name: \"Ukraine\",\n },\n];\n","import React, { useState } from \"react\";\nimport classnames from \"classnames/bind\";\n\nimport style from \"./TextInput.module.css\";\nimport CircleIndicator from \"./CircleIndicator\";\nconst cx = classnames.bind(style);\n\ninterface TextInputProps {\n label: string;\n defaultValue?: string;\n update: (value: string) => void;\n narrow?: boolean;\n disabled?: boolean;\n errorOverride?: boolean;\n}\n\nconst TextInput = ({\n label,\n defaultValue,\n update,\n narrow = false,\n disabled = false,\n errorOverride = false,\n}: TextInputProps) => {\n const [{ focused, hasChanged }, setState] = useState({\n focused: false,\n hasChanged: false,\n });\n const errored = !defaultValue || errorOverride;\n const show = !!defaultValue || hasChanged;\n const showError = show && errored;\n\n return (\n
\n \n
{label}
\n {\n setState((state) => ({ ...state, hasChanged: true }));\n update(e.target.value);\n }}\n value={defaultValue}\n autoComplete=\"off\"\n disabled={disabled}\n onFocus={() => setState((state) => ({ ...state, focused: true }))}\n onBlur={() => setState((state) => ({ ...state, focused: false }))}\n />\n
\n
\n \n
\n \n );\n};\n\nexport default TextInput;\n","import React, { useState, useRef } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport classnames from \"classnames/bind\";\n\nimport useOutsideClick from \"modules/util/useOutsideClick\";\n\nimport srcArrowDown from \"assets/Arrow_down.svg\";\n\nimport style from \"./DropDown.module.css\";\nconst cx = classnames.bind(style);\n\ntype ListItem = {\n label: string;\n value: any;\n};\n\ninterface DropDownProps {\n label: string;\n list: ListItem[];\n update: (value: any) => void;\n defaultValue?: string;\n}\n\ninterface State {\n search: string;\n open: boolean;\n}\nconst initialState: State = { search: \"\", open: false };\n\nconst DropDown = ({ label, list, update, defaultValue }: DropDownProps) => {\n const [{ open, search }, setState] = useState(initialState);\n const ref = useRef(null);\n const searchRef = useRef(null);\n\n const resetState = () => setState(initialState);\n const checkSearch = () => {\n const found = list.find((item) => {\n return item.label.toLowerCase() === search.toLowerCase();\n });\n if (found) {\n update(found.value);\n }\n resetState();\n };\n\n useOutsideClick(ref, () => checkSearch());\n\n const filteredList = list?.filter((item) => {\n if (!search) return true;\n const a = item.label.toLowerCase();\n const b = search.toLowerCase();\n return a.startsWith(b);\n });\n\n return (\n
\n setState((state) => ({ ...state, open: !open }))}\n >\n {\n setState((state) => ({ ...state, open: true }));\n e.stopPropagation();\n }}\n placeholder={defaultValue ?? label}\n onChange={(e) => {\n const search = e.target.value;\n setState({ open: true, search });\n }}\n ref={searchRef}\n value={search}\n onKeyDown={({ key }) => {\n if (key === \"Enter\" || key === \"Tab\") {\n checkSearch();\n }\n }}\n />\n \"\"\n
\n {open && (\n
\n
\n {filteredList?.map((item, _) => {\n const selected = item.label === defaultValue;\n return (\n {\n update(item.value);\n resetState();\n }}\n >\n {item.label}\n
\n );\n })}\n
\n \n )}\n \n );\n};\n\nexport default DropDown;\n","import { useEffect, RefObject } from \"react\";\n\nexport default function useOutsideClick(\n ref: RefObject,\n callback: () => void\n) {\n const handleClick = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n callback();\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"click\", handleClick);\n return () => document.removeEventListener(\"click\", handleClick);\n });\n}\n","import React, { useState, useEffect } from \"react\";\nimport { useIntl, defineMessages } from \"react-intl\";\n\nimport { useForm } from \"./FormContext\";\nimport { useAuth } from \"modules/auth/components/AuthProvider\";\nimport { getSupportedCountries } from \"modules/api/endpoints\";\nimport defaultSupportedCountries from \"../data/supportedCountries\";\nimport { Countries } from \"../data/types\";\n\nimport TextInput from \"modules/common/components/TextInput\";\nimport CategoryTitle from \"modules/common/components/CategoryTitle\";\nimport DropDown from \"modules/common/components/DropDown\";\nimport { validatePostCode } from \"../data/validation\";\n\nconst messages = defineMessages({\n title: {\n id: \"product-location.title\",\n defaultMessage: \"Product Location\",\n description: \"category title for entering the location of the product.\",\n },\n address: {\n id: \"product-location.labels.address\",\n defaultMessage: \"Address\",\n description: \"label: address input - house number, street name etc.\",\n },\n postCode: {\n id: \"product-location.labels.postCode\",\n defaultMessage: \"Post code\",\n description: \"label: post code input.\",\n },\n city: {\n id: \"product-location.labels.city\",\n defaultMessage: \"Location\",\n description: \"label: city/town input.\",\n },\n country: {\n id: \"product-location.labels.country\",\n defaultMessage: \"Country\",\n description: \"label: selecting country\",\n },\n});\n\nexport default function ProductLocation() {\n const { formatMessage } = useIntl();\n const { state, setInState } = useForm();\n const {\n state: { profile, isLoggedIn },\n } = useAuth();\n\n const initialState = defaultSupportedCountries.map((country) => {\n const path = country.countryCode.toLocaleLowerCase();\n const translatedName = formatMessage({\n id: path,\n defaultMessage: country.name,\n });\n\n return {\n countryCode: country.countryCode,\n name: translatedName,\n };\n });\n\n const [countries, setCountries] = useState(initialState);\n\n const validPostCode = validatePostCode(\n state.form.postCode,\n state.form.country\n );\n\n useEffect(() => {\n if (profile) {\n setInState(\"form\", \"street\", profile.street);\n setInState(\"form\", \"city\", profile.city);\n setInState(\"form\", \"postCode\", profile.postalCode);\n setInState(\"form\", \"country\", profile.countryCode);\n }\n const runEffect = async () => {\n if (!isLoggedIn) return;\n const { success, data } = await getSupportedCountries();\n if (success) {\n if (data) {\n setCountries(data);\n }\n }\n };\n runEffect();\n }, [profile, setInState]);\n\n return (\n
\n \n setInState(\"form\", \"street\", street)}\n />\n setInState(\"form\", \"postCode\", postCode)}\n narrow\n errorOverride={!validPostCode}\n />\n setInState(\"form\", \"city\", city)}\n />\n a.name.localeCompare(b.name))\n ?.map((c) => {\n return {\n label: c.name,\n value: c.countryCode,\n };\n })}\n defaultValue={\n (\n countries?.find(\n (country) => country.countryCode === state.form.country\n ) || countries[0]\n )?.name\n }\n update={(country: string) => setInState(\"form\", \"country\", country)}\n />\n
\n );\n}\n","import React from \"react\";\nimport classnames from \"classnames/bind\";\n\nimport style from \"./CheckBox.module.css\";\n\nconst cx = classnames.bind(style);\n\ninterface CheckBoxProps {\n label: string | React.ReactNode;\n checked: boolean;\n onClick: (value: boolean) => void;\n}\n\nexport default function CheckBox({ label, checked, onClick }: CheckBoxProps) {\n return (\n
onClick(!checked)}>\n
\n \n
\n );\n}\n","import React from \"react\";\nimport { defineMessages, useIntl } from \"react-intl\";\n\nimport { useForm } from \"./FormContext\";\n\nimport InfoIcon from \"modules/common/components/Info\";\nimport CheckBox from \"modules/common/components/CheckBox\";\n\nimport style from \"./ShareDataWithPartner.module.css\";\n\nconst messages = defineMessages({\n label: {\n id: \"share-data-with-partner.label\",\n defaultMessage:\n \"I would like to share the device status with my service partner.\",\n description:\n \"label: select whether user is willing to share data with their partner.\",\n },\n tooltip: {\n id: \"share-data-with-partner.tooltip\",\n defaultMessage:\n \"If you add your service partner, they can see messages of your BWT products. This can be helpful for services purposes.\",\n description: \"tooltip: benefits of adding a service partner.\",\n },\n});\n\nexport default function ShareDataWithPartner() {\n const { formatMessage } = useIntl();\n const { state, setInState } = useForm();\n return (\n
\n \n setInState(\"form\", \"shareDataWithPartner\", shareDataWithPartner)\n }\n />\n \n
\n );\n}\n","import React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport cx from \"classnames\";\n\nimport { useForm } from \"../FormContext\";\n\nimport CheckBox from \"modules/common/components/CheckBox\";\n\nimport style from \"./AgreeDataProcessing.module.css\";\n\nexport const AgreeDataProcessingOverlay = () => {\n return (\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
BWT Holding GmbH
\n
Walter Simmer-Straße 4
\n
5310 Mondsee
\n
AUSTRIA
\n
\n \n
\n
\n );\n};\n\nconst Label = ({\n setShow,\n}: {\n setShow: React.Dispatch>;\n}) => (\n
\n {\" \"}\n setShow(true)}>\n \n {\" \"}\n \n
\n);\n\nexport default function AgreeDataProcessing({\n setShow,\n}: {\n setShow: () => void;\n}) {\n const { state, setInState } = useForm();\n return (\n
\n }\n checked={state.iot?.agreeDataProcessing ?? false}\n onClick={(agreeDataProcessing: boolean) =>\n setInState(\"iot\", \"agreeDataProcessing\", agreeDataProcessing)\n }\n />\n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport { defineMessages, useIntl } from \"react-intl\";\n\nimport { useForm } from \"../FormContext\";\n\nimport CheckBox from \"modules/common/components/CheckBox\";\n\nimport style from \"./AgreeStatusUpdates.module.css\";\n\nconst messages = defineMessages({\n label: {\n id: \"agree-status-updates.label\",\n defaultMessage:\n \"Yes, I would like to be informed about status changes of my device by BWT.\",\n description:\n \"label: select whether user is willing to receive device status updates.\",\n },\n});\n\nexport default function AgreeStatusUpdates() {\n const { formatMessage } = useIntl();\n const { state, setInState } = useForm();\n useEffect(() => {\n setInState(\"iot\", \"agreeStatusUpdates\", true);\n }, [setInState]);\n return (\n
\n \n setInState(\"iot\", \"agreeStatusUpdates\", agreeStatusUpdates)\n }\n />\n
\n );\n}\n","import React from \"react\";\n\nimport style from \"./SubHeading.module.css\";\n\ninterface SubHeadingProps {\n message: string;\n}\n\nconst SubHeading = ({ message }: SubHeadingProps) => (\n
{message}
\n);\n\nexport default SubHeading;\n","import React from \"react\";\n\nimport getDeviceImage from \"modules/util/getDeviceImage\";\n\nimport style from \"./DeviceImage.module.css\";\n\ninterface DeviceImageProps {\n type: string;\n version: string;\n}\n\nexport default function DeviceImage({ type, version }: DeviceImageProps) {\n const deviceImage = getDeviceImage(type, version);\n return (\n \n );\n}\n","import React, { Fragment, useRef, useEffect } from \"react\";\nimport { FormattedMessage, useIntl, defineMessages } from \"react-intl\";\nimport { MessageDescriptor } from \"react-intl/lib/types\";\n\nimport { ErrorCode } from \"modules/form/data/types\";\n\nimport srcError from \"assets/warning.svg\";\n\nimport style from \"./Error.module.css\";\n\nconst messages = defineMessages({\n registrationCodeNotFound: {\n id: \"error.registration-code-not-found\",\n defaultMessage: \"Your device registration code could not be found.\",\n description: \"error message: something went wrong server-side.\",\n },\n registrationCodeForIotDevice: {\n id: \"error.registration-code-for-iot-device\",\n defaultMessage: \"The registration code belongs to an IoT device.\",\n description: \"error message: something went wrong server-side.\",\n },\n registrationCodeAlreadyRegistered: {\n id: \"error.registration-code-already-registered\",\n defaultMessage: \"The registration code is already registered.\",\n description: \"error message: something went wrong server-side.\",\n },\n invalidPersonCount: {\n id: \"error.invalid-person-count\",\n defaultMessage: \"The value entered in person count is invalid.\",\n description: \"error message: something went wrong server-side.\",\n },\n invalidRegistrationDetails: {\n id: \"error.invalid-registration-details\",\n defaultMessage: \"One or more of the details you have entered are invalid.\",\n description: \"error message: something went wrong server-side.\",\n },\n activationRequestNotFound: {\n id: \"error.activation-request-not-found\",\n defaultMessage: \"Your device activation request could not be found.\",\n description: \"error message: something went wrong server-side.\",\n },\n activationValidationError: {\n id: \"error.activation-validation-error\",\n defaultMessage: \"One or more of the details you have entered are invalid.\",\n description: \"error message: something went wrong server-side.\",\n },\n invalidPostalCodeCountryCodeCombination: {\n id: \"error.invalid-postal-code-country-code-combination\",\n defaultMessage:\n \"The post code you entered is not valid for the country you have selected.\",\n description: \"error message: something went wrong server-side.\",\n },\n partnerRoleConflict: {\n id: \"error.partner-role-conflict\",\n defaultMessage:\n \"You are currently logged in as a partner. Product must belong to a customer.\",\n description: \"error message: something went wrong server-side.\",\n },\n invalidVolume: {\n id: \"error.invalid-volume\",\n defaultMessage: \"The pool volume you have entered is invalid.\",\n description: \"error message: something went wrong server-side.\",\n },\n validationError: {\n id: \"error.generic-validation-error\",\n defaultMessage: \"One or more of the details you have entered are invalid.\",\n description: \"error message: something went wrong server-side.\",\n },\n cannotRegisterADevice: {\n id: \"error.cannot-register-a-device\",\n defaultMessage:\n \"Couldn't register your device right now. Please try again later.\",\n description: \"error message: something went wrong server-side.\",\n },\n unknown: {\n id: \"error.unknown\",\n defaultMessage: \"Communication failure. Please try again later.\",\n description: \"error message: something went wrong server-side.\",\n },\n});\n\nfunction getErrorMessage(errorCode: ErrorCode | null): MessageDescriptor {\n switch (errorCode) {\n case ErrorCode.ActivationRequestNotFound:\n return messages.activationRequestNotFound;\n case ErrorCode.RegistrationCodeNotFound:\n return messages.registrationCodeNotFound;\n case ErrorCode.RegistrationCodeForIotDevice:\n return messages.registrationCodeForIotDevice;\n case ErrorCode.RegistrationCodeAlreadyRegistered:\n return messages.registrationCodeAlreadyRegistered;\n case ErrorCode.InvalidPersonCount:\n return messages.invalidPersonCount;\n case ErrorCode.InvalidRegistrationDetails:\n return messages.invalidRegistrationDetails;\n case ErrorCode.ActivationValidationError:\n return messages.activationValidationError;\n case ErrorCode.InvalidPostalCodeCountryCodeCombination:\n return messages.invalidPostalCodeCountryCodeCombination;\n case ErrorCode.PartnerRoleConflict:\n return messages.partnerRoleConflict;\n case ErrorCode.InvalidVolume:\n return messages.invalidVolume;\n case ErrorCode.ValidationError:\n return messages.validationError;\n case ErrorCode.CannotRegisterADevice:\n return messages.cannotRegisterADevice;\n case ErrorCode.Unknown:\n default:\n return messages.unknown;\n }\n}\n\ninterface ErrorProps {\n show: boolean;\n errorCode: ErrorCode | null;\n}\n\nexport default function Error({ show, errorCode }: ErrorProps) {\n const { formatMessage } = useIntl();\n const ref = useRef(null);\n\n useEffect(() => {\n if (show) {\n if (!ref.current) return;\n const top = ref.current?.offsetTop - 100; // sitecore header is 85px\n window.scrollTo({\n top,\n behavior: \"smooth\",\n });\n }\n }, [show]);\n\n if (!show) return ;\n\n const message = getErrorMessage(errorCode);\n\n return (\n
\n
\n \"\"\n
\n
\n
\n \n
\n
{formatMessage(message)}
\n
\n
\n );\n}\n","import React from \"react\";\nimport { defineMessages, useIntl, FormattedMessage } from \"react-intl\";\n\nimport Button from \"modules/common/components/Button\";\n\nimport style from \"./ReRegisterOverlay.module.css\";\nimport LoadingSpinner from \"modules/common/components/LoadingSpinner\";\n\nconst messages = defineMessages({\n confirmBtn: {\n id: \"device-registration.alert.re-register.button.confirm\",\n defaultMessage: \"Confirm\",\n description: \"button: complete device re-registration.\",\n },\n cancelBtn: {\n id: \"device-registration.alert.re-register.button.cancel\",\n defaultMessage: \"Cancel\",\n description: \"button: cancel device re-registration.\",\n },\n});\n\ninterface ReRegisterOverlayProps {\n onConfirm: () => void;\n onReject: () => void;\n sendIsBusy: boolean;\n}\n\nexport default function ReRegisterOverlay({\n onConfirm,\n onReject,\n sendIsBusy,\n}: ReRegisterOverlayProps) {\n const { formatMessage } = useIntl();\n\n if (sendIsBusy) return ;\n\n return (\n
\n \n
\n \n \n
\n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport { useIntl, defineMessages } from \"react-intl\";\n\nimport { useForm } from \"./FormContext\";\n\nimport CategoryTitle from \"modules/common/components/CategoryTitle\";\n\nimport TextInput from \"modules/common/components/TextInput\";\n\nimport style from \"./DisplayName.module.css\";\n\nconst messages = defineMessages({\n name: {\n id: \"form.label.display-name\",\n defaultMessage: \"Display name\",\n description: \"input label: enter a nickname for the selected product.\",\n },\n});\n\nexport default function DisplayName() {\n const { state, setInState } = useForm();\n const { formatMessage } = useIntl();\n\n const productData = state.lastProductResponse?.data;\n const deviceData = state.lastDeviceResponse?.data;\n\n useEffect(() => {\n if (productData) {\n setInState(\"form\", \"displayName\", productData.name);\n }\n if (deviceData) {\n setInState(\"form\", \"displayName\", deviceData.productName);\n }\n }, [deviceData, productData, setInState]);\n\n return (\n
\n \n setInState(\"form\", \"displayName\", name)}\n defaultValue={state.form.displayName}\n />\n
\n );\n}\n","import React, { useEffect, Fragment } from \"react\";\n\nimport { usePopUp } from \"./PopUpProvider\";\n\nconst PopUpContent: React.FC<{\n isShowing: boolean;\n showClose: boolean;\n hide: () => void;\n}> = ({ isShowing, showClose = true, hide, children }) => {\n const { display } = usePopUp();\n useEffect(\n () => {\n if (isShowing) display(children, showClose, hide);\n else display(null);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isShowing, children, hide]\n );\n\n return ;\n};\n\nexport default PopUpContent;\n","import React, { useEffect, useState, useCallback } from \"react\";\nimport { useIntl, defineMessages } from \"react-intl\";\nimport { useHistory } from \"react-router\";\n\nimport config from \"config\";\nimport { useAuth } from \"modules/auth/components/AuthProvider\";\nimport { useForm } from \"../FormContext\";\nimport { validateDeviceDetails } from \"../../data/validation\";\nimport { useLocationQuery } from \"modules/util/location\";\nimport {\n approveDeviceActivationRequest,\n getDeviceActivationRequest,\n} from \"modules/api/endpoints\";\n\nimport Button from \"modules/common/components/Button\";\nimport ProductLocation from \"../ProductLocation\";\nimport ShareDataWithPartner from \"../ShareDataWithPartner\";\nimport AgreeDataProcessing, {\n AgreeDataProcessingOverlay,\n} from \"./AgreeDataProcessing\";\nimport AgreeStatusUpdates from \"./AgreeStatusUpdates\";\nimport Heading from \"modules/common/components/Heading\";\nimport SubHeading from \"modules/common/components/SubHeading\";\nimport DeviceImage from \"./DeviceImage\";\nimport Error from \"modules/common/components/Error\";\nimport ReRegisterOverlay from \"./ReRegisterOverlay\";\n\nimport style from \"./DeviceRegistration.module.css\";\nimport DisplayName from \"../DisplayName\";\nimport PopUpContent from \"modules/common/components/popUp/PopUpContent\";\nimport PageIsLoading from \"modules/layout/components/PageIsLoading\";\n\nconst messages = defineMessages({\n title: {\n id: \"device-registration.heading.active\",\n defaultMessage: \"Activate your BWT product\",\n description: \"title: IoT device registration.\",\n },\n subtitle: {\n id: \"device-registration.sub-heading.entry\",\n defaultMessage: \"Your entry into the service world of BWT!\",\n description: \"sub title: device activation.\",\n },\n nameTitle: {\n id: \"device-registration.form.sub-heading.device-name\",\n defaultMessage: \"Choose a name for your device\",\n description: \"sub title: set IoT device name.\",\n },\n button: {\n id: \"device-registration.form.button.complete\",\n defaultMessage: \"Complete registration\",\n description: \"button: complete device registration.\",\n },\n});\n\nasync function getCachedRequestForId(requestId: string) {\n await null;\n return localStorage.getItem(requestId);\n}\n\nexport default function DeviceRegistration() {\n const { formatMessage } = useIntl();\n const { state, setInState } = useForm();\n const { push } = useHistory();\n const { requestId } = useLocationQuery();\n const {\n state: { isLoggedIn },\n setAuth,\n } = useAuth();\n const [\n {\n sendIsBusy,\n fetchIsBusy,\n showSendError,\n showFetchError,\n lastErrorCode,\n overlay: { show, name },\n hydrated,\n },\n setState,\n ] = useState({\n sendIsBusy: false,\n fetchIsBusy: true,\n showSendError: false,\n showFetchError: false,\n lastErrorCode: null,\n overlay: { show: false, name: \"\" },\n hydrated: false,\n });\n\n const { isRegistered, deviceType, deviceVersion } =\n state.lastDeviceResponse?.data || {};\n\n const properties = {\n requestId: requestId ?? \"\",\n deviceDisplayName: state.form?.displayName ?? \"\",\n acceptTerms: state.iot?.agreeDataProcessing ?? false,\n allowSendData: state.iot?.agreeStatusUpdates ?? false,\n shareDeviceWithPlumber: state.form.shareDataWithPartner,\n street: state.form.street,\n city: state.form.city,\n postalCode: state.form.postCode,\n countryCode: state.form.country,\n };\n\n function hide() {\n setState((state) => ({\n ...state,\n overlay: { show: false, name: \"\" },\n }));\n }\n\n const callApi = useCallback(async () => {\n setState((state) => ({\n ...state,\n sendIsBusy: true,\n showSendError: false,\n }));\n\n const {\n success,\n errorCode,\n unauthorized,\n } = await approveDeviceActivationRequest(properties);\n\n if (isRegistered) {\n hide();\n }\n\n if (success) {\n if (requestId) {\n localStorage.removeItem(requestId);\n }\n push(\"/result\");\n } else {\n setState((state) => ({\n ...state,\n showSendError: true,\n lastErrorCode: errorCode,\n }));\n if (unauthorized) {\n setAuth({\n isBusy: false,\n isLoggedIn: false,\n profile: undefined,\n });\n push(\"/redirect\");\n }\n }\n\n setState((state) => ({\n ...state,\n sendIsBusy: false,\n }));\n }, [properties, push]);\n\n const sendRequest = useCallback(async () => {\n if (!requestId || sendIsBusy) return;\n\n if (isLoggedIn) {\n if (isRegistered) {\n setState((state) => ({\n ...state,\n overlay: { show: true, name: \"re-register-confirmation\" },\n }));\n return;\n }\n await callApi();\n } else {\n localStorage.setItem(requestId, JSON.stringify(properties));\n window.location.href =\n config.loginRedirect + \"?returnUrl=\" + window.location.href;\n }\n }, [sendIsBusy, isLoggedIn, isRegistered, requestId, properties, callApi]);\n\n useEffect(() => {\n if (!hydrated) return;\n const runEffect = async () => {\n await sendRequest();\n };\n runEffect();\n }, [hydrated]);\n\n useEffect(() => {\n if (!requestId) return;\n\n const runEffect = async () => {\n const { success, data, errorCode } = await getDeviceActivationRequest(\n requestId\n );\n if (success) {\n if (data) {\n setInState(\"lastDeviceResponse\", \"data\", data);\n if (data.address) {\n if (data.address.street) {\n setInState(\"form\", \"street\", data.address.street);\n }\n if (data.address.city) {\n setInState(\"form\", \"city\", data.address.city);\n }\n if (data.address.postalCode) {\n setInState(\"form\", \"postCode\", data.address.postalCode);\n }\n if (data.address.countryCode) {\n setInState(\"form\", \"country\", data.address.countryCode);\n }\n }\n }\n } else {\n setInState(\"lastDeviceResponse\", \"data\", undefined);\n setState((state) => ({\n ...state,\n showFetchError: true,\n lastErrorCode: errorCode,\n }));\n }\n setState((state) => ({ ...state, fetchIsBusy: false }));\n\n // hydrate from localstorage and re-send request.\n const storageItem = await getCachedRequestForId(requestId);\n if (!storageItem) return;\n const cachedFormData = JSON.parse(storageItem);\n if (!cachedFormData) return;\n\n setInState(\"form\", \"displayName\", cachedFormData.deviceDisplayName);\n setInState(\"iot\", \"agreeDataProcessing\", cachedFormData.acceptTerms);\n setInState(\"iot\", \"agreeStatusUpdates\", cachedFormData.allowSendData);\n setInState(\n \"form\",\n \"shareDataWithPartner\",\n cachedFormData.shareDeviceWithPlumber\n );\n setInState(\"form\", \"street\", cachedFormData.street);\n setInState(\"form\", \"city\", cachedFormData.city);\n setInState(\"form\", \"postCode\", cachedFormData.postalCode);\n setInState(\"form\", \"country\", cachedFormData.countryCode);\n\n setState((state) => ({ ...state, hydrated: true }));\n };\n runEffect();\n }, [requestId, setInState]);\n\n function getOverlayComponent(name: string) {\n switch (name) {\n case \"agree-data-processing\":\n return ;\n case \"re-register-confirmation\":\n return (\n {\n await callApi();\n }}\n onReject={() => hide()}\n sendIsBusy={sendIsBusy}\n />\n );\n default:\n return null;\n }\n }\n\n const showError = showSendError || showFetchError;\n\n if (fetchIsBusy || (!isRegistered && sendIsBusy)) return ;\n\n return (\n
\n \n {getOverlayComponent(name)}\n \n
\n \n
\n
\n \n \n \n
\n
\n \n \n
\n \n setState((state) => ({\n ...state,\n overlay: { show: true, name: \"agree-data-processing\" },\n }))\n }\n />\n \n \n
\n
\n \n
\n
\n
\n );\n}\n","import React, { useState, useCallback, useEffect } from \"react\";\nimport { defineMessages, useIntl } from \"react-intl\";\nimport { useHistory } from \"react-router\";\n\nimport { useLocationQuery } from \"modules/util/location\";\nimport {\n declineDeviceActivationRequest,\n getDeviceActivationRequest,\n} from \"modules/api/endpoints\";\nimport { useForm } from \"../FormContext\";\nimport { useAuth } from \"modules/auth/components/AuthProvider\";\n\nimport Heading from \"modules/common/components/Heading\";\nimport SubHeading from \"modules/common/components/SubHeading\";\nimport Button from \"modules/common/components/Button\";\nimport Benefits from \"../Benefits\";\nimport DeviceImage from \"./DeviceImage\";\nimport Error from \"modules/common/components/Error\";\nimport PageIsLoading from \"modules/layout/components/PageIsLoading\";\n\nimport style from \"./DeviceCancellation.module.css\";\n\nconst messages = defineMessages({\n title: {\n id: \"device-cancellation.title\",\n defaultMessage: \"Cancel registration\",\n description: \"title: cancel device registration.\",\n },\n subtitle: {\n id: \"device-cancellation.sub-title\",\n defaultMessage:\n \"Are you sure that you don't want to register your BWT device?\",\n description: \"subtitle: cancel device registration.\",\n },\n primaryBtn: {\n id: \"device-cancellation.button.cancel\",\n defaultMessage: \"Yes, I want to cancel the registration\",\n description: \"button: confirmation - cancel device registration.\",\n },\n secondaryBtn: {\n id: \"device-cancellation.button.continue\",\n defaultMessage: \"Continue registration\",\n description: \"button: continue device registration flow.\",\n },\n});\n\nexport default function DeviceCancellation() {\n const { formatMessage } = useIntl();\n const { state, setInState } = useForm();\n const { push } = useHistory();\n const { requestId } = useLocationQuery();\n const { setAuth } = useAuth();\n const [\n { sendIsBusy, fetchIsBusy, showSendError, showFetchError, lastErrorCode },\n setState,\n ] = useState({\n sendIsBusy: false,\n fetchIsBusy: true,\n showSendError: false,\n showFetchError: false,\n lastErrorCode: null,\n });\n\n const sendRequest = useCallback(async () => {\n if (!requestId || sendIsBusy) return;\n setState((state) => ({\n ...state,\n sendIsBusy: true,\n showSendError: false,\n lastErrorCode: null,\n }));\n const {\n success,\n errorCode,\n unauthorized,\n } = await declineDeviceActivationRequest(requestId);\n if (success) {\n push(\"/\");\n } else {\n setState((state) => ({\n ...state,\n showSendError: true,\n lastErrorCode: errorCode,\n }));\n if (unauthorized) {\n setAuth({\n isBusy: false,\n isLoggedIn: false,\n profile: undefined,\n });\n push(\"/redirect\");\n }\n }\n setState((state) => ({ ...state, sendIsBusy: false }));\n }, [sendIsBusy, requestId, push]);\n\n useEffect(() => {\n if (!requestId) return;\n\n const runEffect = async () => {\n const { success, data, errorCode } = await getDeviceActivationRequest(\n requestId\n );\n if (success) {\n if (data) {\n setInState(\"lastDeviceResponse\", \"data\", data);\n }\n } else {\n setInState(\"lastDeviceResponse\", \"data\", undefined);\n setState((state) => ({\n ...state,\n showFetchError: true,\n lastErrorCode: errorCode,\n }));\n }\n setState((state) => ({ ...state, fetchIsBusy: false }));\n };\n runEffect();\n }, [requestId, setInState]);\n\n const { deviceType, deviceVersion } = state.lastDeviceResponse?.data || {};\n\n if (fetchIsBusy) return ;\n\n const showError = showFetchError || showSendError;\n\n return (\n
\n \n
\n \n \n
\n \n \n
\n
\n
\n \n
\n
\n push(`/iot/activation?requestId=${requestId}`)}\n />\n
\n
\n
\n
\n );\n}\n","import { StoreLink } from \"modules/layout/components/ExternalLinks\";\nimport { useExternalLinkItems } from \"modules/layout/data/externalLinks\";\nimport React, { RefObject, useRef } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport Benefits from \"../Benefits\";\n\nimport style from \"./NoProductCode.module.css\";\nimport { isGerman } from \"modules/util/constants\";\n\nimport srcAppLoginDE from \"assets/App-login-register-de.png\";\nimport srcAppNoCodeDE from \"assets/App-no-code-de.png\";\nimport srcAppLoginEN from \"assets/App-login-register-en.png\";\nimport srcAppNoCodeEN from \"assets/App-no-code-en.png\";\n\ninterface NoProductCodeProps {\n formRef: RefObject;\n}\n\nconst NoProductCode: React.FC = ({ formRef }) => {\n const stepOneRef = useRef(null);\n const stepTwoRef = useRef(null);\n const stepThreeRef = useRef(null);\n\n const ScrollToStep = (ref: React.RefObject) => {\n if (!ref.current) return;\n const top = ref.current?.offsetTop - 100; // sitecore header is 85px\n window.scrollTo({\n top,\n behavior: \"smooth\",\n });\n };\n\n const externalLinkItems = useExternalLinkItems();\n const storeLinks = externalLinkItems.find((item) =>\n item.links.find((link) => link.type === \"store\")\n )?.links;\n\n return (\n
\n
\n
ScrollToStep(stepOneRef)}>\n \n
\n
ScrollToStep(stepTwoRef)}>\n \n
\n
ScrollToStep(stepThreeRef)}>\n \n
\n
\n\n
\n
\n
\n \n
\n
\n \n
\n
\n {storeLinks?.map((link, idx) => (\n
\n \n
\n ))}\n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n );\n};\n\nexport default NoProductCode;\n","import React from \"react\";\nimport classnames from \"classnames/bind\";\nimport { defineMessages, useIntl } from \"react-intl\";\nimport { useLocation, useHistory } from \"react-router\";\n\nimport { useForm } from \"./FormContext\";\nimport { useAuth } from \"modules/auth/components/AuthProvider\";\nimport { validateProductDetails } from \"../data/validation\";\n\nimport CircleIndicator from \"modules/common/components/CircleIndicator\";\n\nimport style from \"./ProgressBar.module.css\";\nconst cx = classnames.bind(style);\n\ninterface ProgressItemProps {\n idx: number;\n label: string;\n completed: boolean;\n onClick?: () => void;\n}\n\nconst ProgressItem = ({\n idx,\n label,\n completed,\n onClick,\n}: ProgressItemProps) => {\n return (\n
\n \n
{label}
\n
\n );\n};\n\nconst messages = defineMessages({\n productCode: {\n id: \"progress-bar.label.enter-product-code\",\n defaultMessage: \"Enter product code\",\n description: \"progress bar: enter product code stage.\",\n },\n login: {\n id: \"progress-bar.label.login-or-register\",\n defaultMessage: \"Log in or register\",\n description: \"progress bar: login or register stage.\",\n },\n details: {\n id: \"progress-bar.label.product-details\",\n defaultMessage: \"Product Details\",\n description: \"progress bar: product details stage.\",\n },\n});\n\nexport default function ProgressBar() {\n const { formatMessage } = useIntl();\n const { state, resetState } = useForm();\n const {\n state: { isLoggedIn },\n } = useAuth();\n const { pathname } = useLocation();\n const { push } = useHistory();\n\n const lastProductResponseData = state?.lastProductResponse?.data;\n const alignStart = pathname === \"/\";\n const alignEnd = pathname === \"/details\";\n const alignCenter = !alignStart && !alignEnd;\n\n return (\n
\n {\n if (pathname !== \"/\") {\n push(\"/\");\n resetState();\n }\n }}\n />\n \n \n
\n );\n}\n","import React from \"react\";\nimport { FormattedMessage, defineMessages, useIntl } from \"react-intl\";\nimport { useHistory } from \"react-router\";\n\nimport Button from \"modules/common/components/Button\";\n\nimport style from \"./NoProductCodeHelper.module.css\";\n\nconst messages = defineMessages({\n button: {\n id: \"no-product-code-helper.button\",\n defaultMessage: \"How it works\",\n description:\n \"button: link to page that shows you how to register product without product code\",\n },\n});\n\nconst NoProductCodeHelper: React.FC<{}> = () => {\n const { formatMessage } = useIntl();\n const { push } = useHistory();\n return (\n
\n
\n \n
\n
\n \n
\n push(\"/noproductcode\")}\n />\n
\n );\n};\n\nexport default NoProductCodeHelper;\n","import React from \"react\";\nimport { FormattedMessage, defineMessages, useIntl } from \"react-intl\";\nimport { useHistory } from \"react-router\";\n\nimport Button from \"modules/common/components/Button\";\n\nimport style from \"./PlumberOrProfessional.module.css\";\n\nconst messages = defineMessages({\n button: {\n id: \"plumber-or-professional.button\",\n defaultMessage: \"Continue to the BWT Pro Portal\",\n description: \"button: link to pro.bwt.com\",\n },\n});\n\nconst PlumberOrProfessional: React.FC<{}> = () => {\n const { formatMessage } = useIntl();\n const { push } = useHistory();\n return (\n
\n
\n \n
\n
\n \n
\n (window.location.href = \"https://pro.bwt.com\")}\n />\n
\n );\n};\n\nexport default PlumberOrProfessional;\n","import React, { Fragment, RefObject } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\n\nimport ProgressBar from \"./ProgressBar\";\n// import ExternalLinks from \"modules/layout/components/ExternalLinks\";\nimport NoProductCodeHelper from \"./NoProductCodeHelper\";\nimport PlumberOrProfessional from \"./PlumberOrProfessional\";\n\nimport style from \"./FormContainer.module.css\";\n\nconst FormContainer: React.FC<{ formRef: RefObject }> = ({\n children,\n formRef,\n}) => {\n const sitecoreLocale = window.LOCALE_PREFIX\n ? window.LOCALE_PREFIX.replace(\"/\", \"\")\n : window.location.pathname.split(\"/\")[1];\n const locale = sitecoreLocale || navigator.language;\n\n return (\n
\n
\n
\n \n
\n \n
\n
{children}
\n \n \n {/* */}\n
\n );\n};\n\nexport default FormContainer;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport classnames from \"classnames/bind\";\nimport { defineMessages, useIntl } from \"react-intl\";\n\nimport { useForm } from \"./FormContext\";\nimport { checkProductCode } from \"modules/api/endpoints\";\n\nimport CircleIndicator from \"modules/common/components/CircleIndicator\";\nimport CategoryTitle from \"modules/common/components/CategoryTitle\";\n\nimport style from \"./ProductCodeInput.module.css\";\n\nconst cx = classnames.bind(style);\n\nconst messages = defineMessages({\n title: {\n id: \"product-code-input.title\",\n defaultMessage: \"Product Code\",\n description: \"category title for entering the product code.\",\n },\n tooltip: {\n id: \"product-code-input.tooltip\",\n defaultMessage:\n \"You find the registration sticker with an eight-digit code directly on your BWT device.\",\n description: \"tooltip: where to find product code.\",\n },\n});\ninterface CellProps {\n onClick: () => void;\n onChange: (value: string) => void;\n focused: boolean;\n value: string;\n skip: () => void;\n goBack: () => void;\n onPaste: (e: React.ClipboardEvent) => void;\n}\n\nfunction blockSpecialCharacters(e: React.KeyboardEvent) {\n const regExp = /[a-zA-Z0-9]/;\n if (!e.key.match(regExp)) {\n e.preventDefault();\n }\n}\n\nfunction Cell({\n onClick,\n onChange,\n focused,\n value,\n skip,\n goBack,\n onPaste,\n}: CellProps) {\n const ref = useRef(null);\n useEffect(() => {\n if (!focused) return;\n ref.current?.focus();\n ref.current?.select();\n }, [focused]);\n\n return (\n onChange(e.target.value)}\n maxLength={1}\n onKeyDown={(e) => {\n e.persist();\n blockSpecialCharacters(e);\n // tab\n if (e.keyCode === 9) {\n // & shift\n if (e.shiftKey) goBack();\n else skip();\n }\n // right arrow\n else if (e.keyCode === 39) skip();\n // left arrow\n else if (e.keyCode === 37) goBack();\n // backspace\n else if (e.keyCode === 8) {\n onChange(\"\");\n goBack();\n }\n }}\n />\n );\n}\n\nfunction range(start: number, finish: number): number[] {\n return Array.from({ length: finish - start }, (_, idx) => idx + start);\n}\n\ninterface ProductCodeInputState {\n chars: string[];\n focusedIdx: number;\n isBusy: boolean;\n}\n\nfunction renderCell(\n idx: number,\n state: ProductCodeInputState,\n setState: React.Dispatch>\n): JSX.Element {\n return (\n setState({ ...state, focusedIdx: idx })}\n onChange={(value: string) => {\n const regExp = new RegExp(`^[a-zA-Z0-9]`);\n if (value.match(regExp)) {\n const chars = [...state.chars];\n chars[idx] = value.toUpperCase();\n setState({\n isBusy: false,\n chars,\n focusedIdx: idx + 1,\n });\n } else {\n const chars = [...state.chars];\n chars[idx] = \"\";\n setState({\n isBusy: false,\n chars,\n focusedIdx: idx,\n });\n }\n }}\n skip={() => {\n const newIdx = idx === 7 ? 0 : idx + 1;\n setState({ ...state, focusedIdx: newIdx });\n }}\n goBack={() => {\n const newIdx = idx === 0 ? 7 : idx - 1;\n setState({ ...state, focusedIdx: newIdx });\n }}\n onPaste={(e) => {\n const productCode = e.clipboardData.getData(\"Text\");\n const regExp = new RegExp(`^[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}$`);\n if (productCode.match(regExp)) {\n const array = productCode.split(\"\");\n const chars = array.filter((char) => char !== \"-\");\n setState({ isBusy: false, chars, focusedIdx: 7 });\n }\n }}\n />\n );\n}\n\ninterface ProductCodeInputProps {\n setLastErrorCode: React.Dispatch>;\n}\nexport default function ProductCodeInput({\n setLastErrorCode,\n}: ProductCodeInputProps) {\n const { state: formState, setInState } = useForm();\n const { formatMessage } = useIntl();\n const [state, setState] = useState({\n chars: [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n focusedIdx: -1,\n isBusy: false,\n });\n const full = state?.chars.join(\"\");\n const productCode = full.slice(0, 4) + \"-\" + full.slice(4);\n const validLength = productCode.length === 9;\n\n const lastProductResponseData = formState?.lastProductResponse?.data;\n\n useEffect(() => {\n const runEffect = async () => {\n if (validLength) {\n setInState(\"form\", \"productCode\", productCode);\n setState((state) => ({ ...state, isBusy: true }));\n const { success, data, errorCode } = await checkProductCode(\n productCode\n );\n if (success) {\n if (data) {\n setInState(\"lastProductResponse\", \"data\", data);\n setLastErrorCode(null);\n }\n } else {\n if (errorCode) setLastErrorCode(errorCode);\n }\n setState((state) => ({ ...state, isBusy: false }));\n } else {\n setInState(\"form\", \"productCode\", undefined);\n setInState(\"lastProductResponse\", \"data\", undefined);\n setLastErrorCode(null);\n }\n };\n runEffect();\n }, [productCode, setInState, validLength, setLastErrorCode]);\n\n const errored = validLength && !lastProductResponseData && !state.isBusy;\n\n return (\n
\n
\n \n
\n
\n
\n \n {range(0, 4).map((idx) => renderCell(idx, state, setState))}\n
\n
\n \n {range(4, 8).map((idx) => renderCell(idx, state, setState))}\n
\n
\n \n
\n
\n
\n
\n );\n}\n","import React from \"react\";\nimport { useIntl, FormattedDate } from \"react-intl\";\nimport ReactDatePicker, { registerLocale } from \"react-datepicker\";\nimport isAfter from \"date-fns/isAfter\";\nimport isEqual from \"date-fns/isEqual\";\nimport startOfDay from \"date-fns/startOfDay\";\nimport { de, fr, it, nl, hu, pl, ru, fi, es } from \"date-fns/locale\";\n\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport style from \"./DatePicker.module.css\";\n\nregisterLocale(\"de\", de);\nregisterLocale(\"fr\", fr);\nregisterLocale(\"it\", it);\nregisterLocale(\"nl\", nl);\nregisterLocale(\"hu\", hu);\nregisterLocale(\"pl\", pl);\nregisterLocale(\"ru\", ru);\nregisterLocale(\"fi\", fi);\nregisterLocale(\"es\", es);\n\ninterface DatePickerProps {\n label: string;\n defaultValue: Date;\n updateParent: (date: Date) => void;\n blockFutureDates?: boolean;\n}\n\nconst DatePicker = ({\n label,\n defaultValue,\n updateParent,\n blockFutureDates = false,\n}: DatePickerProps) => {\n const now = new Date();\n const max = blockFutureDates ? now : undefined;\n const { locale } = useIntl();\n const language = locale.split(\"-\")[0];\n return (\n
\n {\n if (date) updateParent(date);\n }}\n maxDate={max}\n className={style.root}\n dayClassName={(date) => {\n const now = new Date();\n const dateIsInFuture = isAfter(date, now);\n const dateIsSelected = isEqual(date, startOfDay(defaultValue));\n if (dateIsInFuture) {\n return style.future;\n }\n if (dateIsSelected) {\n return style.selected;\n }\n return style.unselected;\n }}\n locale={language}\n />\n
{label}
\n
\n \n
\n
\n );\n};\n\nexport default DatePicker;\n","import React, { useEffect, useState } from \"react\";\nimport cx from \"classnames\";\nimport { defineMessages, useIntl } from \"react-intl\";\nimport { useHistory } from \"react-router\";\n\nimport { useForm } from \"./FormContext\";\n\nimport ProductCodeInput from \"./ProductCodeInput\";\nimport DatePicker from \"modules/common/components/DatePicker\";\nimport ShareDataWithPartner from \"./ShareDataWithPartner\";\nimport Button from \"modules/common/components/Button\";\nimport Error from \"modules/common/components/Error\";\n\nimport style from \"./ProductRegistration.module.css\";\nimport { SpecificProductType } from \"../data/types\";\n\nconst messages = defineMessages({\n date: {\n id: \"product-registration.date-picker.label\",\n defaultMessage: \"Date of commissioning\",\n description: \"label: date picker to select installation date.\",\n },\n robotDate: {\n id: \"product-registration.date-picker.robotLabel\",\n defaultMessage: \"Date of purchasing\",\n description:\n \"label: date picker to select purchasing date pool robot specific.\",\n },\n button: {\n id: \"button.next\",\n defaultMessage: \"Next\",\n description: \"button text: go to the next stage of the form.\",\n },\n});\n\nexport default function ProductRegistration() {\n const { formatMessage } = useIntl();\n const { state, setInState } = useForm();\n const { push } = useHistory();\n\n const lastProductResponseData = state?.lastProductResponse?.data;\n\n const isRobot =\n lastProductResponseData?.specificProductType ===\n SpecificProductType.PoolRobot;\n\n useEffect(() => {\n localStorage.removeItem(\"cached-form-data\");\n }, []);\n\n const [lastErrorCode, setLastErrorCode] = useState(null);\n const showError = !!lastErrorCode;\n\n return (\n
\n \n
\n \n
\n \n
\n {\n setInState(\"form\", \"installationDate\", date);\n }}\n blockFutureDates={true}\n />\n \n
\n push(\"/redirect\")}\n btnStyle=\"primary\"\n disabled={!lastProductResponseData}\n />\n
\n
\n
\n
\n );\n}\n","import React, { useEffect, Fragment } from \"react\";\nimport { useHistory } from \"react-router\";\nimport { useAuth } from \"modules/auth/components/AuthProvider\";\nimport { useForm } from \"./FormContext\";\nimport config from \"config\";\n\nexport default function Redirect() {\n const { push } = useHistory();\n const {\n state: { isLoggedIn },\n } = useAuth();\n const {\n state: { form, lastProductResponse },\n } = useForm();\n\n useEffect(() => {\n if (isLoggedIn || !config.loginRedirect) {\n push(\"/details\");\n } else {\n localStorage.setItem(\n \"cached-form-data\",\n JSON.stringify({\n productCode: form.productCode,\n installationDate: form.installationDate,\n shareDataWithPartner: form.shareDataWithPartner,\n lastProductResponseData: lastProductResponse?.data,\n })\n );\n window.location.href = config.loginRedirect;\n }\n }, [isLoggedIn, push, form, lastProductResponse]);\n\n return ;\n}\n","import React from \"react\";\nimport { defineMessages, useIntl } from \"react-intl\";\n\nimport { useForm } from \"./FormContext\";\n\nimport CheckBox from \"modules/common/components/CheckBox\";\n\nimport style from \"./AgreeEmailContact.module.css\";\n\nconst messages = defineMessages({\n label: {\n id: \"agree-email-contact.check-box.label\",\n defaultMessage:\n \"Yes, please inform me by e-mail about necessary maintenance measures on my BWT device. I can cancel my participation at any time.\",\n description: \"label for accepting email contact check box.\",\n },\n});\n\nconst AgreeEmailContact = () => {\n const { state, setInState } = useForm();\n const { formatMessage } = useIntl();\n return (\n
\n \n setInState(\"form\", \"agreeEmailContact\", agreeEmailContact)\n }\n />\n
\n );\n};\n\nexport default AgreeEmailContact;\n","import React from \"react\";\nimport { defineMessages, useIntl } from \"react-intl\";\n\nimport { useForm } from \"./FormContext\";\n\nimport CheckBox from \"modules/common/components/CheckBox\";\n\nimport style from \"./ServiceCheckbox.module.css\";\n\nconst messages = defineMessages({\n label: {\n id: \"service.check-box.label\",\n defaultMessage:\n \"I agree to the two year service. I can cancel my participation at any time. T&C's apply\",\n description: \"label for accepting free two year service check box.\",\n },\n termsButton: {\n id: \"link-to-terms.button\",\n defaultMessage: \"Link to Terms\",\n description: \"button text: link to service terms.\",\n }\n});\n\nconst ServiceCheckbox = () => {\n const { state, setInState } = useForm();\n const { formatMessage } = useIntl();\n\n return (\n
\n \n setInState(\"form\", \"contractTerms\", contractTerms)\n }\n \n />\n \n {formatMessage(messages.termsButton)}\n \n
\n );\n};\n\nexport default ServiceCheckbox;\n","import React, { useState } from \"react\";\nimport classnames from \"classnames/bind\";\n\nimport style from \"./NumericInput.module.css\";\nimport CircleIndicator from \"./CircleIndicator\";\n\nconst cx = classnames.bind(style);\n\nfunction validateNumber(ranges: { min: number; max?: number }, value?: number) {\n if (value === undefined) {\n return false;\n }\n if (!isFinite(value)) {\n return false;\n }\n if (ranges.min) {\n if (value < ranges.min) {\n return false;\n }\n }\n if (ranges.max) {\n if (value > ranges.max) {\n return false;\n }\n }\n return true;\n}\n\ninterface NumericInputProps {\n label: string;\n defaultValue?: number;\n update: (value: number) => void;\n disabled?: boolean;\n ranges?: { min: number; max?: number };\n}\n\nconst NumericInput = ({\n label,\n defaultValue,\n update,\n disabled,\n ranges = { min: 0, max: 10000 },\n}: NumericInputProps) => {\n const [{ focused, hasChanged }, setState] = useState({\n focused: false,\n hasChanged: false,\n });\n const errored = !validateNumber(ranges, defaultValue);\n const showError = hasChanged && errored && !disabled;\n const showFocused = focused && !disabled;\n\n return (\n
\n \n
{label}
\n {\n setState((state) => ({ ...state, hasChanged: true }));\n const valueAsFloat = parseFloat(event.target.value);\n update(valueAsFloat);\n }}\n value={defaultValue}\n type=\"number\"\n pattern=\"[0-9]*\"\n disabled={disabled}\n onFocus={() => setState((state) => ({ ...state, focused: true }))}\n onBlur={() => setState((state) => ({ ...state, focused: false }))}\n />\n
\n
\n \n
\n
\n );\n};\n\nexport default NumericInput;\n","import React from \"react\";\nimport classnames from \"classnames/bind\";\nimport { FormattedMessage, defineMessages, useIntl } from \"react-intl\";\n\nimport { useForm } from \"modules/form/components/FormContext\";\nimport { validateNumber } from \"../../data/validation\";\n\nimport NumericInput from \"modules/common/components/NumericInput\";\n\nimport style from \"./PoolVolume.module.css\";\nimport CircleIndicator from \"modules/common/components/CircleIndicator\";\nconst cx = classnames.bind(style);\n\nconst messages = defineMessages({\n label: {\n id: \"pool-volume.label\",\n defaultMessage: \"Volume in m3\",\n description: \"label: pool volume - measured in metres cubed\",\n },\n});\n\nconst PoolVolume = () => {\n const { formatMessage } = useIntl();\n const { state, setInState } = useForm();\n\n const volume = state?.pool?.volume;\n const length = state?.pool?.length;\n const width = state?.pool?.width;\n const depth = state?.pool?.depth;\n\n const validVolume = validateNumber(volume);\n const validLength = validateNumber(length);\n const validWidth = validateNumber(width);\n const validDepth = validateNumber(depth);\n\n const lengthErrored = validLength ? (length ?? 0) < 1 : false;\n const widthErrored = validWidth ? (width ?? 0) < 1 : false;\n const depthErrored = validDepth ? (depth ?? 0) < 1 : false;\n\n const calcInputsDisabled = validVolume;\n const volumeInputDisabled = validLength || validWidth || validDepth;\n\n return (\n
\n setInState(\"pool\", \"volume\", volume)}\n disabled={volumeInputDisabled}\n defaultValue={state.pool?.volume}\n />\n
\n \n
\n
\n
\n
\n \n
\n
\n \n setInState(\"pool\", \"length\", parseFloat(e.target.value))\n }\n type=\"number\"\n pattern=\"[0-9]*\"\n disabled={calcInputsDisabled}\n />\n
x
\n \n setInState(\"pool\", \"width\", parseFloat(e.target.value))\n }\n type=\"number\"\n pattern=\"[0-9]*\"\n disabled={calcInputsDisabled}\n />\n
x
\n \n setInState(\"pool\", \"depth\", parseFloat(e.target.value))\n }\n type=\"number\"\n pattern=\"[0-9]*\"\n disabled={calcInputsDisabled}\n />\n
\n
\n
\n \n
\n
\n
\n );\n};\n\nexport default PoolVolume;\n","import React, { useEffect } from \"react\";\nimport { defineMessages, useIntl } from \"react-intl\";\n\nimport { useForm } from \"../FormContext\";\nimport {\n PoolLocation,\n PoolDisinfectionType,\n PoolMaterial,\n PoolShape,\n} from \"../../data/types\";\n\nimport CategoryTitle from \"modules/common/components/CategoryTitle\";\nimport TextInput from \"modules/common/components/TextInput\";\nimport CheckBox from \"modules/common/components/CheckBox\";\nimport PoolVolume from \"./PoolVolume\";\nimport DropDown from \"modules/common/components/DropDown\";\n\nimport srcGoBack from \"assets/IC_Go_Back.svg\";\n\nimport style from \"./CreatePoolForm.module.css\";\n\nconst messages = defineMessages({\n title: {\n id: \"create-pool-form.title\",\n defaultMessage: \"Create new pool\",\n description: \"title: creating a new pool.\",\n },\n name: {\n id: \"create-pool-form.label.pool-name\",\n defaultMessage: \"Name\",\n description: \"label: pool name.\",\n },\n location: {\n id: \"create-pool-form.sub-title.pool-location\",\n defaultMessage: \"Location\",\n description: \"sub title: pool location - indoor/outdoor.\",\n },\n outdoor: {\n id: \"create-pool-form.label.outdoor-pool\",\n defaultMessage: \"Outdoor pool\",\n description: \"label: pool is outdoors.\",\n },\n indoor: {\n id: \"create-pool-form.label.indoor-pool\",\n defaultMessage: \"Indoor pool\",\n description: \"label: pool is indoors.\",\n },\n disinfection: {\n id: \"create-pool-form.sub-title.disinfection-type\",\n defaultMessage: \"Type of Disinfection\",\n description:\n \"sub title: type of disinfection used in the pool - bromine/chlorine/salt.\",\n },\n bromine: {\n id: \"create-pool-form.label.bromine\",\n defaultMessage: \"Bromine\",\n description: \"label: disinfection type - bromine.\",\n },\n chlorine: {\n id: \"create-pool-form.label.chlorine\",\n defaultMessage: \"Chlorine\",\n description: \"label: disinfection type - chlorine.\",\n },\n salt: {\n id: \"create-pool-form.label.salt\",\n defaultMessage: \"Salt\",\n description: \"label: disinfection type - salt.\",\n },\n material: {\n id: \"create-pool-form.title.material\",\n defaultMessage: \"Material\",\n description: \"title: material of pool.\",\n },\n steel: {\n id: \"create-pool-form.drop-down-option.material.stainless-steel\",\n defaultMessage: \"Stainless Steel\",\n description: \"pool material\",\n },\n tiles: {\n id: \"create-pool-form.drop-down-option.material.tiles\",\n defaultMessage: \"Tiles\",\n description: \"pool material\",\n },\n foil: {\n id: \"create-pool-form.drop-down-option.material.foil\",\n defaultMessage: \"Foil\",\n description: \"pool material\",\n },\n concrete: {\n id: \"create-pool-form.drop-down-option.material.concrete\",\n defaultMessage: \"Concrete\",\n description: \"pool material\",\n },\n fibreglass: {\n id: \"create-pool-form.drop-down-option.material.fibreglass\",\n defaultMessage: \"Fibreglass\",\n description: \"pool material\",\n },\n shape: {\n id: \"create-pool-form.title.shape\",\n defaultMessage: \"Shape\",\n description: \"title: shape of a swimming pool.\",\n },\n round: {\n id: \"create-pool-form.drop-down-option.shape.round\",\n defaultMessage: \"Round\",\n description: \"pool shape\",\n },\n rectangular: {\n id: \"create-pool-form.drop-down-option.shape.rectangular\",\n defaultMessage: \"Rectangular\",\n description: \"pool shape\",\n },\n kidney: {\n id: \"create-pool-form.drop-down-option.shape.kidney\",\n defaultMessage: \"Kidney\",\n description: \"pool shape\",\n },\n lShaped: {\n id: \"create-pool-form.drop-down-option.shape.l-shaped\",\n defaultMessage: \"L-Shape\",\n description: \"pool shape\",\n },\n});\n\ninterface CreatePoolFormProps {\n goBack: () => void;\n showGoBack: boolean;\n}\n\nconst CreatePoolForm = ({ goBack, showGoBack }: CreatePoolFormProps) => {\n const { formatMessage } = useIntl();\n const { state, setInState } = useForm();\n\n useEffect(() => {\n setInState(\"pool\", \"location\", PoolLocation.Outdoor);\n setInState(\"pool\", \"disinfection\", PoolDisinfectionType.Chlorine);\n setInState(\"pool\", \"shape\", PoolShape.Round);\n setInState(\"pool\", \"material\", PoolMaterial.Steel);\n }, [setInState]);\n\n const shapes = [\n { label: formatMessage(messages.round), value: PoolShape.Round },\n {\n label: formatMessage(messages.rectangular),\n value: PoolShape.Rectangular,\n },\n { label: formatMessage(messages.kidney), value: PoolShape.Kidney },\n {\n label: formatMessage(messages.lShaped),\n value: PoolShape.LShaped,\n },\n ];\n\n const materials = [\n {\n label: formatMessage(messages.steel),\n value: PoolMaterial.Steel,\n },\n {\n label: formatMessage(messages.tiles),\n value: PoolMaterial.Tiles,\n },\n { label: formatMessage(messages.foil), value: PoolMaterial.Foil },\n {\n label: formatMessage(messages.concrete),\n value: PoolMaterial.Concrete,\n },\n {\n label: formatMessage(messages.fibreglass),\n value: PoolMaterial.GlassFibre,\n },\n ];\n\n return (\n
\n {showGoBack && (\n \"\"\n )}\n \n setInState(\"pool\", \"name\", name)}\n defaultValue={state.pool?.name}\n />\n \n \n
\n
\n setInState(\"pool\", \"location\", PoolLocation.Outdoor)}\n />\n
\n
\n setInState(\"pool\", \"location\", PoolLocation.Indoor)}\n />\n
\n
\n
\n \n
\n
\n \n setInState(\"pool\", \"disinfection\", PoolDisinfectionType.Chlorine)\n }\n />\n
\n
\n \n setInState(\"pool\", \"disinfection\", PoolDisinfectionType.Bromine)\n }\n />\n
\n
\n \n setInState(\"pool\", \"disinfection\", PoolDisinfectionType.Salt)\n }\n />\n
\n
\n
\n \n shape.value === state?.pool?.shape)?.label\n }\n update={(shape: string) => setInState(\"pool\", \"shape\", shape)}\n />\n
\n
\n \n mat.value === state?.pool?.material)?.label\n }\n update={(material: string) =>\n setInState(\"pool\", \"material\", material)\n }\n />\n
\n
\n );\n};\n\nexport default CreatePoolForm;\n","import React, { useState, useEffect } from \"react\";\nimport { defineMessages, useIntl } from \"react-intl\";\n\nimport { useForm } from \"../FormContext\";\nimport { fetchPools } from \"modules/api/endpoints\";\n\nimport CreatePoolForm from \"./CreatePoolForm\";\nimport CategoryTitle from \"modules/common/components/CategoryTitle\";\nimport Button from \"modules/common/components/Button\";\nimport CheckBox from \"modules/common/components/CheckBox\";\n\nimport srcPool from \"assets/IC_Pool.svg\";\n\nimport style from \"./PoolForm.module.css\";\nimport { Pool, Pools } from \"modules/form/data/types\";\nimport LoadingSpinner from \"modules/common/components/LoadingSpinner\";\n\nconst messages = defineMessages({\n title: {\n id: \"pool-form.title.select-pool\",\n defaultMessage: \"Pool Location\",\n description: \"title: for selecting which pool.\",\n },\n button: {\n id: \"pool-form.button.create-new-pool\",\n defaultMessage: \"Create pool\",\n description: \"button: takes user to create new pool form.\",\n },\n});\n\ninterface PoolFormState {\n creativeMode: boolean;\n pools: Pools;\n isBusy: boolean;\n}\n\nconst PoolForm = () => {\n const { formatMessage } = useIntl();\n const { state: formState, setInState } = useForm();\n const [state, setState] = useState({\n creativeMode: false,\n pools: [],\n isBusy: false,\n });\n\n useEffect(() => {\n const runEffect = async () => {\n setState((state) => ({ ...state, isBusy: true }));\n const { success, data } = await fetchPools();\n if (success) {\n if (data) {\n setState((state) => ({ ...state, pools: data }));\n }\n }\n setState((state) => ({ ...state, isBusy: false }));\n };\n runEffect();\n }, []);\n\n if (state.isBusy) return ;\n\n const noPoolsToShow = !state.pools || state.pools.length === 0;\n if (state.creativeMode || noPoolsToShow)\n return (\n setState((state) => ({ ...state, creativeMode: false }))}\n showGoBack={!noPoolsToShow}\n />\n );\n\n return (\n
\n \n \"\"\n
\n {state.pools?.map((pool: Pool, idx) => (\n
\n setInState(\"form\", \"poolId\", pool.id)}\n checked={pool.id === formState.form.poolId}\n />\n
\n ))}\n
\n {\n setInState(\"form\", \"poolId\", undefined);\n setState({ ...state, creativeMode: true });\n }}\n />\n
\n );\n};\n\nexport default PoolForm;\n","import { Co2Bottle, FilterCartridge } from \"./types\";\n\nexport default {\n cartridges: [\n {\n filterCartridge: FilterCartridge.M200,\n supportsIC50: true,\n articleNumber: \"M200\",\n displayName: \"M200\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link:\n \"https://www.bwt.com/de-at/produkte/wasserspender/filter-aqa-drink-mmw/m200/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link: \"https://www.bwt.com/de-de/produkte/wasserspender/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1d\",\n price: null,\n languageCode: \"de\",\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1e\",\n price: null,\n languageCode: \"fr\",\n },\n ],\n },\n {\n filterCartridge: FilterCartridge.M300,\n supportsIC50: true,\n articleNumber: \"M300\",\n displayName: \"M300\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link: \"https://www.bwt.com/de-at/produkte/wasserspender/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link:\n \"https://www.bwt.com/de-de/produkte/wasserspender/filter-aqa-drink-mmw/m300/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1b\",\n price: null,\n languageCode: \"de\",\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1c\",\n price: null,\n languageCode: \"fr\",\n },\n ],\n },\n {\n filterCartridge: FilterCartridge.M400,\n supportsIC50: true,\n articleNumber: \"M400\",\n displayName: \"M400\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link:\n \"https://www.bwt.com/de-at/produkte/wasserspender/filter-aqa-drink-mmw/m400/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link:\n \"https://www.bwt.com/de-de/produkte/wasserspender/filter-aqa-drink-mmw/m400/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/19\",\n price: null,\n languageCode: \"de\",\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1a\",\n price: null,\n languageCode: \"fr\",\n },\n ],\n },\n {\n filterCartridge: FilterCartridge.Mp200,\n supportsIC50: true,\n articleNumber: \"MP200\",\n displayName: \"MP200\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link:\n \"https://www.bwt.com/de-at/produkte/wasserspender/filter-aqa-drink-mp/mp200/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link:\n \"https://www.bwt.com/de-de/produkte/wasserspender/filter-aqa-drink-mp/mp200/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/17\",\n price: null,\n languageCode: \"de\",\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/18\",\n price: null,\n languageCode: \"fr\",\n },\n ],\n },\n {\n filterCartridge: FilterCartridge.Mp300,\n supportsIC50: true,\n articleNumber: \"MP300\",\n displayName: \"MP300\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link: \"https://www.bwt.com/de-at/produkte/wasserspender/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link: \"https://www.bwt.com/de-de/produkte/wasserspender/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/15\",\n price: null,\n languageCode: \"de\",\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/16\",\n price: null,\n languageCode: \"fr\",\n },\n ],\n },\n {\n filterCartridge: FilterCartridge.Mp400,\n supportsIC50: true,\n articleNumber: \"MP400\",\n displayName: \"MP400\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link:\n \"https://www.bwt.com/de-at/produkte/wasserspender/filter-aqa-drink-mp/mp400/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link:\n \"https://www.bwt.com/de-de/produkte/wasserspender/filter-aqa-drink-mp/mp400/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/13\",\n price: null,\n languageCode: \"de\",\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/14\",\n price: null,\n languageCode: \"fr\",\n },\n ],\n },\n {\n filterCartridge: FilterCartridge.Mpc400,\n supportsIC50: false,\n articleNumber: \"MPC400\",\n displayName: \"MPC400\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link: \"https://www.bwt.com/de-at/produkte/wasserspender/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link: \"https://www.bwt.com/de-de/produkte/wasserspender/\",\n price: null,\n languageCode: null,\n },\n ],\n },\n {\n filterCartridge: FilterCartridge.Mpc500,\n supportsIC50: false,\n articleNumber: \"MPC500\",\n displayName: \"MPC500\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link:\n \"https://www.bwt.com/de-at/produkte/wasserspender/filter-aqa-drink-mpc/mpc500/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link:\n \"https://www.bwt.com/de-de/produkte/wasserspender/filter-aqa-drink-mpc/mpc500/\",\n price: null,\n languageCode: null,\n },\n ],\n },\n {\n filterCartridge: FilterCartridge.Tc200,\n supportsIC50: false,\n articleNumber: \"TC200\",\n displayName: \"TC200\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link: \"https://www.bwt.com/de-de/produkte/wasserspender/tc200/\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link: \"https://www.bwt.com/de-at/produkte/wasserspender/tc200/\",\n price: null,\n languageCode: null,\n },\n ],\n },\n ],\n co2Bottles: [\n {\n co2Bottle: Co2Bottle.Bottle425g,\n requiredRoomVolume: 7,\n articleNumber: \"co425\",\n displayName: \"425 g\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link:\n \"https://www.bwt.com/de-at/produkte-fuer-zuhause/kohlensaeure-co2-bestellen\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link:\n \"https://www.bwt.com/de-de/produkte-fuer-zuhause/kohlensaeure-co2-bestellen\",\n price: null,\n languageCode: null,\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1f\",\n price: null,\n languageCode: \"de\",\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1g\",\n price: null,\n languageCode: \"fr\",\n },\n ],\n },\n {\n co2Bottle: Co2Bottle.Bottle2Kg,\n requiredRoomVolume: 35,\n articleNumber: \"co2\",\n displayName: \"2 kg\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link: null,\n price: 26.76,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link: null,\n price: 26.76,\n languageCode: null,\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1f\",\n price: null,\n languageCode: \"de\",\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1g\",\n price: null,\n languageCode: \"fr\",\n },\n ],\n },\n {\n co2Bottle: Co2Bottle.Bottle3Kg,\n requiredRoomVolume: 51,\n articleNumber: \"co3\",\n displayName: \"3 kg\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link: null,\n price: 31.56,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link: null,\n price: 31.56,\n languageCode: null,\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1f\",\n price: null,\n languageCode: \"de\",\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1g\",\n price: null,\n languageCode: \"fr\",\n },\n ],\n },\n {\n co2Bottle: Co2Bottle.Bottle5Kg,\n requiredRoomVolume: 85,\n articleNumber: \"co5\",\n displayName: \"5 kg\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link: null,\n price: 36.336,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link: null,\n price: 36.336,\n languageCode: null,\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1f\",\n price: null,\n languageCode: \"de\",\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1g\",\n price: null,\n languageCode: \"fr\",\n },\n ],\n },\n {\n co2Bottle: Co2Bottle.Bottle6Kg,\n requiredRoomVolume: 105,\n articleNumber: \"co6\",\n displayName: \"6 kg\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link: null,\n price: 40.2,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link: null,\n price: 40.2,\n languageCode: null,\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1f\",\n price: null,\n languageCode: \"de\",\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1g\",\n price: null,\n languageCode: \"fr\",\n },\n ],\n },\n {\n co2Bottle: Co2Bottle.Bottle10Kg,\n requiredRoomVolume: 170,\n articleNumber: \"co10\",\n displayName: \"10 kg\",\n shopLinks: [\n {\n countryCode: \"AT\",\n link: null,\n price: 49.884,\n languageCode: null,\n },\n {\n countryCode: \"DE\",\n link: null,\n price: 49.884,\n languageCode: null,\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1f\",\n price: null,\n languageCode: \"de\",\n },\n {\n countryCode: \"CH\",\n link: \"https://l.softpauer.com/1g\",\n price: null,\n languageCode: \"fr\",\n },\n ],\n },\n ],\n};\n","import React from \"react\";\nimport classnames from \"classnames/bind\";\nimport { FormattedMessage, useIntl, defineMessages } from \"react-intl\";\n\nimport { useForm } from \"modules/form/components/FormContext\";\nimport { validateNumber } from \"../../data/validation\";\n\nimport NumericInput from \"modules/common/components/NumericInput\";\n\nimport style from \"./RoomSize.module.css\";\nimport CircleIndicator from \"modules/common/components/CircleIndicator\";\nconst cx = classnames.bind(style);\n\nconst messages = defineMessages({\n volume: {\n id: \"room-size.label.volume\",\n defaultMessage: \"volume in m3\",\n description: \"label: volume (in meters cubed).\",\n },\n});\n\nconst RoomSize = () => {\n const { formatMessage } = useIntl();\n const { state, setInState } = useForm();\n\n const height = state?.drinkPro20?.height;\n const width = state?.drinkPro20?.width;\n const volume = state?.drinkPro20?.volume;\n\n const validHeight = validateNumber(height);\n const validWidth = validateNumber(width);\n const validVolume = validateNumber(volume);\n\n const heightErrored = validHeight ? (height ?? 0) < 1 : false;\n const widthErrored = validWidth ? (width ?? 0) < 1 : false;\n\n const calcInputsDisabled = validVolume;\n const volumeInputDisabled = validHeight || validWidth;\n\n return (\n
\n setInState(\"drinkPro20\", \"volume\", volume)}\n disabled={volumeInputDisabled}\n defaultValue={volume}\n />\n
\n \n
\n
\n
\n
\n \n
\n
\n \n setInState(\"drinkPro20\", \"height\", parseFloat(e.target.value))\n }\n type=\"number\"\n pattern=\"[0-9]*\"\n disabled={calcInputsDisabled}\n />\n
x
\n \n setInState(\"drinkPro20\", \"width\", parseFloat(e.target.value))\n }\n type=\"number\"\n pattern=\"[0-9]*\"\n disabled={calcInputsDisabled}\n />\n
\n
\n
\n \n
\n
\n
\n );\n};\n\nexport default RoomSize;\n","import React, { useEffect, useState } from \"react\";\nimport { defineMessages, useIntl, FormattedMessage } from \"react-intl\";\n\nimport { useForm, DrinkPro20State } from \"../FormContext\";\nimport { getDrinkPro20Data } from \"modules/api/endpoints\";\nimport {\n FilterCartridge,\n Co2Bottle as Co2BottleEnum,\n DrinkPro20Data,\n} from \"../../data/types\";\nimport drinkPro20DefaultData from \"../../data/drinkPro20\";\n\nimport RoomSize from \"./RoomSize\";\nimport PeopleInTheHouse from \"../PeopleInTheHouse\";\nimport CategoryTitle from \"modules/common/components/CategoryTitle\";\nimport NumericInput from \"modules/common/components/NumericInput\";\nimport DropDown from \"modules/common/components/DropDown\";\nimport CheckBox from \"modules/common/components/CheckBox\";\n\nimport style from \"./DrinkPro20Form.module.css\";\n\nconst messages = defineMessages({\n consumption: {\n id: \"drink-pro-20.form.title.water-consumption\",\n defaultMessage: \"Water consumption\",\n description: \"sub section of the drink pro 20 form for water consumption.\",\n },\n dailyWater: {\n id: \"drink-pro-20.form.label.daily-water-usage\",\n defaultMessage: \"Daily in litres\",\n description: \"input label: daily water usage.\",\n },\n sodaWater: {\n id: \"drink-pro-20.form.label.daily-soda-water-usage\",\n defaultMessage: \"thereof soda water\",\n description: \"input label: daily soda water usage\",\n },\n roomVolume: {\n id: \"drink-pro-20.form.label.room-volume\",\n defaultMessage: \"Room volume\",\n description: \"input label: room volume\",\n },\n currentCartridge: {\n id: \"drink-pro-20.form.label.current-cartridge\",\n defaultMessage: \"Current cartridge\",\n description: \"input label: current cartridge\",\n },\n installedBottle: {\n id: \"drink-pro-20.form.label.installed-co2-bottle\",\n defaultMessage: \"Installed CO2 bottle\",\n description: \"input label: installed co2 bottle type.\",\n },\n hasIC50: {\n id: \"drink-pro-20.form.label.has-ic50\",\n defaultMessage: \"Simply Care IC50 (optional)\",\n description: \"input label: cartridge has ic50.\",\n },\n});\n\nfunction getShowWaterUsageWarning(waterUsage?: number, sodaUsage?: number) {\n if (waterUsage === undefined || sodaUsage === undefined) return false;\n if (sodaUsage > waterUsage) return true;\n}\n\nfunction getShowCO2Warning(minRoomSize?: number, drinkPro20?: DrinkPro20State) {\n if (minRoomSize === undefined) return false;\n if (drinkPro20?.volume !== undefined) {\n if (minRoomSize > drinkPro20.volume) return true;\n }\n if (drinkPro20?.height !== undefined && drinkPro20?.width !== undefined) {\n const volume = drinkPro20.height * drinkPro20.width;\n if (minRoomSize > volume) return true;\n }\n return false;\n}\n\nfunction DrinkPro20Form() {\n const { formatMessage } = useIntl();\n const { state, setInState } = useForm();\n\n const [data, setData] = useState(drinkPro20DefaultData);\n\n useEffect(() => {\n const runEffect = async () => {\n const { success, data } = await getDrinkPro20Data();\n if (success) {\n if (data) {\n setData(data);\n setInState(\n \"drinkPro20\",\n \"currentCartridge\",\n data.cartridges[0].filterCartridge\n );\n setInState(\n \"drinkPro20\",\n \"installedCO2Bottle\",\n data.co2Bottles[0].co2Bottle\n );\n }\n } else {\n setInState(\n \"drinkPro20\",\n \"currentCartridge\",\n drinkPro20DefaultData.cartridges[0].filterCartridge\n );\n setInState(\n \"drinkPro20\",\n \"installedCO2Bottle\",\n drinkPro20DefaultData.co2Bottles[0].co2Bottle\n );\n }\n };\n runEffect();\n }, [setInState]);\n\n const selectedCartridgeData = data.cartridges.find(\n (c) => c.filterCartridge === state.drinkPro20?.currentCartridge\n );\n const selectedBottleData = data.co2Bottles.find(\n (c) => c.co2Bottle === state.drinkPro20?.installedCO2Bottle\n );\n\n const canSelectIC50 = selectedCartridgeData?.supportsIC50;\n const showCO2Warning = getShowCO2Warning(\n selectedBottleData?.requiredRoomVolume,\n state.drinkPro20\n );\n const showWaterUsageWarning = getShowWaterUsageWarning(\n state?.drinkPro20?.dailyWaterUsage,\n state?.drinkPro20?.dailySodaUsage\n );\n\n return (\n
\n
\n \n
\n
\n \n setInState(\"drinkPro20\", \"dailyWaterUsage\", dailyWaterUsage)\n }\n defaultValue={state?.drinkPro20?.dailyWaterUsage}\n />\n \n setInState(\"drinkPro20\", \"dailySodaUsage\", dailySodaUsage)\n }\n defaultValue={state?.drinkPro20?.dailySodaUsage}\n ranges={{ min: 0, max: state?.drinkPro20?.dailyWaterUsage }}\n />\n
\n {showWaterUsageWarning && (\n
\n \n
\n )}\n
\n
\n
\n \n \n
\n
\n \n
\n
\n \n {\n return {\n label: c.displayName,\n value: c.filterCartridge,\n };\n })}\n defaultValue={selectedCartridgeData?.displayName}\n update={(currentCartridge: FilterCartridge) =>\n setInState(\"drinkPro20\", \"currentCartridge\", currentCartridge)\n }\n />\n {canSelectIC50 && (\n
\n \n setInState(\"drinkPro20\", \"hasIC50\", hasIC50)\n }\n />\n
\n )}\n
\n
\n \n {\n return {\n label: c.displayName,\n value: c.co2Bottle,\n };\n })}\n defaultValue={selectedBottleData?.displayName}\n update={(installedCO2Bottle: Co2BottleEnum) =>\n setInState(\"drinkPro20\", \"installedCO2Bottle\", installedCO2Bottle)\n }\n />\n {showCO2Warning && (\n
\n \n
\n )}\n
\n
\n );\n}\n\nexport default DrinkPro20Form;\n","import React, {} from \"react\";\nimport { defineMessages, useIntl } from \"react-intl\";\n\nimport { useForm } from \"./FormContext\";\n\n\nimport Button from \"modules/common/components/Button\";\n\nimport style from \"./ModalContent.module.css\";\n\nconst messages = defineMessages({\n label: {\n id: \"service.modal.label\",\n defaultMessage:\n \"Are you sure you don't want to take advantage of our free 2 year service?\",\n description: \"popup for not accepting service - H1\",\n },\n label2: {\n id: \"service.modal.label2\",\n defaultMessage:\n \"The agreement is free of charge for the first 2 years from commissioning.\",\n description: \"popup for not accepting service - H2\",\n },\n termsButton: {\n id: \"link-to-terms.button\",\n defaultMessage: \"Link to Terms\",\n description: \"button text: link to service terms.\",\n },\n notice: {\n id: \"service.modal.notice\",\n defaultMessage:\n \"You can change it to another guarantee contract at any time or terminate the contract with 30 days' notice.\",\n description: \"cancellation notice for the service\",\n },\n yes: {\n id: \"get-service.button\",\n defaultMessage: \"Get the Free Service\",\n description: \"button text: get the free service.\",\n },\n no: {\n id: \"no-service.button\",\n defaultMessage: \"I Am Sure\",\n description: \"button text: sure i dont want the free service\",\n },\n});\n\ninterface ModalButtonProps {\n buttonNo: { title: string; click: () => void }[];\n buttonYes: { title: string; click: () => void }[];\n}\n\nconst ModalContent: React.FC = ({ buttonNo, buttonYes }) => {\n const { formatMessage } = useIntl();\n const { state, setInState } = useForm();\n\n return (\n
\n

{formatMessage(messages.label)}

\n

{formatMessage(messages.label2)}

\n
\n
\n \n {formatMessage(messages.termsButton)}\n \n
\n

{formatMessage(messages.notice)}

\n
\n
\n {buttonNo.map((button, idx) => (\n
\n \n
\n ))}\n {buttonYes.map((button, idx) => (\n
\n \n
\n ))}\n
\n
\n );\n};\n\nexport default ModalContent;\n","import React, { useState, useEffect, useCallback, Fragment } from \"react\";\nimport { defineMessages, FormattedDate, useIntl } from \"react-intl\";\nimport { useHistory } from \"react-router\";\n\nimport { useForm } from \"./FormContext\";\nimport { validateProductDetails } from \"../data/validation\";\nimport {\n registerPool,\n registerPoolProduct,\n registerProduct,\n registerAqaDrinkProduct,\n} from \"modules/api/endpoints\";\nimport { ProductType } from \"../data/types\";\nimport { useAuth } from \"modules/auth/components/AuthProvider\";\nimport { isDanish } from \"modules/util/constants\";\n\nimport Button from \"modules/common/components/Button\";\n\nimport PeopleInTheHouse from \"./PeopleInTheHouse\";\nimport AgreeEmailContact from \"./AgreeEmailContact\";\nimport ServiceCheckbox from \"./ServiceCheckbox\";\nimport PoolForm from \"./pool/PoolForm\";\nimport DrinkPro20Form from \"./drinkPro20/DrinkPro20Form\";\nimport ProductLocation from \"./ProductLocation\";\nimport Error from \"modules/common/components/Error\";\nimport DisplayName from \"./DisplayName\";\nimport PopUpContent from \"modules/common/components/popUp/PopUpContent\";\nimport ModalContent from \"./ModalContent\";\n\nimport style from \"./ProductDetails.module.css\";\n\nconst messages = defineMessages({\n button: {\n id: \"product-details.button.register-product\",\n defaultMessage: \"Register Product\",\n description: \"button text: completes the product registration.\",\n },\n});\n\nasync function getCachedFormData() {\n await null;\n return localStorage.getItem(\"cached-form-data\");\n}\n\nexport default function ProductDetails() {\n const { formatMessage } = useIntl();\n const { state, setInState } = useForm();\n const { push } = useHistory();\n const {\n state: { isLoggedIn },\n setAuth,\n } = useAuth();\n\n useEffect(() => {\n if (!isLoggedIn) push(\"/redirect\");\n }, [isLoggedIn]);\n\n const [{ isBusy, showError, lastErrorCode }, setState] = useState({\n isBusy: false,\n showError: false,\n lastErrorCode: null,\n });\n\n const [showOverlay, setShowOverlay] = useState(false);\n\n const { imageUrl, productType } = state?.lastProductResponse?.data || {};\n const valid = validateProductDetails(state);\n\n const sitecoreLocale = window.LOCALE_PREFIX\n ? window.LOCALE_PREFIX.replace(\"/\", \"\")\n : window.location.pathname.split(\"/\")[1];\n const locale = sitecoreLocale || navigator.language;\n\n useEffect(() => {\n const runEffect = async () => {\n const storageItem = await getCachedFormData();\n if (!storageItem) {\n if (!state.form.productCode) push(\"/\");\n return;\n }\n\n const cachedFormData = JSON.parse(storageItem);\n if (!cachedFormData || !cachedFormData.productCode) {\n if (!state.form.productCode) push(\"/\");\n return;\n }\n\n setInState(\"form\", \"productCode\", cachedFormData.productCode);\n setInState(\n \"form\",\n \"installationDate\",\n new Date(cachedFormData.installationDate)\n );\n setInState(\n \"form\",\n \"shareDataWithPartner\",\n cachedFormData.shareDataWithPartner\n );\n setInState(\n \"lastProductResponse\",\n \"data\",\n cachedFormData.lastProductResponseData\n );\n };\n runEffect();\n }, []);\n\n const checkContractTermsToggled = () => {\n if (!state.form.contractTerms && isDanish) {\n setShowOverlay(true);\n } else {\n sendRequest();\n }\n };\n\n const sendRequest = useCallback(\n async (generateDate: boolean = false) => {\n if (generateDate) {\n state.form.contractTerms = true;\n state.form.acceptedContractDate = new Date();\n }\n if (isBusy) return;\n setState({ isBusy: true, showError: false, lastErrorCode: null });\n if (productType === ProductType.Pool) {\n let poolId = state.form.poolId;\n if (!poolId && state.pool) {\n const length = state.pool.length ?? 0;\n const width = state.pool.width ?? 0;\n const depth = state.pool.depth ?? 0;\n const volume = state.pool.volume ?? length * width * depth;\n\n const { success, data, errorCode, unauthorized } = await registerPool(\n {\n name: state.pool.name,\n volume,\n disinfectionType: state.pool.disinfection,\n location: state.pool.location,\n shape: state.pool.shape,\n material: state.pool.material,\n countryCode: state.form.country,\n street: state.form.street,\n city: state.form.city,\n postalCode: state.form.postCode,\n acceptedContractTerms: state.form.contractTerms,\n acceptedContractDate: state.form.contractTerms\n ? new Date().toISOString()\n : undefined,\n }\n );\n if (success) {\n if (data) {\n poolId = data.id;\n }\n } else {\n setState((state) => ({\n ...state,\n showError: true,\n lastErrorCode: errorCode,\n }));\n if (unauthorized) {\n setAuth({\n isBusy: false,\n isLoggedIn: false,\n profile: undefined,\n });\n push(\"/redirect\");\n }\n }\n }\n if (!poolId) return;\n const { success, errorCode, unauthorized } = await registerPoolProduct({\n poolId: poolId,\n productCode: state.form.productCode,\n installationDate: state.form.installationDate.toISOString(),\n isDataShared: state.form.shareDataWithPartner,\n });\n if (success) {\n push(\"/result\");\n } else {\n setState((state) => ({\n ...state,\n showError: true,\n lastErrorCode: errorCode,\n }));\n if (unauthorized) {\n setAuth({\n isBusy: false,\n isLoggedIn: false,\n profile: undefined,\n });\n push(\"/redirect\");\n }\n }\n } else if (productType === ProductType.WaterDispenser) {\n if (!state.drinkPro20) return;\n const height = state.drinkPro20.height ?? 0;\n const width = state.drinkPro20.width ?? 0;\n const area = height * width;\n const size = state.drinkPro20.volume ? state.drinkPro20.volume : area;\n const { success, errorCode, unauthorized } =\n await registerAqaDrinkProduct({\n displayName: state.form.displayName,\n filterCartridge: state.drinkPro20?.currentCartridge,\n co2Bottle: state.drinkPro20.installedCO2Bottle,\n roomVolume: size,\n hasIc50: state.drinkPro20.hasIC50,\n dailySodaConsumption: state.drinkPro20.dailySodaUsage,\n dailyWaterConsumption: state.drinkPro20.dailyWaterUsage,\n productCode: state.form.productCode,\n installationDate: state.form.installationDate.toISOString(),\n street: state.form.street,\n city: state.form.city,\n postalCode: state.form.postCode,\n countryCode: state.form.country,\n shareDataWithPartner: state.form.shareDataWithPartner,\n personCount: state.form.peoplePerHousehold ?? 0,\n acceptedContractTerms: state.form.contractTerms,\n acceptedContractDate: state.form.contractTerms\n ? new Date().toISOString()\n : undefined,\n });\n if (success) {\n push(\"/result\");\n } else {\n setState((state) => ({\n ...state,\n showError: true,\n lastErrorCode: errorCode,\n }));\n if (unauthorized) {\n setAuth({\n isBusy: false,\n isLoggedIn: false,\n profile: undefined,\n });\n push(\"/redirect\");\n }\n }\n } else if (productType === ProductType.Default) {\n const { success, errorCode, unauthorized } = await registerProduct({\n productCode: state.form.productCode,\n installationDate: state.form.installationDate.toISOString(),\n street: state.form.street,\n city: state.form.city,\n postalCode: state.form.postCode,\n countryCode: state.form.country,\n shareDataWithPartner: state.form.shareDataWithPartner,\n personCount: state.form.peoplePerHousehold ?? 0,\n displayName: state.form.displayName,\n acceptedContractTerms: state.form.contractTerms,\n acceptedContractDate: state.form.contractTerms\n ? new Date().toISOString()\n : undefined,\n });\n if (success) {\n push(\"/result\");\n } else {\n setState((state) => ({\n ...state,\n showError: true,\n lastErrorCode: errorCode,\n }));\n if (unauthorized) {\n setAuth({\n isBusy: false,\n isLoggedIn: false,\n profile: undefined,\n });\n push(\"/redirect\");\n }\n }\n }\n\n setState((state) => ({ ...state, isBusy: false }));\n },\n [productType, push, state, isBusy]\n );\n\n return (\n
\n \n
\n {isDanish ? (\n setShowOverlay(false)}\n showClose={true}\n >\n {\n setShowOverlay(false);\n sendRequest();\n },\n },\n ]}\n buttonYes={[\n {\n title: \"Jo tak! Jeg ønsker en Tryghed Premium aftale.\",\n click: () => {\n setShowOverlay(false);\n sendRequest(true);\n },\n },\n ]}\n />\n \n ) : (\n \n )}\n
\n \n
\n {productType !== ProductType.Pool && }\n \n
\n
\n
\n {productType === ProductType.Pool ? (\n \n ) : productType === ProductType.WaterDispenser ? (\n \n ) : (\n productType === ProductType.Default && \n )}\n {productType !== ProductType.Default && }\n {isDanish ? (\n productType === ProductType.Default && \n ) : (\n \n )}\n
\n \n
\n
\n
\n
\n );\n}\n","import React, { RefObject } from \"react\";\nimport { Route } from \"react-router\";\n\nimport FormContainer from \"./FormContainer\";\nimport ProductRegistration from \"./ProductRegistration\";\nimport Redirect from \"./Redirect\";\nimport Benefits from \"./Benefits\";\nimport ProductDetails from \"./ProductDetails\";\n\nconst ProductRegistrationContainer = () => (\n <>\n \n \n \n);\n\nconst ProductDetailsContainer = () => (\n <>\n \n \n \n);\n\ninterface FormRoutesProps {\n formRef: RefObject;\n}\n\nexport default function FormRoutes({ formRef }: FormRoutesProps) {\n return (\n \n \n \n \n \n );\n}\n","import React, { RefObject } from \"react\";\nimport { Switch, Route, useLocation } from \"react-router\";\n\nimport RegistrationComplete from \"modules/form/components/RegistrationComplete\";\nimport DeviceRegistration from \"modules/form/components/iot/DeviceRegistration\";\nimport DeviceCancellation from \"modules/form/components/iot/DeviceCancellation\";\nimport NoProductCode from \"modules/form/components/noProductCode/NoProductCode\";\nimport FormRoutes from \"modules/form/components/FormRoutes\";\n// import ExternalLinks from \"modules/layout/components/ExternalLinks\";\n\ninterface ContentProps {\n formRef: RefObject;\n}\n\nexport default function Content({ formRef }: ContentProps) {\n const location = useLocation();\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {/* */}\n \n } />\n \n );\n}\n","import React, { useRef, useEffect } from \"react\";\nimport { Router, useHistory, useLocation } from \"react-router\";\nimport { createBrowserHistory } from \"history\";\n\nimport ConnectedIntlProvider from \"modules/intl/components/ConnectedIntlProvider\";\nimport FormProvider from \"modules/form/components/FormContext\";\nimport Header from \"modules/layout/components/Header\";\nimport PopUpProvider from \"modules/common/components/popUp/PopUpProvider\";\nimport Page from \"modules/layout/components/Page\";\nimport Content from \"./Content\";\nimport AuthProvider from \"modules/auth/components/AuthProvider\";\n\nimport config from \"config\";\n\nimport style from \"./App.module.css\";\n\nfunction App() {\n const formRef = useRef(null);\n\n const scrollToFormRef = () => {\n if (!formRef.current) return;\n const top = formRef.current?.offsetTop - 100; // sitecore header is 85px\n window.scrollTo({\n top,\n behavior: \"smooth\",\n });\n };\n\n function ScrollRestoration() {\n const { pathname } = useLocation();\n\n useEffect(() => {\n if (pathname === \"/details\") {\n scrollToFormRef();\n } else {\n window.scrollTo(0, 0);\n }\n }, [pathname]);\n\n return null;\n }\n\n const history = createBrowserHistory({\n basename: config.basename,\n });\n\n return (\n \n \n \n \n \n \n
\n
\n \n \n \n
\n
\n
\n
\n
\n
\n );\n}\n\nexport default App;\n","/**\n *create element from html string for injecting into html\n */\nexport function createElementFromHTML(htmlString: string, element: string) {\n var div = document.createElement(element);\n div.innerHTML = htmlString.trim();\n return div;\n}\n\n/**\n * convert a sting of html to html elemnt and inject into html appended to the bottom of the segment\n * @param htmlString - string of html to be converted to html element\n * @param element - html element to be injected at the end of e.g. body, head, div\n */\nexport function addElementFromHTML(htmlString: string, element: string) {\n var div = createElementFromHTML(htmlString, element);\n var el = document.getElementsByTagName(element);\n if (el && el.length > 0 && div.firstChild && div.lastChild) {\n if (div.lastChild && div.lastChild !== div.firstChild) {\n el[0].insertBefore(div.lastChild, el[0].firstChild);\n }\n if (div.children[0]) {\n el[0].insertBefore(div.children[0], el[0].firstChild);\n }\n\n if (div.firstChild) {\n el[0].insertBefore(div.firstChild, el[0].firstChild);\n }\n }\n return el;\n}\n","import \"react-app-polyfill/ie11\";\nimport \"core-js\";\n\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"modules/main/components/App\";\nimport { addElementFromHTML } from \"modules/gaInjection\";\n\n// This is the react way of adding this can be used instead of injection if preferred\n// import ReactGA from \"react-ga4\";\n// ReactGA.initialize(\"GTM-KBJ2ZHV\");\naddElementFromHTML(\n '',\n \"head\"\n);\n\naddElementFromHTML(\n \" \",\n \"head\"\n);\n\naddElementFromHTML(\n ' ',\n \"body\"\n);\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"ModalContent_root__3BGiF\",\"label\":\"ModalContent_label__33Y4f\",\"positioning\":\"ModalContent_positioning__27SF-\",\"btnPositioning\":\"ModalContent_btnPositioning__iVfa9\",\"btn\":\"ModalContent_btn__Evy1v\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"Benefits_root__Cj4R6\",\"specific\":\"Benefits_specific__3ZSq6\",\"title\":\"Benefits_title__1A1lC\",\"item\":\"Benefits_item__3QWCr\",\"icon\":\"Benefits_icon__gj0cg\",\"seg\":\"Benefits_seg__3r3yr\",\"heading\":\"Benefits_heading__7IK3v\",\"headingText\":\"Benefits_headingText__2F1W2\",\"margLeft\":\"Benefits_margLeft__3WIUQ\",\"msg\":\"Benefits_msg__2BZCj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputs\":\"ProductCodeInput_inputs__19ebN\",\"title\":\"ProductCodeInput_title__Uw1gB\",\"input\":\"ProductCodeInput_input__2poIX\",\"focused\":\"ProductCodeInput_focused__3V95z\",\"chunk\":\"ProductCodeInput_chunk__2GOHE\",\"errored\":\"ProductCodeInput_errored__3UGxR\",\"divide\":\"ProductCodeInput_divide__2y8wy\",\"productCode\":\"ProductCodeInput_productCode__Eo1qs\",\"ci\":\"ProductCodeInput_ci__3cgPP\",\"ok\":\"ProductCodeInput_ok__1GvPn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"DropDown_root__3S_20\",\"select\":\"DropDown_select__3wOcs\",\"item\":\"DropDown_item__2_h7Z\",\"selected\":\"DropDown_selected__3x-cx\",\"icon\":\"DropDown_icon__2sfS5\",\"open\":\"DropDown_open__1lMKh\",\"search\":\"DropDown_search__3aQ2b\",\"noRes\":\"DropDown_noRes__3Cb2K\"};"],"sourceRoot":""}