{"version":3,"sources":["webpack:///./Scripts/Actions/Newsletter.action.js","webpack:///./Scripts/Components/Newsletter.ValidationSchema.js","webpack:///./Scripts/Components/Newsletter.js"],"names":["submitDone","result","type","NEWSLETTER_SUBMIT_DONE","payload","newsletterEmailSchema","object","shape","email","string","required","translate","dispatch","useDispatch","errors","useSelector","state","newsletter","isSuccessful","receivedResponse","message","setEmail","useState","onSubmitError","useCallback","error","NEWSLETTER_SUBMIT_ERROR","submitError","newsletterSubscribe","then","emailAddress","async","post","response","json","catch","ex","catchError","CLEAR_ERROR","addressPath","path","addError","Fragment","className","href","trim","data-error-for","onChange","event","target","value","placeholder","onClick"],"mappings":"uKASO,MA8BMA,EAAcC,IAAD,CACzBC,KAAMC,KACNC,QAAS,CACRH,Y,wBCvCF,MAAMI,GAAwBC,UAASC,MAAM,CACzCC,OAAOC,UACFC,UAASC,OAAW,wBACpBH,OAAMG,OAAW,uBCoG1B,EAhGmB,KACf,MAAMC,GAAWC,WACX,OAAEZ,EAAF,OAAUa,EAAS,KAAOC,SAAaC,GAAUA,EAAMC,cACvD,aAAEC,EAAF,iBAAgBC,EAAhB,QAAkCC,GAAYnB,GAC7CO,EAAOa,IAAYC,cAAS,IAE7BC,GAAgBC,kBACjBC,IACGb,EFcgBa,KAAD,CAC1BvB,KAAMwB,KACNtB,QAAS,CACRqB,WEjBmBE,CAAYF,MAEzB,CAACb,IAQCgB,GAAsBJ,kBAAY,KACpCnB,WACc,CAAEG,UACXqB,MAAK,KFtBoBC,MEuBtBlB,GFvBsBkB,EEuBStB,EFvBQuB,UAC/CC,QAAK,wCAAyC,CAAExB,MAAOsB,IAC5DD,MAAMI,GAAaA,EAASC,SAC5BL,MAAM5B,IACNW,EAASZ,EAAWC,OAEpBkC,OAAOC,IAAOC,OAAWD,OEkBZxB,EFRgB,CAC/BV,KAAMoC,KACNlC,QAAS,CACRU,OAAQ,SEOGqB,OAAOV,GAZC,EAACA,EAAOc,EAAc,gBACnCd,EAAMe,KAAQ,GAAED,IAChBhB,EAAcE,IAUQgB,CAAShB,OAChC,CAACjB,EAAOI,IA6DX,OACI,gBAAC,EAAA8B,SAAD,KACKvB,EA5DL,uBAAKwB,UAAU,qBACX,uBAAKA,UAAU,2BACX,sBACIA,UACIzB,EACM,qCACA,kCAGTA,EACKE,GACAT,OAAU,oCAO5B,uBAAKgC,UAAU,qBACX,uBAAKA,UAAU,2BACX,2BAAKhC,OAAU,qBACf,0BACKA,OAAU,gCAAkC,IAC7C,qBAAGiC,MAAMjC,OAAU,kCACdA,OAAU,gCAAgCkC,UAIvD,uBAAKF,UAAU,oCACX,uBAAKA,UAAU,yCACV7B,EAAM,YACH,wBACI6B,UAAU,qDACVG,iBAAgB,cAEfhC,EAAM,WAAe,KAIlC,uBAAK6B,UAAU,4BACX,yBACIzC,KAAK,QACL6C,SAAWC,GAAU3B,EAAS2B,EAAMC,OAAOC,OAC3CA,MAAO1C,EACPmC,UAAU,uBACVQ,aAAaxC,OAAU,+BAE3B,yBACIyC,QAASxB,EACTe,UAAU,8BACVO,OAAOvC,OAAU,yBACjBT,KAAK","file":"854.55e2ebed3e22fc5fa3ee.js","sourcesContent":["import { post } from '../Services/http';\r\nimport { catchError } from './Error.action';\r\nimport {\r\n\tNEWSLETTER_RECEIVE,\r\n\tNEWSLETTER_SUBMIT_ERROR,\r\n\tNEWSLETTER_SUBMIT_DONE,\r\n\tCLEAR_ERROR,\r\n} from '../constants';\r\n\r\nexport const subscribeToNewsletter = (emailAddress) => async (dispatch) => {\r\n\treturn post('/api/newsletter/subscribetonewsletter', { email: emailAddress })\r\n\t\t.then((response) => response.json())\r\n\t\t.then((result) => {\r\n\t\t\tdispatch(submitDone(result));\r\n\t\t})\r\n\t\t.catch((ex) => catchError(ex));\r\n};\r\n\r\nexport const receive = (subscriptionResponse) => ({\r\n\ttype: NEWSLETTER_RECEIVE,\r\n\tpayload: {\r\n\t\tsubscriptionResponse,\r\n\t},\r\n});\r\n\r\nexport const clearError = () => ({\r\n\ttype: CLEAR_ERROR,\r\n\tpayload: {\r\n\t\terrors: [],\r\n\t},\r\n});\r\n\r\nexport const submitError = (error) => ({\r\n\ttype: NEWSLETTER_SUBMIT_ERROR,\r\n\tpayload: {\r\n\t\terror,\r\n\t},\r\n});\r\n\r\nexport const submitDone = (result) => ({\r\n\ttype: NEWSLETTER_SUBMIT_DONE,\r\n\tpayload: {\r\n\t\tresult,\r\n\t},\r\n});","import { string, object, boolean, mixed } from 'yup';\r\nimport { translate } from '../Services/translation';\r\n\r\nconst newsletterEmailSchema = object().shape({\r\n    email: string()\r\n        .required(translate(`validation.required`))\r\n        .email(translate(`validation.email`)),\r\n});\r\n\r\nexport {\r\n    newsletterEmailSchema\r\n};","import React, { useState, Fragment, useCallback } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n    clearError,\r\n    subscribeToNewsletter,\r\n    submitError,\r\n} from '../Actions/Newsletter.action';\r\nimport { translate } from '../Services/translation';\r\nimport { newsletterEmailSchema } from './Newsletter.ValidationSchema';\r\n\r\nconst Newsletter = () => {\r\n    const dispatch = useDispatch();\r\n    const { result, errors = {} } = useSelector((state) => state.newsletter);\r\n    const { isSuccessful, receivedResponse, message } = result;\r\n    const [email, setEmail] = useState('');\r\n\r\n    const onSubmitError = useCallback(\r\n        (error) => {\r\n            dispatch(submitError(error));\r\n        },\r\n        [dispatch]\r\n    );\r\n\r\n    const addError = (error, addressPath = 'emailInput') => {\r\n        error.path = `${addressPath}`;\r\n        onSubmitError(error);\r\n    };\r\n\r\n    const newsletterSubscribe = useCallback(() => {\r\n        newsletterEmailSchema\r\n            .validate({ email })\r\n            .then(() => {\r\n                dispatch(subscribeToNewsletter(email));\r\n                dispatch(clearError());\r\n            })\r\n            .catch((error) => addError(error));\r\n    }, [email, dispatch]);\r\n\r\n    const renderResponseMessage = () => (\r\n        <div className=\"newsletter-column\">\r\n            <div className=\"newsletter-text-section\">\r\n                <h4\r\n                    className={\r\n                        isSuccessful\r\n                            ? 'successful-newsletter-subscription'\r\n                            : 'failed-newsletter-subscription'\r\n                    }\r\n                >\r\n                    {isSuccessful\r\n                        ? message\r\n                        : translate('newsletter.failedsubscription')}\r\n                </h4>\r\n            </div>\r\n        </div>\r\n    );\r\n\r\n    const renderNewsletterForm = () => (\r\n        <div className=\"newsletter-column\">\r\n            <div className=\"newsletter-text-section\">\r\n                <h4>{translate('newsletter.title')}</h4>\r\n                <p>\r\n                    {translate('newsletter.readprivacypolicy') + ' '}\r\n                    <a href={translate('newsletter.privacypolicylink')}>\r\n                        {translate('newsletter.privacypolicytext').trim()}\r\n                    </a>\r\n                </p>\r\n            </div>\r\n            <div className=\"newsletter-input-section-wrapper\">\r\n                <div className=\"newsletter-input-section__errors-span\">\r\n                    {errors['emailInput'] && (\r\n                        <span\r\n                            className=\"form__validator--error form__validator--top-narrow\"\r\n                            data-error-for={'emailInput'}\r\n                        >\r\n                            {errors['emailInput'][0]}\r\n                        </span>\r\n                    )}\r\n                </div>\r\n                <div className=\"newsletter-input-section\">\r\n                    <input\r\n                        type=\"email\"\r\n                        onChange={(event) => setEmail(event.target.value)}\r\n                        value={email}\r\n                        className=\"newsletter-email-box\"\r\n                        placeholder={translate('newsletter.emailfieldtext')}\r\n                    />\r\n                    <input\r\n                        onClick={newsletterSubscribe}\r\n                        className=\"newsletter-subscribe-button\"\r\n                        value={translate('newsletter.buttontext')}\r\n                        type=\"submit\"\r\n                    />\r\n                </div>\r\n            </div>\r\n        </div>\r\n    );\r\n\r\n    return (\r\n        <Fragment>\r\n            {receivedResponse\r\n                ? renderResponseMessage()\r\n                : renderNewsletterForm()}\r\n        </Fragment>\r\n    );\r\n};\r\n\r\nexport default Newsletter;\r\n"],"sourceRoot":""}