{"version":3,"sources":["Blocket/Error/Error.module.css","Blocket/Footer/Footer.module.css","Blocket/Title/Title.module.css","Blocket/BlocketButton/BlocketButton.module.css","Blocket/BlocketHeader/BlocketHeader.module.css","Blocket/TitleImg/TitleImg.module.css","Blocket/Email/Email.module.css","Blocket/Purchase/Purchase.module.css","Blocket/Information/Information.module.css","Utils/Images/omcom_blocket-color.svg","Utils/Logo.js","Blocket/Footer/Footer.tsx","Blocket/Title/Title.tsx","Utils/Images/default-image.png","Blocket/TitleImg/TitleImg.tsx","Utils/Images/checkmark.png","Blocket/Information/Information.tsx","Blocket/Email/Email.tsx","Utils/Images/check_white.svg","Blocket/Package/Package.tsx","Blocket/BlocketButton/BlocketButton.tsx","BackendApi/OmocomStoreApi.ts","BackendApi/DeploymentEnvironment.ts","BackendApi/OmocomStoreApiClientConfig.ts","Utils/Utils.tsx","Utils/validation/validation.ts","Blocket/Purchase/Purchase.tsx","Utils/Images/omcom_blocket-white.svg","Blocket/BlocketHeader/BlocketHeader.tsx","Blocket/Package/PackageAPI.tsx","Blocket/Blocket.tsx","Utils/Images/failure.svg","Blocket/Error/Error.tsx","Utils/Images/approved.svg","Blocket/EndScreens/Success.tsx","Blocket/EndScreens/Failure.tsx","Store/styles/styledComponents/styled.tsx","Store/StoreModal.tsx","Store/CommonComponents/ButtonComponent.tsx","Store/StoreComponents/InsuranceInformation.tsx","Store/styles/styledComponents/stylesForComponents.tsx","Store/CommonComponents/FieldGroupString.tsx","Store/CommonComponents/DateComponent.tsx","Store/StoreComponents/ItemInputInformation.tsx","Store/StoreComponents/UserInputInformation.tsx","Store/StoreComponents/Basket.tsx","Store/translations/locales.tsx","Store/models/StoreFormDefaults.ts","B2c.js","Store/StoreForm.tsx","Store/Header.tsx","Store/StoreHeader.tsx","Store/StoreContainer.tsx","Store/Layout.tsx","Utils/Images/bicycle-bg.png","Velosophy/Text/Text.tsx","Velosophy/Fields/Fields.tsx","Utils/Images/arrow.svg","Utils/Images/Villkor-velo.pdf","Utils/Images/Produktfaktablad-velo.pdf","Velosophy/Information/Information.tsx","Velosophy/Footer/Footer.tsx","Utils/Images/omocom-logo-orange.png","Utils/Images/velosophy-logo.png","Velosophy/Velosophy.js","Velosophy/EndScreens/Success.tsx","Velosophy/EndScreens/Failure.tsx","App.js","reportWebVitals.js","index.js","Blocket/Package/Package.module.css","Blocket/Blocket.module.css","Blocket/EndScreens/Success.module.css","Blocket/EndScreens/Failure.module.css"],"names":["module","exports","Logo","className","src","logo","alt","style","height","Footer","styles","footer","contactInfo","footerMail","href","Title","titleWrapper","title","text","TitleImg","useEffect","image","require","parse","window","location","search","adThumbnailUrl","container","document","getElementById","replace","backgroundImage","defaultBackground","titleImgWrapper","id","titleImg","SoldItemName","parsed","adTitle","soldItemName","soldItemNamePretext","salePrice","CompensationList","compensationWrapper","compensationItem","compensationIcon","checkMark","compensationText","medium","Disclaimer","ExternalLinks","linksWrapper","link","target","rel","InsuranceText","props","type","email","placeholder","value","onChange","e","setEmail","currentTarget","Package","package","setPackage","parseInt","defaultChecked","item","upTo","defaultSelected","amount","name","packageLabel","htmlFor","packageContent","packageTitle","packagePrice","premium","packageText","packageButtonWrapper","packageButton","unselected","selected","SelectPackage","packagesWrapper","packagesHeader","packages","forEach","push","selectedPackage","setSelectedPackage","setAvailablePackages","BlocketButton","loading","button","disabled","onClick","ExternalPropertyType","OmocomStoreApiBase","config","this","options","headers","Authorization","identityToken","Promise","resolve","baseUrl","path","BlocketInsuranceClient","configuration","http","jsonParseReviver","undefined","getBaseUrl","platformId","marketName","req","url_","Error","encodeURIComponent","options_","body","JSON","stringify","method","transformOptions","then","transformedOptions_","fetch","_response","processPurchaseInsuranceBankId","response","status","_headers","v","k","_responseText","resultData200","InsuranceBankIdResp","fromJS","throwException","processPurchaseInsurance","InsuranceBlocketResp","InsuranceClient","processCreate","InsuranceStoreResp","processPurchase","InsuranceInfoClient","processGetPriceList","PriceListDto","ProductInfoClient","processGetProductInfo","ProductInfoResp","data","paymentUrl","property","hasOwnProperty","_data","result","init","MonetaryValue","currency","createdInsurances","Array","isArray","InsuranceResp","toJSON","objectId","insuredAmount","insuranceStartDateTime","insuranceEndDateTime","counterpartHandle","properties","product","productVersion","premiumTax","addOns","Date","toString","ExternalProperty","InsurancePremiumSection","toISOString","description","monetaryValue","addressValue","dateTimeValue","Address","InsuranceStatus","street","street2","city","zipCode","country","ComponentType","PropertyMap","ExternalPropertyName","productName","grossWrittenPremium","insurancePremiumTax","AddOnInfo","priceList","PriceListItem","order","marketCurrency","products","ProductInfo","omocomCounterpartHandle","fields","ProductFieldDescription","componentType","required","fixedLadderPremium","fixedPremium","percentagePremium","externalPropertyMap","externalPropertyName","DeploymentEnv","OmocomStoreApiException","message","isOmocomStoreApiException","obj","DeploymentEnvironment","protocol","url","environmentType","environmentName","GetEnvironmentTypeAndName","host","Local","AzurePrivate","AzureDevelopment","Systest","Beta","Staging","Production","compareString","toLowerCase","match","exec","OmocomStoreApiClientConfig","identityTokenArg","addNotification","Store","insert","animationIn","animationOut","dismiss","duration","onScreen","convertToKeyValue","map","tempFields","Object","entries","key","InsurableObjectShortDescription","_isAMomentObject","parseFloat","FormValidation","isValidPhoneNr","phoneNr","test","isValidEmail","isValidObjectPriceAmount","isValidGuid","Guid","isGuid","isValidText","length","validateFields","errors","intl","formatMessage","Purchase","React","useState","setLoading","purchase","a","userEmail","border","focus","deploymentEnv","authClientConfig","apiUrl","insuranceClient","queryString","payload","listId","Number","isInteger","adPrice","isBlocketPaket","blocketPackage","userCultureInfo","fullUrl","emailAddress","adText","extraImages","sessionStorage","setItem","referral","purchaseInsurance","purchaseWrapper","BlocketHeader","blocketHeader","blocketHeaderLogo","blocketHeaderImg","PackagesArray","insuranceInfoClient","getPriceList","getDefaultPackage","getDefaultEmail","Blocket","setPackages","isPhone","setIsPhone","availablePackages","updateWindowDimensions","innerWidth","addEventListener","removeEventListener","blocketWrapper","blocketInnerWrapper","blocket","blocketInlineTitle","blocketInner","inlineRightWrapper","inline","errorWrapper","error","thumbs","Success","successWrapper","success","successText","mail","Failure","failureWrapper","failure","PrimaryButton","styled","div","input","theme","logoBlack","LogoBig","logoWhite","createMuiTheme","overrides","MuiInputBase","root","fontFamily","fontSize","color","outlineColor","backgroundColor","background","padding","MuiFormLabel","MuiButton","textTransform","contained","marginRight","borderColor","boxShadow","storeModal","show","onCloseModal","header","info","footerLinkText","footerLink","logoResponse","dialogClassName","visible","onClickBackdrop","wordBreak","textInfo","setTextInfo","memo","ButtonComponent","values","done","fieldName","isRequired","setError","displayErrors","useIntl","buttonStyling","siblings","parentElement","children","i","classList","contains","remove","add","Button","variant","onButtonPress","buttons","getElementsByName","active","isSelected","InsuranceInformation","setValue","FormGroup","InputLabel","find","useStylesTextField","makeStyles","createStyles","overflow","borderRadius","paddingLeft","helperTextStyles","marginLeft","useStylesTextArea","marginBottom","FieldGroupString","withStyles","marginTop","spacing","position","palette","paper","transition","transitions","create","join","InputBase","margin","classes","textAreaClass","helperTestClasses","autocomplete","label","fieldType","multiLineTextBox","help","newValue","currentValue","maxLength","TextField","multiline","inputProps","rows","helperText","autoComplete","slice","Math","round","fullWidth","FormHelperTextProps","InputProps","Alert","DateComponent","flatPickerOptions","DatePicker","date","moment","ISO_8601","InputLabelProps","shrink","format","inputVariant","autoOk","disableFuture","minDate","ItemInputInformation","productValues","selectedProduct","handleProductSelection","keys","queryKey","queryValue","Text","Grid","md","xs","select","c","MenuItem","DateTimeOffset","allowInput","Selection","InsuranceInsuredAmount","setItemFields","UserInputInformation","form","formKey","firstName","lastName","phoneNumber","BasketItems","addClass","shortDescription","index","removeItem","InsuranceExternalProperties","CombineBasketItems","InsurableObjectExternalProperties","setFields","field","Basket","tempItems","setItems","localeLanguage","navigator","language","split","messagesForLanguages","en","enMessage","sv","svMessage","initialValues","purchasedProducts","state","scopes","cacheLocation","msalApp","accountId","isProduction","origin","TENANT_NAME","TENANT_DOMAIN","AUTHORITY_DOMAIN","clientId","B2C_SCOPES","API_ACCESS","LOGIN_FLOW","msalAppConfig","auth","authority","knownAuthorities","redirectUri","postLogoutRedirectUri","cache","storeAuthStateInCookie","ua","userAgent","msie","indexOf","msie11","isIE","setAccount","account","console","log","homeAccountId","setActiveAccount","selectAccount","currentAccounts","getAllAccounts","accounts","filter","toUpperCase","includes","idTokenClaims","iss","aud","every","localAccountId","logoutRequest","logoutRedirect","signOut","handleResponse","getToken","successCallback","request","acquireTokenSilent","accessToken","msal","catch","warn","acquireTokenRedirect","authentication","initialize","WrappedComponent","renderLoading","signedIn","handleRedirectPromise","loginRedirect","setState","Component","logout","getAccessToken","StoreForm","setForm","availableProducts","setAvailableProducts","setSelectedProduct","productIsSelected","setProductIsSelected","setProductValues","setInsuredAmount","modal","setModal","setErrors","itemErrors","setItemErrors","setDone","setDisplayErrors","displayItemErrors","setDisplayItemErrors","saveProduct","tempProduct","InsuranceExternalProperty","InsurableObjectExternalProperty","resetProductValues","buttonsContainers","getElementsByClassName","productClient","token","extension_PlatformId","extension_MarketName","getProductInfo","fetchMyAPI","handleFormSubmit","preventDefault","showModal","modalText","modalHeader","submitting","modalInfoText","insurance","modalResponseBody","modalResponseFooter","modalResponseFooterLink","onSubmit","noValidate","onKeyPress","event","ssn","newError","productFields","textContent","sm","Card","CardContent","Typography","gutterBottom","tempSavedItems","splice","StoreModal","textIssueKey","modalResponseIssueKey","modalResponseFooterLinkText","HeaderContainer","HeaderBody","HeaderTitle","h1","Ingress","Header","Row","Col","displayName","StoreHeader","display","setLocale","StoreContainer","locale","messages","Layout","utils","MomentUtils","Container","fluid","lg","Fields","setName","surname","setSurname","model","setModel","setDate","setMinDate","getDate","nameField","insuranceStart","setHours","getHours","insuranceEnd","setFullYear","getFullYear","insurableObjectExternalProperties","placeholderText","maxDate","dateFormat","Information","villkor","arrow","faktablad","Velosophy","omocomLogo","velosophyLogo","veloMail","App","QSExists","exact","component","StoreLayout","OmocomRouter","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render"],"mappings":"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","file":"static/js/main.2a2092b6.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"errorWrapper\":\"Error_errorWrapper__PrA3b\",\"error\":\"Error_error__CDqZb\",\"thumbs\":\"Error_thumbs__9f4pt\",\"footer\":\"Error_footer__2-VHE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer\":\"Footer_footer__gFV3c\",\"contactInfo\":\"Footer_contactInfo__P5K6m\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"titleWrapper\":\"Title_titleWrapper__3JkSx\",\"title\":\"Title_title__2YmfD\",\"text\":\"Title_text__1TddV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"BlocketButton_button__RW6wb\",\"loading\":\"BlocketButton_loading__1iTFt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"blocketHeader\":\"BlocketHeader_blocketHeader__22cV5\",\"blocketHeaderLogo\":\"BlocketHeader_blocketHeaderLogo__2Lc3P\",\"blocketHeaderImg\":\"BlocketHeader_blocketHeaderImg__293WU\",\"BlocketHeaderBanner\":\"BlocketHeader_BlocketHeaderBanner__1zEYv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"titleImgWrapper\":\"TitleImg_titleImgWrapper__2XBUp\",\"titleImg\":\"TitleImg_titleImg__3cnX9\",\"logoImg\":\"TitleImg_logoImg__3YRO2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"email\":\"Email_email__2hxY0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"purchaseWrapper\":\"Purchase_purchaseWrapper__1j19S\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"soldItemName\":\"Information_soldItemName__3APLZ\",\"soldItemNamePretext\":\"Information_soldItemNamePretext__2kkje\",\"insuranceText\":\"Information_insuranceText__11Z55\",\"large\":\"Information_large__2ONYQ\",\"medium\":\"Information_medium__1BCFP\",\"compensationWrapper\":\"Information_compensationWrapper__2uMPO\",\"compensationTitle\":\"Information_compensationTitle__1flUp\",\"compensationItem\":\"Information_compensationItem__1L6uz\",\"compensationText\":\"Information_compensationText__oVRyH\",\"compensationIcon\":\"Information_compensationIcon__IVd7R\",\"linksWrapper\":\"Information_linksWrapper__3DMrl\",\"link\":\"Information_link__2zQvg\",\"insuranceSubheader\":\"Information_insuranceSubheader__3tFTE\"};","export default __webpack_public_path__ + \"static/media/omcom_blocket-color.ae97e9ea.svg\";","import logo from \"./Images/omcom_blocket-color.svg\";\n\nexport default function Logo() {\n    return (\n        <div className=\"logoImgWrapper\">\n            <img src={logo} alt={''} style={{height: '1rem'}} />\n        </div>\n    )\n}","import React from \"react\";\nimport Logo from \"../../Utils/Logo\";\nimport styles from \"./Footer.module.css\";\n\nfunction Footer() {\n    return (\n        <div className={styles.footer}>\n            <Logo />\n            <div className={styles.contactInfo}>\n                <span className={styles.footerMail}>\n                    <a href=\"tel:+46 (0) 8 520 278 70\" >+46 (0) 8 520 278 70</a> | <a href=\"mailto:hello@omocom.insurance\">hello@omocom.insurance</a>\n                </span>\n                <div>\n                    <a href=\"https://www.omocom.insurance\">www.omocom.insurance</a>\n                </div>\n            </div>\n        </div>\n    )\n}\n\nexport default Footer;","import React from \"react\";\nimport styles from \"./Title.module.css\";\n\nexport default function Title() {\n    return (\n    <div className={styles.titleWrapper}>\n        <h1 className={styles.title}>Köp dolda fel-försäkringen</h1>\n        <div className={styles.text}>\n            Grattis till ditt Blocket-fynd! Här kan du köpa en försäkring som skyddar\n            din produkt mot dolda fel - i upp till 14 dagar!\n        </div>\n    </div>\n    )\n}","export default __webpack_public_path__ + \"static/media/default-image.0812d243.png\";","import styles from \"./TitleImg.module.css\";\nimport defaultBackground from \"../../Utils/Images/default-image.png\";\nimport React, { useEffect } from \"react\";\n\nfunction TitleImg() {\n    useEffect(() => {\n        const queryString = require('query-string');\n        const parsed = queryString.parse(window.location.search);\n        \n        var image = parsed.adThumbnailUrl;\n        var container = document.getElementById(\"title-img\");\n    \n        if (container && image) {\n            image = image.replace('/thumb/', '/images/');\n            container.style.backgroundImage=`url(${image})`\n        }\n        else if (container && !image) {\n            container.style.backgroundImage=`url(${defaultBackground})`\n        }\n    }, [])\n\n    return (\n        <div className={styles.titleImgWrapper} >\n            <div id=\"title-img\" className={styles.titleImg} />\n        </div>\n    )\n}\n\nexport default TitleImg;","export default \"data:image/png;base64,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\"","import React from \"react\";\nimport styles from \"./Information.module.css\";\nimport CallMadeIcon from '@material-ui/icons/CallMade';\nimport checkMark from \"../../Utils/Images/checkmark.png\";\n\nexport function SoldItemName() {\n  const queryString = require('query-string');\n  const parsed = queryString.parse(window.location.search);\n\n  return (\n    <>\n      {parsed.adTitle &&\n        <div className={styles.soldItemName}>\n          <div className={styles.soldItemNamePretext}>\n            Försäkra\n        </div>\n          {parsed.adTitle}{parsed.salePrice && `, ${parsed.salePrice} kr`}\n        </div>\n      }\n    </>\n  )\n}\n\nexport function InsuranceText() {\n  return (\n    <div className={styles.insuranceText}>\n      <div className={styles.large}>\n        I samarbete med Blocket har vi på Omocom skapat en försäkring\n        som skyddar ditt fynd mot dolda fel i upp till 14 dagar - utan självrisk!\n      </div>\n      <div className={`${styles.insuranceSubheader} ${styles.medium}`}>\n        Vi vill att det ska kännas tryggt att handla begagnat.\n        Därför skapade vi Dolda fel-försäkringen som ger upp till 10.000 kr i ersättning för\n        reparation och reservdelar ifall din produkt inte fungerar som förväntat. Nedan kan du läsa mer\n        om vad som ingår och tveka inte på att kontakta oss på Omocom om du har några funderingar.\n      </div>\n    </div>\n  )\n}\n\nexport function CompensationList() {\n  return (\n    <ul className={styles.compensationWrapper}>\n      <li className={styles.compensationItem}>\n        <span className={styles.compensationIcon}><img src={checkMark} alt={''} /></span>\n        <div className={`${styles.compensationText} ${styles.medium}`}>Om funktioner såsom mikrofon, kamera, display eller högtalare slutar fungera</div>\n      </li>\n      <li className={styles.compensationItem}>\n        <span className={styles.compensationIcon}><img src={checkMark} alt={''} /></span>\n        <div className={`${styles.compensationText} ${styles.medium}`}>Om prylen har ett trasigt batteri eller om den till exempel glappar vid laddning</div>\n      </li>\n      <li className={styles.compensationItem}>\n        <span className={styles.compensationIcon}><img src={checkMark} alt={''} /></span>\n        <div className={`${styles.compensationText} ${styles.medium}`}>Försäkringen är giltig i 14 dagar och gäller för reservdelar eller lagning upp till maximalt 10 000 kr</div>\n      </li>\n      <li className={styles.compensationItem}>\n        <span className={styles.compensationIcon}><img src={checkMark} alt={''} /></span>\n        <div className={`${styles.compensationText} ${styles.medium}`}>Ingen självrisk</div>\n      </li>\n    </ul>\n  )\n}\n\nexport function Disclaimer() {\n  return (\n    <div className={`${styles.compensationText} ${styles.medium}`}>Vid konstaterat dolt fel lämnar försäkringen som mest ersättning upp till maxnivån i ditt försäkringspaket. Ersättningen uppgår dock aldrig till mer än det pris som du betalade för varan.</div>\n  )\n}\n\nexport function ExternalLinks() {\n  return (\n    <div className={styles.linksWrapper}>\n      <div className={styles.link}>\n        <a target=\"_blank\" rel=\"noreferrer\" href=\"https://www.omocom.insurance/Blocket/Terms\">Fullständiga villkor</a>\n        <span>\n          <CallMadeIcon style={{ 'height': '10px', 'width': '10px', 'paddingLeft': '5px' }} />\n        </span>\n      </div>\n\t  <div className={styles.link}>\n        <a target=\"_blank\" rel=\"noreferrer\" href=\"https://www.omocom.insurance/Blocket/IPID\">Förköpsinformation</a>\n        <span>\n          <CallMadeIcon style={{ 'height': '10px', 'width': '10px', 'paddingLeft': '5px' }} />\n        </span>\n      </div>\n    </div>\n  )\n}\n\nconst Information = { SoldItemName, InsuranceText, CompensationList, Disclaimer, ExternalLinks }\n\nexport default Information;\n","import React from \"react\";\nimport styles from \"./Email.module.css\";\n\ninterface IProps {\n    email: string;\n    setEmail: Function;\n}\n\nexport default function InsuranceText(props: IProps) {\n    return (\n        <input type='email' id='userEmail' className={styles.email} placeholder='E-postadress' value={props.email} onChange={(e) => { props.setEmail(e.currentTarget.value) }} />\n    )\n}","export default __webpack_public_path__ + \"static/media/check_white.2b769704.svg\";","import React from \"react\";\nimport styles from \"./Package.module.css\";\nimport checkMark from \"../../Utils/Images/check_white.svg\";\nimport { PriceListItem } from \"../../BackendApi/OmocomStoreApi\";\n\ninterface SelectPackageProps {\n    packages: any;\n    selectedPackage: number;\n    setSelectedPackage: Function;\n}\n\ninterface PackageProps {\n    defaultSelected: number,\n    item: PriceListItem,\n    setPackage: Function,\n}\n\nfunction SelectPackage(props: SelectPackageProps) {\n    const setAvailablePackages = () => {\n        var packages = [] as any;\n        props.packages && props.packages.forEach((item: PriceListItem) => {\n            packages.push(\n                <Package key={item.name} item={item} defaultSelected={props.selectedPackage} setPackage={props.setSelectedPackage} />\n            )\n        });\n        return packages;\n    }\n\n    return (\n        <div className={styles.packagesWrapper}>\n            <div className={styles.packagesHeader}>\n                Välj försäkringspaket\n            </div>\n            {setAvailablePackages()}\n        </div>\n    )\n}\n\nfunction Package(props: PackageProps) {\n    return (\n        <div className={styles.package} onChange={e => props.setPackage(parseInt((e.target as HTMLInputElement).value))}>\n            <input type=\"radio\" defaultChecked={props.item.upTo && props.defaultSelected === props.item.upTo.amount} id={props.item.name} name=\"packages\" value={props.item.upTo && props.item.upTo.amount} />\n            <label className={styles.packageLabel} htmlFor={props.item.name}>\n                <div className={styles.packageContent}>\n                    <div className={styles.packageTitle}>\n                        {props.item.name}\n                    </div>\n                    <div className={styles.packagePrice}>\n                        {props.item.premium && props.item.premium.amount}kr\n                </div>\n                    <div className={`${styles.packageText}`}>\n                        Ersätter dolda fel upp till maximalt {props.item.upTo && props.item.upTo.amount} kr\n                </div>\n                </div>\n                <span className={styles.packageButtonWrapper}>\n                    <span className={`${styles.packageButton} ${styles.unselected}`}>VÄLJ</span>\n                    <img className={`${styles.packageButton} ${styles.selected}`} alt={'✓'} src={checkMark} />\n                </span>\n            </label>\n        </div>\n    )\n}\n\nexport default SelectPackage;","import React from \"react\";\nimport styles from \"./BlocketButton.module.css\";\n\ninterface BlocketButtonProps {\n    loading: boolean,\n    value: string,\n    onClick: any\n}\n\nexport default function BlocketButton(props: BlocketButtonProps) {\n    return (\n        <input className={props.loading ? `${styles.button} ${styles.loading}` :\n            `${styles.button}`} type=\"button\" value={props.value} disabled={props.loading}\n            onClick={props.onClick} />\n    )\n}","//----------------------\n// <auto-generated>\n//     Generated using the NSwag toolchain v14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// </auto-generated>\n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nimport { OmocomStoreApiClientConfig } from \"./OmocomStoreApiClientConfig\";\nexport class OmocomStoreApiBase {\n    private readonly config: OmocomStoreApiClientConfig;\n\n    constructor(config: OmocomStoreApiClientConfig) {\n        this.config = config;    \n    }\n\n    protected transformOptions(options: RequestInit) {\n        options.headers = {\n            ...options.headers,\n            Authorization: `Bearer ${this.config.identityToken}`,\n        };\n\n        return Promise.resolve(options);\n    }\n\n    protected getBaseUrl(baseUrl: string, path?: string) {\n        return this.config.baseUrl;\n    }\n\n}\n\nexport interface IBlocketInsuranceClient {\n\n    purchaseInsuranceBankId(platformId: string, marketName: string, req: InsuranceBankIdReq): Promise<InsuranceBankIdResp>;\n\n    purchaseInsurance(platformId: string, marketName: string, req: InsuranceBlocketReq): Promise<InsuranceBlocketResp>;\n}\n\nexport class BlocketInsuranceClient extends OmocomStoreApiBase implements IBlocketInsuranceClient {\n    private http: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> };\n    private baseUrl: string;\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n    constructor(configuration: OmocomStoreApiClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> }) {\n        super(configuration);\n        this.http = http ? http : window as any;\n        this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n    }\n\n    purchaseInsuranceBankId(platformId: string, marketName: string, req: InsuranceBankIdReq): Promise<InsuranceBankIdResp> {\n        let url_ = this.baseUrl + \"/api/BlocketInsurance/{platformId}/{marketName}/PurchaseInsuranceBankId\";\n        if (platformId === undefined || platformId === null)\n            throw new Error(\"The parameter 'platformId' must be defined.\");\n        url_ = url_.replace(\"{platformId}\", encodeURIComponent(\"\" + platformId));\n        if (marketName === undefined || marketName === null)\n            throw new Error(\"The parameter 'marketName' must be defined.\");\n        url_ = url_.replace(\"{marketName}\", encodeURIComponent(\"\" + marketName));\n        url_ = url_.replace(/[?&]$/, \"\");\n\n        const content_ = JSON.stringify(req);\n\n        let options_: RequestInit = {\n            body: content_,\n            method: \"POST\",\n            headers: {\n                \"Content-Type\": \"application/json\",\n                \"Accept\": \"application/json\"\n            }\n        };\n\n        return this.transformOptions(options_).then(transformedOptions_ => {\n            return this.http.fetch(url_, transformedOptions_);\n        }).then((_response: Response) => {\n            return this.processPurchaseInsuranceBankId(_response);\n        });\n    }\n\n    protected processPurchaseInsuranceBankId(response: Response): Promise<InsuranceBankIdResp> {\n        const status = response.status;\n        let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n        if (status === 200) {\n            return response.text().then((_responseText) => {\n            let result200: any = null;\n            let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n            result200 = InsuranceBankIdResp.fromJS(resultData200);\n            return result200;\n            });\n        } else if (status !== 200 && status !== 204) {\n            return response.text().then((_responseText) => {\n            return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n            });\n        }\n        return Promise.resolve<InsuranceBankIdResp>(null as any);\n    }\n\n    purchaseInsurance(platformId: string, marketName: string, req: InsuranceBlocketReq): Promise<InsuranceBlocketResp> {\n        let url_ = this.baseUrl + \"/api/BlocketInsurance/{platformId}/{marketName}/purchaseInsurance\";\n        if (platformId === undefined || platformId === null)\n            throw new Error(\"The parameter 'platformId' must be defined.\");\n        url_ = url_.replace(\"{platformId}\", encodeURIComponent(\"\" + platformId));\n        if (marketName === undefined || marketName === null)\n            throw new Error(\"The parameter 'marketName' must be defined.\");\n        url_ = url_.replace(\"{marketName}\", encodeURIComponent(\"\" + marketName));\n        url_ = url_.replace(/[?&]$/, \"\");\n\n        const content_ = JSON.stringify(req);\n\n        let options_: RequestInit = {\n            body: content_,\n            method: \"POST\",\n            headers: {\n                \"Content-Type\": \"application/json\",\n                \"Accept\": \"application/json\"\n            }\n        };\n\n        return this.transformOptions(options_).then(transformedOptions_ => {\n            return this.http.fetch(url_, transformedOptions_);\n        }).then((_response: Response) => {\n            return this.processPurchaseInsurance(_response);\n        });\n    }\n\n    protected processPurchaseInsurance(response: Response): Promise<InsuranceBlocketResp> {\n        const status = response.status;\n        let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n        if (status === 200) {\n            return response.text().then((_responseText) => {\n            let result200: any = null;\n            let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n            result200 = InsuranceBlocketResp.fromJS(resultData200);\n            return result200;\n            });\n        } else if (status !== 200 && status !== 204) {\n            return response.text().then((_responseText) => {\n            return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n            });\n        }\n        return Promise.resolve<InsuranceBlocketResp>(null as any);\n    }\n}\n\nexport interface IInsuranceClient {\n\n    create(platformId: string, marketName: string, req: InsuranceStoreReq): Promise<InsuranceStoreResp>;\n\n    purchase(platformId: string, marketName: string, req: InsuranceStoreReq): Promise<InsuranceStoreResp>;\n}\n\nexport class InsuranceClient extends OmocomStoreApiBase implements IInsuranceClient {\n    private http: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> };\n    private baseUrl: string;\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n    constructor(configuration: OmocomStoreApiClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> }) {\n        super(configuration);\n        this.http = http ? http : window as any;\n        this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n    }\n\n    create(platformId: string, marketName: string, req: InsuranceStoreReq): Promise<InsuranceStoreResp> {\n        let url_ = this.baseUrl + \"/api/{platformId}/{marketName}/Insurance/create\";\n        if (platformId === undefined || platformId === null)\n            throw new Error(\"The parameter 'platformId' must be defined.\");\n        url_ = url_.replace(\"{platformId}\", encodeURIComponent(\"\" + platformId));\n        if (marketName === undefined || marketName === null)\n            throw new Error(\"The parameter 'marketName' must be defined.\");\n        url_ = url_.replace(\"{marketName}\", encodeURIComponent(\"\" + marketName));\n        url_ = url_.replace(/[?&]$/, \"\");\n\n        const content_ = JSON.stringify(req);\n\n        let options_: RequestInit = {\n            body: content_,\n            method: \"POST\",\n            headers: {\n                \"Content-Type\": \"application/json\",\n                \"Accept\": \"application/json\"\n            }\n        };\n\n        return this.transformOptions(options_).then(transformedOptions_ => {\n            return this.http.fetch(url_, transformedOptions_);\n        }).then((_response: Response) => {\n            return this.processCreate(_response);\n        });\n    }\n\n    protected processCreate(response: Response): Promise<InsuranceStoreResp> {\n        const status = response.status;\n        let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n        if (status === 200) {\n            return response.text().then((_responseText) => {\n            let result200: any = null;\n            let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n            result200 = InsuranceStoreResp.fromJS(resultData200);\n            return result200;\n            });\n        } else if (status !== 200 && status !== 204) {\n            return response.text().then((_responseText) => {\n            return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n            });\n        }\n        return Promise.resolve<InsuranceStoreResp>(null as any);\n    }\n\n    purchase(platformId: string, marketName: string, req: InsuranceStoreReq): Promise<InsuranceStoreResp> {\n        let url_ = this.baseUrl + \"/api/{platformId}/{marketName}/Insurance/purchase\";\n        if (platformId === undefined || platformId === null)\n            throw new Error(\"The parameter 'platformId' must be defined.\");\n        url_ = url_.replace(\"{platformId}\", encodeURIComponent(\"\" + platformId));\n        if (marketName === undefined || marketName === null)\n            throw new Error(\"The parameter 'marketName' must be defined.\");\n        url_ = url_.replace(\"{marketName}\", encodeURIComponent(\"\" + marketName));\n        url_ = url_.replace(/[?&]$/, \"\");\n\n        const content_ = JSON.stringify(req);\n\n        let options_: RequestInit = {\n            body: content_,\n            method: \"POST\",\n            headers: {\n                \"Content-Type\": \"application/json\",\n                \"Accept\": \"application/json\"\n            }\n        };\n\n        return this.transformOptions(options_).then(transformedOptions_ => {\n            return this.http.fetch(url_, transformedOptions_);\n        }).then((_response: Response) => {\n            return this.processPurchase(_response);\n        });\n    }\n\n    protected processPurchase(response: Response): Promise<InsuranceStoreResp> {\n        const status = response.status;\n        let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n        if (status === 200) {\n            return response.text().then((_responseText) => {\n            let result200: any = null;\n            let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n            result200 = InsuranceStoreResp.fromJS(resultData200);\n            return result200;\n            });\n        } else if (status !== 200 && status !== 204) {\n            return response.text().then((_responseText) => {\n            return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n            });\n        }\n        return Promise.resolve<InsuranceStoreResp>(null as any);\n    }\n}\n\nexport interface IInsuranceInfoClient {\n\n    getPriceList(platformId: string, marketName: string): Promise<PriceListDto>;\n}\n\nexport class InsuranceInfoClient extends OmocomStoreApiBase implements IInsuranceInfoClient {\n    private http: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> };\n    private baseUrl: string;\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n    constructor(configuration: OmocomStoreApiClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> }) {\n        super(configuration);\n        this.http = http ? http : window as any;\n        this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n    }\n\n    getPriceList(platformId: string, marketName: string): Promise<PriceListDto> {\n        let url_ = this.baseUrl + \"/api/InsuranceInfo/{platformId}/{marketName}\";\n        if (platformId === undefined || platformId === null)\n            throw new Error(\"The parameter 'platformId' must be defined.\");\n        url_ = url_.replace(\"{platformId}\", encodeURIComponent(\"\" + platformId));\n        if (marketName === undefined || marketName === null)\n            throw new Error(\"The parameter 'marketName' must be defined.\");\n        url_ = url_.replace(\"{marketName}\", encodeURIComponent(\"\" + marketName));\n        url_ = url_.replace(/[?&]$/, \"\");\n\n        let options_: RequestInit = {\n            method: \"GET\",\n            headers: {\n                \"Accept\": \"application/json\"\n            }\n        };\n\n        return this.transformOptions(options_).then(transformedOptions_ => {\n            return this.http.fetch(url_, transformedOptions_);\n        }).then((_response: Response) => {\n            return this.processGetPriceList(_response);\n        });\n    }\n\n    protected processGetPriceList(response: Response): Promise<PriceListDto> {\n        const status = response.status;\n        let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n        if (status === 200) {\n            return response.text().then((_responseText) => {\n            let result200: any = null;\n            let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n            result200 = PriceListDto.fromJS(resultData200);\n            return result200;\n            });\n        } else if (status !== 200 && status !== 204) {\n            return response.text().then((_responseText) => {\n            return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n            });\n        }\n        return Promise.resolve<PriceListDto>(null as any);\n    }\n}\n\nexport interface IPingClient {\n\n    get(): Promise<FileResponse>;\n}\n\nexport class PingClient extends OmocomStoreApiBase implements IPingClient {\n    private http: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> };\n    private baseUrl: string;\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n    constructor(configuration: OmocomStoreApiClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> }) {\n        super(configuration);\n        this.http = http ? http : window as any;\n        this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n    }\n\n    get(): Promise<FileResponse> {\n        let url_ = this.baseUrl + \"/api/Ping\";\n        url_ = url_.replace(/[?&]$/, \"\");\n\n        let options_: RequestInit = {\n            method: \"GET\",\n            headers: {\n                \"Accept\": \"application/octet-stream\"\n            }\n        };\n\n        return this.transformOptions(options_).then(transformedOptions_ => {\n            return this.http.fetch(url_, transformedOptions_);\n        }).then((_response: Response) => {\n            return this.processGet(_response);\n        });\n    }\n\n    protected processGet(response: Response): Promise<FileResponse> {\n        const status = response.status;\n        let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n        if (status === 200 || status === 206) {\n            const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n            if (fileName) {\n                fileName = decodeURIComponent(fileName);\n            } else {\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n            }\n            return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n        } else if (status !== 200 && status !== 204) {\n            return response.text().then((_responseText) => {\n            return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n            });\n        }\n        return Promise.resolve<FileResponse>(null as any);\n    }\n}\n\nexport interface IProductInfoClient {\n\n    getProductInfo(platformId: string, marketName: string): Promise<ProductInfoResp>;\n}\n\nexport class ProductInfoClient extends OmocomStoreApiBase implements IProductInfoClient {\n    private http: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> };\n    private baseUrl: string;\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n    constructor(configuration: OmocomStoreApiClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> }) {\n        super(configuration);\n        this.http = http ? http : window as any;\n        this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n    }\n\n    getProductInfo(platformId: string, marketName: string): Promise<ProductInfoResp> {\n        let url_ = this.baseUrl + \"/api/{platformId}/{marketName}/ProductInfo\";\n        if (platformId === undefined || platformId === null)\n            throw new Error(\"The parameter 'platformId' must be defined.\");\n        url_ = url_.replace(\"{platformId}\", encodeURIComponent(\"\" + platformId));\n        if (marketName === undefined || marketName === null)\n            throw new Error(\"The parameter 'marketName' must be defined.\");\n        url_ = url_.replace(\"{marketName}\", encodeURIComponent(\"\" + marketName));\n        url_ = url_.replace(/[?&]$/, \"\");\n\n        let options_: RequestInit = {\n            method: \"GET\",\n            headers: {\n                \"Accept\": \"application/json\"\n            }\n        };\n\n        return this.transformOptions(options_).then(transformedOptions_ => {\n            return this.http.fetch(url_, transformedOptions_);\n        }).then((_response: Response) => {\n            return this.processGetProductInfo(_response);\n        });\n    }\n\n    protected processGetProductInfo(response: Response): Promise<ProductInfoResp> {\n        const status = response.status;\n        let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n        if (status === 200) {\n            return response.text().then((_responseText) => {\n            let result200: any = null;\n            let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n            result200 = ProductInfoResp.fromJS(resultData200);\n            return result200;\n            });\n        } else if (status !== 200 && status !== 204) {\n            return response.text().then((_responseText) => {\n            return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n            });\n        }\n        return Promise.resolve<ProductInfoResp>(null as any);\n    }\n}\n\nexport interface IAuthClient {\n\n    generateToken(): Promise<AuthTokenResp>;\n\n    validateToken(identityTokenReq: IdentityTokenReq): Promise<IdentityTokenResp>;\n}\n\nexport class AuthClient extends OmocomStoreApiBase implements IAuthClient {\n    private http: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> };\n    private baseUrl: string;\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n    constructor(configuration: OmocomStoreApiClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> }) {\n        super(configuration);\n        this.http = http ? http : window as any;\n        this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n    }\n\n    generateToken(): Promise<AuthTokenResp> {\n        let url_ = this.baseUrl + \"/api/Auth/token\";\n        url_ = url_.replace(/[?&]$/, \"\");\n\n        let options_: RequestInit = {\n            method: \"GET\",\n            headers: {\n                \"Accept\": \"application/json\"\n            }\n        };\n\n        return this.transformOptions(options_).then(transformedOptions_ => {\n            return this.http.fetch(url_, transformedOptions_);\n        }).then((_response: Response) => {\n            return this.processGenerateToken(_response);\n        });\n    }\n\n    protected processGenerateToken(response: Response): Promise<AuthTokenResp> {\n        const status = response.status;\n        let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n        if (status === 200) {\n            return response.text().then((_responseText) => {\n            let result200: any = null;\n            let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n            result200 = AuthTokenResp.fromJS(resultData200);\n            return result200;\n            });\n        } else if (status !== 200 && status !== 204) {\n            return response.text().then((_responseText) => {\n            return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n            });\n        }\n        return Promise.resolve<AuthTokenResp>(null as any);\n    }\n\n    validateToken(identityTokenReq: IdentityTokenReq): Promise<IdentityTokenResp> {\n        let url_ = this.baseUrl + \"/api/Auth/validate\";\n        url_ = url_.replace(/[?&]$/, \"\");\n\n        const content_ = JSON.stringify(identityTokenReq);\n\n        let options_: RequestInit = {\n            body: content_,\n            method: \"POST\",\n            headers: {\n                \"Content-Type\": \"application/json\",\n                \"Accept\": \"application/json\"\n            }\n        };\n\n        return this.transformOptions(options_).then(transformedOptions_ => {\n            return this.http.fetch(url_, transformedOptions_);\n        }).then((_response: Response) => {\n            return this.processValidateToken(_response);\n        });\n    }\n\n    protected processValidateToken(response: Response): Promise<IdentityTokenResp> {\n        const status = response.status;\n        let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n        if (status === 200) {\n            return response.text().then((_responseText) => {\n            let result200: any = null;\n            let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n            result200 = IdentityTokenResp.fromJS(resultData200);\n            return result200;\n            });\n        } else if (status !== 200 && status !== 204) {\n            return response.text().then((_responseText) => {\n            return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n            });\n        }\n        return Promise.resolve<IdentityTokenResp>(null as any);\n    }\n}\n\nexport class InsuranceBankIdResp implements IInsuranceBankIdResp {\n    paymentUrl?: string;\n\n    constructor(data?: IInsuranceBankIdResp) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.paymentUrl = _data[\"paymentUrl\"];\n        }\n    }\n\n    static fromJS(data: any): InsuranceBankIdResp {\n        data = typeof data === 'object' ? data : {};\n        let result = new InsuranceBankIdResp();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"paymentUrl\"] = this.paymentUrl;\n        return data;\n    }\n}\n\nexport interface IInsuranceBankIdResp {\n    paymentUrl?: string;\n}\n\nexport class InsuranceReqBase implements IInsuranceReqBase {\n    firstName?: string | undefined;\n    lastName?: string | undefined;\n    ssn?: SocialSecurityNumber | undefined;\n    phoneNumber?: string | undefined;\n    emailAddress?: string;\n    userCultureInfo!: string;\n\n    constructor(data?: IInsuranceReqBase) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.firstName = _data[\"firstName\"];\n            this.lastName = _data[\"lastName\"];\n            this.ssn = _data[\"ssn\"] ? SocialSecurityNumber.fromJS(_data[\"ssn\"]) : <any>undefined;\n            this.phoneNumber = _data[\"phoneNumber\"];\n            this.emailAddress = _data[\"emailAddress\"];\n            this.userCultureInfo = _data[\"userCultureInfo\"];\n        }\n    }\n\n    static fromJS(data: any): InsuranceReqBase {\n        data = typeof data === 'object' ? data : {};\n        let result = new InsuranceReqBase();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"firstName\"] = this.firstName;\n        data[\"lastName\"] = this.lastName;\n        data[\"ssn\"] = this.ssn ? this.ssn.toJSON() : <any>undefined;\n        data[\"phoneNumber\"] = this.phoneNumber;\n        data[\"emailAddress\"] = this.emailAddress;\n        data[\"userCultureInfo\"] = this.userCultureInfo;\n        return data;\n    }\n}\n\nexport interface IInsuranceReqBase {\n    firstName?: string | undefined;\n    lastName?: string | undefined;\n    ssn?: SocialSecurityNumber | undefined;\n    phoneNumber?: string | undefined;\n    emailAddress?: string;\n    userCultureInfo: string;\n}\n\nexport class InsuranceBlocketReq extends InsuranceReqBase implements IInsuranceBlocketReq {\n    adTitle!: string;\n    listId!: string;\n    isBlocketPaket!: boolean;\n    fullUrl!: string;\n    adPrice?: MonetaryValue | undefined;\n    salePrice?: MonetaryValue | undefined;\n    swedishSsn?: string | undefined;\n    adText?: string | undefined;\n    extraImages?: string | undefined;\n    insuredAmount!: MonetaryValue;\n\n    constructor(data?: IInsuranceBlocketReq) {\n        super(data);\n        if (!data) {\n            this.insuredAmount = new MonetaryValue();\n        }\n    }\n\n    init(_data?: any) {\n        super.init(_data);\n        if (_data) {\n            this.adTitle = _data[\"adTitle\"];\n            this.listId = _data[\"listId\"];\n            this.isBlocketPaket = _data[\"isBlocketPaket\"];\n            this.fullUrl = _data[\"fullUrl\"];\n            this.adPrice = _data[\"adPrice\"] ? MonetaryValue.fromJS(_data[\"adPrice\"]) : <any>undefined;\n            this.salePrice = _data[\"salePrice\"] ? MonetaryValue.fromJS(_data[\"salePrice\"]) : <any>undefined;\n            this.swedishSsn = _data[\"swedishSsn\"];\n            this.adText = _data[\"adText\"];\n            this.extraImages = _data[\"extraImages\"];\n            this.insuredAmount = _data[\"insuredAmount\"] ? MonetaryValue.fromJS(_data[\"insuredAmount\"]) : new MonetaryValue();\n        }\n    }\n\n    static fromJS(data: any): InsuranceBlocketReq {\n        data = typeof data === 'object' ? data : {};\n        let result = new InsuranceBlocketReq();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"adTitle\"] = this.adTitle;\n        data[\"listId\"] = this.listId;\n        data[\"isBlocketPaket\"] = this.isBlocketPaket;\n        data[\"fullUrl\"] = this.fullUrl;\n        data[\"adPrice\"] = this.adPrice ? this.adPrice.toJSON() : <any>undefined;\n        data[\"salePrice\"] = this.salePrice ? this.salePrice.toJSON() : <any>undefined;\n        data[\"swedishSsn\"] = this.swedishSsn;\n        data[\"adText\"] = this.adText;\n        data[\"extraImages\"] = this.extraImages;\n        data[\"insuredAmount\"] = this.insuredAmount ? this.insuredAmount.toJSON() : <any>undefined;\n        super.toJSON(data);\n        return data;\n    }\n}\n\nexport interface IInsuranceBlocketReq extends IInsuranceReqBase {\n    adTitle: string;\n    listId: string;\n    isBlocketPaket: boolean;\n    fullUrl: string;\n    adPrice?: MonetaryValue | undefined;\n    salePrice?: MonetaryValue | undefined;\n    swedishSsn?: string | undefined;\n    adText?: string | undefined;\n    extraImages?: string | undefined;\n    insuredAmount: MonetaryValue;\n}\n\nexport class InsuranceBankIdReq extends InsuranceBlocketReq implements IInsuranceBankIdReq {\n    identityTokenReq!: IdentityTokenReq;\n\n    constructor(data?: IInsuranceBankIdReq) {\n        super(data);\n        if (!data) {\n            this.identityTokenReq = new IdentityTokenReq();\n        }\n    }\n\n    init(_data?: any) {\n        super.init(_data);\n        if (_data) {\n            this.identityTokenReq = _data[\"identityTokenReq\"] ? IdentityTokenReq.fromJS(_data[\"identityTokenReq\"]) : new IdentityTokenReq();\n        }\n    }\n\n    static fromJS(data: any): InsuranceBankIdReq {\n        data = typeof data === 'object' ? data : {};\n        let result = new InsuranceBankIdReq();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"identityTokenReq\"] = this.identityTokenReq ? this.identityTokenReq.toJSON() : <any>undefined;\n        super.toJSON(data);\n        return data;\n    }\n}\n\nexport interface IInsuranceBankIdReq extends IInsuranceBlocketReq {\n    identityTokenReq: IdentityTokenReq;\n}\n\nexport class IdentityTokenReq implements IIdentityTokenReq {\n    provider?: string;\n    authToken?: string;\n    identityToken?: string;\n\n    constructor(data?: IIdentityTokenReq) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.provider = _data[\"provider\"];\n            this.authToken = _data[\"authToken\"];\n            this.identityToken = _data[\"identityToken\"];\n        }\n    }\n\n    static fromJS(data: any): IdentityTokenReq {\n        data = typeof data === 'object' ? data : {};\n        let result = new IdentityTokenReq();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"provider\"] = this.provider;\n        data[\"authToken\"] = this.authToken;\n        data[\"identityToken\"] = this.identityToken;\n        return data;\n    }\n}\n\nexport interface IIdentityTokenReq {\n    provider?: string;\n    authToken?: string;\n    identityToken?: string;\n}\n\nexport class MonetaryValue implements IMonetaryValue {\n    amount?: number;\n    currency!: string;\n\n    constructor(data?: IMonetaryValue) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.amount = _data[\"amount\"];\n            this.currency = _data[\"currency\"];\n        }\n    }\n\n    static fromJS(data: any): MonetaryValue {\n        data = typeof data === 'object' ? data : {};\n        let result = new MonetaryValue();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"amount\"] = this.amount;\n        data[\"currency\"] = this.currency;\n        return data;\n    }\n}\n\nexport interface IMonetaryValue {\n    amount?: number;\n    currency: string;\n}\n\nexport class SocialSecurityNumber implements ISocialSecurityNumber {\n    ssn!: string;\n    country!: string;\n\n    constructor(data?: ISocialSecurityNumber) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.ssn = _data[\"ssn\"];\n            this.country = _data[\"country\"];\n        }\n    }\n\n    static fromJS(data: any): SocialSecurityNumber {\n        data = typeof data === 'object' ? data : {};\n        let result = new SocialSecurityNumber();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"ssn\"] = this.ssn;\n        data[\"country\"] = this.country;\n        return data;\n    }\n}\n\nexport interface ISocialSecurityNumber {\n    ssn: string;\n    country: string;\n}\n\nexport class InsuranceBlocketResp implements IInsuranceBlocketResp {\n    paymentUrl?: string;\n\n    constructor(data?: IInsuranceBlocketResp) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.paymentUrl = _data[\"paymentUrl\"];\n        }\n    }\n\n    static fromJS(data: any): InsuranceBlocketResp {\n        data = typeof data === 'object' ? data : {};\n        let result = new InsuranceBlocketResp();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"paymentUrl\"] = this.paymentUrl;\n        return data;\n    }\n}\n\nexport interface IInsuranceBlocketResp {\n    paymentUrl?: string;\n}\n\nexport class InsuranceStoreResp implements IInsuranceStoreResp {\n    paymentUrl?: string | undefined;\n    createdInsurances?: InsuranceResp[] | undefined;\n\n    constructor(data?: IInsuranceStoreResp) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.paymentUrl = _data[\"paymentUrl\"];\n            if (Array.isArray(_data[\"createdInsurances\"])) {\n                this.createdInsurances = [] as any;\n                for (let item of _data[\"createdInsurances\"])\n                    this.createdInsurances!.push(InsuranceResp.fromJS(item));\n            }\n        }\n    }\n\n    static fromJS(data: any): InsuranceStoreResp {\n        data = typeof data === 'object' ? data : {};\n        let result = new InsuranceStoreResp();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"paymentUrl\"] = this.paymentUrl;\n        if (Array.isArray(this.createdInsurances)) {\n            data[\"createdInsurances\"] = [];\n            for (let item of this.createdInsurances)\n                data[\"createdInsurances\"].push(item.toJSON());\n        }\n        return data;\n    }\n}\n\nexport interface IInsuranceStoreResp {\n    paymentUrl?: string | undefined;\n    createdInsurances?: InsuranceResp[] | undefined;\n}\n\nexport class InsuranceResp implements IInsuranceResp {\n    platformId!: string;\n    marketName!: string;\n    objectId?: string;\n    insuredAmount?: MonetaryValue | undefined;\n    insuranceStartDateTime?: Date;\n    insuranceEndDateTime?: Date;\n    counterpartHandle!: string;\n    properties?: ExternalProperty[] | undefined;\n    product!: string;\n    productVersion!: string;\n    id!: string;\n    status!: InsuranceStatus;\n    premium!: MonetaryValue;\n    premiumTax!: MonetaryValue;\n    addOns?: InsurancePremiumSection[] | undefined;\n\n    constructor(data?: IInsuranceResp) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n        if (!data) {\n            this.premium = new MonetaryValue();\n            this.premiumTax = new MonetaryValue();\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.platformId = _data[\"platformId\"];\n            this.marketName = _data[\"marketName\"];\n            this.objectId = _data[\"objectId\"];\n            this.insuredAmount = _data[\"insuredAmount\"] ? MonetaryValue.fromJS(_data[\"insuredAmount\"]) : <any>undefined;\n            this.insuranceStartDateTime = _data[\"insuranceStartDateTime\"] ? new Date(_data[\"insuranceStartDateTime\"].toString()) : <any>undefined;\n            this.insuranceEndDateTime = _data[\"insuranceEndDateTime\"] ? new Date(_data[\"insuranceEndDateTime\"].toString()) : <any>undefined;\n            this.counterpartHandle = _data[\"counterpartHandle\"];\n            if (Array.isArray(_data[\"properties\"])) {\n                this.properties = [] as any;\n                for (let item of _data[\"properties\"])\n                    this.properties!.push(ExternalProperty.fromJS(item));\n            }\n            this.product = _data[\"product\"];\n            this.productVersion = _data[\"productVersion\"];\n            this.id = _data[\"id\"];\n            this.status = _data[\"status\"];\n            this.premium = _data[\"premium\"] ? MonetaryValue.fromJS(_data[\"premium\"]) : new MonetaryValue();\n            this.premiumTax = _data[\"premiumTax\"] ? MonetaryValue.fromJS(_data[\"premiumTax\"]) : new MonetaryValue();\n            if (Array.isArray(_data[\"addOns\"])) {\n                this.addOns = [] as any;\n                for (let item of _data[\"addOns\"])\n                    this.addOns!.push(InsurancePremiumSection.fromJS(item));\n            }\n        }\n    }\n\n    static fromJS(data: any): InsuranceResp {\n        data = typeof data === 'object' ? data : {};\n        let result = new InsuranceResp();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"platformId\"] = this.platformId;\n        data[\"marketName\"] = this.marketName;\n        data[\"objectId\"] = this.objectId;\n        data[\"insuredAmount\"] = this.insuredAmount ? this.insuredAmount.toJSON() : <any>undefined;\n        data[\"insuranceStartDateTime\"] = this.insuranceStartDateTime ? this.insuranceStartDateTime.toISOString() : <any>undefined;\n        data[\"insuranceEndDateTime\"] = this.insuranceEndDateTime ? this.insuranceEndDateTime.toISOString() : <any>undefined;\n        data[\"counterpartHandle\"] = this.counterpartHandle;\n        if (Array.isArray(this.properties)) {\n            data[\"properties\"] = [];\n            for (let item of this.properties)\n                data[\"properties\"].push(item.toJSON());\n        }\n        data[\"product\"] = this.product;\n        data[\"productVersion\"] = this.productVersion;\n        data[\"id\"] = this.id;\n        data[\"status\"] = this.status;\n        data[\"premium\"] = this.premium ? this.premium.toJSON() : <any>undefined;\n        data[\"premiumTax\"] = this.premiumTax ? this.premiumTax.toJSON() : <any>undefined;\n        if (Array.isArray(this.addOns)) {\n            data[\"addOns\"] = [];\n            for (let item of this.addOns)\n                data[\"addOns\"].push(item.toJSON());\n        }\n        return data;\n    }\n}\n\nexport interface IInsuranceResp {\n    platformId: string;\n    marketName: string;\n    objectId?: string;\n    insuredAmount?: MonetaryValue | undefined;\n    insuranceStartDateTime?: Date;\n    insuranceEndDateTime?: Date;\n    counterpartHandle: string;\n    properties?: ExternalProperty[] | undefined;\n    product: string;\n    productVersion: string;\n    id: string;\n    status: InsuranceStatus;\n    premium: MonetaryValue;\n    premiumTax: MonetaryValue;\n    addOns?: InsurancePremiumSection[] | undefined;\n}\n\nexport class ExternalProperty implements IExternalProperty {\n    type?: ExternalPropertyType | undefined;\n    name?: string | undefined;\n    value?: string | undefined;\n    description?: string | undefined;\n    monetaryValue?: MonetaryValue | undefined;\n    addressValue?: Address | undefined;\n    dateTimeValue?: Date | undefined;\n\n    constructor(data?: IExternalProperty) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.type = _data[\"type\"];\n            this.name = _data[\"name\"];\n            this.value = _data[\"value\"];\n            this.description = _data[\"description\"];\n            this.monetaryValue = _data[\"monetaryValue\"] ? MonetaryValue.fromJS(_data[\"monetaryValue\"]) : <any>undefined;\n            this.addressValue = _data[\"addressValue\"] ? Address.fromJS(_data[\"addressValue\"]) : <any>undefined;\n            this.dateTimeValue = _data[\"dateTimeValue\"] ? new Date(_data[\"dateTimeValue\"].toString()) : <any>undefined;\n        }\n    }\n\n    static fromJS(data: any): ExternalProperty {\n        data = typeof data === 'object' ? data : {};\n        let result = new ExternalProperty();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"type\"] = this.type;\n        data[\"name\"] = this.name;\n        data[\"value\"] = this.value;\n        data[\"description\"] = this.description;\n        data[\"monetaryValue\"] = this.monetaryValue ? this.monetaryValue.toJSON() : <any>undefined;\n        data[\"addressValue\"] = this.addressValue ? this.addressValue.toJSON() : <any>undefined;\n        data[\"dateTimeValue\"] = this.dateTimeValue ? this.dateTimeValue.toISOString() : <any>undefined;\n        return data;\n    }\n}\n\nexport interface IExternalProperty {\n    type?: ExternalPropertyType | undefined;\n    name?: string | undefined;\n    value?: string | undefined;\n    description?: string | undefined;\n    monetaryValue?: MonetaryValue | undefined;\n    addressValue?: Address | undefined;\n    dateTimeValue?: Date | undefined;\n}\n\nexport enum ExternalPropertyType {\n    Unknown = \"Unknown\",\n    Text = \"Text\",\n    ImageLink = \"ImageLink\",\n    FileLink = \"FileLink\",\n    Language = \"Language\",\n    IpAddress = \"IpAddress\",\n}\n\nexport class Address implements IAddress {\n    street?: string | undefined;\n    street2?: string | undefined;\n    city?: string | undefined;\n    zipCode?: string | undefined;\n    country?: string | undefined;\n\n    constructor(data?: IAddress) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.street = _data[\"street\"];\n            this.street2 = _data[\"street2\"];\n            this.city = _data[\"city\"];\n            this.zipCode = _data[\"zipCode\"];\n            this.country = _data[\"country\"];\n        }\n    }\n\n    static fromJS(data: any): Address {\n        data = typeof data === 'object' ? data : {};\n        let result = new Address();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"street\"] = this.street;\n        data[\"street2\"] = this.street2;\n        data[\"city\"] = this.city;\n        data[\"zipCode\"] = this.zipCode;\n        data[\"country\"] = this.country;\n        return data;\n    }\n}\n\nexport interface IAddress {\n    street?: string | undefined;\n    street2?: string | undefined;\n    city?: string | undefined;\n    zipCode?: string | undefined;\n    country?: string | undefined;\n}\n\nexport enum InsuranceStatus {\n    Quote = \"Quote\",\n    Pending = \"Pending\",\n    Active = \"Active\",\n    Ended = \"Ended\",\n    Canceled = \"Canceled\",\n}\n\nexport class InsurancePremiumSection implements IInsurancePremiumSection {\n    productName?: string | undefined;\n    grossWrittenPremium?: MonetaryValue | undefined;\n    insurancePremiumTax?: MonetaryValue | undefined;\n\n    constructor(data?: IInsurancePremiumSection) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.productName = _data[\"productName\"];\n            this.grossWrittenPremium = _data[\"grossWrittenPremium\"] ? MonetaryValue.fromJS(_data[\"grossWrittenPremium\"]) : <any>undefined;\n            this.insurancePremiumTax = _data[\"insurancePremiumTax\"] ? MonetaryValue.fromJS(_data[\"insurancePremiumTax\"]) : <any>undefined;\n        }\n    }\n\n    static fromJS(data: any): InsurancePremiumSection {\n        data = typeof data === 'object' ? data : {};\n        let result = new InsurancePremiumSection();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"productName\"] = this.productName;\n        data[\"grossWrittenPremium\"] = this.grossWrittenPremium ? this.grossWrittenPremium.toJSON() : <any>undefined;\n        data[\"insurancePremiumTax\"] = this.insurancePremiumTax ? this.insurancePremiumTax.toJSON() : <any>undefined;\n        return data;\n    }\n}\n\nexport interface IInsurancePremiumSection {\n    productName?: string | undefined;\n    grossWrittenPremium?: MonetaryValue | undefined;\n    insurancePremiumTax?: MonetaryValue | undefined;\n}\n\nexport class InsuranceStoreReq extends InsuranceReqBase implements IInsuranceStoreReq {\n    purchasedProducts!: ProductInfoReq[];\n    insuranceStart?: Date | undefined;\n    insuranceEnd?: Date | undefined;\n\n    constructor(data?: IInsuranceStoreReq) {\n        super(data);\n        if (!data) {\n            this.purchasedProducts = [];\n        }\n    }\n\n    init(_data?: any) {\n        super.init(_data);\n        if (_data) {\n            if (Array.isArray(_data[\"purchasedProducts\"])) {\n                this.purchasedProducts = [] as any;\n                for (let item of _data[\"purchasedProducts\"])\n                    this.purchasedProducts!.push(ProductInfoReq.fromJS(item));\n            }\n            this.insuranceStart = _data[\"insuranceStart\"] ? new Date(_data[\"insuranceStart\"].toString()) : <any>undefined;\n            this.insuranceEnd = _data[\"insuranceEnd\"] ? new Date(_data[\"insuranceEnd\"].toString()) : <any>undefined;\n        }\n    }\n\n    static fromJS(data: any): InsuranceStoreReq {\n        data = typeof data === 'object' ? data : {};\n        let result = new InsuranceStoreReq();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        if (Array.isArray(this.purchasedProducts)) {\n            data[\"purchasedProducts\"] = [];\n            for (let item of this.purchasedProducts)\n                data[\"purchasedProducts\"].push(item.toJSON());\n        }\n        data[\"insuranceStart\"] = this.insuranceStart ? this.insuranceStart.toISOString() : <any>undefined;\n        data[\"insuranceEnd\"] = this.insuranceEnd ? this.insuranceEnd.toISOString() : <any>undefined;\n        super.toJSON(data);\n        return data;\n    }\n}\n\nexport interface IInsuranceStoreReq extends IInsuranceReqBase {\n    purchasedProducts: ProductInfoReq[];\n    insuranceStart?: Date | undefined;\n    insuranceEnd?: Date | undefined;\n}\n\nexport class ProductInfoReq implements IProductInfoReq {\n    productName?: string;\n    omocomCounterpartHandle?: string | undefined;\n    insurableObjectExternalProperties?: ExternalProperty[];\n    insuranceExternalProperties?: ExternalProperty[];\n    addOns?: AddOnInfo[];\n    shortDescription!: string;\n    objectId?: string | undefined;\n    insuredAmount?: MonetaryValue | undefined;\n\n    constructor(data?: IProductInfoReq) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.productName = _data[\"productName\"];\n            this.omocomCounterpartHandle = _data[\"omocomCounterpartHandle\"];\n            if (Array.isArray(_data[\"insurableObjectExternalProperties\"])) {\n                this.insurableObjectExternalProperties = [] as any;\n                for (let item of _data[\"insurableObjectExternalProperties\"])\n                    this.insurableObjectExternalProperties!.push(ExternalProperty.fromJS(item));\n            }\n            if (Array.isArray(_data[\"insuranceExternalProperties\"])) {\n                this.insuranceExternalProperties = [] as any;\n                for (let item of _data[\"insuranceExternalProperties\"])\n                    this.insuranceExternalProperties!.push(ExternalProperty.fromJS(item));\n            }\n            if (Array.isArray(_data[\"addOns\"])) {\n                this.addOns = [] as any;\n                for (let item of _data[\"addOns\"])\n                    this.addOns!.push(AddOnInfo.fromJS(item));\n            }\n            this.shortDescription = _data[\"shortDescription\"];\n            this.objectId = _data[\"objectId\"];\n            this.insuredAmount = _data[\"insuredAmount\"] ? MonetaryValue.fromJS(_data[\"insuredAmount\"]) : <any>undefined;\n        }\n    }\n\n    static fromJS(data: any): ProductInfoReq {\n        data = typeof data === 'object' ? data : {};\n        let result = new ProductInfoReq();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"productName\"] = this.productName;\n        data[\"omocomCounterpartHandle\"] = this.omocomCounterpartHandle;\n        if (Array.isArray(this.insurableObjectExternalProperties)) {\n            data[\"insurableObjectExternalProperties\"] = [];\n            for (let item of this.insurableObjectExternalProperties)\n                data[\"insurableObjectExternalProperties\"].push(item.toJSON());\n        }\n        if (Array.isArray(this.insuranceExternalProperties)) {\n            data[\"insuranceExternalProperties\"] = [];\n            for (let item of this.insuranceExternalProperties)\n                data[\"insuranceExternalProperties\"].push(item.toJSON());\n        }\n        if (Array.isArray(this.addOns)) {\n            data[\"addOns\"] = [];\n            for (let item of this.addOns)\n                data[\"addOns\"].push(item.toJSON());\n        }\n        data[\"shortDescription\"] = this.shortDescription;\n        data[\"objectId\"] = this.objectId;\n        data[\"insuredAmount\"] = this.insuredAmount ? this.insuredAmount.toJSON() : <any>undefined;\n        return data;\n    }\n}\n\nexport interface IProductInfoReq {\n    productName?: string;\n    omocomCounterpartHandle?: string | undefined;\n    insurableObjectExternalProperties?: ExternalProperty[];\n    insuranceExternalProperties?: ExternalProperty[];\n    addOns?: AddOnInfo[];\n    shortDescription: string;\n    objectId?: string | undefined;\n    insuredAmount?: MonetaryValue | undefined;\n}\n\nexport class AddOnInfo implements IAddOnInfo {\n    name?: string;\n    selected?: boolean;\n\n    constructor(data?: IAddOnInfo) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.name = _data[\"name\"];\n            this.selected = _data[\"selected\"];\n        }\n    }\n\n    static fromJS(data: any): AddOnInfo {\n        data = typeof data === 'object' ? data : {};\n        let result = new AddOnInfo();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"name\"] = this.name;\n        data[\"selected\"] = this.selected;\n        return data;\n    }\n}\n\nexport interface IAddOnInfo {\n    name?: string;\n    selected?: boolean;\n}\n\nexport class PriceListDto implements IPriceListDto {\n    priceList?: PriceListItem[];\n\n    constructor(data?: IPriceListDto) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            if (Array.isArray(_data[\"priceList\"])) {\n                this.priceList = [] as any;\n                for (let item of _data[\"priceList\"])\n                    this.priceList!.push(PriceListItem.fromJS(item));\n            }\n        }\n    }\n\n    static fromJS(data: any): PriceListDto {\n        data = typeof data === 'object' ? data : {};\n        let result = new PriceListDto();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        if (Array.isArray(this.priceList)) {\n            data[\"priceList\"] = [];\n            for (let item of this.priceList)\n                data[\"priceList\"].push(item.toJSON());\n        }\n        return data;\n    }\n}\n\nexport interface IPriceListDto {\n    priceList?: PriceListItem[];\n}\n\nexport class PriceListItem implements IPriceListItem {\n    order?: number;\n    name?: string;\n    upTo?: MonetaryValue;\n    premium?: MonetaryValue;\n\n    constructor(data?: IPriceListItem) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.order = _data[\"order\"];\n            this.name = _data[\"name\"];\n            this.upTo = _data[\"upTo\"] ? MonetaryValue.fromJS(_data[\"upTo\"]) : <any>undefined;\n            this.premium = _data[\"premium\"] ? MonetaryValue.fromJS(_data[\"premium\"]) : <any>undefined;\n        }\n    }\n\n    static fromJS(data: any): PriceListItem {\n        data = typeof data === 'object' ? data : {};\n        let result = new PriceListItem();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"order\"] = this.order;\n        data[\"name\"] = this.name;\n        data[\"upTo\"] = this.upTo ? this.upTo.toJSON() : <any>undefined;\n        data[\"premium\"] = this.premium ? this.premium.toJSON() : <any>undefined;\n        return data;\n    }\n}\n\nexport interface IPriceListItem {\n    order?: number;\n    name?: string;\n    upTo?: MonetaryValue;\n    premium?: MonetaryValue;\n}\n\nexport class ProductInfoResp implements IProductInfoResp {\n    platformId!: string;\n    marketName!: string;\n    marketCurrency?: string;\n    products?: ProductInfo[];\n\n    constructor(data?: IProductInfoResp) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.platformId = _data[\"platformId\"];\n            this.marketName = _data[\"marketName\"];\n            this.marketCurrency = _data[\"marketCurrency\"];\n            if (Array.isArray(_data[\"products\"])) {\n                this.products = [] as any;\n                for (let item of _data[\"products\"])\n                    this.products!.push(ProductInfo.fromJS(item));\n            }\n        }\n    }\n\n    static fromJS(data: any): ProductInfoResp {\n        data = typeof data === 'object' ? data : {};\n        let result = new ProductInfoResp();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"platformId\"] = this.platformId;\n        data[\"marketName\"] = this.marketName;\n        data[\"marketCurrency\"] = this.marketCurrency;\n        if (Array.isArray(this.products)) {\n            data[\"products\"] = [];\n            for (let item of this.products)\n                data[\"products\"].push(item.toJSON());\n        }\n        return data;\n    }\n}\n\nexport interface IProductInfoResp {\n    platformId: string;\n    marketName: string;\n    marketCurrency?: string;\n    products?: ProductInfo[];\n}\n\nexport class ProductInfo implements IProductInfo {\n    productName!: string;\n    omocomCounterpartHandle?: string | undefined;\n    fields?: ProductFieldDescription[];\n    addOns?: AddOnInfo[];\n\n    constructor(data?: IProductInfo) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.productName = _data[\"productName\"];\n            this.omocomCounterpartHandle = _data[\"omocomCounterpartHandle\"];\n            if (Array.isArray(_data[\"fields\"])) {\n                this.fields = [] as any;\n                for (let item of _data[\"fields\"])\n                    this.fields!.push(ProductFieldDescription.fromJS(item));\n            }\n            if (Array.isArray(_data[\"addOns\"])) {\n                this.addOns = [] as any;\n                for (let item of _data[\"addOns\"])\n                    this.addOns!.push(AddOnInfo.fromJS(item));\n            }\n        }\n    }\n\n    static fromJS(data: any): ProductInfo {\n        data = typeof data === 'object' ? data : {};\n        let result = new ProductInfo();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"productName\"] = this.productName;\n        data[\"omocomCounterpartHandle\"] = this.omocomCounterpartHandle;\n        if (Array.isArray(this.fields)) {\n            data[\"fields\"] = [];\n            for (let item of this.fields)\n                data[\"fields\"].push(item.toJSON());\n        }\n        if (Array.isArray(this.addOns)) {\n            data[\"addOns\"] = [];\n            for (let item of this.addOns)\n                data[\"addOns\"].push(item.toJSON());\n        }\n        return data;\n    }\n}\n\nexport interface IProductInfo {\n    productName: string;\n    omocomCounterpartHandle?: string | undefined;\n    fields?: ProductFieldDescription[];\n    addOns?: AddOnInfo[];\n}\n\nexport class ProductFieldDescription implements IProductFieldDescription {\n    id?: string;\n    componentType?: ComponentType;\n    required?: boolean;\n    fixedLadderPremium?: PriceListItem[] | undefined;\n    fixedPremium?: MonetaryValue | undefined;\n    percentagePremium?: number | undefined;\n    externalPropertyMap?: PropertyMap;\n    externalPropertyName?: ExternalPropertyName | undefined;\n\n    constructor(data?: IProductFieldDescription) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.id = _data[\"id\"];\n            this.componentType = _data[\"componentType\"];\n            this.required = _data[\"required\"];\n            if (Array.isArray(_data[\"fixedLadderPremium\"])) {\n                this.fixedLadderPremium = [] as any;\n                for (let item of _data[\"fixedLadderPremium\"])\n                    this.fixedLadderPremium!.push(PriceListItem.fromJS(item));\n            }\n            this.fixedPremium = _data[\"fixedPremium\"] ? MonetaryValue.fromJS(_data[\"fixedPremium\"]) : <any>undefined;\n            this.percentagePremium = _data[\"percentagePremium\"];\n            this.externalPropertyMap = _data[\"externalPropertyMap\"];\n            this.externalPropertyName = _data[\"externalPropertyName\"];\n        }\n    }\n\n    static fromJS(data: any): ProductFieldDescription {\n        data = typeof data === 'object' ? data : {};\n        let result = new ProductFieldDescription();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"id\"] = this.id;\n        data[\"componentType\"] = this.componentType;\n        data[\"required\"] = this.required;\n        if (Array.isArray(this.fixedLadderPremium)) {\n            data[\"fixedLadderPremium\"] = [];\n            for (let item of this.fixedLadderPremium)\n                data[\"fixedLadderPremium\"].push(item.toJSON());\n        }\n        data[\"fixedPremium\"] = this.fixedPremium ? this.fixedPremium.toJSON() : <any>undefined;\n        data[\"percentagePremium\"] = this.percentagePremium;\n        data[\"externalPropertyMap\"] = this.externalPropertyMap;\n        data[\"externalPropertyName\"] = this.externalPropertyName;\n        return data;\n    }\n}\n\nexport interface IProductFieldDescription {\n    id?: string;\n    componentType?: ComponentType;\n    required?: boolean;\n    fixedLadderPremium?: PriceListItem[] | undefined;\n    fixedPremium?: MonetaryValue | undefined;\n    percentagePremium?: number | undefined;\n    externalPropertyMap?: PropertyMap;\n    externalPropertyName?: ExternalPropertyName | undefined;\n}\n\nexport enum ComponentType {\n    Text = \"Text\",\n    Address = \"Address\",\n    MonetaryValue = \"MonetaryValue\",\n    DateTimeOffset = \"DateTimeOffset\",\n    Selection = \"Selection\",\n    Imei = \"Imei\",\n}\n\nexport enum PropertyMap {\n    InsurableObjectExternalProperty = \"InsurableObjectExternalProperty\",\n    InsuranceExternalProperty = \"InsuranceExternalProperty\",\n    InsuranceInsuredAmount = \"InsuranceInsuredAmount\",\n    InsurableObjectShortDescription = \"InsurableObjectShortDescription\",\n}\n\nexport enum ExternalPropertyName {\n    ImportedFile = \"ImportedFile\",\n    PreCalculatedPremium = \"PreCalculatedPremium\",\n    LicensePlate = \"LicensePlate\",\n    LicenseNumber = \"LicenseNumber\",\n    VehicleModel = \"VehicleModel\",\n    VehicleMaker = \"VehicleMaker\",\n    VehicleYear = \"VehicleYear\",\n    ReservationId = \"ReservationId\",\n    Address = \"Address\",\n    LatLong = \"LatLong\",\n    ApartmentNumber = \"ApartmentNumber\",\n    PropertyRegistrationNumber = \"PropertyRegistrationNumber\",\n    CompanyName = \"CompanyName\",\n    VatNumber = \"VatNumber\",\n    ThirdPartyInsuranceCompany = \"ThirdPartyInsuranceCompany\",\n    InsuranceLevel = \"InsuranceLevel\",\n    IpAddress = \"IpAddress\",\n    MonthlyRent = \"MonthlyRent\",\n    TentativeEndDate = \"TentativeEndDate\",\n    OrderReference = \"OrderReference\",\n    TotalRent = \"TotalRent\",\n    PickUpLocation = \"PickUpLocation\",\n    DropOffLocation = \"DropOffLocation\",\n    PickUpLocationType = \"PickUpLocationType\",\n    DropOffLocationType = \"DropOffLocationType\",\n    CarryingAssistanceAvailableAtPickUp = \"CarryingAssistanceAvailableAtPickUp\",\n    CarryingAssistanceAvailableAtDropOff = \"CarryingAssistanceAvailableAtDropOff\",\n    Make = \"Make\",\n    Model = \"Model\",\n    IMEI = \"IMEI\",\n    OrderValue = \"OrderValue\",\n    ObjectValue = \"ObjectValue\",\n    TransactionValue = \"TransactionValue\",\n    CountryOfRegistration = \"CountryOfRegistration\",\n    NightlyRent = \"NightlyRent\",\n    OwnerInsuranceCompany = \"OwnerInsuranceCompany\",\n    LocationOfIncident = \"LocationOfIncident\",\n    ThirdPartyLicensePlate = \"ThirdPartyLicensePlate\",\n    MembershipNumber = \"MembershipNumber\",\n    ProductNumber = \"ProductNumber\",\n    ReceiptNumber = \"ReceiptNumber\",\n    TrackingNumber = \"TrackingNumber\",\n    TrackingNumberRecipient = \"TrackingNumberRecipient\",\n    CamperVan = \"CamperVan\",\n    Electric = \"Electric\",\n    AllDriversOver24 = \"AllDriversOver24\",\n    YoungDriver = \"YoungDriver\",\n    TravelAbroad = \"TravelAbroad\",\n    Keyless = \"Keyless\",\n}\n\nexport class AuthTokenResp implements IAuthTokenResp {\n    token?: string;\n\n    constructor(data?: IAuthTokenResp) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.token = _data[\"token\"];\n        }\n    }\n\n    static fromJS(data: any): AuthTokenResp {\n        data = typeof data === 'object' ? data : {};\n        let result = new AuthTokenResp();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"token\"] = this.token;\n        return data;\n    }\n}\n\nexport interface IAuthTokenResp {\n    token?: string;\n}\n\nexport class IdentityTokenResp implements IIdentityTokenResp {\n    success?: boolean;\n    subject?: string | undefined;\n    firstName?: string | undefined;\n    lastName?: string | undefined;\n    fullName?: string | undefined;\n    ssn?: string | undefined;\n    provider?: string | undefined;\n    isTestBankId?: boolean;\n\n    constructor(data?: IIdentityTokenResp) {\n        if (data) {\n            for (var property in data) {\n                if (data.hasOwnProperty(property))\n                    (<any>this)[property] = (<any>data)[property];\n            }\n        }\n    }\n\n    init(_data?: any) {\n        if (_data) {\n            this.success = _data[\"success\"];\n            this.subject = _data[\"subject\"];\n            this.firstName = _data[\"firstName\"];\n            this.lastName = _data[\"lastName\"];\n            this.fullName = _data[\"fullName\"];\n            this.ssn = _data[\"ssn\"];\n            this.provider = _data[\"provider\"];\n            this.isTestBankId = _data[\"isTestBankId\"];\n        }\n    }\n\n    static fromJS(data: any): IdentityTokenResp {\n        data = typeof data === 'object' ? data : {};\n        let result = new IdentityTokenResp();\n        result.init(data);\n        return result;\n    }\n\n    toJSON(data?: any) {\n        data = typeof data === 'object' ? data : {};\n        data[\"success\"] = this.success;\n        data[\"subject\"] = this.subject;\n        data[\"firstName\"] = this.firstName;\n        data[\"lastName\"] = this.lastName;\n        data[\"fullName\"] = this.fullName;\n        data[\"ssn\"] = this.ssn;\n        data[\"provider\"] = this.provider;\n        data[\"isTestBankId\"] = this.isTestBankId;\n        return data;\n    }\n}\n\nexport interface IIdentityTokenResp {\n    success?: boolean;\n    subject?: string | undefined;\n    firstName?: string | undefined;\n    lastName?: string | undefined;\n    fullName?: string | undefined;\n    ssn?: string | undefined;\n    provider?: string | undefined;\n    isTestBankId?: boolean;\n}\n\nexport interface FileResponse {\n    data: Blob;\n    status: number;\n    fileName?: string;\n    headers?: { [name: string]: any };\n}\n\nexport class OmocomStoreApiException extends Error {\n    message: string;\n    status: number;\n    response: string;\n    headers: { [key: string]: any; };\n    result: any;\n\n    constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n        super();\n\n        this.message = message;\n        this.status = status;\n        this.response = response;\n        this.headers = headers;\n        this.result = result;\n    }\n\n    protected isOmocomStoreApiException = true;\n\n    static isOmocomStoreApiException(obj: any): obj is OmocomStoreApiException {\n        return obj.isOmocomStoreApiException === true;\n    }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n    if (result !== null && result !== undefined)\n        throw result;\n    else\n        throw new OmocomStoreApiException(message, status, response, headers, null);\n}","export enum DeploymentEnv {\n\tLocal,\n\tAzurePrivate,\n\tAzureDevelopment,\n\tBeta,\n\tSystest,\n\tStaging,\n\tProduction,\n}\n\nexport class DeploymentEnvironment {\n\tprivate protocol: string;\n\tprivate environmentType: DeploymentEnv;\n\tprivate environmentName: string;\n\n\tconstructor(protocol?: string, url?: string) {\n\t\tthis.protocol = protocol || window.location.protocol;\n\t\t[\n\t\t\tthis.environmentType,\n\t\t\tthis.environmentName,\n\t\t] = this.GetEnvironmentTypeAndName(url || window.location.host);\n\t}\n\n\tpublic get Type(): DeploymentEnv {\n\t\treturn this.environmentType;\n\t}\n\n\tpublic get apiUrl(): string {\n\t\tswitch (this.environmentType) {\n\t\t\tcase DeploymentEnv.Local: {\n\t\t\t\treturn `${this.protocol}//localhost:5021`;\n\t\t\t}\n\t\t\tcase DeploymentEnv.AzurePrivate: {\n\t\t\t\treturn `${this.protocol}//omocom-store-api-${this.environmentName}.azurewebsites.net`;\n\t\t\t}\n\t\t\tcase DeploymentEnv.AzureDevelopment: \n\t\t\tcase DeploymentEnv.Systest: {\n\t\t\t\treturn `${this.protocol}//store-api-${this.environmentName}.dev.omocom.se`;\n            }\n\t\t\tcase DeploymentEnv.Beta:\n\t\t\tcase DeploymentEnv.Staging: {\n\t\t\t\treturn `${this.protocol}//store-api-${this.environmentName}.omocom.se`;\n\t\t\t}\n\t\t\tcase DeploymentEnv.Production: {\n\t\t\t\treturn `${this.protocol}//store-api.omocom.se`;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Unknown DeploymentEnv: \" + this.environmentType\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t// --------------------------------------------------------------------------------\n\n\tprivate GetEnvironmentTypeAndName(url: string): [DeploymentEnv, string] {\n\t\tconst compareString = url.toLowerCase();\n\t\tswitch (compareString) {\n\t\t\tcase \"localhost:5020\":\n\t\t\t\treturn [DeploymentEnv.Local, \"local\"];\n\t\t\tcase \"store-develop.dev.omocom.se\":\n\t\t\t\treturn [DeploymentEnv.AzureDevelopment, \"develop\"];\n\t\t\tcase \"store-beta.omocom.se\":\n\t\t\t\treturn [DeploymentEnv.Beta, \"beta\"];\n\t\t\tcase \"store-systest.dev.omocom.se\":\n\t\t\t\treturn [DeploymentEnv.Systest, \"systest\"];\n\t\t\tcase \"store-staging.omocom.se\":\n\t\t\t\treturn [DeploymentEnv.Staging, \"staging\"];\n\t\t\tcase \"store.omocom.se\":\n\t\t\t\treturn [DeploymentEnv.Production, \"production\"];\n\t\t}\n\n\t\tconst urlRegExp = /omocom-store-(.+).azurewebsites.net/;\n\t\tconst match = urlRegExp.exec(compareString);\n\t\tif (match == null) {\n\t\t\tthrow new Error(`Unknown URL passed to environment: ${url}`);\n\t\t}\n\n\t\treturn [DeploymentEnv.AzurePrivate, match[1]];\n\t}\n}\n","export class OmocomStoreApiClientConfig {\n\tpublic baseUrl: string;\n\tpublic identityToken: string;\n\tconstructor(baseUrl?: string, readonly identityTokenArg?: string, ) {\n\t\tthis.baseUrl = baseUrl ?? \"http://localhost:5021\";\n\t\tthis.identityToken = identityTokenArg ?? \"\";\n\t}\n}\n","import { NOTIFICATION_TYPE, Store } from 'react-notifications-component';\nimport { PropertyMap } from '../BackendApi/OmocomStoreApi';\n\nconst addNotification = (message: any, title: string, type: NOTIFICATION_TYPE) => {\n    Store.addNotification({\n        title: title,\n        message: message,\n        type: type,\n        insert: \"top\",\n        container: \"top-right\",\n        animationIn: [\"animate__animated\", \"animate__fadeIn\"],\n        animationOut: [\"animate__animated\", \"animate__fadeOut\"],\n        dismiss: {\n            duration: 5000,\n            onScreen: true\n        }\n    });\n}\n\nconst convertToKeyValue = (fields: any, map: PropertyMap) => {\n    let tempFields = [] as any;\n    Object.entries(fields).forEach(\n        ([key, value]: any) => {\n            if (value.map === map) {\n                if (map === PropertyMap.InsurableObjectShortDescription) {\n                    tempFields = value.item;\n                }\n                else if (value.item._isAMomentObject) {\n                    tempFields.push({\n                        name: key,\n                        description: key,\n                        dateTimeValue: value.item\n                    })\n                } else if (value.item.amount) {\n                    value.item.amount = value.item.amount.toString().replace(/\\.+$/, \"\");\n                    tempFields.push({\n                        name: key,\n                        description: key,\n                        monetaryValue: {\n                            amount: parseFloat(value.item.amount),\n                            currency: value.item.currency\n                        }\n                    })\n                } else {\n                    tempFields.push({\n                        name: key,\n                        description: key,\n                        value: value.item as string\n                    })\n                }\n            }\n        }\n      );\n\n    return tempFields;\n}\n\nexport { addNotification, convertToKeyValue }\n","import {Guid} from \"guid-typescript\";\nimport { addNotification } from \"../Utils\";\n\n/**\n * A set of validation methods that can be used to validate different types of values.\n */\nconst FormValidation = () => {\n\treturn {\n\t\t/**\n\t\t * Validates that the given value is a valid phone number\n\t\t *\n\t\t * @param phoneNr The email address to validate\n\t\t * @returns True if the given email is a valid address, false otherwise\n\t\t */\n\t\tisValidPhoneNr: (phoneNr: string) => {\n\t\t\tconst re = /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s./0-9]*$/;\n\t\t\treturn re.test(phoneNr);\n\t\t},\n\n\t\t/**\n\t\t * Validates that the given value is a valid email address\n\t\t *\n\t\t * @param email The email address to validate\n\t\t * @returns True if the given email is a valid address, false otherwise\n\t\t */\n\t\tisValidEmail: (email: string | undefined): boolean => {\n\t\t\tif (!email) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst emailRex = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\t\t\treturn emailRex.test(email);\n\t\t},\n\n\t\t/**\n\t\t * Validates that the given value is a valid currency string\n\t\t *\n\t\t * @param value The value to validate\n\t\t * @returns True if the value is a valid currency value, false otherwise\n\t\t * ToDo: Lock down the list to explicit, well known currencies according to ISO standard\n\t\t */\n\t\tisValidObjectPriceAmount: (value: string | undefined): boolean => {\n\t\t\tif (!value) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst currencyRex = /^(\\d+(?:,\\d{1,2})?).*/;\n\t\t\treturn currencyRex.test(value);\n\t\t},\n\n\t\tisValidGuid: (value: string | undefined): boolean => {\n\t\t\tif (!value) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse if (value === \"00000000-0000-0000-0000-000000000000\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst regex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\t\t\treturn regex.test(value) && Guid.isGuid(value);\n\t\t},\n\n\t\tisValidText: (value: string | number | undefined, id: string): boolean => {\n\t\t\tif (!value) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse if (typeof(value) === 'number' || id === \"firstName\" || id === \"lastName\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\tconst minLength = value?.length > 2;\n\t\t\treturn minLength;\n\t\t},\n\t};\n};\n\nconst validateFields = (errors: any, intl: any) => {\n\tif (Object.entries(errors).length === 0) {\n\t\taddNotification(intl.formatMessage({ id: \"StoreForm.IsEmptyItemFields\" }), intl.formatMessage({ id: \"StoreForm.Error\" }), \"danger\");\n\n\t\treturn false;\n\t}\n    for (const [, value] of Object.entries(errors)) {\n        if (value) {\n            addNotification(value, intl.formatMessage({ id: \"StoreForm.Error\" }), \"danger\");\n\n            return false;\n        }\n    };\n\n    return true;\n}\n\nexport { FormValidation, validateFields };\n","import React from \"react\";\nimport styles from \"./Purchase.module.css\";\nimport BlocketButton from \"../BlocketButton/BlocketButton\";\nimport { BlocketInsuranceClient, InsuranceBlocketReq } from \"../../BackendApi/OmocomStoreApi\";\nimport { DeploymentEnvironment } from \"../../BackendApi/DeploymentEnvironment\";\nimport { OmocomStoreApiClientConfig } from \"../../BackendApi/OmocomStoreApiClientConfig\";\nimport { FormValidation } from \"../../Utils/validation/validation\";\n\ninterface PurchaseProps {\n  selectedPackage: number,\n  email: string\n}\n\nfunction Purchase(props: PurchaseProps) {\n  const [loading, setLoading] = React.useState(false);\n\n  const purchase = async () => {\n    if (!FormValidation().isValidEmail(props.email)) {\n      let userEmail = document.getElementById('userEmail');\n      if (userEmail) {\n        userEmail.style.border = '2px solid red';\n        userEmail.focus();\n      }\n      return;\n    }\n\n    setLoading(true);\n    const deploymentEnv = new DeploymentEnvironment();\n    const authClientConfig = new OmocomStoreApiClientConfig(deploymentEnv.apiUrl, undefined);\n    const insuranceClient = new BlocketInsuranceClient(authClientConfig);\n\n    const queryString = require('query-string');\n\n    const parsed = queryString.parse(window.location.search);\n\n    const payload = {\n      adTitle: parsed.adTitle,\n      listId: parsed.listId,\n      salePrice: { amount: Number.isInteger(parseInt(parsed.salePrice)) ? parsed.salePrice : 0, currency: 'SEK' },\n      adPrice: { amount: Number.isInteger(parseInt(parsed.adPrice)) ? parsed.adPrice : 0, currency: 'SEK' },\n      insuredAmount: { amount: props.selectedPackage, currency: 'SEK' },\n      isBlocketPaket: parsed.blocketPackage && parsed.blocketPackage !== \"false\" ? true : false,\n      userCultureInfo: 'sv-SE',\n\t    fullUrl: window.location.href,\n      emailAddress: props.email,\n\t    adText: parsed.adText,\n      extraImages: parsed.extraImages\n    } as InsuranceBlocketReq\n\n    sessionStorage.setItem(\"mail\", props.email);\n    sessionStorage.setItem(\"referral\", parsed.referral ?? '');\n    const response = await insuranceClient.purchaseInsurance(\"blocket\", \"se\", payload);\n    response.paymentUrl && (window.location.href = response.paymentUrl);\n    setLoading(false);\n  }\n\n  return (\n    <div className={styles.purchaseWrapper}>\n      <BlocketButton value=\"Betala med Trustly\" loading={loading} onClick={() => purchase()} />\n    </div>\n  )\n}\n\nexport default Purchase;\n","export default __webpack_public_path__ + \"static/media/omcom_blocket-white.5597f288.svg\";","import React from \"react\";\nimport styles from \"./BlocketHeader.module.css\";\nimport Logo from \"../../Utils/Images/omcom_blocket-white.svg\";\n\nfunction BlocketHeader() {\n    return (\n        <div className={styles.blocketHeader} >\n          <div className={styles.blocketHeaderLogo} >\n            <img className={styles.blocketHeaderImg} alt={'Logo'} src={Logo} />\n          </div>\n        </div>\n    )\n}\n\nexport default BlocketHeader;","import { DeploymentEnvironment } from \"../../BackendApi/DeploymentEnvironment\";\nimport { InsuranceInfoClient} from \"../../BackendApi/OmocomStoreApi\";\nimport { OmocomStoreApiClientConfig } from \"../../BackendApi/OmocomStoreApiClientConfig\";\n\nexport default async function PackagesArray() {\n\tconst deploymentEnv = new DeploymentEnvironment();\t\n    const insuranceInfoClient = new OmocomStoreApiClientConfig(deploymentEnv.apiUrl);\n    const insuranceClient = new InsuranceInfoClient(insuranceInfoClient);\n\n    const response = await insuranceClient.getPriceList(\"blocket\", \"se\");\n\n    return response;\n}","import React, { useEffect, useState } from \"react\";\nimport styles from \"./Blocket.module.css\";\nimport \"animate.css\";\nimport Footer from \"./Footer/Footer\";\nimport Title from \"./Title/Title\";\nimport TitleImg from \"./TitleImg/TitleImg\";\nimport { SoldItemName, CompensationList, ExternalLinks, Disclaimer } from \"./Information/Information\";\nimport Email from \"./Email/Email\";\nimport SelectPackage from \"./Package/Package\";\nimport Purchase from \"./Purchase/Purchase\";\nimport BlocketHeader from \"./BlocketHeader/BlocketHeader\";\nimport PackagesArray from \"./Package/PackageAPI\";\n\nfunction getDefaultPackage(packages: any) {\n  return packages[packages.length - 1].upTo.amount;\n}\n\nfunction getDefaultEmail() {\n  const queryString = require('query-string');\n  const parsed = queryString.parse(window.location.search);\n\n  return parsed.emailAddress ?? '';\n}\n\nfunction Blocket() {\n  const [selectedPackage, setSelectedPackage] = useState<number>(0);\n  const [packages, setPackages] = useState<any>([]);\n  const [isPhone, setIsPhone] = useState<boolean>(false);\n  const [email, setEmail] = useState<string>((getDefaultEmail));\n\n  useEffect(() => {\n    const setAvailablePackages = async () => {\n      let payload = await PackagesArray();\n      let availablePackages = payload.priceList;\n      let defaultSelected = getDefaultPackage(availablePackages);\n      setSelectedPackage(defaultSelected);\n      setPackages(availablePackages);\n    }\n\n    const updateWindowDimensions = () => {\n      if (window.innerWidth < 800) {\n        setIsPhone(true);\n      }\n      else {\n        setIsPhone(false);\n      }\n    };\n\n    setAvailablePackages();\n\n    window.addEventListener(\"resize\", updateWindowDimensions);\n    updateWindowDimensions();\n    return () => window.removeEventListener(\"resize\", updateWindowDimensions)\n  }, []);\n\n  return (\n    <div className={styles.blocketWrapper}>\n      <div className={styles.blocketInnerWrapper}>\n        <BlocketHeader />\n        {!isPhone ?\n          <div className={styles.blocket}>\n            <Title />\n            <div className={styles.blocketInner}>\n              <TitleImg />\n              <div className={styles.inlineRightWrapper}>\n                <SoldItemName />\n                <CompensationList />\n\t\t\t\t<Disclaimer />\n              </div>\n              <div>\n                <SelectPackage packages={packages} selectedPackage={selectedPackage} setSelectedPackage={(item: number) => setSelectedPackage(item)} />\n                <div className={styles.inline}>\n                  <Email email={email} setEmail={(value: string) => setEmail(value)} />\n                  <Purchase selectedPackage={selectedPackage} email={email} />\n                </div>\n                <ExternalLinks />\n              </div>\n            </div>\n            <Footer />\n          </div>\n          : <div className={styles.blocket}>\n              <Title />\n              <div className={styles.blocketInlineTitle}>\n                <TitleImg />\n                <SoldItemName />\n              </div>\n              <CompensationList />\n\t\t\t  <Disclaimer />\n              <SelectPackage packages={packages} selectedPackage={selectedPackage} setSelectedPackage={(item: number) => setSelectedPackage(item)} />\n              <Email email={email} setEmail={(value: string) => setEmail(value)} />\n              <Purchase selectedPackage={selectedPackage} email={email} />\n              <ExternalLinks />\n              <Footer />\n          </div>\n        }\n      </div>\n    </div>\n  );\n}\n\nexport default Blocket;\n","export default __webpack_public_path__ + \"static/media/failure.f1019b10.svg\";","import React from \"react\";\nimport styles from \"./Error.module.css\";\nimport thumbs from \"../../Utils/Images/failure.svg\";\nimport Footer from \"../Footer/Footer\";\n\nfunction Error() {\n    return (\n        <div className={styles.errorWrapper}>\n            <div className={styles.error}>\n                <div>\n                    <img className={styles.thumbs} src={thumbs} alt={''} />\n                </div>\n                <p>\n                    Denna sida kan bara användas när du klickat en länk i en Blocketannons\n                </p>\n                <p>\n                    Om du har några frågor kontakta Omocom via <a href=\"mailto:hello@omocom.insurance\">hello@omocom.insurance</a> eller 08-520 278 70.\n                </p>\n            </div>\n            <span className={styles.footer}>\n                <Footer />\n            </span>\n        </div>\n    )\n}\n\nexport default Error;","export default __webpack_public_path__ + \"static/media/approved.23cbbbe8.svg\";","import React from \"react\";\nimport styles from \"./Success.module.css\";\nimport thumbs from \"../../Utils/Images/approved.svg\";\nimport Footer from \"../Footer/Footer\";\n\nfunction Success() {\n    return (\n        <div className={styles.successWrapper}>\n            <div className={styles.success}>\n                <img className={styles.thumbs} src={thumbs} alt={''} />\n                <div className={styles.successText}>\n                    <h1>\n                        Tack och grattis!\n                    </h1>\n                    <p>\n                        Nu är du försäkrad mot dolda fel på din produkt i upp till 14 dagar.\n                    </p>\n                    <p>\n                        Vi har skickat en bekräftelse med dina fullständiga försäkringsvillkor\n                        till {sessionStorage.mail || \"din emailaddress\"}.\n                    </p>\n                    <a className={styles.button} href={sessionStorage.referral || \"https://www.blocket.se/\"}>Återvänd till Blocket</a>\n                </div>\n            </div>\n            <div className={styles.footer} >\n                <Footer />\n            </div>\n        </div>\n    )\n}\n\nexport default Success;","import React from \"react\";\nimport styles from \"./Failure.module.css\";\nimport thumbs from \"../../Utils/Images/failure.svg\";\nimport Footer from \"../Footer/Footer\";\n\nfunction Failure() {\n    return (\n        <div className={styles.failureWrapper}>\n            <div className={styles.failure}>\n                <div>\n                    <img className={styles.thumbs} src={thumbs} alt={''} />\n                </div>\n                <h1>\n                    Oops, något gick fel.\n                </h1>\n                <p>\n                    Prova gärna igen, och dubbelkolla att\n                    du valde rätt konto och att det finns täckning.\n                </p>\n                <p>\n                    Om felet kvarstår kontakta Omocom via <a className={styles.mail} href=\"mailto:hello@omocom.insurance\">hello@omocom.insurance</a> eller 08-520 278 70.\n                </p>\n                <a className={styles.button} href={sessionStorage.referral || \"https://www.blocket.se/\"}>Återvänd till Blocket</a>\n            </div>\n            <div className={styles.footer}>\n                <Footer />\n            </div>\n        </div>\n    )\n}\n\nexport default Failure;","import styled from \"styled-components\";\nimport { createMuiTheme } from \"@material-ui/core/styles\";\n\nexport const ThemedBackground = styled.div`\n\tbackground: #FFF;\n`;\n\nexport const PrimaryButton = styled.input`\n\twidth: 190px;\n\theight: 60px;\n\tcolor: #fff;\n\tborder-radius: 4px;\n\tborder-color: #CB7469;\n\tbackground-color: #CB7469;\n`;\n\nexport const Logo = styled.div`\n\tbackground-image: url(${(props) => props.theme.logoBlack});\n\twidth: auto;\n\theight: 2rem;\n\tbackground-position: left;\n\tbackground-repeat: no-repeat;\n\tmargin: 2rem auto;\n\n\t@media only screen and (max-width : 1040px) {\n\t\theight: 1.5rem;\n\t\tbackground-position: center;\n\t}\n`;\n\nexport const LogoWhite = styled.div`\n\tbackground-image: url(${(props) => props.theme.logoWhite});\n\twidth: auto;\n\theight: 2.5rem;\n\tbackground-position: right;\n\tbackground-repeat: no-repeat;\n\n\t@media (max-width: 1040px) {\n\t\theight: 2rem;\n\t}\n`;\n\nexport const LogoBig = styled.div`\n\tbackground-image: url(${(props) => props.theme.logoBlack});\n\twidth: auto;\n\theight: 6rem;\n\tbackground-position: center;\n\tbackground-repeat: no-repeat;\n`;\n\nexport const VersionStyle = styled.div`\n\tfont-size: 0.8125rem;\n\tmargin-left: 0.3rem;\n`;\n\nexport const Theme = createMuiTheme({\n\toverrides: {\n\t\tMuiInputBase: {\n\t\t\troot: {\n\t\t\t\tfontFamily: '\"DM Sans\", sans-serif',\n\t\t\t\tfontSize: '1.25rem',\n\t\t\t\tcolor: '#64676A',\n\t\t\t\t\"&:hover\": {\n\t\t\t\t\toutlineColor: \"#30A2F3\",\n\t\t\t\t\tbackgroundColor: \"#F8F9FB\",\n\t\t\t\t},\n\t\t\t\t\"& .MuiInputBase-input:focus\": {\n\t\t\t\t\tbackground: '#FFFFFF',\n\t\t\t\t\tcolor: \"#64676A\",\n\t\t\t\t\tborder: \"1px solid #DADEE0\",\n\t\t\t\t\tpadding: '15.5px 14px'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tMuiFormLabel: {\n\t\t\troot: {\n\t\t\t\tfontSize: '0.75rem',\n\t\t\t}\n        },\n\t\tMuiButton: {\n\t\t\troot: {\n\t\t\t\ttextTransform: \"capitalize\",\n\t\t\t\tfontSize: \"1rem\",\n\t\t\t\tfontFamily: \"inherit\",\n\t\t\t},\n\t\t\tcontained: {\n\t\t\t\tcolor: \"#BDC4C9\",\n\t\t\t\tbackgroundColor: \"#FFFFFF\",\n\t\t\t\tmarginRight: 10,\n\t\t\t\tpadding: \"1.25rem\",\n\t\t\t\tborder: \"1px solid\",\n\t\t\t\tborderColor: \"#BDC4C9\",\n\t\t\t\tboxShadow: \"none\",\n\t\t\t\t\"&:hover\": {\n\t\t\t\t\tcolor: \"#F5E5E3\",\n\t\t\t\t\tbackgroundColor: \"#E58E83\",\n\t\t\t\t\tboxShadow: \"none\",\n\t\t\t\t},\n\t\t\t\t\"&:focus\": {\n\t\t\t\t\tcolor: \"#F5E5E3\",\n\t\t\t\t\tbackgroundColor: \"#CB7469\",\n\t\t\t\t},\n\t\t\t\t\"&.active\": {\n\t\t\t\t\tcolor: \"#F5E5E3\",\n\t\t\t\t\tbackgroundColor: \"#CB7469\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n});\n","import React, { memo } from \"react\";\nimport Modal from \"react-bootstrap4-modal\";\nimport \"./styles/css/Modal.css\";\n\ninterface IProps {\n\tonCloseModal: () => void;\n\theader: string;\n\tshow: boolean;\n\ttext: string;\n\ttextIssueKey: string;\n\tinfo: [id: string, product: string];\n\tbody: string;\n\tfooter: string;\n\tfooterLinkText: string;\n\tfooterLink: string;\n\tlogoResponse: any;\n}\n\nconst storeModal = ({\n\tshow,\n\tonCloseModal,\n\theader,\n\ttext,\n\tinfo,\n\tbody,\n\tfooter,\n\tfooterLinkText,\n\tfooterLink,\n\tlogoResponse,\n}: IProps) => {\n\tconst setTextInfo = () => {\n\t\tlet textInfo = [] as any;\n\t\tinfo && info.forEach((product: any) => {\n\t\t\ttextInfo.push(\n\t\t\t\t<div className=\"modal-product-wrapper\" key={product.id}>\n\t\t\t\t\t<div>Insurance Id: {product.id}</div>\n\t\t\t\t\t<div>Product Name: {product.product}</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t})\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t{textInfo}\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn (\n\t<>\n\t\t<Modal\n\t\t\tdialogClassName=\"modal-dialog modal-dialog-vertical\"\n\t\t\tvisible={show}\n\t\t\tclassName=\"fixed-right\"\n\t\t\tonClickBackdrop={onCloseModal}\n\t\t>\n\t\t\t<div className=\"modal-logo\">{logoResponse}</div>\n\t\t\t<div className=\"modal-header\">\n\t\t\t\t<h3>{header}</h3>\n\t\t\t</div>\n\t\t\t<div className=\"modal-body\" style={{ wordBreak: \"break-word\" }}>\n\t\t\t\t<p>\n\t\t\t\t\t{body ?? text}\n\t\t\t\t</p>\n\t\t\t\t<div>\n\t\t\t\t\t{setTextInfo()}\n\t\t\t\t</div>\n\t\t\t\t<p>\n\t\t\t\t\t{footer}\n\t\t\t\t</p>\n\t\t\t\t<p>\n\t\t\t\t\t{footerLinkText}\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<a href={footerLink}>{footerLink}</a>\n\t\t\t\t\t</span>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</Modal>\n\t</>\n)};\n\nexport default memo(storeModal);\n","import React, { useEffect } from \"react\";\nimport { Button } from \"@material-ui/core\";\nimport { useIntl } from \"react-intl\";\n\ninterface IButtonProps {\n\tvalues: any;\n\tonChange: Function;\n\tdone: boolean;\n\tfieldName: string;\n\tisRequired?: boolean;\n\tsetError: Function;\n\tdisplayErrors?: boolean;\n}\n\nconst ButtonComponent: React.FC<IButtonProps> = (props) => {\n\t/** Initialization */\n\tconst {\n\t\tvalues,\n\t\tonChange,\n\t\tdone,\n\t\tfieldName,\n\t\tisRequired,\n\t\tsetError,\n\t\tdisplayErrors\n\t} = props;\n\n\tconst intl = useIntl();\n\n\tconst onButtonPress = (e: any) => {\n\t\tsetError(\"\", fieldName);\n\t\tbuttonStyling(e);\n\n\t\tlet value = e.currentTarget.value;\n\n\t\tonChange(value, fieldName);\n\t};\n\n\tconst buttonStyling = (e: any) => {\n\t\tlet siblings = e.currentTarget.parentElement.children;\n\t\tfor (let i = 0; i < siblings.length; i++) {\n\t\t\tif (siblings[i].classList.contains(\"active\"))\n\t\t\t\tsiblings[i].classList.remove(\"active\")\n\t\t}\n\t\te.currentTarget.classList.add(\"active\");\n\t}\n\n\tconst isSelected = () => {\n\t\tlet buttons = document.getElementsByName(fieldName);\n\t\tlet active = false;\n        buttons.forEach(button => {\n            if (button.classList.contains('active')) {\n\t\t\t\tactive = true;\n\t\t\t}\n        });\n\n\t\treturn active;\n\t}\n\n\tuseEffect(() => {\n\t\tisRequired && setError(intl.formatMessage({ id: \"StoreForm.IsRequiredField\" }), fieldName);\n\t// eslint-disable-next-line\n\t}, []);\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"pt-3 pb-3 btn-group-toggle buttonState\"\n\t\t\tdata-toggle=\"buttons\"\n\t\t>\n\t\t\t{values.map((value: any) => (\n\t\t\t\t<Button\n\t\t\t\t\tdisabled={done}\n\t\t\t\t\tvalue={value.name}\n\t\t\t\t\tclassName=\"selection-button\"\n\t\t\t\t\tname={fieldName}\n\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\tkey={value.name}\n\t\t\t\t\tonClick={(\n\t\t\t\t\t\te: React.MouseEvent<HTMLButtonElement, MouseEvent>\n\t\t\t\t\t) => {\n\t\t\t\t\t\tonButtonPress(e);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{value.name}\n\t\t\t\t</Button>\n\t\t\t))}\n\t\t\t{displayErrors && !isSelected() &&\n\t\t\t\t<p className=\"MuiFormHelperText-root\">\n\t\t\t\t\t<span className=\"helperTextDisplayError\">\n\t\t\t\t\t\t{intl.formatMessage({ id: \"StoreForm.IsRequiredField\" })}\n\t\t\t\t\t</span>\n\t\t\t\t</p>\n\t\t\t}\n\t\t</div>\n\n\t);\n};\n\nexport default ButtonComponent;\n","import React, { useEffect } from \"react\";\nimport { FormGroup, InputLabel } from \"@material-ui/core\";\nimport { useIntl } from \"react-intl\";\nimport ButtonComponent from \"../CommonComponents/ButtonComponent\";\nimport { PropertyMap } from \"../../BackendApi/OmocomStoreApi\";\n\ninterface IProps {\n    value: any;\n    setValue: Function;\n    fieldName: string;\n    setError: Function;\n    displayErrors: boolean;\n    done: boolean;\n    map: PropertyMap;\n    isRequired: boolean;\n}\n\nexport const InsuranceInformation = (props: IProps) => {\n    const { value, setValue, fieldName, setError, displayErrors, done, map, isRequired } = props;\n    const intl = useIntl();\n\n    const handleValue = (e: any, fieldName: string) => {\n        let selected = value.find((values: any) => values.name === e);\n        selected && setValue({amount: selected.premium.amount, currency: selected.premium.currency}, fieldName, undefined, map );\n    }\n\n    useEffect(() => {\n        if (value.length === 1) {\n            setValue({ amount: value[0].premium?.amount, currency: value[0].premium?.currency }, fieldName);\n        }\n        // eslint-disable-next-line\n    }, [])\n\n    if (value.length < 2 ) {\n        return <></>\n    }\n\n    return (\n        <FormGroup id=\"formControlsCondition\" className=\"selection-buttons-wrapper\">\n            <InputLabel>\n                {intl.formatMessage({\n                    id: \"StoreForm.insurancePackage\",\n                }) + (isRequired ? \" *\" : \"\")}\n            </InputLabel>\n            <ButtonComponent\n                values={value}\n                onChange={handleValue}\n                done={done}\n                fieldName={fieldName}\n                isRequired={isRequired}\n\t\t        setError={setError}\n                displayErrors={displayErrors}\n            />\n        </FormGroup>\n    )\n}","import {\n\tmakeStyles,\n\tcreateStyles,\n\twithStyles,\n\tTheme,\n\tInputBase,\n} from \"@material-ui/core\";\n\nexport const useStylesTextField = makeStyles(() =>\n\tcreateStyles({\n\t\troot: {\n\t\t\theight: 60,\n\t\t\toverflow: \"hidden\",\n\t\t\tborderRadius: 4,\n\t\t\tbackgroundColor: \"#F8F9FB\",\n\t\t\tpaddingLeft: \"0\",\n\t\t},\n\t})\n);\n\nexport const helperTextStyles = makeStyles(() => ({\n\troot: {\n\t\theight: \"29px\",\n\t},\n\tcontained: {\n\t\t\"& .MuiFormHelperText-contained\": {\n\t\t\tmarginLeft: \"0px\",\n\t\t},\n\t},\n}));\n\nexport const useStylesTextArea = makeStyles(() =>\n\tcreateStyles({\n\t\troot: {\n\t\t\toverflow: \"hidden\",\n\t\t\tborderRadius: 4,\n\t\t\tbackgroundColor: \"#F8F9FB\",\n\t\t\tmarginBottom: \"10px\",\n\t\t},\n\t})\n);\n\nexport const BootstrapInput = withStyles((theme: Theme) =>\n\tcreateStyles({\n\t\troot: {\n\t\t\t\"label + &\": {\n\t\t\t\tmarginTop: theme.spacing(3),\n\t\t\t},\n\t\t},\n\t\tinput: {\n\t\t\tborderRadius: 4,\n\t\t\tposition: \"relative\",\n\t\t\tbackgroundColor: theme.palette.background.paper,\n\t\t\tborder: \"1px solid #ced4da\",\n\t\t\tfontSize: 20,\n\t\t\tpadding: \"17px 26px 17px 12px\",\n\t\t\ttransition: theme.transitions.create([\n\t\t\t\t\"border-color\",\n\t\t\t\t\"box-shadow\",\n\t\t\t]),\n\t\t\t// Use the system font instead of the default Roboto font.\n\t\t\tfontFamily: [\n\t\t\t\t\"-apple-system\",\n\t\t\t\t\"BlinkMacSystemFont\",\n\t\t\t\t'\"Segoe UI\"',\n\t\t\t\t\"Roboto\",\n\t\t\t\t'\"Helvetica Neue\"',\n\t\t\t\t\"Arial\",\n\t\t\t\t\"sans-serif\",\n\t\t\t\t'\"Apple Color Emoji\"',\n\t\t\t\t'\"Segoe UI Emoji\"',\n\t\t\t\t'\"Segoe UI Symbol\"',\n\t\t\t].join(\",\"),\n\t\t\t\"&:focus\": {\n\t\t\t\tborderRadius: 4,\n\t\t\t\tborderColor: \"#80bdff\",\n\t\t\t\tboxShadow: \"0 0 0 0.2rem rgba(0,123,255,.25)\",\n\t\t\t\tbackgroundColor: \"white\",\n\t\t\t},\n\t\t},\n\t})\n)(InputBase);\n\nexport const useItemInputStyles = makeStyles(() =>\n\tcreateStyles({\n\t\tmargin: {\n\t\t\tmargin: \"8px 0px\",\n\t\t},\n\t})\n);\n","import React, { useEffect } from \"react\";\nimport Alert from \"react-bootstrap/Alert\";\nimport { TextField,\tOutlinedInputProps,\tInputLabel } from \"@material-ui/core\";\nimport { useIntl } from \"react-intl\";\nimport { useStylesTextField, useStylesTextArea,\thelperTextStyles } from \"../styles/styledComponents/stylesForComponents\";\nimport { FormValidation } from \"../../Utils/validation/validation\";\nimport { ComponentType, PropertyMap } from \"../../BackendApi/OmocomStoreApi\";\n\nexport type OnInputChange = (e: React.ChangeEvent<HTMLInputElement>) => void;\nexport type OnInputDateChange = (date: string, dateStr: string) => void;\n\ninterface IProps {\n\t/** The id of the form control */\n\tid: string;\n\n\t/** Label text for the control */\n\tlabel?: string;\n\n\t/** Help text to describe what the user should enter */\n\thelp?: string;\n\n\t/** Placeholder text for when the field is empty */\n\tplaceholder: string;\n\n\tautocomplete?: string;\n\n\t/** True if the field is required, false otherwise */\n\tisRequired: boolean;\n\n\t/** True if the field is disabled, false otherwise */\n\tdisabled?: boolean;\n\n\t/** The type of field to use */\n\tfieldType: ComponentType | string;\n\n\t/** Indicates if the field is multiLine text field */\n\tmultiLineTextBox?: boolean;\n\n\t/** Input value */\n\tvalue: string | number | undefined;\n\n\t/** Function that is called when the value is changed */\n\tonChange: Function;\n\n\t/** Boolean that checks if the form has been posted */\n\tdone: boolean;\n\n\t/** Enum that checks where the value should be saved */\n\tmap?: PropertyMap;\n\n\t/** Sets the error if there is one */\n\tsetError?: Function;\n\n\t/** Indicates whether the errors should be displayed or not */\n\tdisplayErrors: boolean;\n}\n\nexport const FieldGroupString: React.FC<IProps> = (props) => {\n\tlet classes = useStylesTextField();\n\tconst textAreaClass = useStylesTextArea();\n\tconst helperTestClasses = helperTextStyles();\n\tconst intl = useIntl();\n\tconst {\n\t\tautocomplete,\n\t\tlabel,\n\t\tid,\n\t\tfieldType,\n\t\tdisabled,\n\t\tisRequired,\n\t\tplaceholder,\n\t\tmultiLineTextBox,\n\t\thelp,\n\t\tvalue,\n\t\tonChange,\n\t\tdone,\n\t\tmap,\n\t\tsetError,\n\t\tdisplayErrors\n\t} = props;\n\n\tconst handleOnChange = (e: any) => {\n\t\tsetError && setError(errors(e.currentTarget.value), id);\n\n\t\tif (fieldType === \"number\" || \n\t\t\tfieldType === ComponentType.MonetaryValue) {\n\t\t\t\t// disallows more than 2 digits after a dot\n\t\t\t\tif (e.currentTarget.value.toString().slice(-1) !== \".\") {\n\t\t\t\t\te = Math.round(parseFloat(e.currentTarget.value) * 100) / 100;\n\t\t\t\t}\n\t\t}\n\n\t\tif (e.currentTarget) {\n\t\t\te = e.currentTarget.value;\n\t\t}\n\n\t\tonChange(e, id, fieldType, map);\n\t}\n\n\tif (multiLineTextBox) {\n\t\tclasses = textAreaClass;\n\t}\n\n\tconst errors = (newValue?: string) => {\n\t\tlet currentValue = newValue !== undefined ? newValue : value;\n\t\tswitch (fieldType) {\n\t\t\tcase \"email\":\n\t\t\t\treturn !FormValidation().isValidEmail(currentValue?.toString()) &&\n\t\t\t\t\tintl.formatMessage({ id: \"StoreForm.validateFieldEmail\" });\n\t\t\tcase \"number\" || ComponentType.MonetaryValue:\n\t\t\t\treturn !FormValidation().isValidObjectPriceAmount(currentValue?.toString()) &&\n\t\t\t\t\tintl.formatMessage({ id: \"StoreForm.validateFieldCurrency\" });\n\t\t\tdefault:\n\t\t\t\treturn isRequired && !FormValidation().isValidText(currentValue, id) &&\n\t\t\t\t\tintl.formatMessage({ id: \"StoreForm.showErrMessageForFieldText\" });\n\t\t}\n\t}\n\n\tconst helperText = () => {\n\t\tif (multiLineTextBox && !displayErrors) {\n\t\t\treturn (\n\t\t\t\t<span className=\"helperTextStyle\">\n\t\t\t\t\t{intl.formatMessage({\n\t\t\t\t\t\tid: \"StoreForm.validateFieldLength\",\n\t\t\t\t\t})}\n\t\t\t\t</span>\n\t\t\t);\n\t\t} else if (value) {\n\t\t\treturn displayErrors ? (\n\t\t\t\t<span className=\"helperTextDisplayError\">\n\t\t\t\t\t{errors()}\n\t\t\t\t</span>\n\t\t\t) : (\n\t\t\t\t<span />\n\t\t\t);\n\t\t} else if (!value && isRequired && displayErrors) {\n\t\t\treturn (\n\t\t\t\t<span className=\"helperTextDisplayError\">\n\t\t\t\t\t{intl.formatMessage({\n\t\t\t\t\t\tid: \"StoreForm.validateFieldRequired\",\n\t\t\t\t\t})}\n\t\t\t\t</span>\n\t\t\t);\n\t\t}\n\n\t\treturn <span className=\"helperTextDefaultStyle\" />;\n\t};\n\n\tconst showError = () => {\n\t\tif (value && displayErrors && errors()) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\tconst maxLength = multiLineTextBox ? 1000 : 200;\n\n\tuseEffect(() => {\n\t\tisRequired && id !== 'firstName' && id !== 'lastName' && setError && setError(intl.formatMessage({ id: \"StoreForm.showErrMessageForFieldText\" }), id);\n\t// eslint-disable-next-line\n\t}, []);\n\n\treturn (\n\t\t<div id={id} className={displayErrors ? \"was-validated\" : \"\"}>\n\t\t\t<InputLabel>{label ?? \"\"}</InputLabel>\n\t\t\t<TextField\n\t\t\t\tmultiline={multiLineTextBox}\n\t\t\t\tinputProps={{ maxLength }}\n\t\t\t\trows={5}\n\t\t\t\terror={showError()}\n\t\t\t\thelperText={helperText()}\n\t\t\t\ttype={fieldType}\n\t\t\t\tautoComplete={autocomplete || \"off\"}\n\t\t\t\tdisabled={disabled || done}\n\t\t\t\tonChange={handleOnChange}\n\t\t\t\trequired={isRequired}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tvalue={value === null ? \"\" : value}\n\t\t\t\tfullWidth\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tFormHelperTextProps={{\n\t\t\t\t\tclasses: helperTestClasses,\n\t\t\t\t}}\n\t\t\t\tclassName={helperTestClasses.contained}\n\t\t\t\tInputProps={\n\t\t\t\t\t{\n\t\t\t\t\t\tclasses\n\t\t\t\t\t} as Partial<OutlinedInputProps>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{help && <Alert variant=\"warning\">{help}</Alert>}\n\t\t</div>\n\t);\n};\n","import React, { useEffect } from \"react\";\nimport Alert from \"react-bootstrap/Alert\";\nimport { OutlinedInputProps, InputLabel } from \"@material-ui/core\";\nimport { useIntl } from \"react-intl\";\nimport moment from \"moment\";\nimport { DatePicker } from \"@material-ui/pickers\";\nimport { helperTextStyles, useStylesTextField } from \"../styles/styledComponents/stylesForComponents\";\nimport flatpickr from \"flatpickr\";\nimport { PropertyMap } from \"../../BackendApi/OmocomStoreApi\";\n\ninterface IDateComponentProps {\n\t/** Input value */\n\tvalue: moment.Moment | undefined;\n\n\t/** Function that is called when the value is changed */\n\tonChange: Function;\n\n\t/** Boolean that checks if the form has been posted */\n\tdone: boolean;\n\n\t/** Id of the control */\n\tid: string;\n\n\t/** Label text for the control */\n\tlabel: string;\n\n\t/** Help text to describe what the user should enter */\n\thelp?: string;\n\n\t/** Name of the form field */\n\tfieldName: string;\n\n\t/** Placeholder text for when the field is empty */\n\tplaceholder: string;\n\n\t/** True if the field is required, false otherwise */\n\tisRequired?: boolean;\n\n\t/** True if the field is disabled, false otherwise */\n\tdisabled?: boolean;\n\n\t// eslint-disable-next-line react/no-unused-prop-types\n\tflatPickerOptions?: flatpickr.Options.Options;\n\n\t/** Enum that checks where the value should be saved */\n\tmap?: PropertyMap;\n\n\t/** Sets the error if there is one */\n\tsetError: Function;\n\n\t/** Indicates whether the errors should be displayed or not */\n\tdisplayErrors: boolean;\n}\n\nconst DateComponent: React.FC<IDateComponentProps> = (props) => {\n\tconst intl = useIntl();\n\tconst classes = useStylesTextField();\n\tconst helperTestClasses = helperTextStyles();\n\tconst {\n\t\tvalue,\n\t\tonChange,\n\t\tdone,\n\t\tid,\n\t\tlabel,\n\t\tfieldName,\n\t\tplaceholder,\n\t\tisRequired,\n\t\tdisabled,\n\t\thelp,\n\t\tflatPickerOptions,\n\t\tmap,\n\t\tsetError,\n\t\tdisplayErrors\n\t} = props;\n\n\tconst handleDateChange = (date: any) => {\n\t\tsetError(\"\", id);\n\t\tonChange(moment(date, moment.ISO_8601), id, null, map);\n\t};\n\n\tconst helperText = () => {\n\t\tif (!value && isRequired && displayErrors) {\n\t\t\treturn (\n\t\t\t\t<span className=\"helperTextDisplayError\">\n\t\t\t\t\t{intl.formatMessage({\n\t\t\t\t\t\tid: \"StoreForm.validateFieldRequired\",\n\t\t\t\t\t})}\n\t\t\t\t</span>\n\t\t\t);\n\t\t}\n\n\t\treturn <span className=\"helperTextDefaultStyle\" />;\n\t};\n\n\tuseEffect(() => {\n\t\tisRequired && setError(intl.formatMessage({ id: \"StoreForm.validateFieldRequired\" }), id);\n\t// eslint-disable-next-line\n\t}, []);\n\n\treturn (\n\t\t<div id={id} className={displayErrors ? \"was-validated\" : \"\"}>\n\t\t\t<InputLabel>{label}</InputLabel>\n\t\t\t<DatePicker\n\t\t\t\thelperText={helperText()}\n\t\t\t\tname={fieldName}\n\t\t\t\trequired={isRequired}\n\t\t\t\tdisabled={disabled || done}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tonChange={handleDateChange}\n\t\t\t\tvalue={value || null}\n\t\t\t\tInputLabelProps={{\n\t\t\t\t\tshrink: true,\n\t\t\t\t}}\n\t\t\t\tFormHelperTextProps={{\n\t\t\t\t\tclasses: helperTestClasses,\n\t\t\t\t}}\n\t\t\t\tclassName={helperTestClasses.contained}\n\t\t\t\tInputProps={\n\t\t\t\t\t{\n\t\t\t\t\t\tclasses,\n\t\t\t\t\t} as Partial<OutlinedInputProps>\n\t\t\t\t}\n\t\t\t\tformat=\"YYYY-MM-DD\"\n\t\t\t\tvariant=\"inline\"\n\t\t\t\tinputVariant=\"outlined\"\n\t\t\t\tfullWidth\n\t\t\t\tautoOk\n\t\t\t\tdisableFuture\n\t\t\t\tminDate={flatPickerOptions?.minDate}\n\t\t\t/>\n\t\t\t{help && <Alert variant=\"warning\">{help}</Alert>}\n\t\t</div>\n\t);\n};\n\nexport default DateComponent;\n","import React, { useEffect } from \"react\";\nimport { InsuranceInformation } from \"./InsuranceInformation\";\nimport { InputLabel, MenuItem, TextField } from \"@material-ui/core\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { FieldGroupString } from \"../CommonComponents/FieldGroupString\";\nimport { useIntl } from \"react-intl\";\nimport DateComponent from \"../CommonComponents/DateComponent\";\nimport { ComponentType, IProductInfo, PropertyMap } from \"../../BackendApi/OmocomStoreApi\";\n\ninterface IItemInputInformationProps {\n    products: any;\n    productValues: any;\n    insuredAmount: any;\n    setValue: Function;\n    selectedProduct: IProductInfo;\n    handleProductSelection: any;\n    done: boolean;\n    setError: Function;\n    displayErrors: boolean;\n}\n\nconst ItemInputInformation: React.FC<IItemInputInformationProps> = (props) => {\n    /** Initialization */\n    const { products, productValues, insuredAmount, setValue, selectedProduct, handleProductSelection, done, setError, displayErrors } = props;\n    \n    const intl = useIntl();\n    const setItemFields = () => {\n        let tempFields = [] as any;\n\n        if (selectedProduct.fields?.length) {\n            selectedProduct.fields.forEach((item: any) => {\n                // TODO: add different fields depending on the field type\n                switch (item.componentType) {\n                    case ComponentType.DateTimeOffset:\n                        tempFields.push(\n                            <DateComponent\n                                value={productValues[item.externalPropertyName]?.item || productValues[item.id]}\n                                onChange={setValue}\n                                done={done}\n                                id={item.externalPropertyName || item.id}\n                                key={item.id}\n                                fieldName={item.id}\n                                label={item.id + (item.required ? \" *\" : \"\")}\n                                isRequired={item.required}\n                                placeholder={item.id}\n                                flatPickerOptions={{\n                                    allowInput: true,\n                                    minDate: \"1900-01-01\"\n                                }}\n                                map={item.externalPropertyMap}\n                                setError={setError}\n                                displayErrors={displayErrors}\n                            />\n                        );\n                        break;\n                    case ComponentType.Selection:\n                        tempFields.push(\n                            <InsuranceInformation\n                                key={item.id}\n                                value={item.fixedLadderPremium || \"\"}\n                                setValue={setValue}\n                                fieldName={item.externalPropertyMap === PropertyMap.InsuranceInsuredAmount ? \"insuredAmount\" : item.externalPropertyName || item.id}\n                                isRequired={item.required}\n                                done={done}\n                                map={item.externalPropertyMap}\n                                setError={setError}\n                                displayErrors={displayErrors}\n                            />\n                        );\n                        break;\n                    case ComponentType.MonetaryValue:\n                        tempFields.push(\n                            <Grid container className=\"objectPrice\" key={item.id + \"objectPrice\"}>\n                                <InputLabel key={item.id + \" label\"}>\n                                    {item.id + (item.required ? \" *\" : \"\")}\n                                </InputLabel>\n                                <Grid item md={10} xs={10}>\n                                    <FieldGroupString\n                                        value={item.externalPropertyMap === PropertyMap.InsuranceInsuredAmount ? insuredAmount.amount || \"\" : productValues[item.externalPropertyName]?.item?.amount || productValues[item.id]?.item?.amount || \"\"}\n                                        onChange={setValue}\n                                        done={done}\n                                        id={item.externalPropertyMap === PropertyMap.InsuranceInsuredAmount ? \"insuredAmount\" : item.externalPropertyName || item.id}\n                                        key={item.id}\n                                        fieldType={item.componentType}\n                                        isRequired={item.required}\n                                        placeholder={item.id}\n                                        map={item.externalPropertyMap}\n                                        setError={setError}\n                                        displayErrors={displayErrors}\n                                    />\n                                </Grid>\n                                <Grid item md={2} xs={2}>\n                                    <FieldGroupString\n                                        value={item.externalPropertyMap === PropertyMap.InsuranceInsuredAmount ? insuredAmount.currency : productValues[item.externalPropertyName]?.item.currency || productValues[item.id]?.currency || \"SEK\"}\n                                        onChange={() => {}}\n                                        done={done}\n                                        id={item.externalPropertyName || item.id}\n                                        key={item.id + \" currency\"}\n                                        fieldType={item.componentType}\n                                        isRequired={item.required}\n                                        placeholder={item.id}\n                                        displayErrors={false}\n                                    />\n                                </Grid>\n                            </Grid>\n                        );\n                        break;\n                    default:\n                        tempFields.push(\n                            <FieldGroupString\n                                value={productValues[item.externalPropertyName]?.item || productValues[item.id]?.item || \"\"}\n                                onChange={setValue}\n                                done={done}\n                                multiLineTextBox={item.id === \"Description\"}\n                                id={item.externalPropertyName || item.id}\n                                key={item.id}\n                                fieldType={item.componentType}\n                                label={item.id + (item.required ? \" *\" : \"\")}\n                                isRequired={item.required}\n                                placeholder={item.id}\n                                map={item.externalPropertyMap}\n                                setError={setError}\n                                displayErrors={displayErrors}\n                            />\n                        );\n                        break;\n                }\n            });\n        }\n        return tempFields;\n    }\n\n    useEffect(() => {\n\t\tconst queryString = require('query-string');\n\t\tconst parsed = queryString.parse(window.location.search);\n\n\t\tObject.keys(parsed).length !== 0 &&\n\t\t\tObject.entries(parsed).forEach(([queryKey, queryValue]) => {\n                selectedProduct.fields?.forEach((item: any) => {\n                    if (item.externalPropertyName) {\n                        if (item.externalPropertyName.toLowerCase() === queryKey.toLowerCase()) {\n                            //will add other componentTypes at a later date\n                            if (item.componentType === ComponentType.Text || item.componentType === ComponentType.MonetaryValue) {\n                                setValue(queryValue, item.externalPropertyName, item.componentType, item.externalPropertyMap);\n                                setError(false, item.externalPropertyName);\n                            }\n                        }\n                    } else if (item.id.toLowerCase() === queryKey.toLowerCase()) {\n                        //will add other componentTypes at a later date\n                        if (item.componentType === ComponentType.Text || item.componentType === ComponentType.MonetaryValue) {\n                            setValue(queryValue, queryKey, item.componentType, item.externalPropertyMap);\n                            setError(false, item.componentType === ComponentType.MonetaryValue ? \"insuredAmount\" : item.id);\n                        }\n                    }\n                })\n\t\t\t});\n\t\t// eslint-disable-next-line\n\t}, [selectedProduct])\n\n    return (\n        <Grid container spacing={3}>\n            <Grid item md={7} xs={12}>\n                <TextField\n                    value={selectedProduct.productName || \"\"}\n                    onChange={handleProductSelection}\n                    select\n                    label=\"Products\"\n                    disabled={done}\n                    fullWidth\n                >\n                    {\n                        !products ?\n                            <MenuItem key={\"\"} value={\"\"} /> :\n                            products.map((c: any) => (\n                                <MenuItem key={c.productName} value={c.productName}>\n                                    {c.productName}\n                                </MenuItem>\n                            ))\n                    }\n                </TextField>\n                {!selectedProduct.fields?.length && displayErrors &&\n                    <p className=\"MuiFormHelperText-root\">\n                        <span className=\"helperTextDisplayError\">\n                            {intl.formatMessage({ id: \"StoreForm.IsRequiredField\" })}\n                        </span>\n                    </p>\n                }\n            </Grid>\n            <Grid item md={7} xs={12}>\n                {setItemFields()}\n            </Grid>\n        </Grid>\n    );\n};\n    \n\nexport default ItemInputInformation;","import React, { useEffect } from \"react\";\nimport { Grid } from \"@material-ui/core\";\nimport { useIntl } from \"react-intl\";\nimport { FieldGroupString } from \"../CommonComponents/FieldGroupString\";\n\ninterface IUserInputInformationProps {\n\tform: any;\n\tsetValue: Function;\n\tdone: boolean;\n\tsetError: Function;\n\tdisplayErrors: boolean;\n}\n\nconst UserInputInformation: React.FC<IUserInputInformationProps> = (\n\tprops: IUserInputInformationProps\n) => {\n\tconst { form, setValue, done, setError, displayErrors } = props;\n\tconst intl = useIntl();\n\n\tuseEffect(() => {\n\t\tconst queryString = require('query-string');\n\t\tconst parsed = queryString.parse(window.location.search);\n\n\t\tObject.keys(parsed).length !== 0 &&\n\t\t\tObject.entries(parsed).forEach(([queryKey, queryValue]) => {\n\t\t\t\tif (Object.keys(form).find((formKey) => formKey === queryKey)) {\n\t\t\t\t\tsetValue(queryValue, queryKey);\n\t\t\t\t\tsetError(false, queryKey);\n\t\t\t\t}\n\t\t\t});\n\t\t// eslint-disable-next-line\n\t}, [])\n\n\treturn (\n\t\t<Grid container spacing={3}>\n\t\t\t<Grid item md={7} xs={12}>\n\t\t\t\t{/* <FieldGroupString\n\t\t\t\t\tvalue={form.ssn.ssn}\n\t\t\t\t\tonChange={setValue}\n\t\t\t\t\tdone={done}\n\t\t\t\t\tid=\"ssn\"\n\t\t\t\t\tfieldType=\"text\"\n\t\t\t\t\tautocomplete=\"organization\"\n\t\t\t\t\tlabel={intl.formatMessage({\n\t\t\t\t\t\tid: \"StoreForm.personalNumberLabel\",\n\t\t\t\t\t})}\n\t\t\t\t\tplaceholder={intl.formatMessage({\n\t\t\t\t\t\tid: \"StoreForm.personalNumberPlaceholder\",\n\t\t\t\t\t})}\n\t\t\t\t\tisRequired={false}\n\t\t\t\t\tsetError={setError}\n\t\t\t\t\tdisplayErrors={displayErrors}\n\t\t\t\t/> */}\n\t\t\t\t<FieldGroupString\n\t\t\t\t\tvalue={form.firstName}\n\t\t\t\t\tonChange={setValue}\n\t\t\t\t\tdone={done}\n\t\t\t\t\tid=\"firstName\"\n\t\t\t\t\tfieldType=\"text\"\n\t\t\t\t\tautocomplete=\"given-name\"\n\t\t\t\t\tlabel={intl.formatMessage({\n\t\t\t\t\t\tid: \"StoreForm.firstNameLabel\",\n\t\t\t\t\t}) + ' *'}\n\t\t\t\t\tplaceholder={intl.formatMessage({\n\t\t\t\t\t\tid: \"StoreForm.firstNameLabel\",\n\t\t\t\t\t})}\n\t\t\t\t\tisRequired\n\t\t\t\t\tsetError={setError}\n\t\t\t\t\tdisplayErrors={displayErrors}\n\t\t\t\t/>\n\t\t\t\t<FieldGroupString\n\t\t\t\t\tvalue={form.lastName}\n\t\t\t\t\tonChange={setValue}\n\t\t\t\t\tdone={done}\n\t\t\t\t\tid=\"lastName\"\n\t\t\t\t\tfieldType=\"text\"\n\t\t\t\t\tautocomplete=\"family-name\"\n\t\t\t\t\tlabel={intl.formatMessage({\n\t\t\t\t\t\tid: \"StoreForm.lastNameLabel\",\n\t\t\t\t\t})  + ' *'}\n\t\t\t\t\tplaceholder={intl.formatMessage({\n\t\t\t\t\t\tid: \"StoreForm.lastNameLabel\",\n\t\t\t\t\t})}\n\t\t\t\t\tisRequired\n\t\t\t\t\tsetError={setError}\n\t\t\t\t\tdisplayErrors={displayErrors}\n\t\t\t\t/>\n\t\t\t\t<FieldGroupString\n\t\t\t\t\tvalue={form.emailAddress}\n\t\t\t\t\tonChange={setValue}\n\t\t\t\t\tdone={done}\n\t\t\t\t\tid=\"emailAddress\"\n\t\t\t\t\tfieldType=\"email\"\n\t\t\t\t\tautocomplete=\"email\"\n\t\t\t\t\tlabel={intl.formatMessage({\n\t\t\t\t\t\tid: \"StoreForm.emailAddressLabel\",\n\t\t\t\t\t}) + ' *'}\n\t\t\t\t\tplaceholder={\"XXXX@XXXXXXXXX.XX\"}\n\t\t\t\t\tisRequired\n\t\t\t\t\tsetError={setError}\n\t\t\t\t\tdisplayErrors={displayErrors}\n\t\t\t\t/>\n\t\t\t\t<FieldGroupString\n\t\t\t\t\tvalue={form.phoneNumber}\n\t\t\t\t\tonChange={setValue}\n\t\t\t\t\tdone={done}\n\t\t\t\t\tid=\"phoneNumber\"\n\t\t\t\t\tautocomplete=\"tel\"\n\t\t\t\t\tfieldType=\"phone\"\n\t\t\t\t\tlabel={intl.formatMessage({\n\t\t\t\t\t\tid: \"StoreForm.phoneNumberLabel\",\n\t\t\t\t\t})}\n\t\t\t\t\tisRequired={false}\n\t\t\t\t\tplaceholder={\"123-456-78-90\"}\n\t\t\t\t\tsetError={setError}\n\t\t\t\t\tdisplayErrors={displayErrors}\n\t\t\t\t/>\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n\nexport default UserInputInformation;","import React from \"react\";\nimport AddIcon from '@material-ui/icons/Add';\nimport RemoveIcon from '@material-ui/icons/Remove';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { IProductInfoReq } from \"../../BackendApi/OmocomStoreApi\";\n\ninterface IBasket {\n    products: IProductInfoReq[];\n    removeItem: Function;\n    done: Boolean;\n}\n\nconst Basket = (props: IBasket) => {\n    const { products, removeItem, done } = props;\n    const setItems = () => {\n        let tempItems = [] as any;\n        products.forEach((product: IProductInfoReq, i: number) => {\n            tempItems.push(<BasketItems product={product} removeItem={removeItem} index={i} key={\"basket-\" + i} done={done} />)\n        });\n        \n        return tempItems;\n    }\n\n    return (\n        <div className=\"basket-wrapper\">\n            {setItems()}\n        </div>\n    )\n};\n\nconst BasketItems = (props: any) => {\n    const addClass = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n        let classList = e.currentTarget?.parentElement?.parentElement?.classList || e.currentTarget.classList;\n        classList.contains(\"basket-expand\") ? classList.remove(\"basket-expand\") : classList.add(\"basket-expand\");\n    }\n\n    const setFields = () => {\n        let tempFields = [] as any;\n\n        props.product.InsuranceExternalProperties && tempFields.push(CombineBasketItems(props.product.InsuranceExternalProperties));\n        props.product.InsurableObjectExternalProperties && tempFields.push(CombineBasketItems(props.product.InsurableObjectExternalProperties));\n\n        if (props.product.insuredAmount) {\n            tempFields.push(\n                <div key={\"fieldInsuredAmount\"}>\n                    <div className=\"basket-label\">{\"Insured Amount\"}</div>\n                    <div className=\"basket-value\">{`${props.product.insuredAmount.amount} ${props.product.insuredAmount.currency}`}</div>\n                </div>\n            )\n        }\n\n        return tempFields;\n    }\n\n    return(\n        <div className=\"basket\">\n            <div className=\"basket-header-wrapper\">\n                <div className=\"basket-header\" onClick={e => addClass(e)}>\n                    <span className=\"basket-expand\"><RemoveIcon /></span>\n                    <span className=\"basket-shrink\"><AddIcon /></span>\n                    <span className=\"header-value\">{props.product.shortDescription || `Product: ${props.index + 1}`}</span>\n                </div>\n                {!props.done && <span className=\"basket-close\" onClick={() => {props.removeItem(props.index)}}><CloseIcon /></span>}\n            </div>\n            <div className=\"basket-items\" >\n                {setFields()}\n            </div>\n        </div>\n    )\n}\n\nconst CombineBasketItems = (product) => {\n    let tempFields = [] as JSX.Element[];\n    product.forEach((field: any, i: number) => {\n        let value = field.value;\n        if (field.dateTimeValue) {\n            value = field.dateTimeValue.format(\"MMMM Do YYYY\");;\n        } else if (field.monetaryValue) {\n            value = `${field.monetaryValue.amount} ${field.monetaryValue.currency}`;\n        }\n\n        tempFields.push(\n            <div key={\"field\" + i}>\n                <div className=\"basket-label\">{field.name}</div>\n                <div className=\"basket-value\">{value}</div>\n            </div>\n        );\n    });\n    \n    return tempFields\n}\n\nexport default Basket;\n","import enMessage from \"./locales/en.json\";\nimport svMessage from \"./locales/sv.json\";\n\nexport const localeLanguage = navigator.language.split(/[-_]/)[0];\nexport const messagesForLanguages = {\n\ten: enMessage,\n\tsv: svMessage\n};\n","import { localeLanguage } from \"../translations/locales\";\n\nexport interface IFieldProps {\n\tplatformId: string;\n\tjiraIssueKey: string;\n}\n\nexport interface IModal {\n\t// Modal popup when you submit the form and receive the response.\n\tsubmitting: boolean;\n\tlogoResponse: any;\n\tmodalHeader: string;\n\tmodalText: string;\n\tmodalInfoText: [id: string, product: string];\n\tmodalResponseIssueKey: string;\n\tmodalResponseBody: string;\n\tmodalResponseFooter: string;\n\tmodalResponseFooterLinkText: string;\n\tmodalResponseFooterLink: string;\n\tshowModal: boolean;\n}\n\nexport const initialValues = {\n\tfirstName: \"\",\n\tlastName: \"\",\n\temailAddress: \"\",\n\tphoneNumber: \"\",\n\tuserCultureInfo: localeLanguage,\n\tpurchasedProducts: []\n}\n\nexport const initialProductValues = [{\n\t\"platformId\": \"\",\n\t\"marketName\": \"\",\n\t\"productName\": \"\",\n\t\"omocomCounterpartHandle\": \"\",\n\t\"productFields\": [],\n\t\"addOns\": [],\n\t\"shortDescription\": \"\",\n\t\"insuredAmount\": {\n\t\t\"amount\": \"\",\n\t\t\"currency\": \"\"\n\t}\n}]\n\nexport const buttonInsuranceTypes = [\"Small\", \"Medium\", \"Large\"];","import React from 'react';\nimport * as msal from '@azure/msal-browser';\n\nconst state = {\n    config: {\n        scopes: [],\n        cacheLocation: null,\n    },\n    msalApp: null,\n\taccountId: null\n}\n\nvar isIE = function isIE() {\n    var ua = window.navigator.userAgent;\n    var msie = ua.indexOf(\"MSIE \") > -1;\n    var msie11 = ua.indexOf(\"Trident/\") > -1;\n    return msie || msie11;\n};\n\nconst isProduction = window.location.origin.toLowerCase() === 'https://store.omocom.se';\nconst TENANT_NAME = isProduction ? 'OmocomB2C' : 'OmocomB2CDev';\nconst TENANT_DOMAIN = TENANT_NAME + '.onmicrosoft.com';\nconst AUTHORITY_DOMAIN = TENANT_NAME + '.b2clogin.com';\nconst clientId = isProduction ? '8f295246-d0a8-4903-b27d-1bb5e883cb14' : '38150f39-2569-459f-a5f4-01d2597719d4'; \n\nvar B2C_SCOPES = {\n    API_ACCESS: {\n        scopes: ['https://' + TENANT_DOMAIN + '/' + clientId + '/Store']\n    }\n};\n\nconst LOGIN_FLOW = \"B2C_1_SignIn\";\nconst msalAppConfig = {\n    auth: {\n        clientId: clientId,\n\t\tauthority: \"https://\" + AUTHORITY_DOMAIN + \"/\" + TENANT_DOMAIN + \"/\" + LOGIN_FLOW,\n        knownAuthorities: [AUTHORITY_DOMAIN],\n\t\tredirectUri: window.location.origin + '/store/se',\n        postLogoutRedirectUri: window.location.origin + '/store/se'\n    },\n    cache: {\n        cacheLocation: \"sessionStorage\",\n        storeAuthStateInCookie: isIE()\n    }\n}\n\nfunction setAccount(account) {\n\tconsole.log(\"setAccount\");\n\tstate.accountId = account.homeAccountId;\n\tstate.msalApp.setActiveAccount(account);\n}\n\nfunction selectAccount () {\n\tconsole.log(\"selectAccount\");\n\tconst currentAccounts = state.msalApp.getAllAccounts();\n\n\tif (currentAccounts.length > 1) {\n\t\t/**\n\t\t * Due to the way MSAL caches account objects, the auth response from initiating a user-flow\n\t\t * is cached as a new account, which results in more than one account in the cache. Here we make\n\t\t * sure we are selecting the account with homeAccountId that contains the sign-up/sign-in user-flow,\n\t\t * as this is the default flow the user initially signed-in with.\n\t\t */\n\t\tconst accounts = currentAccounts.filter(account =>\n\t\t\taccount.homeAccountId.toUpperCase().includes(LOGIN_FLOW.toUpperCase())\n\t\t\t&&\n\t\t\taccount.idTokenClaims.iss.toUpperCase().includes(AUTHORITY_DOMAIN.toUpperCase())\n\t\t\t&&\n\t\t\taccount.idTokenClaims.aud === msalAppConfig.auth.clientId\n\t\t);\n\n\t\tif (accounts.length > 1) {\n\t\t\t// localAccountId identifies the entity for which the token asserts information.\n\t\t\tif (accounts.every(account => account.localAccountId === accounts[0].localAccountId)) {\n\t\t\t\t// All accounts belong to the same user\n\t\t\t\tsetAccount(accounts[0]);\n\t\t\t} else {\n\t\t\t\t// Multiple users detected. Logout all to be safe.\n\t\t\t\tsignOut();\n\t\t\t}\n\t\t} else if (accounts.length === 1) {\n\t\t\tsetAccount(accounts[0]);\n\t\t}\n\n\t} else if (currentAccounts.length === 1) {\n\t\tsetAccount(currentAccounts[0]);\n\t}\n}\n\nfunction handleResponse(response) {\n\tconsole.log(\"handleResponse\");\n\tif (response !== null) {\n\t\tsetAccount(response.account);\n\t} else {\n\t\tselectAccount();\n\t}\n}\n\nfunction signIn() {\n\tconsole.log(\"signIn\");\n\tstate.msalApp.loginRedirect(B2C_SCOPES.API_ACCESS);\n}\n\nfunction signOut() {\n\tconst logoutRequest = {\n\t\tpostLogoutRedirectUri: msalAppConfig.auth.redirectUri,\n\t};\n\n\tstate.msalApp.logoutRedirect(logoutRequest);\n}\n\nfunction getToken(successCallback) {\n\tconsole.log(\"getToken\");\n\n\tlet request = B2C_SCOPES.API_ACCESS;\n\n\treturn state.msalApp.acquireTokenSilent(request)\n\t\t.then(response => {\n\t\t\tconsole.log(\"HandleSilentTokenResponse\");\n\n\t\t\t// In case the response from B2C server has an empty accessToken field\n\t\t\t// throw an error to initiate token acquisition\n\t\t\tif (!response.accessToken || response.accessToken === \"\") {\n\t\t\t\tthrow new msal.InteractionRequiredAuthError();\n\t\t\t} else {\n\t\t\t\tconsole.log(\"access_token acquired at: \" + new Date().toString());\n\t\t\t\t\n\t\t\t\tif (successCallback) {\n\t\t\t\t\tsuccessCallback();\n\t\t\t\t}\n\n\t\t\t\treturn response;\n\t\t\t}\n\t\t})\n\t\t.catch(error => {\n\t\t\tconsole.warn(\"silent token acquisition fails. acquiring token using redirect\");\n\t\t\tif (error instanceof msal.InteractionRequiredAuthError) {\n\t\t\t\t// fallback to interaction when silent call fails\n\t\t\t\tconsole.log(\"aquireTokenRedirect\");\n\n\t\t\t\treturn state.msalApp.acquireTokenRedirect(request);\n\t\t\t} else {\n\t\t\t\tconsole.warn(error);\n\t\t\t}\n\t\t});\n}\n\nvar authentication = {\n    initialize: () => {\n\t\tstate.msalApp = new msal.PublicClientApplication(msalAppConfig);\n\t},\n    required: (WrappedComponent, renderLoading) => {\n        return class extends React.Component {\n            constructor(props) {\n                super(props)\n                this.state = {\n                    signedIn: false,\n                    error: null\n                }\n\t\t\t}\n\n            async componentDidMount() {\n\t\t\t\tconsole.log(\"componentDidMount\");\n\t\t\t\tawait state.msalApp.handleRedirectPromise()\n\t\t\t\t\t.then(response => {\n\t\t\t\t\t\tconsole.log(\"HandledRedirectPromise\");\n\n\t\t\t\t\t\tif (response) {\n\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * For the purpose of setting an active account for UI update, we want to consider only the auth response resulting\n\t\t\t\t\t\t\t * from SignIn flow. \"tfp\" claim in the id token tells us the policy\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tif (response.idTokenClaims['tfp'].toUpperCase() === LOGIN_FLOW.toUpperCase()) {\n\t\t\t\t\t\t\t\thandleResponse(response);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\tconsole.error(error);\n\t\t\t\t\t});\n\n\t\t\t\tselectAccount();\n\t\t\t\t\n\t\t\t\tif (state.accountId === null) {\n\t\t\t\t\tsignIn();\n\t\t\t\t} else {\n\t\t\t\t\tawait getToken(() => {\n\t\t\t\t\t\tconsole.log(\"Set state signed in\");\n\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tsignedIn: true\n\t\t\t\t\t\t})\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n            render() {\n\t\t\t\tconsole.log(\"render\");\n\n\t\t\t\tif (this.state.signedIn) {\n                    return (<WrappedComponent {...this.props} />)\n                }\n                return typeof renderLoading === 'function' ? renderLoading() : null\n            }\n        }\n    },\n\n    signOut: function signOut() {\n        return state.msalApp.logout();\n    },\n\tgetAccessToken: async () => await getToken()\n};\n\nexport default authentication;","import \"flatpickr/dist/flatpickr.min.css\";\nimport React, { useEffect, useState } from \"react\";\nimport { useIntl } from \"react-intl\";\nimport \"./styles/css/StoreForm.css\";\nimport { Grid, Card, CardContent, Typography } from \"@material-ui/core\";\nimport { LogoBig, PrimaryButton } from \"./styles/styledComponents/styled\";\nimport StoreModal from \"./StoreModal\";\nimport ItemInputInformation from \"./StoreComponents/ItemInputInformation\";\nimport UserInputInformation from \"./StoreComponents/UserInputInformation\";\nimport Basket from \"./StoreComponents/Basket\";\nimport { initialValues, IModal } from \"./models/StoreFormDefaults\";\nimport { DeploymentEnvironment } from \"../BackendApi/DeploymentEnvironment\";\nimport { OmocomStoreApiClientConfig } from \"../BackendApi/OmocomStoreApiClientConfig\";\nimport { InsuranceClient, IMonetaryValue, ProductInfoClient, IProductInfoResp, IProductInfo, MonetaryValue, PropertyMap, ComponentType } from \"../BackendApi/OmocomStoreApi\";\nimport { validateFields } from \"../Utils/validation/validation\";\nimport { addNotification, convertToKeyValue } from \"../Utils/Utils\";\nimport authentication from \"../B2c\";\n\nconst StoreForm = () => {\n    const [form, setForm] = useState(initialValues as any);\n\n    const [availableProducts, setAvailableProducts] = useState({} as IProductInfoResp);\n    const [selectedProduct, setSelectedProduct] = useState({} as IProductInfo);\n    const [productIsSelected, setProductIsSelected] = useState(false);\n\n    const [productValues, setProductValues] = useState({}) as any;\n    const [insuredAmount, setInsuredAmount] = useState({amount: 0, currency: \"SEK\"} as IMonetaryValue);\n\n    const [modal, setModal] = useState({} as IModal);\n    const [errors, setErrors] = useState({});\n    const [itemErrors, setItemErrors] = useState({});\n    const [done, setDone] = useState(false);\n    const [displayErrors, setDisplayErrors] = useState(false);\n    const [displayItemErrors, setDisplayItemErrors] = useState(false);\n\n    const intl = useIntl();\n\n    const convertValue = (value: string, id: string) => {\n        if (id === \"ssn\") {\n            setForm((form: any) => ({ ...form, ssn:{ssn: value, country: \"\"} }));\n        }\n        else {\n            setForm((form: any) => ({ ...form, [id]: value }));\n        }\n    }\n\n    // Runs when any input field is changed\n    const convertProductValue = (value: any, id: string, fieldType: ComponentType | string, map: PropertyMap) => {\n        if (map === PropertyMap.InsuranceInsuredAmount) {\n            if (value.amount) {\n                setInsuredAmount({ amount: value.amount, currency: value.currency });\n            } else {\n                setInsuredAmount({ amount: value, currency: availableProducts.marketCurrency || \"SEK\" })\n            }\n        } else if (fieldType === ComponentType.MonetaryValue) {\n            setProductValues((productFields: any) => ({\n                ...productFields, [id]: { item: { amount: value, currency: availableProducts.marketCurrency } as MonetaryValue, map }\n            }))\n        } else {\n            setProductValues((productFields: any) => ({ ...productFields, [id]: { item: value, map } }));\n        }\n    }\n\n    // Runs when product is changed\n    const handleProductSelection = (event: any) => {\n        setProductIsSelected(true);\n        availableProducts.products && availableProducts.products.forEach(product => {\n            if (product.productName === event.currentTarget.textContent) {\n                setSelectedProduct(product);\n                product.fields && product.fields.forEach(field => {\n                    if (field.externalPropertyMap === PropertyMap.InsuranceInsuredAmount && field.required) {\n                        setItemErrors(error => ({ ...error, \"insuredAmount\": intl.formatMessage({ id: \"StoreForm.IsRequiredField\" }) }));\n                    } else if (field.componentType === \"Selection\" && field.required) {\n                        setItemErrors(error => ({ ...error, [field.externalPropertyName || field.id || \"\"]: intl.formatMessage({ id: \"StoreForm.IsEmptyItemFields\" }) }));\n                    }\n                });\n            }\n        })\n        resetProductValues();\n    }\n\n    // Validates Item fields and adds them to the purchasedProducts list\n    const saveProduct = () => {\n        if(!productIsSelected) {\n            addNotification(intl.formatMessage({ id: \"StoreForm.ProductNotSelected\" }), intl.formatMessage({ id: \"StoreForm.Error\" }), \"danger\");\n            return;\n        } else if (!validateFields(itemErrors, intl)) {\n            setDisplayItemErrors(true);\n            return;\n        }\n        \n        let tempProduct = [...form.purchasedProducts];\n        tempProduct.push({\n            productName: selectedProduct.productName,\n            omocomCounterpartHandle: selectedProduct.omocomCounterpartHandle,\n            addOns: selectedProduct.addOns,\n            shortDescription: convertToKeyValue(productValues, PropertyMap.InsurableObjectShortDescription),\n            insuredAmount: insuredAmount && insuredAmount.amount && insuredAmount.amount > 0 ? insuredAmount : undefined,\n            InsuranceExternalProperties: convertToKeyValue(productValues, PropertyMap.InsuranceExternalProperty),\n            InsurableObjectExternalProperties: convertToKeyValue(productValues, PropertyMap.InsurableObjectExternalProperty)\n        });\n\n        setForm({\n            ...form,\n            purchasedProducts: tempProduct\n        })\n\n        setItemErrors({});\n        resetProductValues();\n        setDisplayItemErrors(false);\n\n        selectedProduct.fields && selectedProduct.fields.forEach(field => {\n            if (field.externalPropertyMap === PropertyMap.InsuranceInsuredAmount && field.required) {\n                setItemErrors(error => ({ ...error, \"insuredAmount\": intl.formatMessage({ id: \"StoreForm.IsRequiredField\" }) }));\n            } else if (field.componentType === \"Selection\" && field.required) {\n                setItemErrors(error => ({ ...error, [field.externalPropertyName || field.id || \"\"]: intl.formatMessage({ id: \"StoreForm.IsEmptyItemFields\" }) }));\n            }\n        });\n\n        addNotification(intl.formatMessage({ id: \"StoreForm.ProductAdded\" }), intl.formatMessage({ id: \"StoreForm.Success\" }), \"success\");\n        return tempProduct;\n    }\n\n    const resetProductValues = () => {\n        setProductValues({});\n        setInsuredAmount({amount: 0, currency: \"SEK\"});\n        setItemErrors({});\n\n        let buttonsContainers = document.getElementsByClassName(\"selection-buttons-wrapper\");\n        for (let buttonsContainer of buttonsContainers) {\n            let buttons = buttonsContainer.getElementsByClassName(\"selection-button\");\n            for (let button of buttons) {\n                button.classList.remove('active');\n            }\n        };\n    }\n\n    const removeItem = (index: number) => {\n\t\tlet tempSavedItems = [...form.purchasedProducts];\n\t\ttempSavedItems.splice(index, 1);\n\t\tsetForm({...form, purchasedProducts: tempSavedItems});\n\t}\n\n    useEffect(() => {\n        async function fetchMyAPI() {\n            try {\n                const deploymentEnv = new DeploymentEnvironment();\n                const insuranceInfoClient = new OmocomStoreApiClientConfig(deploymentEnv.apiUrl);\n                const productClient = new ProductInfoClient(insuranceInfoClient);\n\n                const token = await authentication.getAccessToken() as any;\n                let platformId = token?.idTokenClaims?.extension_PlatformId;\n                let marketName = token?.idTokenClaims?.extension_MarketName;\n\n                const response = await productClient.getProductInfo(platformId, marketName);\n                setAvailableProducts(response);\n\n            } catch (e) {\n                console.log(\"error: \", e)\n            }\n        }\n        fetchMyAPI();\n        // eslint-disable-next-line\n    }, []);\n\n    const handleFormSubmit = async (\n        e: React.SyntheticEvent<HTMLFormElement>\n    ) => {\n        e.preventDefault();\n\n        if (done) {\n            return;\n        }\n\n        if (!productIsSelected) {\n            addNotification(intl.formatMessage({ id: \"StoreForm.ProductNotSelected\" }), intl.formatMessage({ id: \"StoreForm.Error\" }), \"danger\");\n            return;\n        } \n\n        if (!validateFields(errors, intl)) {\n            setDisplayErrors(true);\n            return;\n        }\n\n        if (productValues.length || insuredAmount.amount) {\n            if (!validateFields(itemErrors, intl)) {\n                setDisplayItemErrors(true);\n                return;\n            }\n\n            let tempProduct = saveProduct();\n            if (!tempProduct) {\n                return;\n            }\n\n            form.purchasedProducts = tempProduct;\n\n        } else if (!form.purchasedProducts.length) {\n            addNotification(intl.formatMessage({ id: \"StoreForm.IsEmptyItemFields\" }), intl.formatMessage({ id: \"StoreForm.Error\" }), \"danger\");\n            return;\n        }\n\n        setModal({\n            ...modal,\n            showModal: true,\n            modalText: intl.formatMessage({\n                id: \"StoreForm.ModalTextSave\",\n            }),\n            modalHeader: \"\",\n            submitting: true,\n        });\n\n        setDisplayErrors(false);\n        setDisplayItemErrors(false);\n\n        let token = await authentication.getAccessToken() as any;\n\n        try {\n            const deploymentEnv = new DeploymentEnvironment();\n            const authClientConfig = new OmocomStoreApiClientConfig(deploymentEnv.apiUrl, token.accessToken);\n            const insuranceClient = new InsuranceClient(authClientConfig);\n\n            let result = await insuranceClient.create(availableProducts.platformId, availableProducts.marketName, form);\n            console.log(\"result\", result);\n            let modalInfoText = [] as any;\n            result.createdInsurances?.forEach(insurance => {\n                modalInfoText.push({ id: insurance.id, product: insurance.product });\n            });\n\n            setModal({\n                ...modal,\n                logoResponse: <LogoBig />,\n                modalHeader: intl.formatMessage({\n                    id: \"StoreForm.ModalHeaderFormReceived\",\n                }),\n                modalResponseBody: intl.formatMessage({\n                    id: \"StoreForm.ModalResponseBodyFormReceived\",\n                }),\n                modalInfoText: modalInfoText,\n                modalResponseFooter: intl.formatMessage({\n                    id: \"StoreForm.ModalResponseFooterFormReceived\",\n                }),\n                modalResponseFooterLink: \"https://www.omocom.insurance\",\n\n                showModal: true,\n                submitting: false,\n            });\n            setDone(true);\n\n        } catch (ex) {\n            // I am still not clear on why the generated code does not return a ValidationProblemDetails structure like it is done for\n            // Omocom.Api/OpenApi/omocomApi.ts. If I can figure that out we might change this exception.\n            console.log(\"error: \", ex);\n            // Display what the problem is in the error popup so we don't have to spin up the debugger to look at the exception\n            if (ex instanceof Error) {\n                setModal({\n                    ...modal,\n                    showModal: true,\n                    modalText: ex.message,\n                    modalHeader: intl.formatMessage({\n                        id: \"StoreForm.InstanceOfError\",\n                    }),\n                    submitting: false,\n                });\n            }\n            else {\n                setModal({\n                    ...modal,\n                    showModal: true,\n                    modalText: intl.formatMessage({\n                        id: \"StoreForm.UnknownError\",\n                    }),\n                    modalHeader: intl.formatMessage({\n                        id: \"StoreForm.InstanceOfError\",\n                    }),\n                    submitting: false,\n                })\n            }\n        }\n    };\n\n    return (\n        <>\n            <form\n                autoComplete=\"off\"\n                className=\"mb-4\"\n                onSubmit={(e) => handleFormSubmit(e)}\n                noValidate\n                onKeyPress={(event) => {\n                    if (event.key === \"Enter\") {\n                        event.preventDefault();\n                    }\n                }}\n            >\n\n                <UserInputInformation\n                    form={form}\n                    setValue={convertValue}\n                    done={done}\n                    setError={(newError: any, id: string) => { setErrors(error => ({ ...error, [id]: newError })) }}\n                    displayErrors={displayErrors}\n                />\n\n                <ItemInputInformation\n                    products={availableProducts.products}\n                    selectedProduct={selectedProduct}\n                    productValues={productValues}\n                    insuredAmount={insuredAmount}\n                    setValue={convertProductValue}\n                    handleProductSelection={handleProductSelection}\n                    done={done}\n                    setError={(newError: any, id: string) => { setItemErrors(error => ({ ...error, [id]: newError })) }}\n                    displayErrors={displayItemErrors}\n                />\n\n                <Grid container spacing={3}>\n                    <Grid item xs={12} sm={12} md={8}>\n                        <Card>\n                            <CardContent>\n                                <Typography\n                                    className=\"MuiTypography--heading\"\n                                    variant=\"h6\"\n                                    gutterBottom\n                                >\n                                    {` ${intl.formatMessage({\n                                        id: \"StoreForm.ReviewInformation\",\n                                    })}`}\n                                </Typography>\n                            </CardContent>\n                        </Card>\n                    </Grid>\n                </Grid>\n\n                <PrimaryButton\n                    className=\"btn btn-block\"\n                    type=\"button\"\n                    value={intl.formatMessage({\n                        id: \"StoreForm.addValue\",\n                    })}\n                    onClick={saveProduct}\n                    disabled={done}\n                />\n\n                <PrimaryButton\n                    className=\"btn btn-block\"\n                    type=\"submit\"\n                    value={intl.formatMessage({\n                        id: \"StoreForm.submitValue\",\n                    })}\n                    disabled={done}\n                />\n            </form>\n\n            <Basket products={form.purchasedProducts} removeItem={removeItem} done={done} />\n\n            <StoreModal\n                show={modal.showModal}\n                text={modal.modalText}\n                logoResponse={modal.logoResponse}\n                header={modal.modalHeader}\n                textIssueKey={modal.modalResponseIssueKey}\n                info={modal.modalInfoText}\n                body={modal.modalResponseBody}\n                footer={modal.modalResponseFooter}\n                footerLinkText={modal.modalResponseFooterLinkText}\n                footerLink={modal.modalResponseFooterLink}\n                onCloseModal={() => {\n                    if (!modal.submitting) {\n                        setModal({\n                            ...modal,\n                            showModal: false,\n                        });\n                    }\n                }}\n            />\n        </>\n    );\n};\n\nexport default StoreForm\n","import React, { memo } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport styled from \"styled-components\";\n\nconst HeaderContainer = styled.div`\n\tmargin-bottom: 2rem;\n`;\n\nconst HeaderBody = styled.div`\n\tpadding-top: 1.5rem;\n\tpadding-bottom: 1.5rem;\n`;\n\nconst HeaderTitle = styled.h1`\n\tmargin-bottom: 0;\n\t@media (max-width: 1040px) {\n\t\ttext-align: center;\n\t\tmargin-bottom: 1rem;\n\t}\n`;\n\nconst Ingress = styled.div`\n\tmargin-bottom: 0;\n`;\n\nconst Alert = styled.div`\n\tcolor: red;\n\tmargin-top: 2rem;\n`\n\nexport interface IProps {\n\tHeaderTitle: string;\n\tIngress?: string;\n\tAlert?: string;\n}\n\nexport const Header = memo((props: IProps) => (\n\t<HeaderContainer>\n\t\t<HeaderBody>\n\t\t\t<Row className=\"align-items-center\">\n\t\t\t\t<Col>\n\t\t\t\t\t<HeaderTitle>{props.HeaderTitle}</HeaderTitle>\n\t\t\t\t\t<Ingress>{props.Ingress}</Ingress>\n\t\t\t\t\t{ props.Alert && <Alert>{props.Alert}</Alert> }\n\t\t\t\t</Col>\n\t\t\t</Row>\n\t\t</HeaderBody>\n\t</HeaderContainer>\n));\nHeader.displayName = \"Header\";\n","import React from \"react\";\nimport { Logo } from \"./styles/styledComponents/styled\";\nimport { Header } from \"./Header\";\nimport { useIntl } from \"react-intl\";\nimport authentication from \"../B2c\";\n\nconst StoreHeader = (props) => {\n\tconst intl = useIntl();\n\n\treturn (\n\t\t<>\n\t\t\t<div>\n\t\t\t\t<Logo />\n\t\t\t</div>\n\t\t\t<Header\n\t\t\t\tHeaderTitle={intl.formatMessage({\n\t\t\t\t\tid: \"StoreForm.FormHeader\",\n\t\t\t\t})}\n\t\t\t\tIngress={intl.formatMessage({\n\t\t\t\t\tid: \"StoreForm.FormHeaderIngress\",\n\t\t\t\t})}\n\t\t\t/>\n\t\t\t<div style={{display: \"none\"}}>\n\t\t\t\t<input value=\"locale\" type=\"button\" onClick={() => { props.setLocale() }} />\n\t\t\t\t<input value=\"logout\" type=\"button\" onClick={() => { authentication.signOut() }} />\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default StoreHeader;\n","import React, { memo, useState } from \"react\";\nimport StoreForm from \"./StoreForm\";\nimport StoreHeader from \"./StoreHeader\";\nimport { IntlProvider } from \"react-intl\";\nimport { localeLanguage, messagesForLanguages } from \"./translations/locales\";\n\nconst StoreContainer = () => {\n\tconst [locale, setLocale] = useState(localeLanguage);\n\tconst messages = { ...messagesForLanguages.en, ...messagesForLanguages[locale] };\n\n\treturn (\n\t\t<div id=\"maincontainer\">\n\t\t\t<div id=\"formholder\" className=\"store-container\">\n\t\t\t\t<IntlProvider key={locale} locale={locale} messages={messages}>\n\t\t\t\t\t<StoreHeader setLocale={() => {setLocale(locale === \"sv\" ? \"en\" : \"sv\")}}/>\n\t\t\t\t\t<StoreForm />\n\t\t\t\t</IntlProvider>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default memo(StoreContainer);\n","import * as React from \"react\";\nimport { Container } from \"react-bootstrap\";\nimport { Grid } from \"@material-ui/core\";\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\nimport MomentUtils from \"@date-io/moment\";\nimport StoreContainer from \"./StoreContainer\";\nimport { ReactNotifications } from 'react-notifications-component';\nimport 'react-notifications-component/dist/theme.css';\n\nconst Layout = () => {\n\treturn (\n\t\t<MuiPickersUtilsProvider utils={MomentUtils}>\n\t\t\t<ReactNotifications />\n\t\t\t<Container fluid>\n\t\t\t\t<Grid container className=\"justify-content-center\">\n\t\t\t\t\t<Grid item lg={8}>\n\t\t\t\t\t\t<StoreContainer />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Container>\n\t\t</MuiPickersUtilsProvider>\n\t);\n};\n\nexport default Layout;","export default __webpack_public_path__ + \"static/media/bicycle-bg.f6a4124f.png\";","import React from \"react\";\n\nexport default function Text() {\n    return (\n        <div className=\"text-wrapper\">\n            <div className=\"header-wrapper\">\n                <h1 className=\"header\">Försäkra din Vélosophy med Omocom, endast 185kr per år</h1>\n                <div className=\"price-info\">\n                    Endast <span>185kr</span>för ett helt år\n                </div>\n            </div>\n            <p>\n                Omocom har i samarbete med Vélosophy tagit fram en enkel och prisvärd \n                försäkring för att skydda din Vélosophy. Försäkringen är en \n                självriskeliminering vilket innebär att du använder din egen hemförsäkring, \n                där Omocom ersätter kostnad för självrisk. \n            </p>\n            <p>\n                Fyll i formuläret nedan och betala enkelt och tryggt med Trustly för att \n                aktivera försäkringen. Efter utförd betalning skickar Omocom ut ditt \n                personliga försäkringsbrev inklusive försäkringsvillkor till den e-postadress \n                du anger i formuläret nedan.\n            </p>\n        </div>\n    )\n}","import React, { useState } from \"react\";\nimport \"../Velosophy.css\"\nimport { DeploymentEnvironment } from \"../../BackendApi/DeploymentEnvironment\";\nimport { OmocomStoreApiClientConfig } from \"../../BackendApi/OmocomStoreApiClientConfig\";\nimport { InsuranceClient, InsuranceStoreReq } from \"../../BackendApi/OmocomStoreApi\";\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\n\nexport default function Fields(props: { isPhone: boolean; }) {\n    const [name, setName] = useState(\"\");\n    const [surname, setSurname] = useState(\"\");\n    const [email, setEmail] = useState(\"\");\n    const [model, setModel] = useState(\"\");\n    const [date, setDate] = useState(null);\n    const [loading, setLoading] = useState(false);\n    const setMinDate = () => {\n        let date = new Date();\n        date.setDate(date.getDate() - 14);\n        return date;\n    }\n\n    const purchase = async () => {\n        let nameField = document.getElementById(\"fieldsWrapper\");\n        nameField && nameField.classList.add('submit');\n\n        if (!name || !surname || !email || !model || !date) {\n            return;\n        }\n\n        let insuranceStart = new Date();\n        insuranceStart.setHours(insuranceStart.getHours() + 1);\n        let insuranceEnd = new Date();\n        insuranceEnd.setFullYear(insuranceEnd.getFullYear() + 1);\n        insuranceEnd.setHours(insuranceEnd.getHours() + 1);\n\n        setLoading(true);\n        const deploymentEnv = new DeploymentEnvironment();\n        const authClientConfig = new OmocomStoreApiClientConfig(deploymentEnv.apiUrl, 'unused');\n        const insuranceClient = new InsuranceClient(authClientConfig);\n\n        const payload = {\n            firstName: name,\n            lastName: surname,\n            emailAddress: email,\n            userCultureInfo: navigator.language,\n            insuranceStart: insuranceStart,\n            insuranceEnd: insuranceEnd,\n            purchasedProducts: [\n                {\n                    productName: \"Deductible\",\n                    omocomCounterpartHandle: \"c49a1cfb-d809-459a-8774-b78765d24a3f\",\n                    shortDescription: model,\n                    objectId: model,\n                    insurableObjectExternalProperties: [\n                        {\n                            name: \"Model\",\n                            description: \"Velosophy model\",\n                            value: model\n                        },\n                        {\n                            name: \"Purchase date\",\n                            description: \"Velosophy purchase date\",\n                            dateTimeValue: date\n                        },\n                    ],\n                },\n            ]\n        } as InsuranceStoreReq\n\n        sessionStorage.setItem(\"veloMail\", email);\n        const response = await insuranceClient.purchase(\"velosophy\", \"se\", payload);\n        response.paymentUrl && (window.location.href = response.paymentUrl);\n        setLoading(false);\n    }\n\n    return (\n        <div id=\"fieldsWrapper\" className=\"fields-wrapper\">\n            {!props.isPhone ?\n                <>\n                    <div className=\"row\">\n                        <input id=\"name\" className={name ? \"input\" : \"input red\"} type=\"text\" placeholder=\"Förnamn\"\n                            value={name} onChange={(item) => setName(item.currentTarget.value)} />\n                        <input id=\"surname\" className={surname ? \"input\" : \"input red\"} type=\"text\" placeholder=\"Efternamn\"\n                            value={surname} onChange={(item) => setSurname(item.currentTarget.value)} />\n                        <input id=\"email\" className={email ? \"input\" : \"input red\"} type=\"text\" placeholder=\"E-postadress\"\n                            value={email} onChange={(item) => setEmail(item.currentTarget.value)} />\n                    </div>\n                    <div className=\"row\">\n                        <div id=\"radioButtons\" className={model ? \"radio-buttons\" : \"radio-buttons red\"}>\n                            <div className=\"radio-text\">\n                                Välj din Vélosophy-modell:\n                            </div>\n                            <div className=\"radio-buttons-inner\">\n                                <input style={{ display: 'none' }} type=\"radio\" id=\"Comfort\" name=\"model\"\n                                    value=\"Comfort\" onChange={(item) => setModel(item.currentTarget.value)} />\n                                <label htmlFor={\"Comfort\"} className={model === \"Comfort\" ? \"fields-radio checked\" : 'fields-radio'}>Comfort</label>\n                                <input style={{ display: 'none' }} type=\"radio\" id=\"Sport\" name=\"model\"\n                                    value=\"Sport\" onChange={(item) => setModel(item.currentTarget.value)} />\n                                <label htmlFor={\"Sport\"} className={model === \"Sport\" ? \"fields-radio checked\" : 'fields-radio'}>Sport</label>\n                            </div>\n                        </div>\n                        <div className={date ? \"datepicker\" : \"datepicker red\"}>\n                            <DatePicker id=\"datePicker\" className={\"input\"} placeholderText=\"Inköpsdatum\"\n                                minDate={setMinDate()} maxDate={new Date()} dateFormat=\"dd/MM/yyyy\"\n                                selected={date} onChange={(date) => setDate(date as any)} />\n                        </div>\n                        <input className={loading ? \"payment-button loading\" : \"payment-button\"} type=\"button\" value=\"Betala med Trustly\" onClick={() => purchase()} />\n                    </div>\n                </>\n                :\n                <>\n                    <div className=\"row\">\n                        <input id=\"name\" className={name ? \"input\" : \"input red\"} type=\"text\" placeholder=\" Förnamn\"\n                            value={name} onChange={(item) => setName(item.currentTarget.value)} />\n                        <input id=\"surname\" className={surname ? \"input\" : \"input red\"} type=\"text\" placeholder=\" Efternamn\"\n                            value={surname} onChange={(item) => setSurname(item.currentTarget.value)} />\n                    </div>\n                    <div className=\"row\">\n                        <input id=\"email\" className={email ? \"input\" : \"input red\"} type=\"text\" placeholder=\" E-postadress\"\n                            value={email} onChange={(item) => setEmail(item.currentTarget.value)} />\n                        <div className={date ? \"datepicker\" : \"datepicker red\"}>\n                            <DatePicker id=\"datePicker\" className={\"input\"} placeholderText=\"Inköpsdatum\"\n                                minDate={setMinDate()} maxDate={new Date()} dateFormat=\"dd/MM/yyyy\"\n                                selected={date} onChange={(date) => setDate(date as any)} />\n                        </div>\n                    </div>\n                    <div className=\"row\">\n                        <div id=\"radioButtons\" className={model ? \"radio-buttons\" : \"radio-buttons red\"}>\n                            <div className=\"radio-text\">\n                                Välj din Vélosophy-modell:\n                            </div>\n                            <div className=\"radio-buttons-inner\">\n                                <input style={{ display: 'none' }} type=\"radio\" id=\"Comfort\" name=\"model\"\n                                    value=\"Comfort\" onChange={(item) => setModel(item.currentTarget.value)} />\n                                <label htmlFor={\"Comfort\"} className={model === \"Comfort\" ? \"fields-radio checked\" : 'fields-radio'}>Comfort</label>\n                                <input style={{ display: 'none' }} type=\"radio\" id=\"Sport\" name=\"model\"\n                                    value=\"Sport\" onChange={(item) => setModel(item.currentTarget.value)} />\n                                <label htmlFor={\"Sport\"} className={model === \"Sport\" ? \"fields-radio checked\" : 'fields-radio'}>Sport</label>\n                            </div>\n                        </div>\n                        <input className={loading ? \"payment-button loading\" : \"payment-button\"} type=\"button\" value=\"Betala med Trustly\" onClick={() => purchase()} />\n                    </div>\n                </>\n            }\n        </div>\n    )\n}","export default __webpack_public_path__ + \"static/media/arrow.06f0592d.svg\";","export default __webpack_public_path__ + \"static/media/Villkor-velo.dae25e53.pdf\";","export default __webpack_public_path__ + \"static/media/Produktfaktablad-velo.6d34ca58.pdf\";","import React from \"react\";\nimport arrow from \"../../Utils/Images/arrow.svg\";\nimport villkor from \"../../Utils/Images/Villkor-velo.pdf\";\nimport faktablad from \"../../Utils/Images/Produktfaktablad-velo.pdf\";\n\nexport default function Information(props: { isPhone: boolean; }) {\n    return (\n        <div className=\"information-wrapper\">\n            {!props.isPhone ?\n                <>\n                    <div className=\"information-inner\">\n                        <div className=\"information\">\n                            <h1 className=\"information-title\">Stöld</h1>\n                            <p className=\"information-text\">\n                                Om din cykel blir stulen när den är låst med ett SFF godkänt lås\n                            </p>\n                            <p className=\"information-text\">\n                                Försäkringen gäller för stöld som inträffar i hela Norden\n                            </p>\n                        </div>\n                        <div className=\"information\">\n                            <h1 className=\"information-title\">Skador</h1>\n                            <p className=\"information-text\">\n                                Om din cykel blir skadad och behöver repareras eller ersättas med en reservdel\n                            </p>\n                        </div>\n                        <div className=\"information\">\n                            <h1 className=\"information-title\">0:- självrisk</h1>\n                            <p className=\"information-text\">\n                                Försäkringen lämnar ersättning för den självrisk som dragits av genom\n                                din ordinarie försäkring med upp till 10 000kr.\n                            </p>\n                        </div>\n                        <div className=\"information last\">\n                            <h1 className=\"information-title\">Det finstilta:</h1>\n                            <p className=\"information-text\">\n                                <a href={villkor} target=\"_blank\" rel=\"noreferrer\"> Fullständiga försäkringsvillkor <img className=\"arrow\" alt=\"\" src={arrow} /></a>\n                                <a href={faktablad} target=\"_blank\" rel=\"noreferrer\"> Produktfaktablad <img className=\"arrow\" alt=\"\" src={arrow} /></a>\n                            </p>\n                            <p className=\"information-text\">Besök <a href=\"https://velosophy.cc/\" target=\"_blank\" rel=\"noreferrer\" className=\"styled\">Vélosophys hemsida <img className=\"arrow\" alt=\"\" src={arrow} /></a></p>\n                        </div>\n                    </div>\n                    <div className=\"information-extra\">\n                        <h1 className=\"information-title\">Visste du att...?</h1>\n                        <p className=\"information-text\">\n                            Cykelstöld är ett av de vanligaste egendomsbrotten i Sverige.\n                        </p>\n                    </div>\n                </>\n                :\n                <>\n                    <div className=\"information-inner\">\n                        <div className=\"information\">\n                            <h1 className=\"information-title\">Skyddar mot stöld och skador. Självrisk 0:-</h1>\n                        </div>\n                        <div className=\"information last\">\n                            <a className=\"information-title\" href={villkor} target=\"_blank\" rel=\"noreferrer\"> Försäkringsvillkor <img className=\"arrow\" alt=\"\" src={arrow} /></a>\n                            <a className=\"information-title\" href={faktablad} target=\"_blank\" rel=\"noreferrer\"> Produktfaktablad <img className=\"arrow\" alt=\"\" src={arrow} /></a>\n                        </div>\n                    </div>\n                    <div className=\"information-inner small\">\n                        <p className=\"information-text\">\n                            Försäkringen är en självriskeliminering. Observera att du behöver ha en ordinarie försäkring, t.ex. hemförsäkring,\n                            som omfattar cykel för att självriskelimineringen ska gälla.\n                        </p>\n                    </div>\n                </>\n            }\n        </div>\n    )\n}","import React from \"react\";\n\nexport default function Footer() {\n    return (\n        <div className=\"footer\">\n            <a href=\"tel:+46 (0) 8 520 278 70\" >+46 (0) 8 520 278 70</a> |\n            <a href=\"mailto:hello@omocom.insurance\">hello@omocom.insurance</a> |\n            <a href=\"https://www.omocom.insurance\">www.omocom.insurance</a>\n        </div>\n    )\n}","export default __webpack_public_path__ + \"static/media/omocom-logo-orange.a5a38581.png\";","export default __webpack_public_path__ + \"static/media/velosophy-logo.777688ff.png\";","import React, {useEffect, useState} from \"react\";\nimport \"./Velosophy\";\nimport background from \"../Utils/Images/bicycle-bg.png\";\nimport Text from \"./Text/Text\";\nimport Fields from \"./Fields/Fields\";\nimport Information from \"./Information/Information\";\nimport Footer from \"./Footer/Footer\";\nimport omocomLogo from \"../Utils/Images/omocom-logo-orange.png\";\nimport velosophyLogo from \"../Utils/Images/velosophy-logo.png\";\n\nexport default function Velosophy() {\n    const [isPhone, setIsPhone] = useState(false);\n\n    useEffect(() => {\n        const updateWindowDimensions = () => {\n            if (window.innerWidth < 800) {\n                setIsPhone(true);\n            }\n            else {\n                setIsPhone(false);\n            }\n        };\n\n        window.addEventListener(\"resize\", updateWindowDimensions);\n        updateWindowDimensions();\n        return () => window.removeEventListener(\"resize\", updateWindowDimensions)\n    }, []);\n\n    return (\n        <div className=\"velosophy\">\n            <div className=\"background-image\" style={{ backgroundImage: `url(${background})` }} />\n            <div className=\"banner\">\n                <div className=\"logo-wrapper\">\n                    <img src={omocomLogo} alt=\"\" />\n                    <img src={velosophyLogo} alt=\"\" />\n                </div>\n            </div>\n            <div className=\"content-wrapper\">\n                <Text />\n                <Fields isPhone={isPhone} />\n                <Information isPhone={isPhone} />\n                <Footer />\n            </div>\n        </div>\n    )\n}","import React from \"react\";\nimport thumbs from \"../../Utils/Images/approved.svg\";\nimport Footer from \"../Footer/Footer\";\n\nfunction Success() {\n    return (\n        <div className=\"velosophy-successWrapper\">\n            <div className=\"success\">\n                <img className=\"thumbs\" src={thumbs} alt={''} />\n                <div className=\"successText\">\n                    <h1>\n                        Tack och grattis!\n                    </h1>\n                    <p>\n                        Ditt köp har lyckats!\n                    </p>\n                    <p>\n                    Vi har skickat en bekräftelse med dina fullständiga \n                    försäkringsvillkor till {sessionStorage.veloMail || \"din emailaddress\"}.\n                    </p>\n                </div>\n            </div>\n            <div className=\"footer\" >\n                <Footer />\n            </div>\n        </div>\n    )\n}\n\nexport default Success;","import React from \"react\";\nimport thumbs from \"../../Utils/Images/failure.svg\";\nimport Footer from \"../Footer/Footer\";\n\nfunction Failure() {\n    return (\n        <div className=\"velosophy-failureWrapper\">\n            <div className=\"failure\">\n                <div>\n                    <img className=\"thumbs\" src={thumbs} alt={''} />\n                </div>\n                <h1>\n                    Oops, något gick fel.\n                </h1>\n                <p>\n                    Prova gärna igen, och dubbelkolla att\n                    du valde rätt konto och att det finns täckning.\n                </p>\n                <p>\n                    Om felet kvarstår kontakta Omocom via <a className=\"mail\" href=\"mailto:hello@omocom.insurance\">hello@omocom.insurance</a> eller 08-520 278 70.\n                </p>\n                <a className=\"button\" href={window.location.origin + \"/velosophy/se\"} >Återvänd till Velosophy</a>\n            </div>\n            <div className=\"footer\">\n                <Footer />\n            </div>\n        </div>\n    )\n}\n\nexport default Failure;\n","import Blocket from \"./Blocket/Blocket\";\nimport Error from \"./Blocket/Error/Error\";\nimport BlocketSuccess from \"./Blocket/EndScreens/Success\";\nimport BlocketFailure from \"./Blocket/EndScreens/Failure\";\nimport StoreLayout from \"./Store/Layout\";\nimport Velosophy from \"./Velosophy/Velosophy\";\nimport VelosophySuccess from \"./Velosophy/EndScreens/Success\";\nimport VelosophyFailure from \"./Velosophy/EndScreens/Failure\";\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\nimport authentication from './B2c';\n\nauthentication.initialize();\n\nfunction OmocomRouter() {\n\treturn (\n\t\t<Router>\n\t\t\t<App />\n\t\t</Router>\n\t);\n}\n\nfunction App() {\n    const queryString = require('query-string');\n    const parsed = queryString.parse(window.location.search);\n    const QSExists = (parsed.adTitle && parsed.listId)\n\n    return (\n        <Switch>\n            <Route exact path=\"/blocket/se\">\n                { QSExists ? \n                <Blocket />\n                : <Error /> }\n            </Route>\n            <Route exact path=\"/blocket/success\">\n                <BlocketSuccess />\n            </Route>\n            <Route exact path=\"/blocket/failure\">\n                <BlocketFailure />\n            </Route>\n            <Route exact path=\"/velosophy/se\">\n                <Velosophy />\n            </Route>\n            <Route exact path=\"/velosophy/success\">\n                <VelosophySuccess />\n            </Route>\n            <Route exact path=\"/velosophy/failure\">\n                <VelosophyFailure />\n            </Route>\n            <Route exact path=\"/store/se\" component={authentication.required(StoreLayout)} />\n        </Switch>\n    )\n}\n\nexport default OmocomRouter;","const reportWebVitals = onPerfEntry => {\n  if (onPerfEntry && onPerfEntry instanceof Function) {\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(onPerfEntry);\n      getFID(onPerfEntry);\n      getFCP(onPerfEntry);\n      getLCP(onPerfEntry);\n      getTTFB(onPerfEntry);\n    });\n  }\n};\n\nexport default reportWebVitals;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n\t<App />,\n\tdocument.getElementById('root')\n)\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"package\":\"Package_package__DjfmH\",\"packagesHeader\":\"Package_packagesHeader__tTqds\",\"packageLabel\":\"Package_packageLabel__3ms2L\",\"packageTitle\":\"Package_packageTitle__1Ezdt\",\"packagePrice\":\"Package_packagePrice__1pYEr\",\"packageText\":\"Package_packageText__BPn_3\",\"packagesWrapper\":\"Package_packagesWrapper__36SrA\",\"packageButtonWrapper\":\"Package_packageButtonWrapper__3eWzD\",\"packageButton\":\"Package_packageButton__JQNkB\",\"selected\":\"Package_selected__tYaYM\",\"unselected\":\"Package_unselected__2MCND\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"blocket\":\"Blocket_blocket__5NXSw\",\"gray\":\"Blocket_gray__3hbjm\",\"blocketInner\":\"Blocket_blocketInner__29705\",\"blocketInlineTitle\":\"Blocket_blocketInlineTitle__ysMl6\",\"inlineRightWrapper\":\"Blocket_inlineRightWrapper__2GV93\",\"inline\":\"Blocket_inline__11Hl5\",\"bankId\":\"Blocket_bankId__3QQiK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"successWrapper\":\"Success_successWrapper__w5yaf\",\"success\":\"Success_success__3IcQe\",\"thumbs\":\"Success_thumbs__2IukU\",\"button\":\"Success_button__5_5nN\",\"footer\":\"Success_footer__3XAbP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"failureWrapper\":\"Failure_failureWrapper__dqSyQ\",\"failure\":\"Failure_failure__2Uwhd\",\"backButton\":\"Failure_backButton__YzTDv\",\"arrow\":\"Failure_arrow__1ryFr\",\"thumbs\":\"Failure_thumbs__3YgRR\",\"mail\":\"Failure_mail__11ufm\",\"button\":\"Failure_button__ixNWR\",\"footer\":\"Failure_footer__2BScS\"};"],"sourceRoot":""}