{"version":3,"sources":["webpack:///./Scripts/Components/Button.js","webpack:///./Scripts/Components/Cart.js","webpack:///./Scripts/Components/Checkout.Cart.js","webpack:///./Scripts/Components/InputField.js","webpack:///./Scripts/Components/InfoField.js","webpack:///./Scripts/Components/Checkout.BusinessCustomerInfo.js","webpack:///./Scripts/Components/Checkout.PrivateCustomerInfo.js","webpack:///./Scripts/Components/Checkout.ValidationSchema.js","webpack:///./Scripts/Components/Checkout.CustomerInfo.js","webpack:///./Scripts/Components/Checkout.DeliveryMethods.js","webpack:///./Scripts/Components/Checkout.DiscountCodes.js","webpack:///./Scripts/Components/Checkout.OrderInfo.js","webpack:///./Scripts/Components/Checkout.OrderNote.js","webpack:///./Scripts/Components/Checkout.PaymentMethods.js","webpack:///./Scripts/Components/Payments/PaymentWidget.js","webpack:///./Scripts/Components/Checkout.js"],"names":["onClick","title","disabled","type","fluid","rounded","isLink","getClassNames","useCallback","classes","push","join","className","mapCartToAbort","quantityDispatch","debounce","articleNumber","quantity","dispatch","AbortController","update","then","reloadPayment","catch","ex","catchError","error","loadError","useDispatch","removingRow","setRemovingRow","useState","cart","useSelector","state","orderRows","setOrderRows","discountRows","useEffect","removeOrderRow","handleQuantityInput","rowSystemId","ensureCorrectness","console","log","floatQuantity","parseFloat","validValue","isNaN","index","findIndex","item","abort","cancel","tempOrderRows","ProductImage","order","src","image","alt","ProductAvaliability","Fragment","isInStock","deliveryStatusText","ProductName","href","name","ProductQuantity","isFreeGift","campaignPrice","price","readOnly","min","maxLength","value","quantityString","ProductTotalPrice","totalCampaignPrice","totalPrice","RemoveBtn","orderTotal","translate","map","key","errors","cssClass","id","autoComplete","placeholder","onChange","label","htmlFor","event","target","values","idx","getCountry","address","addressCountry","constants","country","text","onSave","onCompanyAddressChange","valueForm","isEditingAddress","payload","checkout","companyAddresses","companyName","authenticated","input","stateKey","toLowerCase","selectedAddress","useMemo","selectedCompanyAddressId","find","systemId","zipCode","city","signUpCheckboxVisibility","signUp","isValidating","customerDetails","alternativeAddress","checked","showAlternativeAddress","setShowAlternativeAddress","setSignUp","privateCustomerAdditionalDetailsSchema","object","shape","acceptTermsOfCondition","boolean","required","oneOf","selectedDeliveryMethod","selectedPaymentMethod","privateCustomerAddressSchema","email","string","phoneNumber","mixed","notOneOf","lastName","firstName","privateCustomerAlternativeAddressSchema","businessCustomerDetailsSchema","businessCustomerAdditionalDetailsSchema","validateAlternativeAddress","validateCustomerInfo","result","isBusinessCustomer","validate","addressPath","addressFormValue","setAddressFormValue","setIsEditingAddress","loginUrl","checkoutMode","onCustomerInfoChange","previousState","companyAddressId","onEditForm","onUpdateCustomerDetails","notCustomerDetailFields","setValidateStatus","clearError","saveCustomerDetail","updateCustomerDetails","setSelectedCompanyAddress","companyAddress","c","setCountry","path","indexOf","submitError","finally","privateCustomerInfoComponent","businessCustomerInfoComponent","setBusinessCustomer","deliveryMethods","length","method","setDelivery","formattedPrice","usedDiscountCodes","discountCodeEl","useRef","current","ref","setDiscountCode","submitDiscountCode","discountCode","deleteDiscountCode","discount","deliveryCost","paymentCost","grandTotal","vat","orderNote","setOrderNote","paymentMethods","scriptPattern","scriptFilePattern","extractScripts","domString","matches","html","scripts","scriptFiles","exec","replace","trim","executeScript","domId","scriptContent","script","document","createElement","appendChild","createTextNode","e","getElementById","includeScript","srciptUrl","React","responseString","paymentSession","WidgetCheckout","DynamicComponent","loader","args","renderWidget","shippingOptionVisibility","setShippingOptionVisibility","paymentOptionVisibility","setPaymentOptionVisibility","customerDetailsVisibility","setCustomerDetailsVisibility","deliveryWidgetVisibility","setDeliveryWidgetVisibility","paymentWidgetVisibility","setPaymentWidgetVisibility","orderSummaryVisibility","setOrderSummaryVisibility","setSignUpCheckboxVisibility","onSubmit","submit","onSubmitError","submitDone","placeOrder","onError","setStatusSubmitButton","resetVisibilityValues","checkIntegrationTypeExist","integrationTypeCheck","integrationType","firstRender","setPayment","PaymentIntegrationType","ShippingIntegrationType","redirectUrl","window","location","errorKeys","Object","keys","errorNode","querySelector","inputNode","parentElement","setTimeout","focus","scrollIntoView","behavior","paymentWidget","updateKey","_force_update","termsUrl","rel","enableConfirmButton"],"mappings":"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kBACA,kBACA,WACA,uBAEHA,EACG,mBACA,kBACA,SACA,KACA,KACA,OACA,KAEHA,EACG,mBACA,kBACA,UACA,0BAEHA,EACG,kBACA,kBACA,UACA,sBACA,KACA,OACA,IAEHA,EACG,kBACA,kBACA,OACA,yBACA,KACA,OACA,KAEJ,uBAAKnG,UAAU,oBACX,yBACIA,UAAU,cACV+E,QAAQ,YAEPV,OAAU,kCAEf,0BACIrE,UAAU,cACV0E,GAAG,UACHZ,MAAOkD,EAAgBxB,QACvBb,aAAa,UACbE,SAAWG,IACPH,EACI,qBACA,UACAG,EAAMC,OAAOnB,OAEjBe,EACI,kBACA,UACAG,EAAMC,OAAOnB,MAChB,GAGL,0BAAQA,MAAM,GAAGxE,UAAQ,IACpB+E,OACG,8CAGPkB,gBACGA,oBACI,EAAGE,OAAM3B,WACL,0BACIA,MAAOA,EACPS,IAAM,WAAUT,KAEf2B,OAMxBU,EACG,mBACA,kBACA,cACA,cACA,KACA,SAIZ,uBAAKnG,UAAU,6BACX,uBAAKA,UAAU,aACX,uBAAKA,UAAU,oBACX,yBACIA,UAAU,gCACVT,KAAK,WACLmF,GAAG,yBACHpB,KAAK,yBACL4D,QACID,EAAmBE,yBACnB,EAEJtC,SAAWG,IACPH,EACI,qBACA,yBACAG,EAAMC,OAAOiC,SAEjB5G,GACI8G,QACIpC,EAAMC,OAAOiC,SAEpB,IAGT,yBACIlH,UAAU,gCACV+E,QAAQ,2BAEPV,OACG,mDAKf4C,EAAmBE,wBAChB,uBAAKnH,UAAU,aACVmG,EACG,kBACA,qBACA,YACA,uBAEHA,EACG,kBACA,qBACA,WACA,wBAEHA,EACG,mBACA,qBACA,SACA,KACA,KACA,OACA,KAEHA,EACG,mBACA,qBACA,UACA,2BAEHA,EACG,kBACA,qBACA,UACA,uBACA,KACA,OACA,IAEHA,EACG,kBACA,qBACA,OACA,0BACA,KACA,OACA,KAEJ,uBAAKnG,UAAU,oBACX,yBACIA,UAAU,cACV+E,QAAQ,aAEPV,OACG,kCAGR,0BACIrE,UAAU,cACV0E,GAAG,WACHZ,MAAOmD,EAAmBzB,QAC1Bb,aAAa,UACb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","file":"685.89f5d484a2f48476e399.js","sourcesContent":["import React from 'react';\nimport { useCallback } from 'react';\nconst Button = ({\n    onClick,\n    title,\n    disabled = false,\n    type = 'button',\n    fluid = false,\n    rounded = false,\n    isLink = false,\n}) => {\n    const getClassNames = useCallback(() => {\n        const classes = ['button'];\n        if (fluid) classes.push('expanded');\n        if (rounded) classes.push('rounded');\n        if (isLink) classes.push('link');\n        return classes.join(' ');\n    }, [fluid, rounded, isLink]);\n    return (\n        <button\n            className={getClassNames()}\n            onClick={onClick}\n            disabled={disabled}\n            type={type}\n        >\n            {title}\n        </button>\n    );\n};\nexport default Button;\n","import React, { useState, Fragment, useCallback, useEffect } from 'react';\nimport { translate } from '../Services/translation';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { reloadPayment } from '../Actions/Checkout.action';\nimport { update, loadError } from '../Actions/Cart.action';\nimport { debounce } from 'lodash-es';\nimport { catchError } from '../Actions/Error.action';\n\nconst mapCartToAbort = {};\n\nconst quantityDispatch = debounce((articleNumber, quantity, dispatch) => {\n    mapCartToAbort[articleNumber] = new AbortController();\n    dispatch(update(articleNumber, quantity, mapCartToAbort[articleNumber]))\n        .then(() => dispatch(reloadPayment()))\n        .catch((ex) => dispatch(catchError(ex, (error) => loadError(error))));\n}, 500);\n\nconst Cart = () => {\n    const dispatch = useDispatch();\n    const [removingRow, setRemovingRow] = useState({});\n    const cart = useSelector((state) => state.cart);\n    const [orderRows, setOrderRows] = useState(cart?.orderRows);\n    const { discountRows } = cart;\n\n    useEffect(() => {\n        setOrderRows(cart?.orderRows);\n    }, [cart]);\n\n    const removeOrderRow = useCallback(\n        (articleNumber) =>\n            dispatch(update(articleNumber, 0)).then(() =>\n                dispatch(reloadPayment())\n            ),\n        [dispatch]\n    );\n\n    const handleQuantityInput = useCallback(\n        (articleNumber, quantity, rowSystemId, ensureCorrectness = true) => {\n            console.log('click');\n            // In case of onBlur event, we need ensureCorrectness as true in order to ensure if the value is a valid float number\n            // In case of onChange event, we accept invalid float number, but we don't send any request to the server.\n            let floatQuantity = parseFloat(quantity);\n            let validValue = !isNaN(floatQuantity) && floatQuantity > 0;\n            console.log(validValue);\n            if (ensureCorrectness) {\n                quantity = validValue ? floatQuantity : 1;\n                floatQuantity = quantity;\n                validValue = true;\n            }\n            const index = orderRows.findIndex(\n                (item) => item.rowSystemId === rowSystemId\n            );\n            const oldQuantity = parseFloat(orderRows[index].quantity);\n            if (floatQuantity !== oldQuantity) {\n                mapCartToAbort[articleNumber] &&\n                    mapCartToAbort[articleNumber].abort();\n                quantityDispatch && quantityDispatch.cancel();\n                validValue &&\n                    quantityDispatch(articleNumber, quantity, dispatch);\n            }\n            const tempOrderRows = [...orderRows];\n            tempOrderRows[index] = {\n                ...tempOrderRows[index],\n                quantity,\n            };\n            setOrderRows(tempOrderRows);\n        },\n        [dispatch, orderRows]\n    );\n\n    const ProductImage = useCallback(({ order }) => {\n        return (\n            <div className=\"product\"><img src={order.image} alt=\"\" /> </div>\n        );\n    }, []);\n\n    const ProductAvaliability = useCallback(({ order }) => {\n        return (\n            <Fragment>\n                <div className=\"availability\">\n                    {order.isInStock ? (<div className=\"availability-icon available\">\n                        {order.deliveryStatusText}\n                    </div>) : (\n                        <div className=\"availability-icon unavailable\">\n                            {order.deliveryStatusText}\n                        </div>\n                    )}\n                </div>\n            </Fragment>\n        );\n    }, []);\n\n    const ProductName = useCallback(({ order }) => {\n        return (\n            <Fragment>\n                <div className=\"information\">\n                    <div className=\"name\"><a href=\"#\">{order.name}</a></div>\n                </div>\n            </Fragment>\n        );\n    }, []);\n\n    const ProductPrice = useCallback(({ order }) => {\n        return (\n            <Fragment>\n                {order.isFreeGift ? order.campaignPrice : order.price}\n            </Fragment>\n        );\n    }, []);\n\n    const ProductQuantity = useCallback(\n        ({ order }) => {\n\n            return (\n                <Fragment>\n                    <div className=\"amount\">\n                        {order.isFreeGift ? (<div>{order.quantity}</div>) :\n                            <div className=\"number-input\">\n                                <button onClick={() => handleQuantityInput(\n                                    order.articleNumber,\n                                    order.quantity - 1,\n                                    order.rowSystemId,\n                                    false\n                                )}></button>\n                                <input readOnly={true} type=\"number\" className=\"quantity\" min=\"1\" name=\"quantity\" maxLength={3} value={order.quantityString} />\n                                <button onClick={() => handleQuantityInput(\n                                    order.articleNumber,\n                                    order.quantity + 1,\n                                    order.rowSystemId,\n                                    false\n                                )} className=\"plus\"></button>\n                            </div>\n                        }\n                    </div>\n                </Fragment>\n            );\n        },\n        [handleQuantityInput]\n    );\n\n    const ProductTotalPrice = ({ order }) => {\n        return (\n            <Fragment>\n                {order.totalCampaignPrice ? (\n                    <Fragment>\n                        <div className=\"price\">\n                            <div className=\"prices\">\n                                <span className=\"new\">{order.totalCampaignPrice}</span>\n                                <span className=\"old\">{order.totalPrice}</span>\n                            </div>\n                        </div>\n                    </Fragment>\n                ) : (\n                    <div className=\"price\">\n                        <div className=\"prices\">\n                            <span className=\"regular\">{order.totalPrice}</span>\n                        </div>\n                    </div>\n                )}\n            </Fragment>\n        );\n    };\n\n    const RemoveBtn = useCallback(\n        ({ order }) => {\n            return (\n                <Fragment>\n                    {!order.isFreeGift && !removingRow[order.rowSystemId] && (\n                        <div className=\"x\" onClick={() =>\n                            setRemovingRow({\n                                ...removingRow,\n                                [order.rowSystemId]: true,\n                            })\n                        }>✕</div>\n\n                    )}\n                    {!order.isFreeGift && removingRow[order.rowSystemId] && (\n                        <Fragment>\n                            <div className=\"x\" onClick={() =>\n                                removeOrderRow(order.articleNumber)\n                            }>✓</div>\n                            <div className=\"y\" onClick={() =>\n                                setRemovingRow({\n                                    ...removingRow,\n                                    [order.rowSystemId]: false,\n                                })\n                            }>✕</div>\n\n                        </Fragment>\n                    )}\n                </Fragment>\n            );\n        },\n        [removeOrderRow, removingRow]\n    );\n\n    const CartTotal = useCallback(({ cart }) => {\n        return (\n            <div className=\"row\">\n                <div className=\"product\"></div>\n                <div className=\"information\"></div>\n                <div className=\"availability\"></div>\n                <div className=\"amount\"></div>\n                <div className=\"price\">\n                    <div className='prices'>\n                        <span className='regular'>{cart.orderTotal}</span>\n                    </div>\n                </div>\n                <div className=\"x\"></div>\n                <div className=\"y\"></div>\n            </div>\n        );\n    }, []);\n\n    return (\n        <div className=\"items-listing\">\n\n            <div className=\"row header\">\n                <div className=\"product\">\n                    {translate(\"checkout.product\")}\n                </div>\n                <div className=\"information\">\n                    {translate(\"checkout.information\")}\n                </div>\n                <div className=\"availability\">\n                    {translate(\"checkout.availability\")}\n                </div>\n                <div className=\"amount\">\n                    {translate(\"checkout.amount\")}\n                </div>\n                <div className=\"price\">\n                    {translate(\"checkout.price\")}\n                </div>\n                <div className=\"x\"></div>\n                <div className=\"y\"></div>\n            </div>\n            {orderRows.map((order) => (\n                <div className=\"row\" key={order.rowSystemId}>\n                    <ProductImage order={order} />\n                    <ProductName order={order} />\n                    <ProductAvaliability order={order} />\n                    <ProductQuantity order={order} />\n                    <ProductTotalPrice order={order} />\n                    <RemoveBtn order={order} />\n                </div>\n            ))}\n            {discountRows.map((order) => (\n                <div className=\"row\" key={order.rowSystemId}>\n                    <div className=\"product\"></div>\n                    <ProductName order={order} />\n                    <div className=\"availability\"></div>\n                    <div className=\"amount\"></div>\n                    <ProductTotalPrice order={order} />\n                    <div className=\"x\"></div>\n                    <div className=\"y\"></div>\n                </div>\n            ))}\n\n        </div>\n    );\n};\n\nexport default Cart;\n","import React, { Fragment } from 'react';\nimport Cart from './Cart';\nimport { translate } from '../Services/translation';\n\nconst CheckoutCart = ({ errors }) => {\n    return (\n        <Fragment>\n            <section className=\"wide\">\n                <div className=\"kassa-holder\">\n                    <div className=\"header\"> \n                        <h1>{translate('checkout.title')}</h1>\n                    </div>\n                    <Cart />\n                    <div className=\"row\">\n                        {errors && errors['cart'] && (\n                            <p className=\"checkout__validator--error\">\n                                {errors['cart'][0]}\n                            </p>\n                        )}\n                    </div>\n                </div>\n            </section>\n        </Fragment>\n    );\n};\n\nexport default CheckoutCart;\n","import React from 'react';\n\nconst InputField = ({\n    cssClass,\n    name,\n    id,\n    autoComplete = null,\n    placeholder = null,\n    type = 'text',\n    maxLength = 200,\n    disabled,\n    onChange,\n    value,\n    label,\n    errors,\n}) => {\n    return (\n        <div className={cssClass}>\n            <label className=\"form__label\" htmlFor={id}>\n                {label}\n            </label>\n            <input\n                className=\"form__input\"\n                disabled={disabled}\n                id={id}\n                name={name}\n                type={type}\n                value={value}\n                placeholder={placeholder}\n                autoComplete={autoComplete}\n                onChange={(event) => onChange(event.target.value)}\n                maxLength={maxLength}\n            />\n            {errors[id] && (\n                <span\n                    className=\"form__validator--error form__validator--top-narrow\"\n                    data-error-for={id}\n                >\n                    {errors[id][0]}\n                </span>\n            )}\n        </div>\n    );\n};\n\nexport default InputField;\n","import React from 'react';\n\nfunction InfoField({ values }) {\n    return (\n        <div className=\"small-12 medium-12 columns\">\n            {values.map((item, idx) => (\n                <>\n                    <span key={idx}>{item}</span>&nbsp;\n                </>\n            ))}\n        </div>\n    );\n}\n\nexport default InfoField;\n","import React, { Fragment, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport constants from '../constants';\nimport { translate } from '../Services/translation';\nimport InputField from './InputField';\nimport InfoField from './InfoField';\nimport Button from './Button';\n\nconst getCountry = (address) => {\n    const addressCountry = constants.countries\n        ? constants.countries.find(\n              (country) => country.value === address.country\n          )\n        : null;\n    return addressCountry ? addressCountry.text : address.country;\n};\n\nconst CheckoutBusinessCustomerInfo = ({\n    onChange,\n    onSave,\n    onCompanyAddressChange,\n    valueForm,\n    isEditingAddress,\n}) => {\n    const { payload, errors = {} } = useSelector((state) => state.checkout);\n    const { companyAddresses = [], companyName, authenticated } = payload;\n\n    const input = (\n        cssClass,\n        stateKey,\n        id,\n        autoComplete = 'on',\n        type = 'text'\n    ) => (\n        <InputField\n            cssClass={cssClass}\n            id={`${stateKey}-${id}`}\n            name={`${stateKey}-${id}`}\n            autoComplete={autoComplete}\n            disabled={!authenticated}\n            value={(valueForm[stateKey] || {})[id] || ''}\n            onChange={(value) => onChange(stateKey, id, value)}\n            label={translate(`checkout.customerinfo.${id.toLowerCase()}`)}\n            errors={errors}\n            type={type}\n        />\n    );\n\n    const selectedAddress = useMemo(() => {\n        return valueForm.selectedCompanyAddressId && companyAddresses\n            ? companyAddresses.find(\n                  (address) =>\n                      address.systemId === valueForm.selectedCompanyAddressId\n              )\n            : null;\n    }, [valueForm.selectedCompanyAddressId, companyAddresses]);\n\n    return (\n        <div className=\"row checkout-info__container\">\n            {isEditingAddress ? (\n                <Fragment>\n                    <div className=\"small-12 medium-6 columns\">\n                        <div className=\"row-inner\">\n                            {input(\n                                'small-6 columns',\n                                'customerDetails',\n                                'firstName',\n                                'billing given-name'\n                            )}\n\n                            {input(\n                                'small-6 columns',\n                                'customerDetails',\n                                'lastName',\n                                'billing family-name'\n                            )}\n                        </div>\n                        <div className=\"row-inner\">\n                            {input(\n                                'small-12 columns',\n                                'customerDetails',\n                                'phoneNumber',\n                                'billing tel',\n                                'tel'\n                            )}\n                        </div>\n                        <div className=\"row-inner\">\n                            {input(\n                                'small-12 columns',\n                                'customerDetails',\n                                'email',\n                                'email',\n                                'email'\n                            )}\n                        </div>\n                    </div>\n                    <div className=\"small-12 medium-6 columns\">\n                        <div className=\"row-inner\">\n                            <div className=\"small-12 columns\">\n                                <label\n                                    className=\"form__label\"\n                                    htmlFor=\"address\"\n                                >\n                                    {translate('checkout.customerinfo.address')}\n                                </label>\n\n                                <select\n                                    className=\"form__input\"\n                                    value={\n                                        valueForm.selectedCompanyAddressId || ''\n                                    }\n                                    disabled={!authenticated}\n                                    onChange={(event) =>\n                                        onCompanyAddressChange(\n                                            event.target.value,\n                                            companyAddresses.find(\n                                                (address) =>\n                                                    address.systemId ===\n                                                    event.target.value\n                                            ).country\n                                        )\n                                    }\n                                >\n                                    <option value=\"\" disabled>\n                                        {translate(\n                                            'checkout.customerinfo.companyaddress.placeholder'\n                                        )}\n                                    </option>\n                                    {companyAddresses &&\n                                        companyAddresses.map((address) => (\n                                            <option\n                                                value={address.systemId}\n                                                key={`companyAddress-${address.systemId}`}\n                                            >{`${address.address}, ${\n                                                address.zipCode\n                                            }, ${address.city}, ${getCountry(\n                                                address\n                                            )}`}</option>\n                                        ))}\n                                </select>\n                                {errors['selectedCompanyAddressId'] && (\n                                    <span\n                                        className=\"form__validator--error form__validator--top-narrow\"\n                                        data-error-for=\"selectedCompanyAddressId\"\n                                    >\n                                        {errors['selectedCompanyAddressId'][0]}\n                                    </span>\n                                )}\n                            </div>\n                        </div>\n                        {selectedAddress && (\n                            <div className=\"row-inner\">\n                                <div className=\"small-12 columns\">\n                                    {companyName}\n                                </div>\n                                <div className=\"small-12 columns\">\n                                    {selectedAddress.address}\n                                </div>\n                                <div className=\"small-12 columns\">\n                                    <span>{selectedAddress.zipCode}</span>&nbsp;\n                                    <span>{selectedAddress.city}</span>\n                                </div>\n                                <div className=\"small-12 columns\">\n                                    {getCountry(selectedAddress)}\n                                </div>\n                            </div>\n                        )}\n                    </div>\n                    <div className=\"small-12 columns flex-container align-right\">\n                        <Button\n                            onClick={onSave}\n                            title={translate('checkout.continue')}\n                            rounded={true}\n                        />\n                    </div>\n                </Fragment>\n            ) : (\n                <Fragment>\n                    <InfoField\n                        values={[\n                            valueForm['customerDetails']['firstName'],\n                            valueForm['customerDetails']['lastName'],\n                        ]}\n                    />\n                    <InfoField values={[companyName]} />\n                    <InfoField values={[selectedAddress.address]} />\n                    <InfoField\n                        values={[selectedAddress.zipCode, selectedAddress.city]}\n                    />\n                    <InfoField values={[getCountry(selectedAddress)]} />\n                    <InfoField\n                        values={[valueForm['customerDetails']['phoneNumber']]}\n                    />\n                    <InfoField\n                        values={[valueForm['customerDetails']['email']]}\n                    />\n                </Fragment>\n            )}\n        </div>\n    );\n};\n\nexport default CheckoutBusinessCustomerInfo;\nexport { getCountry };\n","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport constants from '../constants';\nimport { translate } from '../Services/translation';\nimport {\n    setSignUp,\n    setShowAlternativeAddress,\n} from '../Actions/Checkout.action';\nimport InputField from './InputField';\nimport { Fragment } from 'react';\nimport InfoField from './InfoField';\nimport { getCountry } from './Checkout.BusinessCustomerInfo';\nimport Button from './Button';\n\nconst CheckoutPrivateCustomerInfo = ({\n    onChange,\n    onSave,\n    valueForm,\n    isEditingAddress,\n    signUpCheckboxVisibility,\n}) => {\n    const dispatch = useDispatch();\n    const { payload, errors = {} } = useSelector((state) => state.checkout);\n    const { authenticated, signUp, isValidating } = payload;\n    const { customerDetails = {}, alternativeAddress = {} } = valueForm;\n\n    const input = (\n        cssClass,\n        stateKey,\n        id,\n        autoComplete = 'on',\n        placeholder = null,\n        type = 'text',\n        maxLength = 200\n    ) => (\n        <InputField\n            cssClass={cssClass}\n            id={`${stateKey}-${id}`}\n            name={`${stateKey}-${id}`}\n            autoComplete={autoComplete}\n            value={(valueForm[stateKey] || {})[id] || ''}\n            onChange={(value) => onChange(stateKey, id, value)}\n            label={translate(`checkout.customerinfo.${id.toLowerCase()}`)}\n            errors={errors}\n            placeholder={placeholder}\n            type={type}\n            maxLength={maxLength}\n        />\n    );\n\n    return (\n        <div className=\"row checkout-info__container\">\n            {isEditingAddress ? (\n                <Fragment>\n                    <div className=\"small-12 medium-6 columns\">\n                        <div className=\"row-inner\">\n                            <div className=\"small-12 columns checkout-info__placeholder-container\"></div>\n                        </div>\n                        <div className=\"row-inner\">\n                            {input(\n                                'small-6 columns',\n                                'customerDetails',\n                                'firstName',\n                                'billing given-name'\n                            )}\n                            {input(\n                                'small-6 columns',\n                                'customerDetails',\n                                'lastName',\n                                'billing family-name'\n                            )}\n                            {input(\n                                'small-12 columns',\n                                'customerDetails',\n                                'careOf',\n                                'on',\n                                null,\n                                'text',\n                                100\n                            )}\n                            {input(\n                                'small-12 columns',\n                                'customerDetails',\n                                'address',\n                                'billing street-address'\n                            )}\n                            {input(\n                                'small-6 columns',\n                                'customerDetails',\n                                'zipCode',\n                                'billing postal-code',\n                                null,\n                                'text',\n                                50\n                            )}\n                            {input(\n                                'small-6 columns',\n                                'customerDetails',\n                                'city',\n                                'billing address-level2',\n                                null,\n                                'text',\n                                100\n                            )}\n                            <div className=\"small-12 columns\">\n                                <label\n                                    className=\"form__label\"\n                                    htmlFor=\"country\"\n                                >\n                                    {translate('checkout.customerinfo.country')}\n                                </label>\n                                <select\n                                    className=\"form__input\"\n                                    id=\"country\"\n                                    value={customerDetails.country}\n                                    autoComplete=\"country\"\n                                    onChange={(event) => {\n                                        onChange(\n                                            'alternativeAddress',\n                                            'country',\n                                            event.target.value\n                                        );\n                                        onChange(\n                                            'customerDetails',\n                                            'country',\n                                            event.target.value\n                                        );\n                                    }}\n                                >\n                                    <option value=\"\" disabled>\n                                        {translate(\n                                            'checkout.customerinfo.country.placeholder'\n                                        )}\n                                    </option>\n                                    {constants.countries &&\n                                        constants.countries.map(\n                                            ({ text, value }) => (\n                                                <option\n                                                    value={value}\n                                                    key={`country-${value}`}\n                                                >\n                                                    {text}\n                                                </option>\n                                            )\n                                        )}\n                                </select>\n                            </div>\n                            {input(\n                                'small-12 columns',\n                                'customerDetails',\n                                'phoneNumber',\n                                'billing tel',\n                                null,\n                                'tel'\n                            )}\n                        </div>\n                    </div>\n                    <div className=\"small-12 medium-6 columns\">\n                        <div className=\"row-inner\">\n                            <div className=\"small-12 columns\">\n                                <input\n                                    className=\"checkout-info__checkbox-input\"\n                                    type=\"checkbox\"\n                                    id=\"showAlternativeAddress\"\n                                    name=\"showAlternativeAddress\"\n                                    checked={\n                                        alternativeAddress.showAlternativeAddress ||\n                                        false\n                                    }\n                                    onChange={(event) => {\n                                        onChange(\n                                            'alternativeAddress',\n                                            'showAlternativeAddress',\n                                            event.target.checked\n                                        );\n                                        dispatch(\n                                            setShowAlternativeAddress(\n                                                event.target.checked\n                                            )\n                                        );\n                                    }}\n                                />\n                                <label\n                                    className=\"checkout-info__checkbox-label\"\n                                    htmlFor=\"showAlternativeAddress\"\n                                >\n                                    {translate(\n                                        'checkout.customerinfo.showAlternativeAddress'\n                                    )}\n                                </label>\n                            </div>\n                        </div>\n                        {alternativeAddress.showAlternativeAddress && (\n                            <div className=\"row-inner\">\n                                {input(\n                                    'small-6 columns',\n                                    'alternativeAddress',\n                                    'firstName',\n                                    'shipping given-name'\n                                )}\n                                {input(\n                                    'small-6 columns',\n                                    'alternativeAddress',\n                                    'lastName',\n                                    'shipping family-name'\n                                )}\n                                {input(\n                                    'small-12 columns',\n                                    'alternativeAddress',\n                                    'careOf',\n                                    'on',\n                                    null,\n                                    'text',\n                                    100\n                                )}\n                                {input(\n                                    'small-12 columns',\n                                    'alternativeAddress',\n                                    'address',\n                                    'shipping street-address'\n                                )}\n                                {input(\n                                    'small-6 columns',\n                                    'alternativeAddress',\n                                    'zipCode',\n                                    'shipping postal-code',\n                                    null,\n                                    'text',\n                                    50\n                                )}\n                                {input(\n                                    'small-6 columns',\n                                    'alternativeAddress',\n                                    'city',\n                                    'shipping address-level2',\n                                    null,\n                                    'text',\n                                    100\n                                )}\n                                <div className=\"small-12 columns\">\n                                    <label\n                                        className=\"form__label\"\n                                        htmlFor=\"country2\"\n                                    >\n                                        {translate(\n                                            'checkout.customerinfo.country'\n                                        )}\n                                    </label>\n                                    <select\n                                        className=\"form__input\"\n                                        id=\"country2\"\n                                        value={alternativeAddress.country}\n                                        autoComplete=\"country\"\n                                        onChange={(event) => {\n                                            onChange(\n                                                'alternativeAddress',\n                                                'country',\n                                                event.target.value\n                                            );\n                                            onChange(\n                                                'customerDetails',\n                                                'country',\n                                                event.target.value\n                                            );\n                                        }}\n                                    >\n                                        <option value=\"\" disabled>\n                                            {translate(\n                                                'checkout.customerinfo.country.placeholder'\n                                            )}\n                                        </option>\n                                        {constants.countries &&\n                                            constants.countries.map(\n                                                ({ text, value }) => (\n                                                    <option\n                                                        value={value}\n                                                        key={`country2-${value}`}\n                                                    >\n                                                        {text}\n                                                    </option>\n                                                )\n                                            )}\n                                    </select>\n                                </div>\n                                {input(\n                                    'small-12 columns',\n                                    'alternativeAddress',\n                                    'phoneNumber',\n                                    'shipping tel',\n                                    null,\n                                    'tel'\n                                )}\n                            </div>\n                        )}\n                    </div>\n                    <div className=\"small-12 medium-6 columns\">\n                        <div className=\"row-inner\">\n                            {input(\n                                'small-12 columns',\n                                'customerDetails',\n                                'email',\n                                'email',\n                                null,\n                                'email'\n                            )}\n                        </div>\n                    </div>\n                    <div\n                        className={`small-12 columns flex-container ${\n                            authenticated ? 'align-right' : 'align-justify'\n                        }`}\n                    >\n                        <div>\n                            {!authenticated && signUpCheckboxVisibility && (\n                                <>\n                                    <input\n                                        className=\"checkout-info__checkbox-input\"\n                                        type=\"checkbox\"\n                                        id=\"signupandlogin\"\n                                        checked={signUp}\n                                        onChange={(event) =>\n                                            dispatch(\n                                                setSignUp(event.target.checked)\n                                            )\n                                        }\n                                    />\n                                    <label\n                                        className=\"checkout-info__checkbox-label\"\n                                        htmlFor=\"signupandlogin\"\n                                    >\n                                        {translate(\n                                            'checkout.customerinfo.signupandlogin'\n                                        )}\n                                    </label>\n                                </>\n                            )}\n                        </div>\n                        <Button\n                            onClick={onSave}\n                            title={translate('checkout.continue')}\n                            rounded={true}\n                            disabled={isValidating}\n                        />\n                    </div>\n                </Fragment>\n            ) : (\n                <Fragment>\n                    <InfoField\n                        values={[\n                            valueForm['customerDetails']['firstName'],\n                            valueForm['customerDetails']['lastName'],\n                        ]}\n                    />\n                    {valueForm['customerDetails']['careOf'] && (\n                        <InfoField\n                            values={[valueForm['customerDetails']['careOf']]}\n                        />\n                    )}\n                    <InfoField\n                        values={[valueForm['customerDetails']['address']]}\n                    />\n                    <InfoField\n                        values={[\n                            valueForm['customerDetails']['zipCode'],\n                            valueForm['customerDetails']['city'],\n                        ]}\n                    />\n                    <InfoField values={[getCountry(customerDetails)]} />\n\n                    <InfoField\n                        values={[valueForm['customerDetails']['phoneNumber']]}\n                    />\n                    <InfoField\n                        values={[valueForm['customerDetails']['email']]}\n                    />\n                </Fragment>\n            )}\n        </div>\n    );\n};\n\nexport default CheckoutPrivateCustomerInfo;\n","import { string, object, boolean, mixed } from 'yup';\nimport { translate } from '../Services/translation';\n\nconst privateCustomerAdditionalDetailsSchema = object().shape({\n    acceptTermsOfCondition: boolean()\n        .required(translate(`validation.checkrequired`))\n        .oneOf([true], translate(`validation.checkrequired`)),\n    selectedDeliveryMethod: object().required(translate(`validation.required`)),\n    selectedPaymentMethod: object().required(translate(`validation.required`)),\n});\n\nconst privateCustomerAddressSchema = object().shape({\n    email: string()\n        .required(translate(`validation.required`))\n        .email(translate(`validation.email`)),\n    phoneNumber: string().required(translate(`validation.required`)),\n    country: mixed()\n        .required(translate(`validation.required`))\n        .notOneOf([''], translate('validation.required')),\n    city: string().required(translate(`validation.required`)),\n    zipCode: string().required(translate(`validation.required`)),\n    address: string().required(translate(`validation.required`)),\n    lastName: string().required(translate(`validation.required`)),\n    firstName: string().required(translate(`validation.required`)),\n});\n\nconst privateCustomerAlternativeAddressSchema = object().shape({\n    phoneNumber: string().required(translate(`validation.required`)),\n    country: mixed()\n        .required(translate(`validation.required`))\n        .notOneOf([''], translate('validation.required')),\n    city: string().required(translate(`validation.required`)),\n    zipCode: string().required(translate(`validation.required`)),\n    address: string().required(translate(`validation.required`)),\n    lastName: string().required(translate(`validation.required`)),\n    firstName: string().required(translate(`validation.required`)),\n});\n\nconst businessCustomerDetailsSchema = object().shape({\n    email: string()\n        .required(translate(`validation.required`))\n        .email(translate(`validation.email`)),\n    phoneNumber: string().required(translate(`validation.required`)),\n    lastName: string().required(translate(`validation.required`)),\n    firstName: string().required(translate(`validation.required`)),\n    selectedCompanyAddressId: string().required(\n        translate(`validation.required`)\n    ),\n});\n\nconst businessCustomerAdditionalDetailsSchema = object().shape({\n    acceptTermsOfCondition: boolean()\n        .required(translate(`validation.checkrequired`))\n        .oneOf([true], translate(`validation.checkrequired`)),\n    selectedDeliveryMethod: object().required(translate(`validation.required`)),\n    selectedPaymentMethod: object().required(translate(`validation.required`)),\n});\n\nexport {\n    privateCustomerAdditionalDetailsSchema,\n    privateCustomerAddressSchema,\n    privateCustomerAlternativeAddressSchema,\n    businessCustomerDetailsSchema,\n    businessCustomerAdditionalDetailsSchema,\n};\n","import React, { Fragment, useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport {\n    clearError,\n    setBusinessCustomer,\n    setSelectedCompanyAddress,\n    submitError,\n    updateCustomerDetails,\n    setCountry,\n    saveCustomerDetail,\n    setValidateStatus,\n} from '../Actions/Checkout.action';\nimport CheckoutBusinessCustomerInfo from './Checkout.BusinessCustomerInfo';\nimport CheckoutPrivateCustomerInfo from './Checkout.PrivateCustomerInfo';\nimport {\n    businessCustomerDetailsSchema,\n    privateCustomerAddressSchema,\n    privateCustomerAlternativeAddressSchema,\n} from './Checkout.ValidationSchema';\nimport constants from '../constants';\nimport { translate } from '../Services/translation';\nimport Button from './Button';\n\nconst validateAlternativeAddress = (alternativeAddress) => {\n    return (\n        alternativeAddress &&\n        alternativeAddress.showAlternativeAddress &&\n        (alternativeAddress.firstName ||\n            alternativeAddress.lastName ||\n            alternativeAddress.address ||\n            alternativeAddress.zipCode ||\n            alternativeAddress.city ||\n            alternativeAddress.phoneNumber)\n    );\n};\n\nconst validateCustomerInfo = (result, isBusinessCustomer) => {\n    const {\n        customerDetails,\n        selectedCompanyAddressId,\n        alternativeAddress,\n    } = result;\n\n    if (isBusinessCustomer) {\n        return businessCustomerDetailsSchema.validate({\n            ...customerDetails,\n            selectedCompanyAddressId,\n        });\n    }\n\n    return privateCustomerAddressSchema\n        .validate({\n            ...customerDetails,\n        })\n        .then((result) => {\n            if (validateAlternativeAddress(alternativeAddress)) {\n                return privateCustomerAlternativeAddressSchema\n                    .validate({\n                        ...alternativeAddress,\n                    })\n                    .catch((error) => {\n                        error.addressPath = 'alternativeAddress';\n                        throw error;\n                    });\n            } else {\n                return result;\n            }\n        });\n};\n\nconst CheckoutCustomerInfo = ({\n    checkout,\n    addressFormValue,\n    setAddressFormValue,\n    isEditingAddress,\n    setIsEditingAddress,\n    signUpCheckboxVisibility,\n}) => {\n    const dispatch = useDispatch();\n    const {\n        payload: { loginUrl, authenticated, isBusinessCustomer, checkoutMode },\n    } = checkout;\n\n    const onCustomerInfoChange = useCallback(\n        (stateKey, id, value) => {\n            setAddressFormValue((previousState) => ({\n                ...previousState,\n                [stateKey]: {\n                    ...previousState[stateKey],\n                    [id]: value,\n                },\n            }));\n        },\n        [setAddressFormValue]\n    );\n    const onCompanyAddressChange = useCallback(\n        (companyAddressId, country) => {\n            setAddressFormValue((previousState) => ({\n                ...previousState,\n                selectedCompanyAddressId: companyAddressId,\n                customerDetails: {\n                    ...previousState.customerDetails,\n                    country,\n                },\n            }));\n        },\n        [setAddressFormValue]\n    );\n\n    const onEditForm = useCallback(() => {\n        setIsEditingAddress(true);\n    }, [setIsEditingAddress]);\n\n    const onUpdateCustomerDetails = useCallback(() => {\n        const notCustomerDetailFields = ['selectedCompanyAddressId'];\n\n        const onValid = () => {\n            const { payload } = checkout,\n                { isBusinessCustomer } = payload;\n            const {\n                customerDetails,\n                selectedCompanyAddressId,\n                alternativeAddress,\n            } = addressFormValue;\n\n            dispatch(updateCustomerDetails('customerDetails', customerDetails));\n            if (isBusinessCustomer) {\n                dispatch(setSelectedCompanyAddress(selectedCompanyAddressId));\n                const companyAddress = payload.companyAddresses.find(\n                    (c) => c.systemId === selectedCompanyAddressId\n                );\n                dispatch(setCountry(companyAddress.country));\n            } else {\n                dispatch(\n                    updateCustomerDetails(\n                        'alternativeAddress',\n                        alternativeAddress\n                    )\n                );\n                dispatch(setCountry(customerDetails.country));\n            }\n            setIsEditingAddress(false);\n        };\n\n        const onSetCustomerDetail = () =>\n            dispatch(saveCustomerDetail(addressFormValue));\n\n        const onError = (error) => {\n            error.path =\n                notCustomerDetailFields.indexOf(error.path) >= 0\n                    ? error.path\n                    : `${error?.addressPath || 'customerDetails'}-${\n                          error.path\n                      }`;\n            dispatch(submitError(error));\n        };\n\n        dispatch(setValidateStatus(true));\n        dispatch(clearError());\n\n        validateCustomerInfo(addressFormValue, isBusinessCustomer)\n            .then(onSetCustomerDetail)\n            .then(onValid)\n            .catch(onError)\n            .finally(() => {\n                dispatch(setValidateStatus(false));\n            });\n    }, [\n        dispatch,\n        addressFormValue,\n        isBusinessCustomer,\n        checkout,\n        setIsEditingAddress,\n    ]);\n\n    const privateCustomerInfoComponent = useCallback(() => {\n        return (\n            <CheckoutPrivateCustomerInfo\n                onSave={onUpdateCustomerDetails}\n                onChange={onCustomerInfoChange}\n                valueForm={addressFormValue}\n                isEditingAddress={isEditingAddress}\n                signUpCheckboxVisibility={signUpCheckboxVisibility}\n            />\n        );\n    }, [\n        addressFormValue,\n        isEditingAddress,\n        onCustomerInfoChange,\n        onUpdateCustomerDetails,\n        signUpCheckboxVisibility,\n    ]);\n\n    const businessCustomerInfoComponent = useCallback(() => {\n        return (\n            <CheckoutBusinessCustomerInfo\n                onChange={onCustomerInfoChange}\n                onCompanyAddressChange={onCompanyAddressChange}\n                onSave={onUpdateCustomerDetails}\n                valueForm={addressFormValue}\n                isEditingAddress={isEditingAddress}\n            />\n        );\n    }, [\n        addressFormValue,\n        isEditingAddress,\n        onCompanyAddressChange,\n        onCustomerInfoChange,\n        onUpdateCustomerDetails,\n    ]);\n\n    if (!authenticated) {\n        return (\n            <Fragment>\n                <div className=\"row align-justify\">\n                    <div className=\"flex-container checkout__flex-wrapper\">\n                        <h3 className=\"checkout__section-title\">\n                            {translate('checkout.customerinfo.title')}\n                        </h3>\n                        {isEditingAddress && (\n                            <Fragment>\n                                <label className=\"checkout__text--in-line\">\n                                    {translate(\n                                        'checkout.customerinfo.existingcustomer'\n                                    )}\n                                </label>\n                                &nbsp;\n                                <a href={loginUrl} className=\"checkout__link\">\n                                    {translate(\n                                        'checkout.customerinfo.clicktologin'\n                                    )}\n                                </a>\n                                &nbsp;\n                                {!isBusinessCustomer &&\n                                    checkoutMode ===\n                                        constants.checkoutMode.both && (\n                                        <a\n                                            onClick={() =>\n                                                dispatch(\n                                                    setBusinessCustomer(true)\n                                                )\n                                            }\n                                            className=\"checkout__link\"\n                                        >\n                                            {translate(\n                                                'checkout.customerinfo.businesscustomer'\n                                            )}\n                                        </a>\n                                    )}\n                                {isBusinessCustomer &&\n                                    checkoutMode ===\n                                        constants.checkoutMode.both && (\n                                        <a\n                                            onClick={() =>\n                                                dispatch(\n                                                    setBusinessCustomer(false)\n                                                )\n                                            }\n                                            className=\"checkout__link\"\n                                        >\n                                            {translate(\n                                                'checkout.customerinfo.privatecustomer'\n                                            )}\n                                        </a>\n                                    )}\n                            </Fragment>\n                        )}\n                    </div>\n                    {!isEditingAddress && (\n                        <Button\n                            onClick={onEditForm}\n                            title={translate('checkout.edit')}\n                            isLink={true}\n                        />\n                    )}\n                </div>\n                {!isBusinessCustomer &&\n                    checkoutMode !== constants.checkoutMode.companyCustomers &&\n                    privateCustomerInfoComponent()}\n                {(isBusinessCustomer ||\n                    checkoutMode === constants.checkoutMode.companyCustomers) &&\n                    businessCustomerInfoComponent()}\n            </Fragment>\n        );\n    }\n\n    return (\n        <Fragment>\n            <div className=\"row align-justify\">\n                <h3 className=\"checkout__section-title\">\n                    {translate('checkout.customerinfo.title')}\n                </h3>\n                {!isEditingAddress && (\n                    <Button onClick={onEditForm} title=\"edit\" isLink={true} />\n                )}\n            </div>\n            {!isBusinessCustomer && privateCustomerInfoComponent()}\n            {isBusinessCustomer && businessCustomerInfoComponent()}\n        </Fragment>\n    );\n};\n\nexport default CheckoutCustomerInfo;\nexport { validateAlternativeAddress, validateCustomerInfo };\n","import React, { Fragment } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { setDelivery } from '../Actions/Checkout.action';\nimport { translate } from '../Services/translation';\n\nconst CheckoutDeliveryMethods = ({ errors }) => {\n    const dispatch = useDispatch();\n    const { deliveryMethods, selectedDeliveryMethod } = useSelector(\n        (state) => state.checkout.payload\n    );\n\n    return (\n        <Fragment>\n            <div className=\"row\">\n                <h3 className=\"checkout__section-title\">\n                    {translate('checkout.delivery.title')}\n                </h3>\n            </div>\n            {deliveryMethods && deliveryMethods.length > 0 && (\n                <section className=\"row checkout-info__container\">\n                    <div className=\"columns small-12\">\n                        {deliveryMethods.map((method) => (\n                            <label className=\"row no-margin\" key={method.id}>\n                                <input\n                                    type=\"radio\"\n                                    name=\"deliveryMethods\"\n                                    className=\"checkout-info__checkbox-radio\"\n                                    value={method.id}\n                                    checked={\n                                        method.id === selectedDeliveryMethod?.id\n                                    }\n                                    onChange={() =>\n                                        dispatch(setDelivery(method))\n                                    }\n                                />\n                                <span className=\"columns\">\n                                    <b> {method.name} </b> -{' '}\n                                    {method.formattedPrice}\n                                </span>\n                            </label>\n                        ))}\n                    </div>\n                </section>\n            )}\n            <div className=\"row\">\n                {errors['selectedDeliveryMethod'] && (\n                    <span className=\"form__validator--error form__validator--top-narrow\">\n                        {errors['selectedDeliveryMethod'][0]}\n                    </span>\n                )}\n            </div>\n        </Fragment>\n    );\n};\n\nexport default CheckoutDeliveryMethods;\n","import React, { Fragment, useEffect, useRef } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { translate } from '../Services/translation';\nimport {\n    setDiscountCode,\n    submitDiscountCode,\n    deleteDiscountCode,\n} from '../Actions/Checkout.action';\n\nconst CheckoutPaymentMethods = () => {\n    const dispatch = useDispatch();\n    const { payload, errors = {} } = useSelector((state) => state.checkout);\n    const { usedDiscountCodes } = payload;\n    const discountCodeEl = useRef(null);\n\n    useEffect(() => {\n        if (errors && !errors['discountCode']?.length) {\n            discountCodeEl.current.value = '';\n        }\n    }, [errors]);\n\n    return (\n        <Fragment>\n            <section>\n                <div className=\"row margin-top-cart-item\">\n                    <h3 className=\"checkout__section-title\">\n                        {translate('checkout.discountcode')}\n                    </h3>\n                </div>\n                <section className=\"row checkout-info__container\">\n                    <div className=\"columns small-12\">\n                        <div className=\"row no-margin\">\n                            <div className=\"small-6 medium-4\">\n                                <input\n                                    ref={discountCodeEl}\n                                    className=\"form__input\"\n                                    id=\"campaign-code\"\n                                    placeholder={translate('checkout.discountcode')}\n                                    onChange={(event) =>\n                                        dispatch(\n                                            setDiscountCode(event.target.value)\n                                        )\n                                    }\n                                />\n                                {errors && errors['discountCode'] && (\n                                    <span\n                                        className=\"form__validator--error form__validator--top-narrow\"\n                                        data-error-for=\"campaign-code\"\n                                    >\n                                        {errors['discountCode'][0]}\n                                    </span>\n                                )}\n                            </div>\n                            <div className=\"small-5 medium-4 columns\">\n                                <button\n                                    className=\"checkout-info__campaign-button\"\n                                    onClick={() => dispatch(submitDiscountCode())}\n                                >\n                                    {translate('checkout.usediscountcode')}\n                                </button>\n                            </div>\n                        </div>\n                        <div className=\"row no-margin\">\n                            <div className=\"chip__container\">\n                                {usedDiscountCodes &&\n                                    usedDiscountCodes.map((discountCode) => (\n                                        <div className=\"chip\" key={discountCode}>\n                                            <span className=\"chip__label checkout-discount-codes\">\n                                                {discountCode}\n                                            </span>\n                                            <i className=\"chip__icon chip__icon--check\"></i>\n                                            <i\n                                                className=\"chip__icon chip__icon--delete\"\n                                                onClick={() =>\n                                                    dispatch(\n                                                        deleteDiscountCode(\n                                                            discountCode\n                                                        )\n                                                    )\n                                                }\n                                                title={translate('general.remove')}\n                                            ></i>\n                                        </div>\n                                    ))}\n                            </div>\n                        </div>\n                    </div>\n                </section>\n            </section>\n        </Fragment>\n    );\n};\n\nexport default CheckoutPaymentMethods;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { translate } from '../Services/translation';\n\nconst CheckoutOrderInfo = () => {\n    const cart = useSelector((state) => state.cart);\n\n    return (\n        <div className=\"columns small-12 medium-6 checkout-info__summary--full-row\">\n            <div>\n                {translate('checkout.order.productstotal')}{' '}\n                <span className=\"checkout-info__summary--expand\"></span>{' '}\n                {cart.orderTotal}\n            </div>\n            <div>\n                {translate('checkout.order.discount')}{' '}\n                <span className=\"checkout-info__summary--expand\"></span>{' '}\n                {cart.discount}\n            </div>\n            <div>\n                {translate('checkout.order.deliverycost')}{' '}\n                <span className=\"checkout-info__summary--expand\"></span>{' '}\n                {cart.deliveryCost}\n            </div>\n            <div>\n                {translate('checkout.order.paymentcost')}{' '}\n                <span className=\"checkout-info__summary--expand\"></span>{' '}\n                {cart.paymentCost}\n            </div>\n            <h3>\n                {translate('checkout.order.grandTotal')}{' '}\n                <span className=\"checkout-info__summary--expand\"></span>{' '}\n                {cart.grandTotal}\n            </h3>\n            <div>\n                {translate('checkout.order.vat')}{' '}\n                <span className=\"checkout-info__summary--expand\"></span>{' '}\n                {cart.vat}\n            </div>\n        </div>\n    );\n};\n\nexport default CheckoutOrderInfo;\n","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { translate } from '../Services/translation';\nimport { setOrderNote } from '../Actions/Checkout.action';\n\nconst CheckoutOrderNote = () => {\n    const dispatch = useDispatch();\n    const orderNote = useSelector((state) => state.checkout.payload.orderNote);\n\n    return (\n        <div className=\"columns small-12 medium-6 checkout-info__summary--full-height\">\n            {translate('checkout.order.message')}\n            <textarea\n                className=\"form__input checkout-info__messages\"\n                value={orderNote}\n                onChange={(event) => dispatch(setOrderNote(event.target.value))}\n            ></textarea>\n        </div>\n    );\n};\n\nexport default CheckoutOrderNote;\n","import React, { Fragment } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { setPayment } from '../Actions/Checkout.action';\nimport { translate } from '../Services/translation';\n\nconst CheckoutPaymentMethods = ({ errors }) => {\n    const dispatch = useDispatch();\n    const { payload } = useSelector((state) => state.checkout);\n    const { paymentMethods, selectedPaymentMethod } = payload;\n\n    return (\n        <Fragment>\n            {/* <div className=\"row\">\n                <h3 className=\"checkout__section-title\">\n                    {translate('checkout.payment.title')}\n                </h3>\n            </div>\n            {paymentMethods && paymentMethods.length > 0 && (\n                <section className=\"row checkout-info__container\">\n                    <div className=\"columns small-12\">\n                        {paymentMethods.map((method) => (\n                            <label className=\"row no-margin\" key={method.id}>\n                                <input\n                                    type=\"radio\"\n                                    name=\"paymentMethods\"\n                                    className=\"checkout-info__checkbox-radio\"\n                                    value={method.id}\n                                    checked={\n                                        method.id === selectedPaymentMethod.id\n                                    }\n                                    onChange={() =>\n                                        dispatch(setPayment(method))\n                                    }\n                                />\n                                <span className=\"columns\">\n                                    <b> {method.name} </b> -{' '}\n                                    {method.formattedPrice}\n                                </span>\n                            </label>\n                        ))}\n                    </div>\n                </section>\n            )}\n            <div className=\"row\">\n                {errors['selectedPaymentMethod'] && (\n                    <span className=\"form__validator--error form__validator--top-narrow\">\n                        {errors['selectedPaymentMethod'][0]}\n                    </span>\n                )}\n            </div> */}\n        </Fragment>\n    );\n};\n\nexport default CheckoutPaymentMethods;\n","import React from 'react';\nimport DynamicComponent from '../DynamicComponent';\n\nconst scriptPattern = /<script\\b[^>]*>([\\s\\S]*?)<\\/script>/gi;\nconst scriptFilePattern = /<script.*?src=[\"'](.*?)[\"']/gi;\n\nconst extractScripts = (domString) => {\n    let matches,\n        html = domString;\n    const scripts = [],\n        scriptFiles = [];\n    while ((matches = scriptPattern.exec(domString)) !== null) {\n        html = html.replace(matches[0], '');\n        matches[1] && matches[1].trim() !== '' && scripts.push(matches[1]);\n    }\n    while ((matches = scriptFilePattern.exec(domString)) !== null) {\n        matches[1] && matches[1].trim() !== '' && scriptFiles.push(matches[1]);\n    }\n\n    return {\n        html,\n        scripts,\n        scriptFiles,\n    };\n};\n\nconst executeScript = (domId, scriptContent) => {\n    const script = document.createElement('script');\n    script.type = 'text/javascript';\n    try {\n        script.appendChild(document.createTextNode(scriptContent));\n    } catch (e) {\n        // to support IE\n        script.text = scriptContent;\n    }\n    document.getElementById(domId).appendChild(script);\n};\n\nconst includeScript = (domId, srciptUrl) => {\n    const script = document.createElement('script');\n    script.type = 'text/javascript';\n    script.src = srciptUrl;\n    document.getElementById(domId).appendChild(script);\n};\n\nconst PaymentWidget = React.memo(function PaymentWidget({ responseString }) {\n    const renderWidget = (paymentSession) => {\n        const WidgetCheckout = DynamicComponent({\n            loader: () => import('./CheckoutWidget'),\n        });\n        const args = {\n            paymentSession,\n            extractScripts,\n            executeScript,\n            includeScript,\n        };\n        return <WidgetCheckout {...args} />;\n    };\n\n    return renderWidget(responseString);\n});\n\nexport default PaymentWidget;\n","import React, {\n    Fragment,\n    useCallback,\n    useEffect,\n    useRef,\n    useState,\n} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n    acceptTermsOfCondition,\n    setDelivery,\n    setPayment,\n    setStatusSubmitButton,\n    submit,\n    submitDone,\n    submitError,\n} from '../Actions/Checkout.action';\nimport constants, {\n    PaymentIntegrationType,\n    ShippingIntegrationType,\n} from '../constants';\nimport { translate } from '../Services/translation';\nimport Button from './Button';\nimport CheckoutCart from './Checkout.Cart';\nimport CheckoutCustomerInfo, {\n    validateAlternativeAddress,\n    validateCustomerInfo,\n} from './Checkout.CustomerInfo';\nimport CheckoutDeliveryMethods from './Checkout.DeliveryMethods';\nimport CheckoutDiscountCodes from './Checkout.DiscountCodes';\nimport CheckoutOrderInfo from './Checkout.OrderInfo';\nimport CheckoutOrderNote from './Checkout.OrderNote';\nimport CheckoutPaymentMethods from './Checkout.PaymentMethods';\nimport {\n    businessCustomerAdditionalDetailsSchema,\n    businessCustomerDetailsSchema,\n    privateCustomerAdditionalDetailsSchema,\n    privateCustomerAddressSchema,\n    privateCustomerAlternativeAddressSchema,\n} from './Checkout.ValidationSchema';\nimport PaymentWidget from './Payments/PaymentWidget';\n\nconst Checkout = () => {\n    const dispatch = useDispatch();\n    const cart = useSelector((state) => state.cart);\n    const checkout = useSelector((state) => state.checkout);\n\n    const [shippingOptionVisibility, setShippingOptionVisibility] = useState(\n        true\n    );\n    const [paymentOptionVisibility, setPaymentOptionVisibility] = useState(\n        true\n    );\n    const [customerDetailsVisibility, setCustomerDetailsVisibility] = useState(\n        true\n    );\n    const [deliveryWidgetVisibility, setDeliveryWidgetVisibility] = useState(\n        true\n    );\n    const [paymentWidgetVisibility, setPaymentWidgetVisibility] = useState(\n        true\n    );\n    const [orderSummaryVisibility, setOrderSummaryVisibility] = useState(true);\n    const [signUpCheckboxVisibility, setSignUpCheckboxVisibility] = useState(\n        true\n    );\n\n    const {\n        payload: {\n            customerDetails,\n            alternativeAddress,\n            selectedCompanyAddressId,\n            selectedDeliveryMethod,\n            selectedPaymentMethod,\n            deliveryMethods,\n            paymentMethods,\n        },\n    } = checkout;\n    const [isEditingAddress, setIsEditingAddress] = useState(true);\n    const [addressFormValue, setAddressFormValue] = useState({\n        customerDetails,\n        alternativeAddress,\n        selectedCompanyAddressId,\n    });\n    const onSubmit = useCallback(() => dispatch(submit()), [dispatch]);\n    const onSubmitError = useCallback(\n        (error) => {\n            dispatch(submitError(error));\n            dispatch(submitDone(null));\n        },\n        [dispatch]\n    );\n\n    const placeOrder = useCallback(() => {\n        const { payload } = checkout,\n            {\n                isBusinessCustomer,\n                selectedCompanyAddressId,\n                acceptTermsOfCondition,\n                selectedPaymentMethod,\n                selectedDeliveryMethod,\n            } = payload;\n        const notCustomerDetailFields = [\n            'selectedCompanyAddressId',\n            'selectedPaymentMethod',\n            'selectedDeliveryMethod',\n            'acceptTermsOfCondition',\n        ];\n        const onError = (error, addressPath = 'customerDetails') => {\n            error.path =\n                notCustomerDetailFields.indexOf(error.path) >= 0\n                    ? error.path\n                    : `${addressPath}-${error.path}`;\n            onSubmitError(error);\n            dispatch(setStatusSubmitButton(true));\n        };\n        dispatch(setStatusSubmitButton(false));\n        if (isBusinessCustomer) {\n            businessCustomerDetailsSchema\n                .validate({\n                    ...payload.customerDetails,\n                    selectedCompanyAddressId,\n                })\n                .then(() => {\n                    businessCustomerAdditionalDetailsSchema\n                        .validate({\n                            selectedPaymentMethod,\n                            selectedDeliveryMethod,\n                            acceptTermsOfCondition,\n                        })\n                        .then(() => {\n                            onSubmit();\n                        })\n                        .catch(onError);\n                })\n                .catch(onError);\n        } else {\n            privateCustomerAddressSchema\n                .validate({\n                    ...payload.customerDetails,\n                })\n                .then(() => {\n                    if (\n                        validateAlternativeAddress(payload.alternativeAddress)\n                    ) {\n                        privateCustomerAlternativeAddressSchema\n                            .validate({\n                                ...payload.alternativeAddress,\n                            })\n                            .then(() => {\n                                privateCustomerAdditionalDetailsSchema\n                                    .validate({\n                                        selectedPaymentMethod,\n                                        selectedDeliveryMethod,\n                                        acceptTermsOfCondition,\n                                    })\n                                    .then(() => {\n                                        onSubmit();\n                                    })\n                                    .catch(onError);\n                            })\n                            .catch((error) => {\n                                onError(error, 'alternativeAddress');\n                            });\n                    } else {\n                        privateCustomerAdditionalDetailsSchema\n                            .validate({\n                                selectedPaymentMethod,\n                                selectedDeliveryMethod,\n                                acceptTermsOfCondition,\n                            })\n                            .then(() => {\n                                onSubmit();\n                            })\n                            .catch(onError);\n                    }\n                })\n                .catch(onError);\n        }\n    }, [checkout, dispatch, onSubmit, onSubmitError]);\n\n    const resetVisibilityValues = useCallback(() => {\n        setShippingOptionVisibility(true);\n        setPaymentOptionVisibility(true);\n        setCustomerDetailsVisibility(true);\n        setDeliveryWidgetVisibility(true);\n        setPaymentWidgetVisibility(true);\n        setOrderSummaryVisibility(true);\n        setSignUpCheckboxVisibility(true);\n    }, []);\n\n    const checkIntegrationTypeExist = useCallback(\n        (integrationTypeCheck) => {\n            return deliveryMethods.find(\n                (method) => method.integrationType === integrationTypeCheck\n            );\n        },\n        [deliveryMethods]\n    );\n\n    const firstRender = useRef(true);\n\n    // Sets default value on first load.\n    useEffect(() => {\n        if (!firstRender.current) {\n            return;\n        }\n        firstRender.current = false;\n\n        if (!checkout) {\n            return;\n        }\n\n        const {\n            selectedPaymentMethod,\n            selectedDeliveryMethod,\n            customerDetails,\n            alternativeAddress,\n        } = checkout.payload;\n\n        // set selected value for payment method on load.\n        selectedPaymentMethod && dispatch(setPayment(selectedPaymentMethod));\n        // set selected value for delivery method on load.\n        selectedDeliveryMethod && dispatch(setDelivery(selectedDeliveryMethod));\n        // fill default select value to the state\n        setAddressFormValue((previousState) => ({\n            ...previousState,\n            customerDetails: {\n                ...(customerDetails ?? {}),\n                country:\n                    customerDetails?.country ?? constants.countries[0].value,\n            },\n            alternativeAddress: {\n                ...(alternativeAddress ?? {}),\n                country:\n                    alternativeAddress?.country ?? constants.countries[0].value,\n            },\n        }));\n    }, [checkout, dispatch]);\n\n    // Show or hide different sections depending on payment and delivery methods.\n    useEffect(() => {\n        resetVisibilityValues();\n        switch (selectedPaymentMethod?.integrationType) {\n            case PaymentIntegrationType.IframeCheckout:\n                setCustomerDetailsVisibility(false);\n                setOrderSummaryVisibility(false);\n                break;\n            case PaymentIntegrationType.PaymentWidgets:\n                if (isEditingAddress) {\n                    setPaymentWidgetVisibility(false);\n                }\n                setOrderSummaryVisibility(false);\n                setSignUpCheckboxVisibility(false);\n                break;\n            case PaymentIntegrationType.DirectPayment:\n                if (isEditingAddress) {\n                    setOrderSummaryVisibility(false);\n                }\n                setPaymentWidgetVisibility(false);\n                break;\n        }\n        if (\n            checkIntegrationTypeExist(ShippingIntegrationType.DeliveryCheckout)\n        ) {\n            return setShippingOptionVisibility(false);\n        }\n        if (\n            checkIntegrationTypeExist(ShippingIntegrationType.PaymentCheckout)\n        ) {\n            return (\n                setShippingOptionVisibility(false) &&\n                setDeliveryWidgetVisibility(false)\n            );\n        }\n        if (\n            selectedDeliveryMethod?.integrationType ===\n            ShippingIntegrationType.Inline\n        ) {\n            setDeliveryWidgetVisibility(false);\n        }\n    }, [\n        selectedDeliveryMethod,\n        selectedPaymentMethod,\n        deliveryMethods,\n        paymentMethods,\n        resetVisibilityValues,\n        checkIntegrationTypeExist,\n        isEditingAddress,\n    ]);\n\n    // Update place order button's status when the state of Customer Information form is changed.\n    useEffect(() => {\n        dispatch(setStatusSubmitButton(false));\n        if (isEditingAddress) {\n            return;\n        }\n        validateCustomerInfo(\n            addressFormValue,\n            checkout.payload.isBusinessCustomer\n        )\n            .then(() => {\n                dispatch(setStatusSubmitButton(true));\n            })\n            .catch(() => {\n                dispatch(setStatusSubmitButton(false));\n            });\n    }, [\n        dispatch,\n        isEditingAddress,\n        addressFormValue,\n        checkout.payload.isBusinessCustomer,\n    ]);\n\n    // Scroll the the first field that has validation error when saving the form.\n    useEffect(() => {\n        if (checkout.result && checkout.result.redirectUrl) {\n            window.location = checkout.result.redirectUrl;\n            return;\n        }\n\n        if (!checkout.errors) {\n            return;\n        }\n\n        const errorKeys = Object.keys(checkout.errors);\n        if (!errorKeys || errorKeys.length < 1) {\n            return;\n        }\n\n        const errorNode = document.querySelector(\n            `[data-error-for=\"${errorKeys[0]}\"]`\n        );\n        if (!errorNode) {\n            return;\n        }\n\n        const inputNode = errorNode.parentElement.querySelector('input');\n        if (inputNode) {\n            setTimeout(() => inputNode.focus(), 1000);\n            inputNode.scrollIntoView({ behavior: 'smooth' });\n        } else {\n            errorNode.scrollIntoView({ behavior: 'smooth' });\n        }\n    }, [checkout.result, checkout.errors]);\n\n    if (!cart || !cart.orderRows || cart.orderRows.length < 1) {\n        return (\n            <div className=\"row\">\n                <div className=\"small-12\">\n                    <h2 className=\"checkout__title\">\n                        {translate(`checkout.cart.empty`)}\n                    </h2>\n                </div>\n            </div>\n        );\n    }\n\n    const { payload, errors = {} } = checkout,\n        {\n            paymentWidget,\n            authenticated,\n            isBusinessCustomer,\n            checkoutMode,\n        } = payload;\n    const responseString = paymentWidget ? paymentWidget.responseString : null;\n    const updateKey = paymentWidget ? paymentWidget._force_update : null;\n    return (\n        <Fragment>\n            <CheckoutCart errors={errors} />\n            <CheckoutDiscountCodes />\n\n            {shippingOptionVisibility && (\n                <CheckoutDeliveryMethods errors={errors} />\n            )}\n\n            {paymentOptionVisibility && (\n                <CheckoutPaymentMethods errors={errors} />\n            )}\n\n            {customerDetailsVisibility && (\n                <CheckoutCustomerInfo\n                    checkout={checkout}\n                    addressFormValue={addressFormValue}\n                    isEditingAddress={isEditingAddress}\n                    setAddressFormValue={setAddressFormValue}\n                    setIsEditingAddress={setIsEditingAddress}\n                    signUpCheckboxVisibility={signUpCheckboxVisibility}\n                />\n            )}\n\n            {paymentWidget && paymentWidgetVisibility && (\n                <PaymentWidget\n                    key={updateKey}\n                    responseString={responseString}\n                />\n            )}\n\n            {orderSummaryVisibility && (\n                <Fragment>\n                    <div className=\"row\">\n                        <h3 className=\"checkout__section-title\">\n                            {translate('checkout.order.title')}\n                        </h3>\n                    </div>\n                    <section className='wide'>\n                        <section className=\"row checkout-info__container checkout-info__summary\">\n                            <CheckoutOrderNote />\n                            <CheckoutOrderInfo />\n                        </section>\n                    </section>\n\n                    <div className=\"row\">\n                        <input\n                            className=\"checkout-info__checkbox-input\"\n                            type=\"checkbox\"\n                            id=\"acceptTermsOfCondition\"\n                            checked={payload.acceptTermsOfCondition}\n                            onChange={(event) =>\n                                dispatch(\n                                    acceptTermsOfCondition(event.target.checked)\n                                )\n                            }\n                        />\n                        <label\n                            className=\"checkout-info__checkbox-label\"\n                            htmlFor=\"acceptTermsOfCondition\"\n                        >\n                            {translate('checkout.terms.acceptTermsOfCondition')}{' '}\n                            <a\n                                className=\"checkout__link\"\n                                href={payload.termsUrl}\n                                target=\"_blank\"\n                                rel=\"noreferrer\"\n                            >\n                                {translate('checkout.terms.link')}\n                            </a>\n                        </label>\n                        {errors['acceptTermsOfCondition'] && (\n                            <span\n                                className=\"form__validator--error form__validator--top-narrow\"\n                                data-error-for=\"acceptTermsOfCondition\"\n                            >\n                                {errors['acceptTermsOfCondition'][0]}\n                            </span>\n                        )}\n                    </div>\n\n                    <div className=\"row checkout__submit\">\n                        {!authenticated &&\n                            (isBusinessCustomer ||\n                                checkoutMode ===\n                                constants.checkoutMode.companyCustomers) ? (\n                            <Button\n                                onClick={() =>\n                                    (location.href = payload.loginUrl)\n                                }\n                                title={translate(\n                                    'checkout.login.to.placeorder'\n                                )}\n                                fluid={true}\n                            />\n                        ) : (\n                            <Button\n                                disabled={!checkout.enableConfirmButton}\n                                onClick={placeOrder}\n                                title={translate('checkout.placeorder')}\n                                fluid={true}\n                                type=\"submit\"\n                            />\n                        )}\n                    </div>\n                </Fragment>\n            )}\n\n            <div className=\"row\">\n                {errors && errors['general'] && (\n                    <p className=\"checkout__validator--error\">\n                        {errors['general'][0]}\n                    </p>\n                )}\n                {errors && errors['payment'] && (\n                    <p className=\"checkout__validator--error\">\n                        {errors['payment'][0]}\n                    </p>\n                )}\n            </div>\n        </Fragment>\n    );\n};\n\nexport default Checkout;\n"],"sourceRoot":""}