{"version":3,"file":"js/71082-fb8aa147dd1e5f984c16.js","mappings":"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","sources":["webpack://StravaModern/./app/javascript/components/shared/AccountAuthButton/ButtonWrapper/index.scss?5210","webpack://StravaModern/./app/javascript/components/shared/AccountAuthButton/ButtonWrapper/ButtonWrapper.js","webpack://StravaModern/./app/javascript/components/shared/AccountAuthButton/FacebookButton/index.scss?deb1","webpack://StravaModern/./app/javascript/components/shared/AccountAuthButton/FacebookButton/FacebookButton.js","webpack://StravaModern/./app/javascript/components/shared/AccountAuthButton/GoogleButton/index.scss?1b4a","webpack://StravaModern/./app/javascript/components/shared/AccountAuthButton/GoogleButton/GoogleButton.js","webpack://StravaModern/./app/javascript/components/shared/AccountAuthButton/EmailButton/index.scss?46a9","webpack://StravaModern/./app/javascript/components/shared/AccountAuthButton/EmailButton/EmailButton.js","webpack://StravaModern/./app/javascript/components/shared/AccountAuthButton/AccountAuthButton.js","webpack://StravaModern/./app/javascript/hooks/externalSocialPartners/useApple.js","webpack://StravaModern/./app/javascript/components/shared/AccountSignupForm/index.scss?885e","webpack://StravaModern/./app/javascript/components/shared/AccountAuthButton/AppleButton/index.scss?6e0c","webpack://StravaModern/./app/javascript/components/shared/AccountAuthButton/AppleButton/AppleButton.js","webpack://StravaModern/./app/javascript/components/shared/AccountSignupForm/AccountSignupForm.js","webpack://StravaModern/./app/javascript/components/shared/DisclaimerText/index.scss?253f","webpack://StravaModern/./app/javascript/components/shared/DisclaimerText/DisclaimerText.js","webpack://StravaModern/./app/javascript/components/shared/DropdownDatePicker/styles.scss?7327","webpack://StravaModern/./app/javascript/components/shared/DropdownDatePicker/DropdownDatePicker.js","webpack://StravaModern/./app/javascript/components/shared/SignupAgeGateModal/index.scss?f088","webpack://StravaModern/./app/javascript/components/shared/SignupAgeGateModal/SignupAgeGateModal.js","webpack://StravaModern/./app/javascript/components/shared/StravaDropdownSelect/StravaDropdownSelect.js","webpack://StravaModern/./app/javascript/constants/appConstants.js","webpack://StravaModern/./app/javascript/utils/onboarding.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"auth-button\":\"ButtonWrapper--auth-button--7vRBM\",\"authButton\":\"ButtonWrapper--auth-button--7vRBM\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './index.scss';\n\nexport const LOG_IN = 'log_in';\nexport const SIGN_UP = 'sign_up';\n\nconst ButtonWrapper = ({ children, className, ...options }) => {\n return (\n \n {children}\n \n );\n};\n\nButtonWrapper.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string.isRequired\n};\n\nexport default ButtonWrapper;\n","// extracted by mini-css-extract-plugin\nexport default {\"facebook-button\":\"FacebookButton--facebook-button---mxGR\",\"facebookButton\":\"FacebookButton--facebook-button---mxGR\"};","import React from 'react';\nimport I18n from 'utils/I18n';\nimport PropTypes from 'prop-types';\n\nimport styles from './index.scss';\nimport ButtonWrapper, { LOG_IN, SIGN_UP } from '../ButtonWrapper';\n\nconst FacebookButton = ({ type, onClick }) => {\n const I18nPrefix = 'strava.landing_page';\n\n return (\n \n {type === SIGN_UP\n ? I18n.t(`${I18nPrefix}.here_to_join.facebook_cta`)\n : 'implement_me'}\n \n );\n};\n\nFacebookButton.propTypes = {\n onClick: PropTypes.func,\n type: PropTypes.oneOf([SIGN_UP, LOG_IN]).isRequired\n};\n\nFacebookButton.defaultProps = {\n onClick: () => {}\n};\n\nexport default FacebookButton;\n","// extracted by mini-css-extract-plugin\nexport default {\"google-button\":\"GoogleButton--google-button--oTGb8\",\"googleButton\":\"GoogleButton--google-button--oTGb8\"};","import React from 'react';\nimport I18n from 'utils/I18n';\nimport PropTypes from 'prop-types';\n\nimport styles from './index.scss';\nimport ButtonWrapper, { LOG_IN, SIGN_UP } from '../ButtonWrapper';\n\nconst GoogleButton = ({ type, onClick }) => {\n const I18nPrefix = 'strava.landing_page';\n\n return (\n \n {type === SIGN_UP\n ? I18n.t(`${I18nPrefix}.here_to_join.google_cta`)\n : 'implement_me'}\n \n );\n};\n\nGoogleButton.propTypes = {\n onClick: PropTypes.func,\n type: PropTypes.oneOf([SIGN_UP, LOG_IN]).isRequired\n};\n\nGoogleButton.defaultProps = {\n onClick: () => {}\n};\n\nexport default GoogleButton;\n","// extracted by mini-css-extract-plugin\nexport default {\"email-button\":\"EmailButton--email-button--EJuHg\",\"emailButton\":\"EmailButton--email-button--EJuHg\"};","import React from 'react';\nimport I18n from 'utils/I18n';\nimport PropTypes from 'prop-types';\n\nimport styles from './index.scss';\nimport ButtonWrapper, { LOG_IN, SIGN_UP } from '../ButtonWrapper';\n\nconst AccountAuthEmailButton = ({ type, onClick }) => {\n const I18nPrefix = 'strava.landing_page';\n\n return (\n \n {type === SIGN_UP\n ? I18n.t(`${I18nPrefix}.here_to_join.email_cta`)\n : 'implement_me'}\n \n );\n};\n\nAccountAuthEmailButton.propTypes = {\n onClick: PropTypes.func,\n type: PropTypes.oneOf([SIGN_UP, LOG_IN]).isRequired\n};\n\nAccountAuthEmailButton.defaultProps = {\n onClick: () => {}\n};\n\nexport default AccountAuthEmailButton;\n","import FacebookButton from './FacebookButton';\nimport GoogleButton from './GoogleButton';\nimport EmailButton from './EmailButton';\n\nimport { LOG_IN, SIGN_UP } from './ButtonWrapper';\n\nconst APPLE = 'apple';\nconst EMAIL = 'email';\nconst FACEBOOK = 'facebook';\nconst GOOGLE = 'google';\n\nconst elemAttrForAnalytics = (option) => {\n switch (option) {\n case FACEBOOK:\n return 'facebook_signup';\n case APPLE:\n return 'apple_signup';\n case EMAIL:\n return 'email_signup';\n case GOOGLE:\n return 'google_signup';\n default:\n return 'signup';\n }\n};\n\nexport {\n APPLE,\n EMAIL,\n EmailButton,\n FACEBOOK,\n FacebookButton,\n GOOGLE,\n GoogleButton,\n LOG_IN,\n SIGN_UP,\n elemAttrForAnalytics\n};\n","import { useEffect } from 'react';\nimport { injectAppleScript } from 'externalSocialPartners';\n\n/**\n *\n * @param {String} state https://developer.apple.com/documentation/sign_in_with_apple/clientconfigi/3230956-state\n */\nconst useApple = (state) => {\n useEffect(() => {\n injectAppleScript();\n }, []);\n\n const signin = () => {\n if (!window.AppleID.stravaInit) {\n window.AppleID.auth.init({\n clientId: 'com.strava.app.sign.in',\n scope: 'name email',\n redirectURI: 'https://www.strava.com/o_auth/apple',\n state\n });\n window.AppleID.stravaInit = true;\n }\n window.AppleID.auth.signIn();\n };\n\n return { signin };\n};\n\nexport default useApple;\n","// extracted by mini-css-extract-plugin\nexport default {\"hr\":\"AccountSignupForm--hr--UJLN0\",\"hr-text\":\"AccountSignupForm--hr-text--rrMpt\",\"hrText\":\"AccountSignupForm--hr-text--rrMpt\"};","// extracted by mini-css-extract-plugin\nexport default {\"apple-button\":\"AppleButton--apple-button--fZrIp\",\"appleButton\":\"AppleButton--apple-button--fZrIp\"};","import React from 'react';\nimport I18n from 'utils/I18n';\nimport PropTypes from 'prop-types';\n\nimport styles from './index.scss';\nimport ButtonWrapper, { LOG_IN, SIGN_UP } from '../ButtonWrapper';\n\nconst AppleButton = ({ type, onClick }) => {\n const I18nPrefix = 'strava.landing_page';\n\n return (\n \n {type === SIGN_UP\n ? I18n.t(`${I18nPrefix}.here_to_join.apple_cta`)\n : 'implement_me'}\n \n );\n};\n\nAppleButton.propTypes = {\n onClick: PropTypes.func,\n type: PropTypes.oneOf([SIGN_UP, LOG_IN]).isRequired\n};\n\nAppleButton.defaultProps = {\n onClick: () => {}\n};\n\nexport default AppleButton;\n","import React, { useState, useEffect } from 'react';\nimport I18n from 'utils/I18n';\nimport PropTypes from 'prop-types';\n\nimport useApple from 'hooks/externalSocialPartners/useApple';\nimport { isEmpty } from 'lodash-es';\nimport clsx from '@strava/ui/clsx';\nimport styles from './index.scss';\nimport DisclaimerText from '../DisclaimerText';\n\nimport SignupAgeGateModal from '../SignupAgeGateModal';\n\nimport {\n FacebookButton,\n GoogleButton,\n EmailButton,\n SIGN_UP,\n FACEBOOK,\n GOOGLE,\n EMAIL,\n APPLE,\n elemAttrForAnalytics\n} from '../AccountAuthButton';\nimport AppleButton from '../AccountAuthButton/AppleButton';\n\nimport {\n LANDING_PAGE,\n PRIVATE_ACTIVITY,\n MOBILE_REGISTRATION_PAGE,\n pageAttrForAnalytics,\n track\n} from '../../../utils/onboarding';\nimport StravaAlert from '../../StravaAlert';\n\nconst AccountSignupForm = ({\n authorizationUrls,\n config,\n locale,\n page,\n flashMessage,\n className\n}) => {\n const [openModal, setOpenModal] = useState(false);\n const [option, setOption] = useState(null);\n\n const { signin: appleSignin } = useApple(config.appleState);\n\n const I18nPrefix = 'strava.landing_page';\n\n useEffect(() => {\n if (page !== LANDING_PAGE) {\n track({\n page: pageAttrForAnalytics(page),\n action: 'screen_enter'\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleOnClick = (clickedOption) => {\n track({\n page: pageAttrForAnalytics(page),\n action: 'click',\n element: elemAttrForAnalytics(clickedOption)\n });\n setOption(clickedOption);\n if (clickedOption === EMAIL && page !== MOBILE_REGISTRATION_PAGE) {\n window.location.href = authorizationUrls[EMAIL];\n return;\n }\n setOpenModal(true);\n };\n\n const handleModalDobSubmit = () => {\n setOpenModal(false);\n if (option === APPLE) {\n appleSignin(config.appleState);\n } else {\n window.location.href = authorizationUrls[option];\n }\n };\n\n const orDivider = (\n
\n
{I18n.t(`${I18nPrefix}.or`)}
\n
\n );\n\n return (\n
\n {!isEmpty(flashMessage) && (\n {flashMessage}\n )}\n handleOnClick(FACEBOOK)} />\n handleOnClick(GOOGLE)} />\n {config.appleEnabled && (\n handleOnClick(APPLE)} />\n )}\n {page === LANDING_PAGE && orDivider}\n handleOnClick(EMAIL)} />\n \n {page === PRIVATE_ACTIVITY && orDivider}\n {\n setOpenModal(false);\n }}\n locale={locale}\n onSuccessCallback={handleModalDobSubmit}\n page={page}\n />\n
\n );\n};\n\nAccountSignupForm.defaultProps = {\n flashMessage: null,\n className: null\n};\n\nAccountSignupForm.propTypes = {\n page: PropTypes.oneOf([\n LANDING_PAGE,\n PRIVATE_ACTIVITY,\n MOBILE_REGISTRATION_PAGE\n ]).isRequired,\n config: PropTypes.shape({\n appleEnabled: PropTypes.bool.isRequired,\n appleState: PropTypes.string.isRequired // https://developer.apple.com/documentation/sign_in_with_apple/clientconfigi/3230956-state\n }).isRequired,\n authorizationUrls: PropTypes.shape({\n google: PropTypes.string.isRequired,\n facebook: PropTypes.string.isRequired\n }).isRequired,\n locale: PropTypes.string.isRequired,\n flashMessage: PropTypes.string,\n className: PropTypes.string\n};\n\nexport default AccountSignupForm;\n","// extracted by mini-css-extract-plugin\nexport default {\"disclaimer-text\":\"DisclaimerText--disclaimer-text--T2255\",\"disclaimerText\":\"DisclaimerText--disclaimer-text--T2255\"};","import React from 'react';\nimport { Markup } from 'interweave';\nimport I18n from 'utils/I18n';\nimport PropTypes from 'prop-types';\n\nimport styles from './index.scss';\n\nconst DisclaimerText = ({ showLoginOption }) => {\n const I18nPrefix = 'strava.landing_page';\n\n const legalTerms = I18n.t(\n `${I18nPrefix}.disclaimer_text.by_clicking_cta_html`,\n {\n terms_path: '/legal/terms'\n }\n );\n\n const legalPrivacy = I18n.t(\n `${I18nPrefix}.disclaimer_text.view_privacy_policy_html`,\n {\n privacy_path: '/legal/privacy'\n }\n );\n\n return (\n
\n

\n {' '}\n \n

\n {showLoginOption && (\n

\n {I18n.t(`${I18nPrefix}.already_a_member`)}{' '}\n {I18n.t(`${I18nPrefix}.log_in`)}\n

\n )}\n
\n );\n};\n\nDisclaimerText.propTypes = {\n showLoginOption: PropTypes.bool\n};\n\nDisclaimerText.defaultProps = {\n showLoginOption: true\n};\n\nexport default DisclaimerText;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"DropdownDatePicker--container--Gsl3M\",\"day\":\"DropdownDatePicker--day--SMWsK\",\"year\":\"DropdownDatePicker--year--imWte\",\"month\":\"DropdownDatePicker--month--PYgYy\",\"error\":\"DropdownDatePicker--error--93oPI\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport I18n from 'utils/I18n';\nimport { isMobile, dateYearsAgo } from 'utils/generalUtils';\nimport { YOUNGEST_AGE_ON_PLATFORM } from 'constants/appConstants';\nimport { isNil } from 'lodash-es';\nimport styles from './styles.scss';\nimport StravaDropdownSelect from '../StravaDropdownSelect/StravaDropdownSelect';\n\nconst MIN_YEARS_BEFORE_TODAY = 125;\n\nconst I18N_MONTHS = (() => {\n const prefix = 'templates.settings.months.';\n return [\n 'jan',\n 'feb',\n 'mar',\n 'apr',\n 'may',\n 'jun',\n 'jul',\n 'aug',\n 'sep',\n 'oct',\n 'nov',\n 'dec'\n ].map((m) => prefix + m);\n})();\n\nconst DropdownDatePicker = ({\n className,\n dateMax,\n dateSelected,\n dateChangeCallback,\n erroredControls,\n required,\n disabled,\n locale,\n focusTarget,\n enableDefaultFocus\n}) => {\n // IMPORTANT - using defaultProps does not reflect the mocked global system date\n // that unit tests need for this component uses.\n // ie. new Date() initiated using defaultProps is always the current date while\n // new Date() in the mounted react would be the mocked date.\n //\n // Setting a custom date during tests if very important for this component since\n // we need to be able to test specific scenarios at any time. Because of this need,\n // maxDate default is being handled inside the mounted component.\n // Also, reactjs seems to be on the path to deprecate defaultProps - https://github.com/jsx-eslint/eslint-plugin-react/issues/2396\n // so this approach aligns more with how the future of reactjs will look like.\n const correctedDateMax = isNil(dateMax)\n ? dateYearsAgo(YOUNGEST_AGE_ON_PLATFORM)\n : dateMax;\n\n const [day, setDay] = useState(dateSelected ? dateSelected.getDate() : null);\n const [month, setMonth] = useState(\n dateSelected ? dateSelected.getMonth() + 1 : null\n ); // UI January => numeric value 1\n const [year, setYear] = useState(\n dateSelected ? dateSelected.getFullYear() : null\n );\n\n const yearMax = correctedDateMax.getFullYear();\n const monthMax = correctedDateMax.getMonth() + 1; // UI January => numeric value is 1\n\n // DD\n const daySelectDefault = I18n.t(\n 'templates.settings.birthday_select_defaults.day'\n );\n // MM or MONTH\n const monthSelectDefault = isMobile()\n ? I18n.t('templates.settings.birthday_select_defaults.month')\n : I18n.t('templates.settings.birthday_select_defaults.month_full');\n // YYYY\n const yearSelectDefault = I18n.t(\n 'templates.settings.birthday_select_defaults.year'\n );\n\n /**\n * Helper function\n * given, min =5, max =7 returns array [5,6,7]\n */\n const intArray = (min, max) =>\n Array.from({ length: max - min + 1 }, (_, i) => i + min);\n\n /**\n * Number in days in a given month for a specific year.\n */\n const numDaysInMonth = (y, m) => new Date(y, m, 0).getDate();\n\n const blankOption = { label: '', value: '' };\n\n /**\n * Day options that an athlete can choose from the day dropdown\n */\n const dayOptions = (() => {\n const options = required ? [] : [blankOption];\n intArray(\n 1,\n year === yearMax && month === monthMax\n ? correctedDateMax.getDate()\n : numDaysInMonth(year, month)\n ).forEach((d) => {\n options.push({ label: d.toString(), value: d });\n });\n return options;\n })();\n\n /**\n * Localized Month options that an athlete can choose from the month dropdown\n *\n * Note: January => 1 and December => 12, Unlike JS Date where January => 0\n */\n const monthOptions = (() => {\n const options = required ? [] : [blankOption];\n intArray(1, year === yearMax ? monthMax : 12).forEach((m) => {\n const label = isMobile() ? m.toString() : I18n.t(I18N_MONTHS[m - 1]);\n options.push({ label, value: m });\n });\n return options;\n })();\n\n /**\n * Year options that an athlete can choose from the year dropdown\n */\n const yearOptions = (() => {\n const options = required ? [] : [blankOption];\n intArray(\n correctedDateMax.getFullYear() - MIN_YEARS_BEFORE_TODAY,\n correctedDateMax.getFullYear()\n )\n .reverse() // descending order - current year first\n .forEach((y) => {\n options.push({ label: y.toString(), value: y });\n });\n return options;\n })();\n\n const handleYearChange = (option) => {\n const newYear = option.value;\n setYear(newYear);\n let newDay = day;\n let newMonth = month;\n if (day > numDaysInMonth(newYear, month)) {\n newDay = null;\n setDay(newDay); // clear out the selected day\n }\n if (newYear === yearMax && month > monthMax) {\n newMonth = null;\n setMonth(newMonth); // clear out the month field (this avoids dates that are before the dateMax from being entered)\n }\n dateChangeCallback({ month: newMonth, day: newDay, year: newYear });\n };\n\n const handleMonthChange = (option) => {\n const newMonth = option.value;\n setMonth(newMonth);\n let newDay = day;\n if (day > numDaysInMonth(year, newMonth)) {\n newDay = null;\n setDay(newDay); // clear out the selected day\n }\n dateChangeCallback({ month: newMonth, day: newDay, year });\n };\n\n const handleDayChange = (option) => {\n const newDay = option.value;\n setDay(newDay);\n dateChangeCallback({ month, day: newDay, year });\n };\n\n /**\n * The date control that gains focus\n */\n const defaultFocus = (() => {\n if (enableDefaultFocus) {\n switch (locale) {\n case 'en-US':\n return 'month';\n case 'ko-KR':\n case 'ja-JP':\n return 'year';\n default:\n return 'day';\n }\n }\n return null;\n })();\n\n const monthSelector = (\n o.value === month)}\n onChange={handleMonthChange}\n placeholder={monthSelectDefault}\n ariaLabel={monthSelectDefault}\n data-cy=\"month\"\n hasError={erroredControls.includes('month')}\n isFocused={[focusTarget, defaultFocus].includes('month')}\n />\n );\n\n const daySelector = (\n o.value === day)}\n onChange={handleDayChange}\n placeholder={daySelectDefault}\n ariaLabel={daySelectDefault}\n hasError={erroredControls.includes('day')}\n isFocused={[focusTarget, defaultFocus].includes('day')}\n />\n );\n\n const yearSelector = (\n o.value === year)}\n onChange={handleYearChange}\n placeholder={yearSelectDefault}\n ariaLabel={yearSelectDefault}\n hasError={erroredControls.includes('year')}\n isFocused={[focusTarget, defaultFocus].includes('year')}\n />\n );\n\n /**\n * Determines date layout based on the language\n */\n const buildSelectors = () => {\n switch (locale) {\n case 'en-US':\n return [monthSelector, daySelector, yearSelector];\n case 'ko-KR':\n case 'ja-JP':\n return [yearSelector, monthSelector, daySelector];\n default:\n return [daySelector, monthSelector, yearSelector];\n }\n };\n\n const classNames = [styles.container];\n if (className) {\n classNames.push(className);\n }\n return (\n
\n {buildSelectors()}\n
\n );\n};\n\nDropdownDatePicker.defaultProps = {\n className: null,\n dateMax: null,\n dateSelected: null,\n erroredControls: [],\n required: false,\n locale: window.navigator.userLanguage || window.navigator.language,\n disabled: false,\n focusTarget: null,\n enableDefaultFocus: false\n};\n\nDropdownDatePicker.propTypes = {\n className: PropTypes.string,\n dateMax: PropTypes.instanceOf(Date),\n dateSelected: PropTypes.instanceOf(Date),\n dateChangeCallback: PropTypes.func.isRequired,\n erroredControls: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year'])),\n locale: PropTypes.string,\n required: PropTypes.bool,\n disabled: PropTypes.bool,\n focusTarget: PropTypes.string,\n enableDefaultFocus: PropTypes.bool\n};\n\nexport default DropdownDatePicker;\n","// extracted by mini-css-extract-plugin\nexport default {\"modal\":\"SignupAgeGateModal--modal--smgNx\",\"modal-title\":\"SignupAgeGateModal--modal-title--1dq21\",\"modalTitle\":\"SignupAgeGateModal--modal-title--1dq21\",\"modal-body\":\"SignupAgeGateModal--modal-body--Ur7Jt\",\"modalBody\":\"SignupAgeGateModal--modal-body--Ur7Jt\",\"modal-actions\":\"SignupAgeGateModal--modal-actions--yB7GV\",\"modalActions\":\"SignupAgeGateModal--modal-actions--yB7GV\",\"subtitle\":\"SignupAgeGateModal--subtitle--Nlw+5\",\"text\":\"SignupAgeGateModal--text--HTLTO\",\"datepicker\":\"SignupAgeGateModal--datepicker---45FB\",\"tool-tip\":\"SignupAgeGateModal--tool-tip--F4AYv\",\"toolTip\":\"SignupAgeGateModal--tool-tip--F4AYv\",\"signup-button\":\"SignupAgeGateModal--signup-button--0pBfO\",\"signupButton\":\"SignupAgeGateModal--signup-button--0pBfO\",\"error-message\":\"SignupAgeGateModal--error-message--kjG0B\",\"errorMessage\":\"SignupAgeGateModal--error-message--kjG0B\"};","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Modal, { ModalActions, ModalTitle, ModalBody } from '@strava/ui/Modal';\nimport Button from '@strava/ui/Button';\nimport Tooltip from '@strava/ui/Tooltip';\nimport NavigationHelpNormalXsmall from '@strava/icons/NavigationHelpNormalXsmall';\nimport I18n from 'utils/I18n';\nimport { Markup } from 'interweave';\n\nimport createNetworkingClient from 'utils/networking-client';\nimport { YOUNGEST_AGE_ON_PLATFORM } from 'constants/appConstants';\nimport styles from './index.scss';\nimport DisclaimerText from '../DisclaimerText';\nimport DropdownDatePicker from '../DropdownDatePicker';\nimport {\n LANDING_PAGE,\n MOBILE_REGISTRATION_PAGE,\n pageAttrForAnalytics,\n PRIVATE_ACTIVITY,\n REGISTRATION_PAGE,\n track\n} from '../../../utils/onboarding';\n\nconst SignupAgeGateModal = ({\n open,\n onSuccessCallback,\n onDismissCallback,\n locale,\n page\n}) => {\n const [dob, setDob] = useState({ month: '', day: '', year: '' });\n const [erroredControls, setErroredControls] = useState([]);\n const [errorMessage, setErrorMessage] = useState(null);\n\n const I18nPrefix = 'strava.landing_page';\n\n const copyCantMakeAccount = I18n.t(`${I18nPrefix}.cant_make_account`);\n\n useEffect(() => {\n if (open) {\n setErrorMessage(null);\n track({\n page: 'dob',\n action: 'screen_enter',\n properties: {\n source: pageAttrForAnalytics(page)\n }\n });\n }\n }, [open, page]);\n\n const isCompleteDate = ({ month, day, year }) => {\n let result = true;\n if (month === null || month === '') {\n setErroredControls((prev) => [...prev, 'month']);\n result = false;\n }\n if (day === null || day === '') {\n setErroredControls((prev) => [...prev, 'day']);\n result = false;\n }\n if (year === null || year === '') {\n setErroredControls((prev) => [...prev, 'year']);\n result = false;\n }\n return result;\n };\n\n const dateWithoutTime = (date) => {\n return new Date(date.toDateString());\n };\n\n /**\n * Athlete must be >= 13 years to create an account\n */\n const isAllowedAge = ({ month, day, year }) => {\n const inputDate = dateWithoutTime(new Date(year, month - 1, day)); // Jan => 1 for input UI\n const today = dateWithoutTime(new Date());\n const minDate = dateWithoutTime(\n new Date(\n today.getFullYear() - YOUNGEST_AGE_ON_PLATFORM,\n today.getMonth(),\n today.getDate()\n )\n );\n return inputDate <= minDate;\n };\n\n const remove = (arr, value) => {\n let i = 0;\n while (i < arr.length) {\n if (arr[i] === value) {\n arr.splice(i, 1);\n } else {\n i += 1;\n }\n }\n return arr;\n };\n\n const updateErrorState = ({ month, day, year }) => {\n if (month) {\n setErroredControls((prev) => remove(prev, 'month'));\n }\n if (day) {\n setErroredControls((prev) => remove(prev, 'day'));\n }\n if (year) {\n setErroredControls((prev) => remove(prev, 'year'));\n }\n };\n\n const handleSignup = () => {\n const { month, day, year } = dob;\n\n track({\n page: 'dob',\n action: 'click',\n element: 'agree_signup',\n properties: {\n source: pageAttrForAnalytics(page),\n dob: `${month === '' ? null : month}-${day === '' ? null : day}-${\n year === '' ? null : year\n }`, // eg. track as null-12-2020 instead of -12-2020\n dob_complete: isCompleteDate({ month, day, year }),\n dob_allowed: isCompleteDate({ month, day, year })\n ? isAllowedAge({ month, day, year })\n : false\n }\n });\n\n if (!isCompleteDate({ month, day, year })) {\n return; // block signup process\n }\n if (!isAllowedAge({ month, day, year })) {\n setErrorMessage(copyCantMakeAccount);\n return; // block signup process\n }\n createNetworkingClient()\n .post('/onboarding/age_gate', {\n age_gate_year: year,\n age_gate_month: month,\n age_gate_day: day\n })\n .then((response) => {\n if (response && response.status === 200) {\n onSuccessCallback();\n } else {\n setErrorMessage(I18n.t(`${I18nPrefix}.errors.generic`));\n }\n })\n .catch(() => {\n setErrorMessage(I18n.t(`${I18nPrefix}.errors.generic`));\n });\n };\n\n const handleDobChange = (d) => {\n setDob(d);\n updateErrorState(d);\n setErrorMessage(null);\n };\n\n return (\n \n \n {I18n.t(`${I18nPrefix}.before_you_sign_up`)}\n \n \n
\n
{I18n.t(`${I18nPrefix}.birthday`)}
\n \n }\n position=\"top\"\n className={styles.toolTip}\n >\n \n \n
\n\n \n\n \n\n {errorMessage && (\n \n {errorMessage}\n \n )}\n
\n \n \n {I18n.t(`${I18nPrefix}.agree_and_signup`)}\n \n \n \n );\n};\n\nSignupAgeGateModal.defaultProps = {\n page: ''\n};\n\nSignupAgeGateModal.propTypes = {\n open: PropTypes.bool.isRequired,\n onSuccessCallback: PropTypes.func.isRequired,\n onDismissCallback: PropTypes.func.isRequired,\n locale: PropTypes.string.isRequired,\n page: PropTypes.oneOf([\n LANDING_PAGE,\n PRIVATE_ACTIVITY,\n MOBILE_REGISTRATION_PAGE,\n REGISTRATION_PAGE\n ])\n};\n\nexport default SignupAgeGateModal;\n","import React, { useEffect, useRef } from 'react';\nimport ReactSelect from 'react-select';\nimport PropTypes, { number, string } from 'prop-types';\nimport { isMobile } from 'utils/generalUtils';\n\nimport colors from '@strava/ui/colors';\n\nconst StravaDropdownSelect = ({\n name,\n isFocused,\n hasError,\n value,\n options,\n ariaLabel,\n className,\n disabled,\n onChange,\n placeholder,\n styles,\n ...props\n}) => {\n const ref = useRef(null);\n\n useEffect(() => {\n if (ref.current && isFocused) {\n ref.current.focus();\n }\n }, [isFocused]);\n\n const controlColor = (provided) =>\n hasError ? colors.BRAND_DANGER : provided.borderColor;\n\n const controlBoxShadow = (provided, state) => {\n if (hasError) {\n return '';\n }\n if (state.isFocused) {\n return `0 0 0 1px #${colors.N70_GRAVEL}`;\n }\n return provided.boxShadow;\n };\n\n const customStyles = (() => {\n return {\n indicatorSeparator: (provided) => ({\n ...provided,\n display: 'none'\n }),\n dropdownIndicator: (provided) => ({\n ...provided,\n padding: '2px'\n }),\n valueContainer: (provided) => ({\n ...provided,\n padding: '5px',\n height: '50px',\n fontSize: '17px',\n color: controlColor(provided)\n }),\n control: (provided, state) => ({\n ...provided,\n borderColor: controlColor(provided),\n boxShadow: controlBoxShadow(provided, state)\n }),\n ...styles\n };\n })();\n\n const theme = (provided) => ({\n ...provided,\n colors: {\n ...provided.colors,\n primary25: colors.N30_SILVER,\n primary: colors.N70_GRAVEL,\n danger: colors.BRAND_DANGER\n }\n });\n\n return (\n \n );\n};\n\nconst optionProps = PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.oneOfType([number, string])\n});\n\nStravaDropdownSelect.defaultProps = {\n hasError: false,\n disabled: false,\n className: null,\n value: null,\n onChange: () => {},\n placeholder: null,\n isFocused: false,\n styles: {}\n};\n\nStravaDropdownSelect.propTypes = {\n name: PropTypes.string.isRequired,\n isFocused: PropTypes.bool,\n hasError: PropTypes.bool,\n value: optionProps,\n disabled: PropTypes.bool,\n ariaLabel: PropTypes.string.isRequired,\n className: PropTypes.string,\n options: PropTypes.arrayOf(optionProps).isRequired,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n styles: PropTypes.shape({})\n};\n\nexport default StravaDropdownSelect;\n","export const YOUNGEST_AGE_ON_PLATFORM = 13;\n\nexport const YOUNGEST_AGE_FOR_HEALTH_AND_PROMO = 16;\n\nexport const GENDER = Object.freeze({\n man: 'man',\n woman: 'woman',\n preferNotSay: 'prefer_not_say',\n nonBinary: 'nonbinary'\n});\n\nexport const LOCALE = Object.freeze({\n enUS: 'en-US',\n frFR: 'fr-FR',\n deDE: 'de-DE',\n esES: 'es-ES',\n ptBR: 'pt-BR',\n ruRU: 'ru-RU',\n itIT: 'it-IT',\n jaJP: 'ja-JP',\n es419: 'es-419',\n koKR: 'ko-KR',\n nlNL: 'nl-NL',\n zhTW: 'zh-TW',\n ptPT: 'pt-PT',\n zhCN: 'zh-CN'\n});\n\nexport default {\n YOUNGEST_AGE_ON_PLATFORM,\n YOUNGEST_AGE_FOR_HEALTH_AND_PROMO,\n GENDER,\n LOCALE\n};\n","import { trackV2 } from 'utils/analytics';\n\nconst LANDING_PAGE = 'landing_page';\nconst PRIVATE_ACTIVITY = 'private_activity';\nconst MOBILE_REGISTRATION_PAGE = 'mobile_registration';\nconst REGISTRATION_PAGE = 'registration';\n\nconst pageAttrForAnalytics = (page) => {\n switch (page) {\n case LANDING_PAGE:\n return 'home';\n case PRIVATE_ACTIVITY:\n return 'referral';\n case MOBILE_REGISTRATION_PAGE:\n return 'register_mobile';\n case REGISTRATION_PAGE:\n return 'register';\n default:\n return '';\n }\n};\n\nconst track = (attrs) => {\n trackV2({\n category: 'onboarding',\n ...attrs,\n properties: {\n ...attrs.properties\n }\n });\n};\n\nexport {\n LANDING_PAGE,\n PRIVATE_ACTIVITY,\n MOBILE_REGISTRATION_PAGE,\n REGISTRATION_PAGE,\n pageAttrForAnalytics,\n track\n};\n"],"names":["SIGN_UP","children","className","options","styles","variant","type","FacebookButton","onClick","I18nPrefix","ButtonWrapper","I18n","defaultProps","GoogleButton","AccountAuthEmailButton","APPLE","EMAIL","FACEBOOK","GOOGLE","elemAttrForAnalytics","option","state","useEffect","injectAppleScript","signin","window","AppleID","stravaInit","auth","init","clientId","scope","redirectURI","signIn","AppleButton","AccountSignupForm","authorizationUrls","config","locale","page","flashMessage","useState","openModal","setOpenModal","setOption","appleSignin","useApple","appleState","LANDING_PAGE","track","pageAttrForAnalytics","action","handleOnClick","clickedOption","element","MOBILE_REGISTRATION_PAGE","location","href","orDivider","clsx","isEmpty","StravaAlert","severity","appleEnabled","DisclaimerText","showLoginOption","PRIVATE_ACTIVITY","SignupAgeGateModal","open","onDismissCallback","onSuccessCallback","legalTerms","terms_path","legalPrivacy","privacy_path","noWrap","content","MIN_YEARS_BEFORE_TODAY","I18N_MONTHS","prefix","map","m","DropdownDatePicker","dateMax","dateSelected","dateChangeCallback","erroredControls","required","disabled","focusTarget","enableDefaultFocus","correctedDateMax","isNil","dateYearsAgo","YOUNGEST_AGE_ON_PLATFORM","getDate","day","setDay","getMonth","month","setMonth","getFullYear","year","setYear","yearMax","monthMax","daySelectDefault","monthSelectDefault","isMobile","yearSelectDefault","intArray","min","max","Array","from","length","_","i","numDaysInMonth","y","Date","blankOption","label","value","dayOptions","forEach","d","push","toString","monthOptions","yearOptions","reverse","defaultFocus","monthSelector","StravaDropdownSelect","key","name","find","o","onChange","newMonth","newDay","placeholder","ariaLabel","hasError","includes","isFocused","daySelector","yearSelector","newYear","classNames","join","buildSelectors","navigator","userLanguage","language","dob","setDob","setErroredControls","errorMessage","setErrorMessage","copyCantMakeAccount","properties","source","isCompleteDate","result","prev","dateWithoutTime","date","toDateString","isAllowedAge","inputDate","today","minDate","remove","arr","splice","Modal","isOpen","onDismiss","hasClose","id","Tooltip","position","NavigationHelpNormalXsmall","Button","dob_complete","dob_allowed","createNetworkingClient","post","age_gate_year","age_gate_month","age_gate_day","then","response","status","catch","props","ref","useRef","current","focus","controlColor","provided","colors","borderColor","controlBoxShadow","boxShadow","customStyles","indicatorSeparator","display","dropdownIndicator","padding","valueContainer","height","fontSize","color","control","classNamePrefix","isDisabled","isSearchable","theme","primary25","primary","danger","YOUNGEST_AGE_FOR_HEALTH_AND_PROMO","GENDER","Object","freeze","man","woman","preferNotSay","nonBinary","LOCALE","enUS","frFR","deDE","esES","ptBR","ruRU","itIT","jaJP","es419","koKR","nlNL","zhTW","ptPT","zhCN","REGISTRATION_PAGE","attrs","trackV2","category"],"sourceRoot":""}