{"version":3,"sources":["webpack://_N_E/./src/components/ui/section-wrapper.tsx","webpack://_N_E/./src/utils/protect-route.tsx","webpack://_N_E/./src/components/ui/text-button.tsx","webpack://_N_E/./src/assets/icons/icon-edit.svg","webpack://_N_E/./src/assets/icons/icon-tick.svg","webpack://_N_E/./src/components/checkbox/checkbox.styles.ts","webpack://_N_E/./src/components/auth-form/auth-form.styles.ts","webpack://_N_E/./src/components/ui/section.tsx","webpack://_N_E/./src/components/checkbox/checkbox.tsx","webpack://_N_E/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?bf47","webpack://_N_E/./node_modules/react-use/esm/useEffectOnce.js","webpack://_N_E/./src/styles/theme-dark.ts","webpack://_N_E/./src/components/switch-theme/switch-theme.tsx","webpack://_N_E/./src/components/ui/content-section.tsx","webpack://_N_E/./src/assets/icons/icon-trash.svg","webpack://_N_E/./src/assets/icons/icon-save.svg","webpack://_N_E/./src/components/delete-account-button/delete-account-button.styles.ts","webpack://_N_E/./src/components/delete-account-button/delete-account-button.tsx","webpack://_N_E/./node_modules/@reach/disclosure/dist/disclosure.esm.js","webpack://_N_E/./src/components/edit-toggle/edit-toggle.styles.ts","webpack://_N_E/./src/components/edit-toggle/edit-toggle.tsx","webpack://_N_E/./src/pages/users/settings.tsx"],"names":["SectionWrapper","styled","div","noPadding","rem","theme","mediaQueries","medium","large","protectRoute","Component","props","useAuth","isAuthenticated","isAnonymous","loading","router","useRouter","useEffect","push","APP_ROUTES","users","signIn","TextButton","button","colors","palette","black","redDark","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_ref","d","fill","SvgIconEdit","viewBox","xmlns","CheckboxWrapper","span","slim","css","Input","input","hideVisually","Label","label","align","bold","white","borderRadius","teal","green","greyLight","small","Form","form","StyledButton","FormWrapper","PasswordInfo","color","GlobalError","IntroWrapper","Section","section","textAlign","components","background","defaultProps","Checkbox","React","forwardRef","forwardedRef","id","CustomIcon","icon","type","inputProps","Icon","ref","htmlFor","width","aria-hidden","role","window","__NEXT_P","effect","default","dark","secondary","transparent","border","text","download","heading","fontSize","space","zIndex","SwitchTheme","currentTheme","to","themeDark","themeLight","children","StyledSection","wrapperBg","StyledSectionWrapper","BackLinkWrapper","ContentSection","className","backLink","href","ReminderContent","_ref2","SvgIconTrash","SvgIconSave","StyledAlertDialogOverlay","AlertDialogOverlay","AlertDialogContent","AlertDialogDescription","AlertDialogActionsWrapper","accountDeletionSchema","yup","shape","acknowledged","required","oneOf","DeleteAccountButton","useState","showDialog","setShowDialog","cancelRef","useRef","token","logout","UserApi","UsersApi","apiKey","useForm","mode","defaultValues","resolver","yupResolver","registerAcknowledgement","register","handleAccountDeletionSubmit","handleSubmit","accountDeletionErrors","errors","accountDeletionFormState","formState","setAccountDeletionError","setError","accountDeletionSubmitting","isSubmitting","isValid","onDeleteAccountSubmit","a","accountDeletionGlobalError","deleteUser","logger","error","resolveApiError","variant","onClick","leastDestructiveRef","noValidate","onSubmit","name","value","as","disabled","_objectWithoutPropertiesLoose","excluded","sourceKeys","keys","indexOf","DisclosureStates","DisclosureContext","_ref$defaultOpen","defaultOpen","onChange","openProp","open","wasControlled","isControlled","current","String","undefined","panelId","_React$useState","setOpen","stableOnChange","onSelect","context","disclosureId","Provider","_ref2$as","Comp","onMouseDown","onPointerDown","_React$useContext","ownRef","Open","Collapsed","event","preventDefault","focus","_ref3","_ref3$as","_React$useContext2","hidden","tabIndex","Wrapper","grey","InitialValuesWrapper","isOpen","InitialValues","StyledDisclosureButton","DisclosureButton","size","StyledDisclosurePanel","DisclosurePanel","EditToggleGroup","EditToggle","openTitle","isOpenProp","useImperativeHandle","toggle","bind","aria-label","PAGE_TITLE","nameSchema","displayName","min","settings","nameMinLength","emailSchema","email","passwordSchema","password","newPassword","matches","passwordRegexp","passwordMinLength","confirmPassword","user","reloadUser","registerName","handleNameSubmit","nameErrors","nameFormState","setNameError","isNameFormSubmitting","nameFormTouched","touched","nameToggleRef","onNameSubmit","nameGlobalError","data","updateUser","toast","success","statusMessages","nameUpdateSuccess","nameUpdateError","registerEmail","handleEmailSubmit","emailErrors","emailFormState","setEmailError","isEmailFormSubmitting","emailFormTouched","onEmailSubmit","emailGlobalError","emailUpdateSuccess","registerPassword","handlePasswordSubmit","passwordErrors","passwordFormState","setPasswordError","isPasswordFormSubmitting","passwordFormTouched","onPasswordSubmit","passwordGlobalError","firebase","credential","auth","EmailAuthProvider","currentUser","reauthenticateWithCredential","validCredential","code","message","passwordUpdateSuccess","useEffectOnce","AnalyticsService","trackScreen","ScreenNames","useUserProfileAPI","useUserProfile","useUpdateUserProfile","userProfile","userProfileLoading","isLoading","updateUserProfile","mutate","updateUserProfileLoading","allowCommunications","mainBackground","backgroundImages","hero","title","account","autoComplete","aria-invalid","aria-describedby","checked"],"mappings":"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","file":"static/chunks/pages/users/settings-1cbc99a83a6fdd7fb3a5.js","sourcesContent":["import { rem } from 'polished';\nimport styled from 'styled-components';\n\ninterface WrapperProps {\n noPadding?: boolean;\n}\n\nexport const SectionWrapper = styled.div`\n --padding: ${({ noPadding }) => (noPadding ? 0 : rem(32))};\n\n max-width: calc(640px + (var(--padding) * 2));\n margin: 0 auto;\n padding: var(--padding);\n\n ${({ theme }) => theme.mediaQueries.medium} {\n --padding: ${({ noPadding }) => (noPadding ? 0 : rem(60))};\n }\n\n ${({ theme }) => theme.mediaQueries.large} {\n --padding: ${({ noPadding }) => (noPadding ? `0 ${rem(100)}` : rem(100))};\n }\n`;\n","import useAuth from 'hooks/use-auth';\nimport { useRouter } from 'next/router';\nimport React, { useEffect } from 'react';\nimport APP_ROUTES from 'utils/routes';\n\nexport function protectRoute(\n Component: React.ComponentType\n) {\n return (props: Route) => {\n const { isAuthenticated, isAnonymous, loading } = useAuth();\n const router = useRouter();\n\n useEffect(() => {\n // Redirect all \"unreal\" users.\n if ((!isAuthenticated || isAnonymous) && !loading) {\n router.push(APP_ROUTES.users.signIn);\n }\n }, [loading, isAuthenticated, isAnonymous, router]);\n\n // Only allow \"real\" users to see the component.\n return isAuthenticated && !isAnonymous ? : null;\n };\n}\n","import styled from 'styled-components';\n\nexport const TextButton = styled.button`\n display: inline-block;\n color: ${({ theme }) => theme.colors.palette.black};\n font-weight: bold;\n text-align: center;\n text-decoration: underline;\n background: none;\n border: 0;\n cursor: pointer;\n\n &:hover {\n color: ${({ theme }) => theme.colors.palette.redDark};\n }\n`;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.377 2.434L17.565.62a2.126 2.126 0 00-3.003 0L1.078 14.106a.597.597 0 00-.162.308L.01 19.307a.586.586 0 00.683.683l4.893-.906a.597.597 0 00.308-.162L19.377 5.437c.83-.83.83-2.173 0-3.003zM1.317 18.683l.548-2.96 2.412 2.411-2.96.549zm4.162-1.004L2.321 14.52 13.852 2.988l3.159 3.159L5.479 17.679zM18.55 4.61l-.71.709-3.158-3.159.71-.71a.953.953 0 011.345 0l1.813 1.813a.951.951 0 010 1.347z\",\n fill: \"currentColor\"\n});\n\nfunction SvgIconEdit(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n}\n\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8cGF0aCBkPSJNMTkuMzc3IDIuNDM0TDE3LjU2NS42MmEyLjEyNiAyLjEyNiAwIDAwLTMuMDAzIDBMMS4wNzggMTQuMTA2YS41OTcuNTk3IDAgMDAtLjE2Mi4zMDhMLjAxIDE5LjMwN2EuNTg2LjU4NiAwIDAwLjY4My42ODNsNC44OTMtLjkwNmEuNTk3LjU5NyAwIDAwLjMwOC0uMTYyTDE5LjM3NyA1LjQzN2MuODMtLjgzLjgzLTIuMTczIDAtMy4wMDN6TTEuMzE3IDE4LjY4M2wuNTQ4LTIuOTYgMi40MTIgMi40MTEtMi45Ni41NDl6bTQuMTYyLTEuMDA0TDIuMzIxIDE0LjUyIDEzLjg1MiAyLjk4OGwzLjE1OSAzLjE1OUw1LjQ3OSAxNy42Nzl6TTE4LjU1IDQuNjFsLS43MS43MDktMy4xNTgtMy4xNTkuNzEtLjcxYS45NTMuOTUzIDAgMDExLjM0NSAwbDEuODEzIDEuODEzYS45NTEuOTUxIDAgMDEwIDEuMzQ3eiIgZmlsbD0iY3VycmVudENvbG9yIi8+Cjwvc3ZnPgo=\";\nexport { SvgIconEdit as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.333 10.668a.992.992 0 01-.707-.294L.293 6.041a1 1 0 011.415-1.415l3.626 3.627 7.96-7.96a1 1 0 011.415 1.415l-8.667 8.666a1.002 1.002 0 01-.709.293z\",\n fill: \"currentColor\"\n});\n\nfunction SvgIconTick(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 11\"\n }, props), _ref);\n}\n\nexport default \"data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxMSI+CiAgPHBhdGggZD0iTTUuMzMzIDEwLjY2OGEuOTkyLjk5MiAwIDAxLS43MDctLjI5NEwuMjkzIDYuMDQxYTEgMSAwIDAxMS40MTUtMS40MTVsMy42MjYgMy42MjcgNy45Ni03Ljk2YTEgMSAwIDAxMS40MTUgMS40MTVsLTguNjY3IDguNjY2YTEuMDAyIDEuMDAyIDAgMDEtLjcwOS4yOTN6IiBmaWxsPSJjdXJyZW50Q29sb3IiLz4KPC9zdmc+Cg==\";\nexport { SvgIconTick as ReactComponent };","import IconTick from 'assets/icons/icon-tick.svg';\nimport { hideVisually, rem } from 'polished';\nimport styled, { css } from 'styled-components';\n\nconst CHECKBOX_HEIGHT = 22;\n\ninterface WrapperProps {\n slim?: boolean;\n}\n\nexport const CheckboxWrapper = styled.span`\n display: flex;\n\n /* Overrides for \"slim\" variant */\n ${({ theme, slim }) => {\n if (slim) {\n return css`\n min-height: 0;\n margin-top: 20px;\n `;\n }\n }}\n`;\n\nexport const Input = styled.input`\n ${hideVisually()}\n`;\n\ninterface LabelProps {\n align?: 'center' | 'top';\n slim?: boolean;\n bold?: boolean;\n}\n\nexport const Label = styled.label`\n position: relative;\n display: inline-flex;\n align-items: ${({ align }) => (align === 'top' ? 'flex-start' : 'center')};\n width: 100%;\n min-height: ${({ align }) => (align === 'top' ? 'auto' : rem(80))};\n margin: ${rem(5)} 0; /* Needed for box-shadow to work */\n padding: ${rem(12)} ${rem(20)} ${rem(12)} ${rem(54)};\n color: ${({ theme }) => theme.colors.palette.black};\n font-weight: ${({ bold }) => (bold ? 700 : 400)};\n font-size: ${rem(16)};\n line-height: ${rem(CHECKBOX_HEIGHT)};\n background-color: ${({ theme }) => theme.colors.palette.white};\n border-radius: ${({ theme }) => theme.borderRadius.medium};\n\n ${({ theme }) => theme.mediaQueries.medium} {\n min-height: ${({ align, slim }) =>\n slim ? 0 : align === 'top' ? 'auto' : rem(70)};\n }\n\n svg {\n margin-right: ${rem(12)};\n margin-left: ${rem(4)};\n }\n\n &::before,\n &::after {\n position: absolute;\n top: ${({ align }) => (align === 'top' ? rem(22) : '50%')};\n left: ${rem(20)};\n display: inline-block;\n transform: translateY(-50%);\n content: '';\n }\n\n &::before {\n width: ${rem(CHECKBOX_HEIGHT)};\n height: ${rem(CHECKBOX_HEIGHT)};\n background: white;\n border: 2px solid ${({ theme }) => theme.colors.palette.black};\n }\n\n &::after {\n width: ${rem(CHECKBOX_HEIGHT)};\n height: ${rem(CHECKBOX_HEIGHT)};\n }\n\n &:hover {\n &::before {\n border-color: ${({ theme }) => theme.colors.palette.teal};\n }\n }\n\n ${Input}:focus ~ & {\n box-shadow:\n 0 0 0 2px ${({ theme }) => theme.colors.palette.redDark},\n 0 0 8px ${({ theme }) => theme.colors.palette.redDark};\n }\n\n ${Input}:checked ~ &::before {\n background-color: ${({ theme }) => theme.colors.palette.green};\n border-color: ${({ theme }) => theme.colors.palette.green};\n }\n\n ${Input}:disabled ~ &::before {\n border-color: ${({ theme }) => theme.colors.palette.greyLight};\n }\n\n ${Input}:disabled:checked ~ &::before {\n background-color: ${({ theme }) => theme.colors.palette.greyLight};\n }\n\n ${Input}[type='checkbox']:checked ~ &::after {\n background-color: white;\n mask-image: url('${IconTick}');\n mask-repeat: no-repeat;\n mask-size: 15px 10px;\n mask-position: 60% 55%; /* specific alignment instead of 'center' */\n }\n\n ${Input}[type='checkbox'] ~ &::before {\n border-radius: ${({ theme }) => theme.borderRadius.small};\n }\n\n ${Input}[type='radio'] ~ &::before {\n border-radius: 50%;\n box-shadow: inset 0 0 0 2px ${({ theme }) => theme.colors.palette.white};\n }\n\n /* Overrides for \"slim\" variant */\n ${({ theme, slim }) => {\n if (slim) {\n return css`\n min-height: 0;\n padding: 0;\n padding-left: ${rem(35)};\n text-align: left;\n background: none;\n\n /* stylelint-disable */\n &::before,\n &::after {\n left: 0;\n }\n `;\n }\n }}\n`;\n","import { StyledButton } from 'components/button';\nimport { TextButton } from 'components/ui/text-button';\nimport { rem } from 'polished';\nimport styled, { Theme } from 'styled-components';\n\nexport const Form = styled.form`\n max-width: ${rem(460)};\n margin: 0 auto;\n\n ${StyledButton}, ${TextButton} {\n display: flex;\n width: 100%;\n max-width: ${rem(250)};\n margin: 0 auto;\n margin-top: ${rem(10)};\n }\n\n ${TextButton} {\n display: block;\n margin: ${rem(30)} auto;\n }\n\n a:not(${StyledButton}) {\n color: inherit;\n }\n\n p {\n margin: ${rem(32)} 0;\n }\n`;\n\nexport const FormWrapper = styled.div`\n margin: ${rem(32)} 0;\n padding: ${rem(32)};\n color: ${({ theme }) => theme.colors.palette.black};\n background-color: ${({ theme }) => theme.colors.palette.white};\n border: 0;\n border-radius: ${({ theme }) => theme.borderRadius.medium};\n\n ${({ theme }) => theme.mediaQueries.medium} {\n padding: ${rem(62)};\n }\n`;\n\nexport const PasswordInfo = styled.div`\n margin-top: ${rem(8)};\n color: ${({ theme, color }) =>\n color ? theme.colors.palette[color] : theme.colors.palette.black};\n font-size: ${rem(14)};\n line-height: 1.4;\n text-align: left;\n`;\n\ninterface GlobalErrorProps {\n color?: keyof Theme['colors']['palette'];\n}\n\nexport const GlobalError = styled.div`\n color: ${({ theme, color }) =>\n color ? theme.colors.palette[color] : theme.colors.palette.redDark};\n font-weight: bold;\n text-align: left;\n\n &:not(:empty) {\n margin-bottom: ${rem(20)};\n }\n`;\n\nexport const IntroWrapper = styled.div`\n max-width: ${rem(360)};\n margin: 0 auto;\n`;\n","import styled, { css } from 'styled-components';\n\nexport interface SectionProps {\n textAlign?: 'center' | 'left' | 'right';\n}\n\nexport const Section = styled.section`\n ${({ textAlign, theme }) => css`\n text-align: ${textAlign};\n background-color: ${theme.components.section.background};\n `}\n`;\n\nSection.defaultProps = {\n textAlign: 'left',\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { IconComponent } from 'types/base';\nimport { CheckboxWrapper, Input, Label } from './checkbox.styles';\n\ninterface Props extends React.HTMLProps {\n label: string;\n id: string;\n icon?: IconComponent;\n type?: 'checkbox' | 'radio';\n align?: 'top' | 'center';\n slim?: boolean;\n bold?: boolean;\n}\n\nconst Checkbox = React.forwardRef(\n (\n { id, label, icon: CustomIcon, type, align, slim, bold, ...inputProps },\n forwardedRef\n ) => {\n const Icon: IconComponent = (props) =>\n CustomIcon ? : null;\n\n return (\n \n \n \n \n );\n }\n);\n\nCheckbox.defaultProps = {\n type: 'checkbox',\n align: 'center',\n};\n\nCheckbox.propTypes = {\n label: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n type: PropTypes.oneOf(['checkbox', 'radio']),\n align: PropTypes.oneOf(['top', 'center']),\n};\n\nexport default Checkbox;\n","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/users/settings\",\n function () {\n return require(\"private-next-pages/users/settings.tsx\");\n }\n ]);\n ","import { useEffect } from 'react';\nvar useEffectOnce = function (effect) {\n useEffect(effect, []);\n};\nexport default useEffectOnce;\n","import borderRadius from './border-radius';\nimport colors from './colors';\nimport fontSize from './font-size';\nimport mediaQueries from './media-queries';\nimport space from './spacing';\nimport zIndex from './z-index';\n\nexport default {\n borderRadius,\n colors: { ...colors },\n components: {\n button: {\n background: {\n default: colors.palette.redDark,\n dark: colors.palette.black,\n secondary: colors.palette.greyLight,\n transparent: 'transparent',\n },\n border: {\n default: colors.palette.redDark,\n dark: colors.palette.white,\n secondary: colors.palette.greyLight,\n transparent: 'transparent',\n },\n text: {\n default: colors.palette.white,\n dark: colors.palette.white,\n secondary: colors.palette.black,\n transparent: colors.palette.black,\n },\n },\n download: {\n text: colors.palette.white,\n background: colors.palette.black,\n },\n text: {\n text: colors.palette.white,\n },\n heading: {\n text: colors.palette.white,\n },\n section: {\n background: colors.palette.black,\n },\n },\n fontSize,\n space,\n mediaQueries,\n zIndex,\n};\n","import PropTypes from 'prop-types';\nimport React, { FC } from 'react';\nimport { ThemeProvider } from 'styled-components';\nimport themeDark from 'styles/theme-dark';\nimport themeLight from 'styles/theme-light';\n\ninterface Props {\n to?: 'light' | 'dark';\n}\n\nconst SwitchTheme: FC = (props) => {\n let currentTheme;\n\n if (props.to === 'dark') {\n currentTheme = {\n ...themeDark,\n };\n } else {\n currentTheme = {\n ...themeLight,\n };\n }\n\n return {props.children};\n};\n\nSwitchTheme.defaultProps = {\n to: 'light',\n};\n\nSwitchTheme.propTypes = {\n to: PropTypes.oneOf(['light', 'dark']),\n};\n\nexport default SwitchTheme;\n","import BackLink from 'components/back-link';\nimport SwitchTheme from 'components/switch-theme';\nimport { rem } from 'polished';\nimport { FC } from 'react';\nimport styled from 'styled-components';\nimport { Section, SectionProps } from './section';\nimport { SectionWrapper } from './section-wrapper';\n\nconst StyledSection = styled(Section)<{ wrapperBg?: boolean }>`\n position: relative;\n margin-top: var(--header-height);\n padding: ${({ wrapperBg }) => (wrapperBg ? `${rem(10)} ${rem(30)}` : 0)};\n background: none;\n`;\n\nconst StyledSectionWrapper = styled(SectionWrapper)`\n background-color: ${({ wrapperBg, theme }) =>\n wrapperBg ? theme.colors.palette.white : 'transparent'};\n border-radius: ${({ theme }) => theme.borderRadius.medium};\n box-shadow: ${({ wrapperBg }) =>\n wrapperBg ? '0 4px 45px rgba(0, 0, 0, 0.8)' : 'none'};\n`;\n\nconst BackLinkWrapper = styled(SectionWrapper)`\n padding: 0 ${rem(10)} ${rem(20)};\n\n a {\n margin-bottom: 0;\n }\n`;\n\ninterface Props extends SectionProps {\n wrapperBg?: boolean;\n className?: string;\n backLink?: string;\n}\n\nconst ContentSection: FC = ({\n children,\n wrapperBg,\n textAlign,\n className,\n backLink,\n}) => {\n return (\n \n \n {backLink && (\n \n Back\n \n )}\n \n {children}\n \n \n \n );\n};\n\nexport default ContentSection;\n\nexport const ReminderContent = styled(ContentSection)`\n time {\n margin: 0 0 ${rem(5)};\n font-size: ${rem(14)};\n }\n\n ${StyledSectionWrapper} {\n color: ${({ theme }) => theme.colors.palette.black};\n\n > *:last-child {\n margin-bottom: 0;\n }\n }\n`;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.5 4H21V3c0-1.654-1.346-3-3-3h-4c-1.654 0-3 1.346-3 3v1H5.5A2.503 2.503 0 003 6.5V10a1 1 0 001 1h.546l.864 18.143A2.996 2.996 0 008.407 32h15.186a2.996 2.996 0 002.997-2.857L27.453 11H28a1 1 0 001-1V6.5C29 5.122 27.878 4 26.5 4zM13 3c0-.551.449-1 1-1h4c.551 0 1 .449 1 1v1h-6V3zM5 6.5a.5.5 0 01.5-.5h21a.5.5 0 01.5.5V9H5V6.5zm19.592 22.548a.999.999 0 01-.999.952H8.407a.999.999 0 01-.999-.952L6.548 11h18.903l-.86 18.048z\",\n fill: \"currentColor\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 28a1 1 0 001-1V14a1 1 0 10-2 0v13a1 1 0 001 1zm5 0a1 1 0 001-1V14a1 1 0 10-2 0v13a1 1 0 001 1zm-10 0a1 1 0 001-1V14a1 1 0 10-2 0v13a1 1 0 001 1z\",\n fill: \"currentColor\"\n});\n\nfunction SvgIconTrash(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\"\n }, props), _ref, _ref2);\n}\n\nexport default \"data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgPHBhdGggZD0iTTI2LjUgNEgyMVYzYzAtMS42NTQtMS4zNDYtMy0zLTNoLTRjLTEuNjU0IDAtMyAxLjM0Ni0zIDN2MUg1LjVBMi41MDMgMi41MDMgMCAwMDMgNi41VjEwYTEgMSAwIDAwMSAxaC41NDZsLjg2NCAxOC4xNDNBMi45OTYgMi45OTYgMCAwMDguNDA3IDMyaDE1LjE4NmEyLjk5NiAyLjk5NiAwIDAwMi45OTctMi44NTdMMjcuNDUzIDExSDI4YTEgMSAwIDAwMS0xVjYuNUMyOSA1LjEyMiAyNy44NzggNCAyNi41IDR6TTEzIDNjMC0uNTUxLjQ0OS0xIDEtMWg0Yy41NTEgMCAxIC40NDkgMSAxdjFoLTZWM3pNNSA2LjVhLjUuNSAwIDAxLjUtLjVoMjFhLjUuNSAwIDAxLjUuNVY5SDVWNi41em0xOS41OTIgMjIuNTQ4YS45OTkuOTk5IDAgMDEtLjk5OS45NTJIOC40MDdhLjk5OS45OTkgMCAwMS0uOTk5LS45NTJMNi41NDggMTFoMTguOTAzbC0uODYgMTguMDQ4eiIgZmlsbD0iY3VycmVudENvbG9yIi8+CiAgPHBhdGggZD0iTTE2IDI4YTEgMSAwIDAwMS0xVjE0YTEgMSAwIDEwLTIgMHYxM2ExIDEgMCAwMDEgMXpNMjEgMjhhMSAxIDAgMDAxLTFWMTRhMSAxIDAgMTAtMiAwdjEzYTEgMSAwIDAwMSAxek0xMSAyOGExIDEgMCAwMDEtMVYxNGExIDEgMCAxMC0yIDB2MTNhMSAxIDAgMDAxIDF6IiBmaWxsPSJjdXJyZW50Q29sb3IiLz4KPC9zdmc+Cg==\";\nexport { SvgIconTrash as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.71 7.29l-6-6A1 1 0 0024 1H4a3 3 0 00-3 3v24a3 3 0 003 3h24a3 3 0 003-3V8a1 1 0 00-.29-.71zM20 3v6h-8V3h8zM8 29v-7a1 1 0 011-1h14a1 1 0 011 1v7H8zm21-1a1 1 0 01-1 1h-2v-7a3 3 0 00-3-3H9a3 3 0 00-3 3v7H4a1 1 0 01-1-1V4a1 1 0 011-1h6v6a2 2 0 002 2h8a2 2 0 002-2V3h1.59L29 8.41V28z\",\n fill: \"currentColor\"\n});\n\nfunction SvgIconSave(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\"\n }, props), _ref);\n}\n\nexport default \"data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgPHBhdGggZD0iTTMwLjcxIDcuMjlsLTYtNkExIDEgMCAwMDI0IDFINGEzIDMgMCAwMC0zIDN2MjRhMyAzIDAgMDAzIDNoMjRhMyAzIDAgMDAzLTNWOGExIDEgMCAwMC0uMjktLjcxek0yMCAzdjZoLThWM2g4ek04IDI5di03YTEgMSAwIDAxMS0xaDE0YTEgMSAwIDAxMSAxdjdIOHptMjEtMWExIDEgMCAwMS0xIDFoLTJ2LTdhMyAzIDAgMDAtMy0zSDlhMyAzIDAgMDAtMyAzdjdINGExIDEgMCAwMS0xLTFWNGExIDEgMCAwMTEtMWg2djZhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMlYzaDEuNTlMMjkgOC40MVYyOHoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPgo8L3N2Zz4K\";\nexport { SvgIconSave as ReactComponent };","import {\n AlertDialogActionsWrapper,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogOverlay,\n} from 'components/alert-dialog';\nimport { rem } from 'polished';\nimport styled from 'styled-components';\n\nexport const StyledAlertDialogOverlay = styled(AlertDialogOverlay)`\n ${AlertDialogContent} {\n max-width: ${rem(500)};\n }\n\n ${AlertDialogDescription} {\n ul {\n margin: 0;\n padding: 0;\n }\n\n li {\n margin: ${rem(10)} 0;\n list-style: none;\n }\n }\n\n ${AlertDialogActionsWrapper} {\n display: grid;\n grid-gap: ${rem(20)};\n grid-template-columns: repeat(auto-fill, minmax(${rem(200)}, 1fr));\n\n * {\n margin: 0;\n }\n }\n`;\n","import { logger } from '@hatchd/utils';\nimport { ErrorMessage } from '@hookform/error-message';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { UsersApi } from 'api/client';\nimport { ReactComponent as DeleteIcon } from 'assets/icons/icon-trash.svg';\nimport {\n AlertDialogActionsWrapper,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogLabel,\n} from 'components/alert-dialog';\nimport { GlobalError } from 'components/auth-form/auth-form.styles';\nimport Button from 'components/button';\nimport Checkbox from 'components/checkbox';\nimport useAuth from 'hooks/use-auth';\nimport React, { FC, useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { resolveApiError } from 'utils/helpers';\nimport * as yup from 'yup';\nimport { StyledAlertDialogOverlay } from './delete-account-button.styles';\n\ntype AccountDeletionFormData = {\n acknowledged: boolean;\n accountDeletionGlobalError?: string;\n};\n\nconst accountDeletionSchema = yup.object().shape({\n acknowledged: yup\n .boolean()\n .required()\n .oneOf([true], 'Please acknowledge consequences.'),\n});\n\nconst DeleteAccountButton: FC = () => {\n const [showDialog, setShowDialog] = useState(false);\n const cancelRef = useRef(null);\n const open = () => setShowDialog(true);\n const close = () => setShowDialog(false);\n const { token, logout } = useAuth();\n const UserApi = new UsersApi({\n apiKey: token ?? '',\n });\n\n const {\n register: registerAcknowledgement,\n handleSubmit: handleAccountDeletionSubmit,\n errors: accountDeletionErrors,\n formState: accountDeletionFormState,\n setError: setAccountDeletionError,\n } = useForm({\n mode: 'onChange',\n defaultValues: {\n acknowledged: false,\n },\n resolver: yupResolver(accountDeletionSchema),\n });\n\n const { isSubmitting: accountDeletionSubmitting, isValid } =\n accountDeletionFormState;\n\n const onDeleteAccountSubmit = handleAccountDeletionSubmit(\n async ({ accountDeletionGlobalError, ...data }) => {\n try {\n await UserApi.deleteUser();\n logout();\n } catch (error) {\n logger.error('Error deleting account', error);\n resolveApiError(\n error,\n setAccountDeletionError,\n 'accountDeletionGlobalError',\n 'Error deleting account'\n );\n }\n }\n );\n return (\n <>\n \n\n {showDialog && (\n \n \n Delete Account\n \n \n

Deleting your account has the following effects:

\n
    \n
  • You will be logged out immediately.
  • \n
  • Your account will be deleted immediately.
  • \n
  • \n All your data, i.e. plans, will be deleted after 14 days.\n
  • \n
\n \n
\n \n
\n \n
\n \n \n \n Delete account\n \n \n
\n
\n )}\n \n );\n};\n\nexport default DeleteAccountButton;\n","import { useRef, useState, useCallback, useMemo, createElement, useContext } from 'react';\nimport { makeId, warning, useStableCallback, forwardRefWithAs, useForkedRef, wrapEvent, createNamedContext } from '@reach/utils';\nimport { useId } from '@reach/auto-id';\nimport PropTypes from 'prop-types';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar DisclosureContext = /*#__PURE__*/createNamedContext(\"DisclosureContext\", {}); ////////////////////////////////////////////////////////////////////////////////\n\nvar DisclosureStates;\n\n(function (DisclosureStates) {\n DisclosureStates[\"Open\"] = \"open\";\n DisclosureStates[\"Collapsed\"] = \"collapsed\";\n})(DisclosureStates || (DisclosureStates = {})); ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * Disclosure\r\n *\r\n * The wrapper component and context provider for a disclosure's button and\r\n * panel components. A disclosure should only have one button and one panel\r\n * descendant.\r\n *\r\n * @see Docs https://reach.tech/disclosure#disclosure-1\r\n *\r\n * @param props\r\n */\n\n\nvar Disclosure = function Disclosure(_ref) {\n var children = _ref.children,\n _ref$defaultOpen = _ref.defaultOpen,\n defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,\n onChange = _ref.onChange,\n openProp = _ref.open,\n props = _objectWithoutPropertiesLoose(_ref, [\"children\", \"defaultOpen\", \"onChange\", \"open\"]);\n\n /*\r\n * You shouldn't switch between controlled/uncontrolled. We'll check for a\r\n * controlled component and track any changes in a ref to show a warning.\r\n */\n var wasControlled = openProp != null;\n\n var _React$useRef = useRef(wasControlled),\n isControlled = _React$useRef.current;\n\n var id = useId(props.id != null ? String(props.id) : undefined) || \"disclosure\";\n var panelId = makeId(\"panel\", id);\n\n var _React$useState = useState(isControlled ? openProp : defaultOpen),\n open = _React$useState[0],\n setOpen = _React$useState[1];\n\n if (process.env.NODE_ENV !== \"production\") {\n process.env.NODE_ENV !== \"production\" ? warning(!(isControlled && !wasControlled || !isControlled && wasControlled), \"Disclosure is changing from controlled to uncontrolled. Disclosure should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled Disclosure for the lifetime of the component. Check the `open` prop being passed in.\") : void 0;\n }\n\n var stableOnChange = useStableCallback(onChange);\n var onSelect = useCallback(function onSelect() {\n stableOnChange();\n\n if (!isControlled) {\n setOpen(function (open) {\n return !open;\n });\n }\n }, [stableOnChange, isControlled]);\n var context = useMemo(function () {\n return {\n disclosureId: id,\n onSelect: onSelect,\n open: open,\n panelId: panelId\n };\n }, [onSelect, id, open, panelId]);\n\n if (isControlled && openProp !== open) {\n /*\r\n * If the component is controlled, we'll sync internal state with the\r\n * controlled state\r\n */\n setOpen(openProp);\n }\n\n return createElement(DisclosureContext.Provider, {\n value: context\n }, children);\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n Disclosure.displayName = \"Disclosure\";\n Disclosure.propTypes = {\n children: PropTypes.node.isRequired,\n defaultOpen: PropTypes.bool,\n onChange: PropTypes.func,\n open: PropTypes.bool\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * DisclosureButton\r\n *\r\n * The trigger button a user clicks to interact with a disclosure.\r\n *\r\n * @see Docs https://reach.tech/disclosure#disclosurebutton\r\n */\n\n\nvar DisclosureButton = /*#__PURE__*/forwardRefWithAs(function DisclosureButton(_ref2, forwardedRef) {\n var _ref2$as = _ref2.as,\n Comp = _ref2$as === void 0 ? \"button\" : _ref2$as,\n children = _ref2.children,\n onClick = _ref2.onClick,\n onMouseDown = _ref2.onMouseDown,\n onPointerDown = _ref2.onPointerDown,\n props = _objectWithoutPropertiesLoose(_ref2, [\"as\", \"children\", \"onClick\", \"onMouseDown\", \"onPointerDown\"]);\n\n var _React$useContext = useContext(DisclosureContext),\n onSelect = _React$useContext.onSelect,\n open = _React$useContext.open,\n panelId = _React$useContext.panelId;\n\n var ownRef = useRef(null);\n var ref = useForkedRef(forwardedRef, ownRef);\n\n function handleClick(event) {\n event.preventDefault();\n ownRef.current && ownRef.current.focus();\n onSelect();\n }\n\n return createElement(Comp // Optionally, the element with role `button` has a value specified for\n // `aria-controls` that refers to the element that contains all the\n // content that is shown or hidden.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#disclosure\n , Object.assign({\n \"aria-controls\": panelId,\n \"aria-expanded\": open\n }, props, {\n \"data-reach-disclosure-button\": \"\",\n \"data-state\": open ? DisclosureStates.Open : DisclosureStates.Collapsed,\n ref: ref,\n onClick: wrapEvent(onClick, handleClick)\n }), children);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n DisclosureButton.displayName = \"DisclosureButton\";\n DisclosureButton.propTypes = {\n as: PropTypes.any,\n children: PropTypes.node\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * DisclosurePanel\r\n *\r\n * The collapsible panel in which inner content for an disclosure item is\r\n * rendered.\r\n *\r\n * @see Docs https://reach.tech/disclosure#disclosurepanel\r\n */\n\n\nvar DisclosurePanel = /*#__PURE__*/forwardRefWithAs(function DisclosurePanel(_ref3, forwardedRef) {\n var _ref3$as = _ref3.as,\n Comp = _ref3$as === void 0 ? \"div\" : _ref3$as,\n children = _ref3.children,\n props = _objectWithoutPropertiesLoose(_ref3, [\"as\", \"children\"]);\n\n var _React$useContext2 = useContext(DisclosureContext),\n panelId = _React$useContext2.panelId,\n open = _React$useContext2.open;\n\n return createElement(Comp, Object.assign({\n ref: forwardedRef,\n hidden: !open\n }, props, {\n \"data-reach-disclosure-panel\": \"\",\n \"data-state\": open ? DisclosureStates.Open : DisclosureStates.Collapsed,\n id: panelId,\n tabIndex: -1\n }), children);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n DisclosurePanel.displayName = \"DisclosurePanel\";\n DisclosurePanel.propTypes = {};\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * A hook that exposes data for a given `Disclosure` component to its\r\n * descendants.\r\n *\r\n * @see Docs https://reach.tech/disclosure#usedisclosurecontext\r\n */\n\n\nfunction useDisclosureContext() {\n var _React$useContext3 = useContext(DisclosureContext),\n open = _React$useContext3.open,\n panelId = _React$useContext3.panelId,\n disclosureId = _React$useContext3.disclosureId;\n\n return useMemo(function () {\n return {\n id: disclosureId,\n panelId: panelId,\n open: open\n };\n }, [disclosureId, open, panelId]);\n}\n\nexport { Disclosure, DisclosureButton, DisclosurePanel, DisclosureStates, useDisclosureContext };\n//# sourceMappingURL=disclosure.esm.js.map\n","import { DisclosureButton, DisclosurePanel } from '@reach/disclosure';\nimport { StyledButton } from 'components/button';\nimport { rem, size } from 'polished';\nimport styled from 'styled-components';\n\nexport const Wrapper = styled.div`\n padding: ${rem(20)} 0;\n border-bottom: 1px solid ${({ theme }) => theme.colors.palette.grey};\n\n &:last-child {\n border-bottom: 0;\n }\n`;\n\ninterface InitialValuesWrapperProps {\n isOpen?: boolean;\n}\n\nexport const InitialValuesWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: ${({ isOpen }) => (isOpen ? rem(20) : 0)};\n\n h2 {\n margin-bottom: 0;\n }\n`;\n\nexport const InitialValues = styled.div`\n display: grid;\n flex: 1;\n grid-template-columns: minmax(30%, 0.5fr) 1fr;\n\n > * {\n display: inline-block;\n margin: 0 ${rem(1)};\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`;\n\nexport const StyledDisclosureButton = styled(DisclosureButton)`\n flex-shrink: 0;\n margin-left: auto;\n background: none;\n border: 0;\n cursor: pointer;\n\n svg {\n ${size(rem(20))}\n\n display: block;\n color: ${({ theme }) => theme.colors.palette.black};\n\n &:hover {\n color: ${({ theme }) => theme.colors.palette.redDark};\n }\n }\n`;\n\nexport const StyledDisclosurePanel = styled(DisclosurePanel)`\n ${StyledButton} {\n width: 100%;\n max-width: 100%;\n margin-top: ${rem(20)};\n }\n`;\n\nexport const EditToggleGroup = styled.div`\n margin: ${rem(30)} 0;\n padding: ${rem(30)};\n overflow: hidden;\n color: ${({ theme }) => theme.colors.palette.black};\n background-color: ${({ theme }) => theme.colors.palette.white};\n border-radius: ${({ theme }) => theme.borderRadius.medium};\n`;\n","import { Disclosure } from '@reach/disclosure';\nimport { ReactComponent as EditIcon } from 'assets/icons/icon-edit.svg';\nimport React, {\n forwardRef,\n MutableRefObject,\n ReactElement,\n ReactNode,\n useEffect,\n useImperativeHandle,\n useState,\n} from 'react';\nimport {\n InitialValues,\n InitialValuesWrapper,\n StyledDisclosureButton,\n StyledDisclosurePanel,\n Wrapper,\n} from './edit-toggle.styles';\n\ninterface Props {\n name: string;\n value: string;\n isOpen?: boolean;\n openTitle?: ReactElement | string;\n ref?: MutableRefObject;\n children?: ReactNode;\n}\n\nexport interface EditToggleHandles {\n toggle(): void;\n}\n\nconst EditToggle = forwardRef(\n ({ name, value, children, openTitle, isOpen: isOpenProp }, ref) => {\n const [isOpen, setOpen] = useState(isOpenProp || false);\n\n useEffect(() => {\n if (isOpenProp !== undefined) {\n setOpen(isOpenProp);\n }\n }, [isOpenProp]);\n\n useImperativeHandle(ref, () => ({\n toggle() {\n setOpen((open) => !open);\n },\n }));\n\n return (\n \n \n \n {isOpen && openTitle}\n {!isOpen && (\n \n {name}: \n {value}\n \n )}\n \n \n \n \n {children}\n \n \n );\n }\n);\n\nexport default EditToggle;\n","import { logger } from '@hatchd/utils';\nimport { ErrorMessage } from '@hookform/error-message';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { UsersApi } from 'api/client';\nimport { ReactComponent as SaveIcon } from 'assets/icons/icon-save.svg';\nimport {\n Form as FormOuter,\n GlobalError,\n PasswordInfo,\n} from 'components/auth-form/auth-form.styles';\nimport BackLink from 'components/back-link';\nimport Button from 'components/button';\nimport Checkbox from 'components/checkbox';\nimport DeleteAccountButton from 'components/delete-account-button';\nimport EditToggle, { EditToggleHandles } from 'components/edit-toggle';\nimport { EditToggleGroup } from 'components/edit-toggle/edit-toggle.styles';\nimport { H4, H5 } from 'components/headings';\nimport Layout from 'components/layout';\nimport SEO from 'components/seo';\nimport SwitchTheme from 'components/switch-theme';\nimport TextInput from 'components/text-input';\nimport ContentSection from 'components/ui/content-section';\nimport { TextButton } from 'components/ui/text-button';\nimport useAuth from 'hooks/use-auth';\nimport { useUserProfileAPI } from 'hooks/use-user-profile';\nimport { GetStaticProps, NextPage } from 'next';\nimport { useRef } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { toast } from 'react-toastify';\nimport { useEffectOnce } from 'react-use';\nimport AnalyticsService, { ScreenNames } from 'services/analytics';\nimport { backgroundImages, passwordRegexp, settings } from 'utils/config';\nimport { resolveApiError } from 'utils/helpers';\nimport { protectRoute } from 'utils/protect-route';\nimport APP_ROUTES from 'utils/routes';\nimport statusMessages from 'utils/status-messages';\nimport * as yup from 'yup';\n\nconst PAGE_TITLE = 'Account Settings';\n\n// Name Form ---------------------------------------------------------------------------------------\ntype NameFormData = {\n displayName: string;\n nameGlobalError?: string;\n};\n\nconst nameSchema = yup.object().shape({\n displayName: yup\n .string()\n .required('Please provide a name.')\n .min(\n settings.nameMinLength,\n `Name must be at least ${settings.nameMinLength} characters.`\n ),\n});\n\n// Email Form --------------------------------------------------------------------------------------\ntype EmailFormData = {\n email: string;\n emailGlobalError?: string;\n};\n\nconst emailSchema = yup.object().shape({\n email: yup\n .string()\n .email(`Invalid email.`)\n .required('Please provide your email.'),\n});\n\n// Password Form -----------------------------------------------------------------------------------\ntype PasswordFormData = {\n password: string;\n newPassword: string;\n confirmPassword: string;\n passwordGlobalError?: string;\n};\n\nconst passwordSchema = yup.object().shape({\n password: yup.string().required('Please provide your old password.'),\n newPassword: yup\n .string()\n .required('Please provide a new password.')\n .matches(\n passwordRegexp,\n `Password must contain at least ${settings.passwordMinLength} characters, upper and lowercase letters and at least 1 number.`\n ),\n confirmPassword: yup\n .string()\n .oneOf([yup.ref('newPassword'), undefined], 'New passwords must match.'),\n});\n\nconst Settings: NextPage = () => {\n const { user, token, logout, reloadUser } = useAuth();\n const UserApi = new UsersApi({\n apiKey: token ?? '',\n });\n\n // Set up name form ------------------------------------------------------------------------------\n const {\n register: registerName,\n handleSubmit: handleNameSubmit,\n errors: nameErrors,\n formState: nameFormState,\n setError: setNameError,\n } = useForm({\n defaultValues: {\n displayName: user?.displayName ?? '',\n },\n resolver: yupResolver(nameSchema),\n });\n\n const { isSubmitting: isNameFormSubmitting, touched: nameFormTouched } =\n nameFormState;\n\n const nameToggleRef = useRef(null);\n\n const onNameSubmit = handleNameSubmit(\n async ({ nameGlobalError, ...data }) => {\n try {\n await UserApi.updateUser({\n displayName: data.displayName,\n });\n reloadUser();\n nameToggleRef.current?.toggle();\n toast.success(statusMessages.settings.nameUpdateSuccess);\n } catch (error) {\n logger.error('Error updating name', error);\n toast.error(statusMessages.settings.nameUpdateError);\n resolveApiError(\n error,\n setNameError,\n 'nameGlobalError',\n 'Error updating name'\n );\n }\n }\n );\n\n // Set up email form -----------------------------------------------------------------------------\n const {\n register: registerEmail,\n handleSubmit: handleEmailSubmit,\n errors: emailErrors,\n formState: emailFormState,\n setError: setEmailError,\n } = useForm({\n defaultValues: {\n email: user?.email ?? '',\n },\n resolver: yupResolver(emailSchema),\n });\n\n const { isSubmitting: isEmailFormSubmitting, touched: emailFormTouched } =\n emailFormState;\n\n const onEmailSubmit = handleEmailSubmit(\n async ({ emailGlobalError, ...data }) => {\n try {\n await UserApi.updateUser({\n email: data.email,\n });\n toast.success(statusMessages.settings.emailUpdateSuccess);\n //? User will be logged out immediately if the session is too old.\n reloadUser();\n } catch (error) {\n logger.error('Error updating email', error);\n resolveApiError(\n error,\n setEmailError,\n 'emailGlobalError',\n 'Error updating email'\n );\n }\n }\n );\n\n // Set up password form --------------------------------------------------------------------------\n const {\n register: registerPassword,\n handleSubmit: handlePasswordSubmit,\n errors: passwordErrors,\n formState: passwordFormState,\n setError: setPasswordError,\n } = useForm({\n resolver: yupResolver(passwordSchema),\n });\n\n const {\n isSubmitting: isPasswordFormSubmitting,\n touched: passwordFormTouched,\n } = passwordFormState;\n\n const onPasswordSubmit = handlePasswordSubmit(\n async ({ passwordGlobalError, ...data }) => {\n const firebase = (await import('services/firebase/client')).default;\n\n const credential = firebase.auth.EmailAuthProvider.credential(\n user?.email ?? '',\n data.password\n );\n\n let validCredential: firebase.default.auth.UserCredential | undefined;\n try {\n validCredential = await firebase\n .auth()\n .currentUser?.reauthenticateWithCredential(credential);\n } catch (error) {\n logger.error('Re-authentication failed', error);\n\n // override the default error messages for common errors.\n switch (error?.code) {\n case 'auth/wrong-password':\n // If the user used an invalid \"old\" password, we just show the individual error message\n // instead of the global one.\n error.message = 'The old password is invalid.';\n setPasswordError('password', {\n type: 'manual',\n message: error.message,\n });\n return;\n default:\n break;\n }\n\n setPasswordError('passwordGlobalError', {\n type: 'manual',\n message: error.message,\n });\n }\n\n if (validCredential) {\n try {\n await UserApi.updateUser({\n password: data.newPassword,\n });\n\n toast.success(statusMessages.settings.passwordUpdateSuccess);\n\n //? User will be logged out immediately if the session is too old.\n reloadUser();\n } catch (error) {\n logger.error('Error updating password', error);\n resolveApiError(\n error,\n setPasswordError,\n 'passwordGlobalError',\n 'Error updating password'\n );\n }\n }\n }\n );\n\n useEffectOnce(() => {\n AnalyticsService.trackScreen(ScreenNames.settings);\n });\n\n // Set up communication preference -----------------------------------------------------------------\n const { useUserProfile, useUpdateUserProfile } = useUserProfileAPI();\n const { data: userProfile, isLoading: userProfileLoading } = useUserProfile();\n const { mutate: updateUserProfile, isLoading: updateUserProfileLoading } =\n useUpdateUserProfile();\n const allowCommunications = userProfile?.data.allowCommunications || false;\n\n const handleCommunicationChange = () => {\n updateUserProfile({ allowCommunications: !allowCommunications });\n };\n\n return (\n \n \n \n \n Back to Dashboard\n

{PAGE_TITLE}

\n \n \n Update name}\n ref={nameToggleRef}\n >\n
\n
\n \n
\n \n \n \n Save name\n \n \n \n Update email}\n >\n
\n
\n \n
\n \n \n You will need to log in again with your new email address\n after saving.\n \n \n \n Save email\n \n \n \n Update password}\n >\n
\n
\n \n
\n \n \n \n \n \n {settings.passwordMinLength} or more characters with upper\n and lower case letters, numbers.\n \n \n \n You will need to log in again with your new password after\n saving.\n \n \n \n Save password\n \n \n \n \n
\n
\n Logout\n \n
\n
\n
\n );\n};\n\nexport const getStaticProps: GetStaticProps = async () => {\n return {\n props: {},\n };\n};\n\nexport default protectRoute(Settings);\n"],"sourceRoot":""}