{"version":3,"file":"static/js/UnsubscribeEmail.7770119e.chunk.js","mappings":"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","sources":["common/utils/commonUtil.js","webpack://CommunicationPreferences.index/./src/pages/ErrorPage/styles.module.css?2334","pages/ErrorPage/index.js","webpack://CommunicationPreferences.index/./src/pages/UnsubscribeConfirmation/styles.module.css?2c11","pages/UnsubscribeConfirmation/index.js","webpack://CommunicationPreferences.index/./src/pages/UnsubscribeEmail/styles.module.css?36b8","pages/UnsubscribeEmail/index.js"],"sourcesContent":["export const isNil = val => {\n if (val == null) {\n return true;\n }\n\n if (typeof val === 'string') {\n return val.trim() === '';\n }\n\n if (typeof val === 'number') {\n return val === 0;\n }\n\n if (Array.isArray(val)) {\n return val.length === 0;\n }\n\n return false;\n};\n\nexport const isSomething = val => !isNil(val);\n","// extracted by mini-css-extract-plugin\nexport default {\"PageWrapper\":\"styles_PageWrapper__5qhXX\",\"Icon\":\"styles_Icon__xmBhB\"};","import { iconError } from '@tesla/design-system-icons';\nimport { Icon, Link, Text } from '@tesla/design-system-react';\nimport { useTtp } from '@tesla/tw-react/dist/utils/ttp';\nimport React from 'react';\nimport { getLocalizeUrl } from '@tesla/tw-react/dist/utils/url';\nimport { string } from 'prop-types';\nimport { connect } from 'react-redux';\nimport selectors from '../../common/redux/selectors';\nimport * as actions from '../../common/redux/actions';\n\nimport styles from './styles.module.css';\n\nconst ErrorPage = ({ locale, teslaUrl }) => {\n const ttp = useTtp();\n\n return (\n
\n \n {ttp('errorMessage', {})}\n \n {ttp('tryAgain', {\n UNSUBSCRIBE: text => (\n \n {text}\n \n ),\n })}\n \n
\n );\n};\n\nErrorPage.propTypes = {\n locale: string.isRequired,\n teslaUrl: string.isRequired,\n};\n\nexport default connect(\n selectors,\n actions\n)(ErrorPage);\n","// extracted by mini-css-extract-plugin\nexport default {\"PageWrapper\":\"styles_PageWrapper__fhvkJ\",\"Subtitle\":\"styles_Subtitle__0Fdvv\",\"Icon\":\"styles_Icon__-v9l2\"};","import { iconSuccess } from '@tesla/design-system-icons';\nimport { Icon, Link, Loader, Text } from '@tesla/design-system-react';\nimport { useTtp } from '@tesla/tw-react/dist/utils/ttp';\nimport { getLocalizeUrl } from '@tesla/tw-react/dist/utils/url';\nimport { bool, func, string } from 'prop-types';\nimport React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport isEmail from 'validator/lib/isEmail';\nimport * as actions from '../../common/redux/actions';\nimport selectors from '../../common/redux/selectors';\nimport { FLOW_TYPES } from '../../common/utils/constants';\nimport styles from './styles.module.css';\n\nconst UnsubscribeConfirmation = ({\n isFormLoading,\n locale,\n newUserHash,\n submitFormRequest,\n teslaUrl,\n userHash,\n}) => {\n const ttp = useTtp();\n\n useEffect(() => {\n // If an email is in the query param then they are coming from the confirmation email, so we unsubscribe on load\n if (newUserHash != null && isEmail(atob(newUserHash))) {\n submitFormRequest({\n flow: FLOW_TYPES.UNSUBSCRIBE,\n email: atob(newUserHash),\n });\n } else {\n submitFormRequest({ flow: FLOW_TYPES.UNSUBSCRIBE, userHash });\n }\n }, []);\n\n return (\n <>\n {isFormLoading ? (\n \n ) : (\n
\n \n {ttp('unsubscribed')}\n \n {ttp('successfullyUnsubscribed')}\n \n \n {ttp('changedYourMind', {\n TESLA_UPDATES: text => (\n {text}\n ),\n })}\n \n
\n )}\n \n );\n};\n\nUnsubscribeConfirmation.propTypes = {\n isFormLoading: bool.isRequired,\n locale: string.isRequired,\n newUserHash: string,\n submitFormRequest: func.isRequired,\n teslaUrl: string.isRequired,\n userHash: string,\n};\n\nUnsubscribeConfirmation.defaultProps = {\n newUserHash: undefined,\n userHash: undefined,\n};\n\nexport default connect(\n selectors,\n actions\n)(UnsubscribeConfirmation);\n","// extracted by mini-css-extract-plugin\nexport default {\"PageWrapper\":\"styles_PageWrapper__phWw6\",\"FormContainer\":\"styles_FormContainer__DQxL3\",\"Title\":\"styles_Title__z-JSz\",\"FormSubtitle\":\"styles_FormSubtitle__sxUG6\",\"Subtitle\":\"styles_Subtitle__Jz0HC\",\"SubmitButton\":\"styles_SubmitButton__jeSd3\"};","import { Button, Text } from '@tesla/design-system-react';\nimport { Form, Input } from '@tesla/informed-tds';\nimport { useTtp } from '@tesla/tw-react/dist/utils/ttp';\nimport { bool, func } from 'prop-types';\nimport React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport isEmail from 'validator/lib/isEmail';\nimport * as actions from '../../common/redux/actions';\nimport selectors from '../../common/redux/selectors';\nimport { INIT } from '../../common/redux/types';\nimport { isSomething } from '../../common/utils/commonUtil';\nimport { FLOW_TYPES } from '../../common/utils/constants';\nimport ErrorPage from '../ErrorPage';\nimport UnsubscribeConfirmation from '../UnsubscribeConfirmation';\nimport styles from './styles.module.css';\n\nconst UnsubscribeEmail = ({\n addLoader,\n isFormError,\n isFormSubmitted,\n removeLoader,\n submitFormRequest,\n}) => {\n const [email, setEmail] = useState('');\n const urlParams = new URLSearchParams(window.location.search);\n const userHash = urlParams.get('user_hash');\n const newUserHash = urlParams.get('new_user_hash');\n const ttp = useTtp();\n\n useEffect(() => {\n removeLoader(INIT);\n return () => addLoader(INIT);\n }, []);\n\n const onSubmit = ({ values }) =>\n submitFormRequest({ email: values.emailAddress, flow: FLOW_TYPES.CONFIRMATION });\n\n if (isFormError) {\n return ;\n }\n\n if (isSomething(userHash) || isSomething(newUserHash)) {\n return ;\n }\n\n return (\n
\n {!isFormSubmitted ? (\n
\n {ttp('unsubscribeFromTeslaUpdates')}\n \n {ttp('byUnsubscribing')}\n \n
\n {\n if (!value) {\n return ttp('required');\n }\n if (!isEmail(value)) {\n return ttp('valueShouldBeValidEmail');\n }\n setEmail(value);\n return undefined;\n }}\n />\n \n \n
\n ) : (\n
\n \n {ttp('checkYourEmail')}\n \n \n {ttp('weHaveSentAnEmail', { EMAIL_ADDRESS: email })}\n \n
\n )}\n
\n );\n};\n\nUnsubscribeEmail.propTypes = {\n addLoader: func.isRequired,\n isFormError: bool.isRequired,\n isFormSubmitted: bool.isRequired,\n removeLoader: func.isRequired,\n submitFormRequest: func.isRequired,\n};\n\nexport default connect(\n selectors,\n actions\n)(UnsubscribeEmail);\n"],"names":["isSomething","val","trim","Array","isArray","length","isNil","connect","selectors","actions","_ref","locale","teslaUrl","ttp","useTtp","React","className","styles","Icon","data","iconError","size","Text","is","UNSUBSCRIBE","text","Link","href","concat","getLocalizeUrl","UnsubscribeConfirmation","isFormLoading","newUserHash","submitFormRequest","userHash","useEffect","isEmail","atob","flow","FLOW_TYPES","email","Loader","fullscreen","show","iconSuccess","TESLA_UPDATES","defaultProps","undefined","addLoader","isFormError","isFormSubmitted","removeLoader","setEmail","useState","urlParams","URLSearchParams","window","location","search","get","INIT","ErrorPage","EMAIL_ADDRESS","Form","onSubmit","_ref2","values","emailAddress","CONFIRMATION","Input","field","label","validate","value","Button","width","type"],"sourceRoot":""}