{"version":3,"file":"js/71082-03affcbee6719fa22b56.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","ButtonWrapper","I18n","I18nPrefix","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","I18N_MONTHS","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","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":""}