{"version":3,"sources":["webpack:///./src/pages/lost-password.js","webpack:///./src/images/front-door/front-door-blue-sheet-metal.jpg","webpack:///./src/lib/app.js"],"names":["VALID_EMAIL_PATTERN","validateEmail","t","email","_email$trim","trimmedEmail","trim","length","test","LostPasswordPage","useTranslation","setEmail","useState","emailError","setEmailError","sent","setSent","React","createElement","Fragment","SEO","title","className","undefined","Link","to","ArrowLeft24","FretlinkLogo","confirmation","SuccessCircle","Trans","i18nKey","resetForm","action","method","onSubmit","event","preventDefault","app","lostPassword","then","catch","erroneous","Boolean","type","id","value","onChange","target","onBlur","autoFocus","placeholder","components","href","phone","src","frontDoorBlueMetalSheet","alt","loading","module","exports","baseUrl","process","replace","login","_ref","password","fetch","credentials","body","JSON","stringify","headers","response","ok","text","error","Error","console","isAuthenticated","_ref2"],"mappings":"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","file":"component---src-pages-lost-password-js-bb66e0b0397ec24b2992.js","sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\n\nimport React, { useState } from \"react\";\nimport { graphql } from \"gatsby\";\n\nimport SEO from \"../components/SEO\";\nimport \"../components/FrontDoor.css\";\nimport frontDoorBlueMetalSheet from \"../images/front-door/front-door-blue-sheet-metal.jpg\";\nimport FretlinkLogo from \"../components/svg-assets/FretlinkLogo\";\nimport { Link, Trans, useTranslation } from \"gatsby-plugin-react-i18next\";\nimport app from \"../lib/app\";\nimport { ArrowLeft24, SuccessCircle } from \"../components/svg-assets/Icons\";\n\nconst VALID_EMAIL_PATTERN = /.+@.+\\..+/;\n\nconst validateEmail = (t, email) => {\n const trimmedEmail = email?.trim() ?? \"\";\n\n if (trimmedEmail.length && !VALID_EMAIL_PATTERN.test(trimmedEmail)) {\n return t(\"login.errors.invalid-email\");\n }\n};\n\nconst resetForm = (t, email, setEmail, emailError, setEmailError, setSent) => {\n const fieldClassNames = erroneous =>\n Boolean(erroneous) ? \"fd-field fd-field--erroneous\" : \"fd-field\";\n\n const onSubmit = event => {\n event.preventDefault();\n\n const emailError = validateEmail(t, email);\n setEmailError(emailError);\n\n if (emailError) {\n return;\n } else {\n app()\n .lostPassword({\n email: email?.trim(),\n })\n .then(() => {\n setSent(true);\n })\n .catch(() => {\n setEmailError(t(\"lost-password.errors.unknown-error\"));\n });\n }\n };\n\n return (\n <>\n

{t(\"lost-password.title\")}

\n

{t(\"lost-password.instructions\")}

\n
\n \n\n \n
\n \n );\n};\n\nconst confirmation = (t, email) => {\n return (\n <>\n

\n \n

\n

{t(\"lost-password.confirmation.a-message-was-sent\")}

\n

\n {email}\n

\n

\n \n

\n \n );\n};\n\nconst LostPasswordPage = () => {\n const { t } = useTranslation();\n const [email, setEmail] = useState(\"\");\n const [emailError, setEmailError] = useState(\"\");\n const [sent, setSent] = useState(false);\n\n return (\n <>\n \n
\n
\n {!sent ? (\n \n \n {t(\"lost-password.go-back-to-login\")}\n \n ) : undefined}\n \n {sent\n ? confirmation(t, email)\n : resetForm(t, email, setEmail, emailError, setEmailError, setSent)}\n\n

\n {/* eslint-disable jsx-a11y/control-has-associated-label, jsx-a11y/anchor-has-content */}\n ,\n phone: ,\n }}\n />\n {/* eslint-enable jsx-a11y/control-has-associated-label, jsx-a11y/anchor-has-content */}\n

\n
\n
\n \"\"\n
\n
\n \n );\n};\n\nexport default LostPasswordPage;\n\nexport const query = graphql`\n query($language: String!) {\n locales: allLocale(filter: { language: { eq: $language } }) {\n edges {\n node {\n ns\n data\n language\n }\n }\n }\n }\n`;\n","module.exports = __webpack_public_path__ + \"static/front-door-blue-sheet-metal-c687909eb92010b911b6c8b7ae5e08df.jpg\";","const app = () => {\n const baseUrl = process.env.APP_API_BASE_URL.replace(/\\/$/, \"\");\n\n const login = ({ email, password }) =>\n fetch(`${baseUrl}/auth`, {\n method: \"POST\",\n credentials: \"include\",\n body: JSON.stringify({ email, password }),\n headers: { \"Content-Type\": \"application/json\" },\n })\n .then(response => {\n if (response.ok) {\n return response.text();\n } else {\n const error = Error();\n error.response = response;\n throw error;\n }\n })\n .catch(error => {\n console.error(error);\n throw error;\n });\n\n const isAuthenticated = () =>\n fetch(`${baseUrl}/accounts/whoami`, {\n credentials: \"include\",\n headers: { \"Content-Type\": \"application/json\" },\n })\n .then(response => response.ok)\n .catch(() => false);\n\n const lostPassword = ({ email }) =>\n fetch(`${baseUrl}/forgottenPassword`, {\n method: \"POST\",\n credentials: \"include\",\n body: JSON.stringify({ email }),\n headers: { \"Content-Type\": \"application/json\" },\n })\n .then(response => {\n if (response.ok) {\n return response.text();\n } else {\n const error = Error();\n error.response = response;\n throw error;\n }\n })\n .catch(error => {\n console.error(error);\n throw error;\n });\n\n return {\n login,\n isAuthenticated,\n lostPassword,\n };\n};\n\nexport default app;\n"],"sourceRoot":""}