{"version":3,"file":"js/13332-f8eff1c7f26afd67660b.js","mappings":"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","sources":["webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/icons/dist/ActionsCancelNormalXsmall.js","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/clsx/clsx.ts","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Button/styles.module.scss?d091","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Button/Button.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Modal/Modal.module.scss?1805","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Modal/Modal.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Button/LinkButton.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/AccountAuthButton/AccountAuthButton.module.scss?771e","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/AccountAuthButton/AccountAuthButton.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/OrDivider/OrDivider.module.scss?37b1","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/OrDivider/OrDivider.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/lodash-es/isNil.js","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Spinner/Spinner.module.scss?04df","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Spinner/Spinner.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/icons/dist/ActionsCancelCircleHighlightedMedium.js","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/icons/dist/ActionsCheckCircleOnMedium.js","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/icons/dist/NavigationWarningHighlightedMedium.js","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/icons/dist/NavigationInformationNormalMedium.js","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/icons/dist/ActionsCancelNormalSmall.js","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/react-hooks/src/use-interval/useInterval.hook.js","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/VisuallyHidden/VisuallyHidden.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Alert/Alert.module.scss?0112","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Alert/Alert.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/react-hooks/src/use-queue/useQueue.hook.js","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/constants/src/appConstants.js","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/node_modules/@strava/utils/src/utils.ts","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Alert/AlertProvider/AlertContext.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Alert/AlertProvider/AlertContainer.module.scss?191d","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Alert/AlertProvider/AlertContainer.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/constants.ts","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Input/Input.module.scss?39a2","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Input/Input.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/icons/dist/ActionsVisibleDisabledNormalSmall.js","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/icons/dist/ActionsVisibleNormalSmall.js","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Input/PasswordInput.module.scss?488e","webpack://StravaModern/./node_modules/@strava/authentication-ui/node_modules/@strava/ui/Input/PasswordInput.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/RegistrationInput/RegistrationInput.module.scss?70f3","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/RegistrationInput/RegistrationInput.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/EmailRegistrationForm/EmailRegistrationForm.module.scss?ddf9","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/EmailRegistrationForm/EmailRegistrationForm.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/utils.ts","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/EmailRegistrationForm/email-registration-api.ts","webpack://StravaModern/../src/Element.tsx","webpack://StravaModern/../src/Filter.ts","webpack://StravaModern/../src/constants.ts","webpack://StravaModern/../src/StyleFilter.ts","webpack://StravaModern/../src/Parser.ts","webpack://StravaModern/../src/Interweave.tsx","webpack://StravaModern/../src/Markup.tsx","webpack://StravaModern/../src/Matcher.ts","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/DisclaimerText/DisclaimerText.module.scss?86ce","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/DisclaimerText/DisclaimerText.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/SignUpModal/SignUpModal.module.scss?c847","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/SignUpModal/SignUpModal.tsx","webpack://StravaModern/./node_modules/@strava/authentication-ui/src/SignUpModal/SignUpModalContext/SignUpModalContext.tsx","webpack://StravaModern/./node_modules/@strava/icons/dist/AchievementsTrophyNormalSmall.js","webpack://StravaModern/./node_modules/@strava/icons/dist/ActionsCommentNormalSmall.js","webpack://StravaModern/./node_modules/@strava/icons/dist/ActionsKudoNormalSmall.js","webpack://StravaModern/./node_modules/@strava/icons/dist/ActionsLockClosedNormalXsmall.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/react-hooks/src/use-safe-state/useSafeState.hook.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/icons/dist/NavigationProfileHighlightedMedium.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/icons/dist/BadgesMulticolorSuperuserSmall.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/icons/dist/BadgesMulticolorSummitSmall.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/icons/dist/BadgesMulticolorProSmall.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/icons/dist/BadgesMulticolorVerifiedSmall.js","webpack://StravaModern/./node_modules/@strava/ui/Avatar/Avatar.module.scss?3ebc","webpack://StravaModern/./node_modules/@strava/ui/Avatar/Avatar.tsx","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/now.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_trimmedEndIndex.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_baseTrim.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/isSymbol.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/toNumber.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/debounce.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/throttle.js","webpack://StravaModern/./node_modules/@strava/ui/ElevationChart/area.module.scss?1347","webpack://StravaModern/./node_modules/@strava/ui/ElevationChart/Area.js","webpack://StravaModern/./node_modules/@strava/ui/ElevationChart/axis.module.scss?8da9","webpack://StravaModern/./node_modules/@strava/ui/ElevationChart/Axis.js","webpack://StravaModern/./node_modules/@strava/ui/ElevationChart/Tooltip/styles.module.scss?cba6","webpack://StravaModern/./node_modules/@strava/ui/ElevationChart/Tooltip/index.js","webpack://StravaModern/./node_modules/@strava/ui/ElevationChart/styles.module.scss?3232","webpack://StravaModern/./node_modules/@strava/ui/ElevationChart/index.js","webpack://StravaModern/./node_modules/@strava/ui/Stat/Stat.module.scss?3051","webpack://StravaModern/./node_modules/@strava/ui/Stat/Stat.tsx","webpack://StravaModern/./node_modules/@strava/ui/Stats/styles.module.scss?4754","webpack://StravaModern/./node_modules/@strava/ui/Stats/index.js","webpack://StravaModern/./node_modules/email-validator/index.js","webpack://StravaModern/./node_modules/react-google-recaptcha/lib/esm/recaptcha.js","webpack://StravaModern/./node_modules/react-async-script/lib/esm/async-script-loader.js","webpack://StravaModern/./node_modules/react-google-recaptcha/lib/esm/recaptcha-wrapper.js","webpack://StravaModern/./node_modules/react-google-recaptcha/lib/esm/index.js"],"sourcesContent":["import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsCancelNormalXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsCancelNormalXsmall.defaultProps = {\n color: \"currentColor\",\n size: 16,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsCancelNormalXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsCancelNormalXsmall;\n","type Value = string | number | boolean | undefined | null;\ntype MixObject = {\n [key: string]: boolean | Mix | undefined | null;\n};\ntype MixArray = Array;\ntype Mix = Value | MixObject | MixArray;\n\nfunction toVal(mix: Mix): string {\n let k,\n y,\n str = '';\n\n if (typeof mix === 'string' || typeof mix === 'number') {\n str += mix;\n } else if (typeof mix === 'object') {\n if (Array.isArray(mix)) {\n for (k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((y = toVal(mix[k]))) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (k in mix) {\n if (!mix || mix[k]) {\n str && (str += ' ');\n str += k;\n }\n }\n }\n }\n\n return str;\n}\n\nexport function clsx(..._args: Mix[]): string {\n let i = 0,\n tmp,\n x,\n str = '';\n\n while (i < arguments.length) {\n if ((tmp = arguments[i++])) {\n if ((x = toVal(tmp))) {\n str && (str += ' ');\n str += x;\n }\n }\n }\n return str;\n}\n\nexport default clsx;\n","// extracted by mini-css-extract-plugin\nexport default {\"btn\":\"Button--btn--lX4Ls\",\"default\":\"Button--default--ER8dt\",\"primary\":\"Button--primary--DWV0L\",\"primaryOutline\":\"Button--primaryOutline--LGvNu\",\"secondary\":\"Button--secondary--pQIfR\",\"icon\":\"Button--icon--uoTwf\",\"text\":\"Button--text--PfSkJ\"};","import React from 'react';\nimport clsx from 'clsx';\n\nimport styles from './styles.module.scss';\n\nexport interface ButtonProps extends React.ComponentPropsWithoutRef<'button'> {\n children: React.ReactNode;\n variant?:\n | 'default'\n | 'primary'\n | 'primaryOutline'\n | 'secondary'\n | 'icon'\n | 'text';\n className?: string;\n}\n\nconst Button = React.forwardRef(\n ({ children, className, variant = 'default', ...props }, ref) => (\n \n {children}\n \n )\n);\n\nexport default Button;\n","// extracted by mini-css-extract-plugin\nexport default {\"overlay\":\"Modal--overlay--GkM4h\",\"dialog\":\"Modal--dialog--2tiSj\",\"closeButton\":\"Modal--closeButton--gpZuz\",\"title\":\"Modal--title--y0Ij1\",\"heroImage\":\"Modal--heroImage--OpAwK\",\"body\":\"Modal--body--Nc649\",\"actions\":\"Modal--actions--q4RLx\"};","import React from 'react';\nimport {\n DialogOverlay,\n DialogOverlayProps,\n DialogContent,\n DialogContentProps\n} from '@reach/dialog';\nimport ActionsCancelNormalXsmall from '@strava/icons/ActionsCancelNormalXsmall';\nimport clsx from '../clsx';\nimport { color as colors } from '@strava/ui-tokens/js';\nimport Button from '../Button/Button';\n\nimport styles from './Modal.module.scss';\nimport './ReachUI.css';\n\n//\n// ModalOverlay\n//\n// Reach UI docs: https://reach.tech/dialog/#dialogoverlay\n// --------------------\n\nexport interface ModalOverlayProps\n extends DialogOverlayProps,\n React.ComponentPropsWithoutRef<'div'> {\n className?: string;\n}\n\nexport function ModalOverlay({\n className,\n children,\n ...otherProps\n}: ModalOverlayProps) {\n return (\n \n {children}\n \n );\n}\n\n//\n// ModalContent\n//\n// Reach UI docs: https://reach.tech/dialog/#dialogcontent\n// --------------------\n\nexport interface ModalContentProps\n extends DialogContentProps,\n React.ComponentPropsWithoutRef<'div'> {\n children: React.ReactNode;\n className?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n}\n\nexport function ModalContent({\n className,\n children,\n ...otherProps\n}: ModalContentProps) {\n return (\n \n {children}\n \n );\n}\n\n//\n// ModalTitle\n// --------------------\n\nexport interface ModalTitleProps extends React.ComponentPropsWithoutRef<'div'> {\n children: React.ReactNode;\n className?: string;\n}\n\nexport function ModalTitle({\n className,\n children,\n ...otherProps\n}: ModalTitleProps) {\n return (\n

\n {children}\n

\n );\n}\n\n//\n// ModalActions\n// --------------------\n\nexport interface ModalActionsProps\n extends React.ComponentPropsWithoutRef<'div'> {\n children: React.ReactNode;\n className?: string;\n}\n\nexport function ModalActions({\n className,\n children,\n ...otherProps\n}: ModalActionsProps) {\n return (\n
\n {children}\n
\n );\n}\n\n//\n// ModalHeroImage\n// --------------------\n\nexport interface ModalHeroImageProps\n extends React.ComponentPropsWithoutRef<'img'> {\n children: React.ReactNode;\n className?: string;\n}\n\nexport function ModalHeroImage({\n className,\n src,\n alt,\n ...otherProps\n}: ModalHeroImageProps) {\n return (\n \n );\n}\n\n//\n// ModalBody\n// --------------------\n\nexport interface ModalBodyProps extends React.ComponentPropsWithoutRef<'div'> {\n children: React.ReactNode;\n className?: string;\n}\n\nexport function ModalBody({ className, ...otherProps }: ModalBodyProps) {\n return
;\n}\n\n//\n// ModalCloseButton\n// --------------------\n\nexport interface ModalCloseButtonProps\n extends React.ComponentPropsWithoutRef<'button'> {\n className?: string;\n color?: string;\n}\n\nexport function ModalCloseButton({\n className,\n color,\n ...otherProps\n}: ModalCloseButtonProps) {\n return (\n \n );\n}\n\n//\n// Modal\n// --------------------\n\nexport interface ModalProps extends React.ComponentPropsWithoutRef<'div'> {\n className?: string;\n isOpen?: boolean;\n onDismiss?: () => void;\n hasClose?: boolean;\n children: React.ReactNode;\n initialFocusRef?: React.RefObject;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n}\n\nfunction Modal({\n className,\n isOpen = false,\n onDismiss,\n hasClose,\n children,\n initialFocusRef,\n ...otherProps\n}: ModalProps) {\n return (\n \n \n {hasClose && (\n \n )}\n {children}\n \n \n );\n}\n\n// Adding support to use the compound component pattern and have backwards\n// compatibility with the existing pattern. To learn more read,\n// https://www.smashingmagazine.com/2021/08/compound-components-react/\nModal.Overlay = ModalOverlay;\nModal.Content = ModalContent;\nModal.Title = ModalTitle;\nModal.Actions = ModalActions;\nModal.HeroImage = ModalHeroImage;\nModal.Body = ModalBody;\nModal.CloseButton = ModalCloseButton;\n\nexport default Modal;\n","import clsx from 'clsx';\nimport React, { ComponentPropsWithoutRef, forwardRef } from 'react';\n\nimport styles from './styles.module.scss';\nimport { ButtonProps } from './Button';\n\nexport type LinkButtonProps = ButtonProps & ComponentPropsWithoutRef<'a'>;\n\nconst LinkButton = forwardRef(\n ({ href, children, className, variant = 'default', ...otherProps }, ref) => {\n return (\n \n {children}\n \n );\n }\n);\n\nexport default LinkButton;\n","// extracted by mini-css-extract-plugin\nexport default {\"authButton\":\"AccountAuthButton--authButton--yFnD+\",\"placeholder\":\"AccountAuthButton--placeholder--JAgxq\",\"facebookBlue\":\"AccountAuthButton--facebookBlue--eWNdO\"};","import React, { ReactNode } from 'react';\nimport clsx from '@strava/ui/clsx';\nimport Button from '@strava/ui/Button';\nimport styles from './AccountAuthButton.module.scss';\n\nconst AppleLogo = React.lazy(() => import('@strava/icons/LogosAppleSmall'));\nconst FacebookLogo = React.lazy(\n () => import('@strava/icons/LogosFacebookSmall')\n);\nconst GoogleLogo = React.lazy(() => import('@strava/icons/LogosGoogleSmall'));\nconst EmailLogo = React.lazy(\n () => import('@strava/icons/ActionsEmailNormalSmall')\n);\n\nexport type AuthButtonVariantTypes =\n | 'apple'\n | 'email'\n | 'facebook'\n | 'facebook-blue' // ironically corresponds to the lighter version of the icon\n | 'google';\n\ntype AccountAuthButtonProps = {\n children: ReactNode;\n className?: string;\n variant?: AuthButtonVariantTypes;\n onClick?: () => void;\n};\n\nconst AccountAuthButton = ({\n children,\n onClick,\n variant,\n className,\n ...options\n}: AccountAuthButtonProps) => {\n return (\n \n }>\n {variant === 'apple' && }\n {variant === 'facebook' && }\n {variant === 'facebook-blue' && }\n {variant === 'google' && }\n {variant === 'email' && }\n \n {children}\n \n );\n};\n\nexport default AccountAuthButton;\n","// extracted by mini-css-extract-plugin\nexport default {\"orDivider\":\"OrDivider--orDivider--X6SS0\",\"or\":\"OrDivider--or--rdcMJ\",\"light\":\"OrDivider--light--BPhFE\",\"line\":\"OrDivider--line--LX6dD\"};","import React from 'react';\nimport clsx from '@strava/ui/clsx';\n\nimport styles from './OrDivider.module.scss';\nimport { ThemeTypes } from '..';\n\ninterface OrDividerProps {\n text: string;\n theme?: ThemeTypes;\n className?: string;\n}\n\nexport const OrDivider = ({\n text,\n theme = 'dark',\n className\n}: OrDividerProps) => {\n return (\n
\n
\n {text}\n
\n
\n );\n};\n\nexport default OrDivider;\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nexport default isNil;\n","// extracted by mini-css-extract-plugin\nexport default {\"spinner\":\"Spinner--spinner--OPlEZ\",\"graphic\":\"Spinner--graphic--FY9vz\",\"spin\":\"Spinner--spin--AJhwi\"};","import React from 'react';\nimport clsx from '../clsx';\n\nimport styles from './Spinner.module.scss';\n\nexport type SpinnerProps = {\n color?: 'default' | 'white';\n size?: number;\n};\n\nconst Spinner = ({ color = 'default', size = 20 }: SpinnerProps) => (\n \n \n \n);\n\nexport default Spinner;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsCancelCircleHighlightedMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsCancelCircleHighlightedMedium.defaultProps = {\n color: \"currentColor\",\n size: 32,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsCancelCircleHighlightedMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsCancelCircleHighlightedMedium;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsCheckCircleOnMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsCheckCircleOnMedium.defaultProps = {\n color: \"currentColor\",\n size: 32,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsCheckCircleOnMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsCheckCircleOnMedium;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgNavigationWarningHighlightedMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgNavigationWarningHighlightedMedium.defaultProps = {\n color: \"currentColor\",\n size: 32,\n title: undefined,\n titleId: undefined,\n};\nSvgNavigationWarningHighlightedMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgNavigationWarningHighlightedMedium;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgNavigationInformationNormalMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgNavigationInformationNormalMedium.defaultProps = {\n color: \"currentColor\",\n size: 32,\n title: undefined,\n titleId: undefined,\n};\nSvgNavigationInformationNormalMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgNavigationInformationNormalMedium;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsCancelNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsCancelNormalSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsCancelNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsCancelNormalSmall;\n","import { useRef, useEffect } from 'react';\n\n/**\n * Declarative setInterval React hook.\n *\n * `useInterval` uses the same API as setInterval, but the arguments of this hook is \"dynamic\".\n * Set your `callback` function as the first argument and the `delay` as the second argument.\n * When passing `null` or `undefined` to the `delay` arg then it will stop/pause the interval.\n *\n * For implementation details explanation, why to use useInterval hook, and an example see Dan Abramov's blog post\n * 👀: https://overreacted.io/making-setinterval-declarative-with-react-hooks/\n * */\nexport const useInterval = (callback, delay) => {\n const savedCallback = useRef();\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n // If no delay then pause/stop the interval.\n // Delay of 0 is valid delay.\n if ((!delay && delay !== 0) || delay < 0) {\n return;\n }\n\n const id = setInterval(() => savedCallback.current(), delay);\n // eslint-disable-next-line consistent-return\n return () => clearInterval(id);\n }, [delay]);\n};\n\nexport default useInterval;\n","import React, { forwardRef } from 'react';\n\ntype VisuallyHiddenProps = React.ComponentPropsWithoutRef<'span'>;\n\n// visually hidden styling comes from https://www.a11yproject.com/posts/how-to-hide-content/\nconst VisuallyHidden = forwardRef(\n ({ style, ...props }, ref) => {\n return (\n \n );\n }\n);\n\nexport default VisuallyHidden;\n","// extracted by mini-css-extract-plugin\nexport default {\"alert\":\"Alert--alert--iOdtn\",\"alertInner\":\"Alert--alertInner--Mjc7q\",\"hasError\":\"Alert--hasError--1Ma8H\",\"buttonError\":\"Alert--buttonError--Ff1z0\",\"hasWarning\":\"Alert--hasWarning--geWBH\",\"buttonWarning\":\"Alert--buttonWarning--2sINi\",\"hasSuccess\":\"Alert--hasSuccess--N2CRK\",\"buttonSuccess\":\"Alert--buttonSuccess--AYYRS\",\"hasInfo\":\"Alert--hasInfo--dEbnt\",\"buttonInfo\":\"Alert--buttonInfo--u44ZF\",\"alertContent\":\"Alert--alertContent--cUEzn\",\"alignLeft\":\"Alert--alignLeft--DaObf\",\"alignCenter\":\"Alert--alignCenter--MGnUV\",\"alignRight\":\"Alert--alignRight--YXRfR\",\"indicatorIcon\":\"Alert--indicatorIcon--lO0U4\",\"closeButtonContainer\":\"Alert--closeButtonContainer--KhDOl\",\"button\":\"Alert--button--WGSkY\",\"autoDismissBar\":\"Alert--autoDismissBar--qlBCw\",\"countdown\":\"Alert--countdown--dEv3D\",\"fadeIn\":\"Alert--fadeIn--irfCa\",\"fadeOut\":\"Alert--fadeOut--Eh8MR\",\"enterFadeOut\":\"Alert--enterFadeOut--NGuVy\",\"newKudo\":\"Alert--newKudo--K8pWr\"};","import React, { ComponentPropsWithoutRef, ReactNode, useState } from 'react';\n// import ReachAlert from '@reach/alert';\nimport {\n ActionsCancelCircleHighlightedMedium as ErrorIcon,\n ActionsCheckCircleOnMedium as SuccessIcon,\n NavigationWarningHighlightedMedium as WarningIcon,\n NavigationInformationNormalMedium as InfoIcon,\n ActionsCancelNormalSmall as CancelIcon\n} from '@strava/icons';\nimport { useInterval } from '@strava/react-hooks';\nimport { isTest } from '@strava/utils';\nimport clsx from '../clsx';\nimport VisuallyHidden from '../VisuallyHidden';\nimport styles from './Alert.module.scss';\n\nexport const AlertStatus = {\n ERROR: 'error',\n SUCCESS: 'success',\n WARNING: 'warning',\n INFO: 'info'\n} as const;\n\nexport type AlertStatusType = (typeof AlertStatus)[keyof typeof AlertStatus];\n\nexport type AlertStyleType =\n | 'hasError'\n | 'hasSuccess'\n | 'hasWarning'\n | 'hasInfo';\nexport type AlertButtonStyleType =\n | 'buttonError'\n | 'buttonSuccess'\n | 'buttonWarning'\n | 'buttonInfo';\n\nconst ALERT_DELAY = 8000;\n\nconst getAlertDetails = ({\n type,\n iconSize\n}: {\n type: AlertStatusType;\n iconSize: number;\n}): {\n indicatorIcon: ReactNode;\n messageType: AlertStatusType;\n alertStyle: AlertStyleType;\n buttonStyle: AlertButtonStyleType;\n} =>\n ({\n [AlertStatus.ERROR]: {\n indicatorIcon: (\n \n ),\n messageType: AlertStatus.ERROR,\n alertStyle: 'hasError' as const,\n buttonStyle: 'buttonError' as const\n },\n [AlertStatus.SUCCESS]: {\n indicatorIcon: (\n \n ),\n messageType: AlertStatus.SUCCESS,\n alertStyle: 'hasSuccess' as const,\n buttonStyle: 'buttonSuccess' as const\n },\n [AlertStatus.WARNING]: {\n indicatorIcon: (\n \n ),\n messageType: AlertStatus.WARNING,\n alertStyle: 'hasWarning' as const,\n buttonStyle: 'buttonWarning' as const\n },\n [AlertStatus.INFO]: {\n indicatorIcon: (\n \n ),\n messageType: AlertStatus.INFO,\n alertStyle: 'hasInfo' as const,\n buttonStyle: 'buttonInfo' as const\n }\n }[type]);\n\nconst fadeStyles = {\n enter: isTest() ? '' : 'fadeIn',\n exit: isTest() ? '' : 'fadeOut'\n};\n\nexport interface AlertProps extends ComponentPropsWithoutRef<'div'> {\n children: ReactNode;\n alertType?: AlertStatusType;\n autoDismiss?: boolean;\n autoDismissDelay?: number;\n className?: string;\n contentPosition?: 'left' | 'center' | 'right';\n hideCloseButton?: boolean;\n hideIcon?: boolean;\n iconSize?: number;\n onClose?: () => void;\n}\n\nexport const Alert = ({\n children,\n className,\n alertType = AlertStatus.ERROR,\n autoDismiss = false,\n autoDismissDelay = ALERT_DELAY,\n contentPosition = 'left',\n hideCloseButton = false,\n hideIcon = true,\n iconSize = 32,\n onClose = () => {},\n ...options\n}: AlertProps) => {\n const { indicatorIcon, messageType, alertStyle, buttonStyle } =\n getAlertDetails({ type: alertType, iconSize });\n const [fadeStyle, setFadeStyle] = useState(fadeStyles.enter);\n\n const handleOnClose = async () => {\n setFadeStyle(fadeStyles.exit);\n // eslint-disable-next-line no-unused-expressions\n !isTest() && (await new Promise((resolve) => setTimeout(resolve, 0)));\n onClose();\n };\n\n useInterval(\n () => {\n handleOnClose();\n },\n autoDismiss ? autoDismissDelay : null\n );\n\n return (\n \n
\n {/* Icon */}\n {!hideIcon && (\n
{indicatorIcon}
\n )}\n\n {/* Content */}\n \n {messageType}: \n
{children}
\n
\n\n {/* Close Button */}\n {!hideCloseButton && (\n
\n \n \n \n
\n )}\n
\n\n {/* Auto Dismiss Progress */}\n {autoDismiss && (\n \n
\n
\n )}\n
\n );\n};\n\nexport default Alert;\n","import { useState, useCallback } from 'react';\n\nexport const useQueue = ({ initialValues = [] }) => {\n const [queue, setState] = useState(initialValues);\n\n /**\n * Enqueue; Adds item to queue.\n */\n const enqueue = useCallback((...items) => {\n setState((current) => [...current, ...items]);\n }, []);\n\n /**\n * Dequeue; Removes first item in queue.\n */\n const dequeue = useCallback(() => {\n // Immutable solution to remove first element in array.\n setState((current) => current.slice(1));\n }, []);\n\n /**\n * Update function to allow for more granular control of updating the queue.\n * The `update` function accepts a callback fn where the first arg is the\n * current queue state that we can then manipulate. See tests for examples.\n * */\n const updateQueue = useCallback(\n (fn) => setState((current) => fn([...current])),\n []\n );\n\n /**\n * Remove all items from queue.\n */\n const clearQueue = useCallback(() => setState(() => []), []);\n\n /**\n * Returns the first item in the queue.\n */\n const peek = useCallback(() => {\n if (queue.length > 0) {\n return queue[0];\n }\n\n return undefined;\n }, [queue]);\n\n return {\n queue,\n length: queue.length,\n enqueue,\n dequeue,\n updateQueue,\n clearQueue,\n peek\n };\n};\n\nexport default useQueue;\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 deDE: 'de-DE',\n enUS: 'en-US',\n enGB: 'en-GB',\n esES: 'es-ES',\n es419: 'es-419',\n frFR: 'fr-FR',\n itIT: 'it-IT',\n jaJP: 'ja-JP',\n koKR: 'ko-KR',\n nlNL: 'nl-NL',\n ptBR: 'pt-BR',\n ptPT: 'pt-PT',\n ruRU: 'ru-RU',\n zhCN: 'zh-CN',\n zhTW: 'zh-TW'\n});\n\n// If a language has more than one locale, the first in the list is the default\nexport const LANGUAGE_LOCALES = Object.freeze({\n de: [LOCALE.deDE],\n // en is intentionally omitted here since English is the global default\n es: [LOCALE.esES, LOCALE.es419],\n fr: [LOCALE.frFR],\n it: [LOCALE.itIT],\n ja: [LOCALE.jaJP],\n ko: [LOCALE.koKR],\n nl: [LOCALE.nlNL],\n pt: [LOCALE.ptPT, LOCALE.ptBR],\n ru: [LOCALE.ruRU],\n zh: [LOCALE.zhCN, LOCALE.zhTW]\n});\n\nexport const EXPERIMENT_COHORTS = Object.freeze({\n control: 'control',\n variantA: 'variant-a',\n variantB: 'variant-b'\n});\n\nexport const MOBILE_OS = Object.freeze({\n android: 'android',\n iPhone: 'iphone',\n iPad: 'ipad'\n});\n\nexport const SUPPORTED_BROWSERS = Object.freeze({\n chrome: 'chrome',\n firefox: 'firefox',\n safari: 'safari'\n});\n\n// universal link paths from 'apple-app-site-association' file in active\nexport const APPLE_APP_LINK_PATHS = [\n '/dashboard',\n '/activities/*',\n '/athletes/*',\n '/segments/*',\n '/challenges/*',\n '/videos/*',\n '/routes/*',\n '/premium/*',\n '/settings/*',\n '/shop/*',\n '/athlete/*',\n '/clubs/*',\n '/summit/join',\n '/summit/perks',\n '/oauth/mobile/authorize'\n];\n\nexport const ATHLETES_VISIBILITY = Object.freeze({\n optedOut: 'opted_out' // Strava::Athletes::Visibility::OPTED_OUT\n});\n\nexport default {\n YOUNGEST_AGE_ON_PLATFORM,\n YOUNGEST_AGE_FOR_HEALTH_AND_PROMO,\n GENDER,\n LOCALE,\n EXPERIMENT_COHORTS,\n MOBILE_OS,\n SUPPORTED_BROWSERS,\n APPLE_APP_LINK_PATHS,\n ATHLETES_VISIBILITY\n};\n","import {\n MOBILE_OS,\n SUPPORTED_BROWSERS,\n APPLE_APP_LINK_PATHS\n} from '@strava/constants/src/appConstants';\nimport { isString } from 'lodash-es';\nimport camelCase from 'lodash-es/camelCase';\nimport snakeCase from 'lodash-es/snakeCase';\nimport isObject from 'lodash-es/isObject';\nimport { CamelCasedPropertiesDeep, SnakeCasedPropertiesDeep } from 'type-fest';\n\nexport const generateRandomId = () => Math.random().toString(36).substring(2);\n\n// Capitalizes all the words and replaces some characters in the string to create a nicer looking title.\n// eg. 'man from the boondocks' => 'Man From The Boondocks'\nexport const titleize = (sentence: string) => {\n return sentence\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n};\n\nexport const displayName = (\n { firstName = '', lastName = '' },\n options = { forceAnonymize: false, maxLength: 100 }\n) => {\n const { maxLength, forceAnonymize } = options;\n const fullName = `${firstName} ${lastName}`;\n\n if (forceAnonymize || fullName.length > maxLength) {\n if (firstName.length > maxLength - 3) {\n return `${titleize(firstName.substring(0, maxLength - 4))}... ${lastName\n .charAt(0)\n .toUpperCase()}.`;\n }\n return `${titleize(firstName)} ${lastName.charAt(0).toUpperCase()}.`;\n }\n return fullName.trim();\n};\n\n/**\n * Checks to see if device is mobile\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {boolean} - true if the device is mobile\n */\nexport const isMobile = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n // ref - https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#mobile_tablet_or_desktop\n return userAgent.toLowerCase().includes('mobi');\n }\n return false;\n};\n\n/**\n * Determines the OS for mobile devices\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {(string|null)} - one of ['android', 'ipad', 'iphone'] or null for unknown\n */\nexport const getMobileOS = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n if (userAgent.includes('Android')) {\n return MOBILE_OS.android;\n }\n if (userAgent.includes('iPad')) {\n return MOBILE_OS.iPad;\n }\n if (userAgent.includes('iPhone')) {\n return MOBILE_OS.iPhone;\n }\n }\n return null;\n};\n\n/**\n * Determines, in a limited fashion, the browser according to the user agent.\n * NOTE: UAs are notoriously difficult to parse. This is meant as a bare-bones, noncomprehensive parser,\n * based on https://www.whatismybrowser.com/guides/the-latest-user-agent/.\n *\n * The order of conditionals is important, bc some Chrome & Firefox UAs include 'Safari', too.\n * Some Edge UAs may be recognized as Chrome for now, since they can include 'Chrome'. We don't\n * officially support Edge (yet?).\n *\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {(string|null)} - one of ['chrome', 'firefox', 'safari'] or null for unknown/unsupported browser\n */\nexport const getBrowser = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n if (userAgent.includes('Chrome') || userAgent.includes('CriOS')) {\n return SUPPORTED_BROWSERS.chrome;\n }\n if (userAgent.includes('Firefox') || userAgent.includes('FxiOS'))\n return SUPPORTED_BROWSERS.firefox;\n if (userAgent.includes('Safari')) {\n return SUPPORTED_BROWSERS.safari;\n }\n }\n\n return null;\n};\n\n/**\n * Universal links are determined by the paths described in `apple-app-site-association` in active.\n * @param {string} pathname - window.location.pathname or nextjs equivalent\n * @returns {boolean} - whether the pathname string matches\n */\nexport const isUniversalLinkPage = (pathname: string) => {\n if (isString(pathname)) {\n return APPLE_APP_LINK_PATHS.some((path: string) => {\n const pathWithoutAsterisk = path.replace('/*', '');\n return pathname.startsWith(pathWithoutAsterisk);\n });\n }\n return false;\n};\n\n// eg. given,\n// \"urls\": {\n// \"100\": \"https://photo_url_1\",\n// \"1800\": \"https://photo_url_2\"\n// }\n// returns https://photo_url_2\nexport const getPhotoWithMaxDimension = (\n photoUrlHash: Record\n) => {\n if (!isObject(photoUrlHash)) {\n return '';\n }\n const key = Object.keys(photoUrlHash).reduce((a, b) => (a > b ? a : b));\n return photoUrlHash[key];\n};\n\n/**\n * Immutably merges a payload into an item in an array of objects\n * @param {array} array - An array of objects\n * @param {string|number} id - The unique id of the item in the array to update\n * @param {object} payload - the value to merge into the matched item\n * @param {object} options\n * @param {string} [options.idName=id] - the key of the unique identifier\n * @param {bool} [options.upsert=false] - if true, will insert the payload into the array as a new item if no matching item is found\n * @return {array} - A copy of the original array with the matching item updated\n */\nexport function arrayUpdateItemById(\n array: T[],\n id: string | number,\n payload: Partial,\n { idName, upsert }: { idName?: keyof T; upsert?: boolean } = {}\n): T[] {\n let itemFound = false;\n const property = idName || ('id' as keyof T);\n const mappedArray = array.map((item) => {\n itemFound = itemFound || item[property] === id;\n return item[property] === id ? { ...item, ...payload } : item;\n });\n\n return itemFound || !upsert ? mappedArray : ([...array, payload] as T[]);\n}\n\n/**\n * Immutably removes an item from an array by index\n * @param {array} array\n * @param {number} index - the index of the item to remove\n * @return {array} - A copy of the original array with the matching item removed\n */\nexport function arrayRemoveByIndex(array: T[], index: number): T[] {\n return index === -1\n ? array\n : [...array.slice(0, index), ...array.slice(index + 1)];\n}\n\n/**\n * Immutably removes an item from an array of objects\n * @param {array} array - An array of objects\n * @param {string|number} id - The unique id of the item in the array to remove\n * @param {string} [idName=id] - the key of the unique identifier\n * @return {array} - A copy of the original array with the matching item removed\n */\n\nexport function arrayRemoveItemById(\n array: T[],\n propertyValue: string | number,\n idName = 'id'\n): T[] {\n const index = array.findIndex(\n (item) => item[idName as keyof T] === propertyValue\n );\n return arrayRemoveByIndex(array, index);\n}\n\nexport const capitalizeFirstLetter = (string: string) =>\n `${string.charAt(0).toUpperCase()}${string.slice(1)}`;\n\n/**\n * @description Converts Object keys from string of any case to camelCase.\n * Handles nested objects and arrays.\n * */\nexport function convertKeysToCamel(object: T): CamelCasedPropertiesDeep {\n if (Array.isArray(object)) {\n return (object as unknown[]).map((item) =>\n convertKeysToCamel(item)\n ) as CamelCasedPropertiesDeep;\n }\n\n if (isObject(object)) {\n return Object.keys(object).reduce((o, k) => {\n const key = camelCase(k);\n const value = object[\n k as keyof typeof object\n ] as CamelCasedPropertiesDeep;\n\n if (isObject(value)) {\n return {\n ...o,\n [key]: convertKeysToCamel(value)\n };\n }\n\n if (Array.isArray(value)) {\n return {\n ...o,\n [key]: (value as unknown[]).map((item) => convertKeysToCamel(item))\n };\n }\n\n return {\n ...o,\n [key]: value\n };\n }, {} as CamelCasedPropertiesDeep);\n }\n\n return object as CamelCasedPropertiesDeep;\n}\n\n/**\n * @description Converts Object keys from string of any case to snakeCase.\n * Handles nested objects and arrays.\n * */\nexport function convertKeysToSnake(object: T): SnakeCasedPropertiesDeep {\n if (Array.isArray(object)) {\n return (object as unknown[]).map((item) =>\n convertKeysToSnake(item)\n ) as SnakeCasedPropertiesDeep;\n }\n\n if (isObject(object)) {\n return Object.keys(object).reduce((o, k) => {\n const key = snakeCase(k);\n const value = object[\n k as keyof typeof object\n ] as SnakeCasedPropertiesDeep;\n\n if (isObject(value)) {\n return {\n ...o,\n [key]: convertKeysToSnake(value)\n };\n }\n\n if (Array.isArray(value)) {\n return {\n ...o,\n [key]: (value as unknown[]).map((item) => convertKeysToSnake(item))\n };\n }\n\n return {\n ...o,\n [key]: value\n };\n }, {} as SnakeCasedPropertiesDeep);\n }\n\n return object as SnakeCasedPropertiesDeep;\n}\n\n/**\n * Checks to see if localStorage is available\n *\n * @return {boolean} - true if localStorage can be used\n */\nexport const isLocalStorageAvailable = () => {\n const test = 'test';\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch (e) {\n return false;\n }\n};\n\n/**\n * Appends querystring params to a URL\n *\n * @param {string} originalUrl - The original URL to append params to\n * @param {object} params - An object of key value parameters to append to URL\n * @return {string} - URL with params appended\n */\nexport const addParamsToURL = (originalUrl: string, params: object) => {\n const url = new URL(originalUrl);\n\n Object.entries(params).forEach(([key, value]) => {\n url.searchParams.append(key, value);\n });\n\n return url.toString();\n};\n\n/**\n * Some of our logged-out pages have a full-screen image background.\n * This util helps with setting the background image on the `` element, and\n * just requires passing in the image to be used.\n * @param {string} background\n */\nexport const setFullScreenBackgroundImage = (background: string) => {\n // apply background image directly to ``\n const body = document.querySelector('body');\n if (body) {\n body.style.setProperty('background-image', `url(${background})`);\n body.style.setProperty('background-size', 'cover');\n body.style.setProperty('background-position', 'center');\n }\n};\n\n/**\n * Uses the host to determine if a page is being loaded in staging or localhost.\n *\n * This util function is helpful for apps that run on nextJS which has node process\n * defined as production in both staging and production.\n *\n * @param host - host name\n * @returns {boolean} - true if app is running in staging or local\n */\nexport const isStagingOrLocal = (host: string) =>\n ['staging', 'localhost'].some((_host) => host.includes(_host));\n\n/**\n * Adds an id property to each object in an array. Uses the object's index as the value for the id\n * @param {array} objects - An array of objects\n * @return {array} - A copy of the original array with id property added to each object\n */\nexport const arrayAddIndexAsId = (objects: Array) =>\n objects.map((object, index) => ({ ...object, id: index }));\n","import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo\n} from 'react';\nimport { useQueue } from '@strava/react-hooks';\nimport { generateRandomId } from '@strava/utils';\nimport { AlertStatusType } from '../Alert';\n\nexport interface AlertConfig {\n alertType: AlertStatusType;\n content: ReactNode;\n containerId?: string;\n id?: string;\n className?: string;\n autoDismiss?: boolean;\n autoDismissDelay?: number;\n contentPosition?: 'left' | 'center' | 'right';\n hideCloseButton?: boolean;\n hideIcon?: boolean;\n iconSize?: number;\n onClose?: () => void;\n}\n\nexport interface AlertState {\n alerts: AlertConfig[];\n showAlert: (config: AlertConfig) => string;\n hideAlert: (id: string) => void;\n clearAlerts: (containerId?: string) => void;\n}\n\nconst AlertContext = createContext(undefined);\nAlertContext.displayName = 'AlertContext';\n\nexport const useAlertContext = () => {\n const context = useContext(AlertContext);\n\n // Fail fast if useAlertContext hook is used outside the Provider.\n if (!context) {\n throw new Error(`useAlertContext must be used within the AlertProvider`);\n }\n\n return context;\n};\n\ninterface AlertProviderProps {\n children: ReactNode;\n}\n\nexport const AlertProvider = ({ children }: AlertProviderProps) => {\n const { queue, updateQueue, clearQueue } = useQueue({\n initialValues: []\n });\n\n /**\n * @description Display an alert.\n *\n * @param {Object} alertConfig\n * @param {'error' | 'warning' | 'info' | 'success'} alertConfig.alertType\n * @param {ReactNode} alertConfig.content - Message to display in the the content of the Alert Component.\n * @param {string} [alertConfig.containerId=\"base\"] - It's used to identify which `AlertContainer` the alert is associated to.\n * @param {string | number} [alertConfig.id] - Optional; by default id is randomly generated. Used to update or close alert.\n * @param {string} [alertConfig.className] - The className passed to Alert component.\n * @param {boolean} [alertConfig.autoDismiss=false] - Determine if alert will auto dismiss/close.\n * @param {number} [alertConfig.autoDismissDelay=8000] - Delay in ms that alert will auto dismiss.\n * @param {'left' | 'center' | 'right'} [alertConfig.contentPosition=\"left\"] - Position to align content inside of alert container.\n * @param {boolean} [alertConfig.hideCloseButton=false] - Hides the close button, alert can only be closed programmatically.\n * @param {boolean} [alertConfig.hideIcon=false] - Display or hide alert icon.\n * @param {number} [alertConfig.iconSize=32] - The Alert's SVG icon's width and height.\n * @param {Function} [alertConfig.onClose] - Callback fn; called when alert closes.\n *\n * @return {string} - Alert ID\n */\n const showAlert = useCallback(\n (alertConfig: AlertConfig) => {\n const id = alertConfig.id ?? generateRandomId();\n const containerId = alertConfig.containerId ?? 'base';\n\n updateQueue((alerts) => {\n const hasAlert =\n alertConfig?.id &&\n alerts.some((alert) => alert.id === alertConfig.id);\n // Check if alert exist in queue.\n // If true then return hasAlerts\n // Else add/append alert to queue.\n if (hasAlert) {\n return alerts;\n }\n\n return [...alerts, { ...alertConfig, id, containerId }];\n });\n\n return `${id}`;\n },\n [updateQueue]\n );\n\n /**\n * @description Hide an alert by id.\n *\n * @param {string} id - Unique id to hide/remove alert.\n *\n * @return {boolean}\n * */\n const hideAlert = useCallback(\n (id) =>\n updateQueue((alerts) =>\n alerts.filter((alert) => {\n if (alert.id === id) {\n // eslint-disable-next-line no-unused-expressions\n alert?.onClose?.();\n return false;\n }\n\n return true;\n })\n ),\n [updateQueue]\n );\n\n /**\n * @description Clears/remove all alerts.\n * If no `containerId` provided then removes ALL alerts. Else if `containerId`\n * provided then clears alerts for specific container when working with multiple containers.\n *\n * @param {string} [containerId] - Optional; Clear alerts for specific container when working with multiple containers.\n *\n * @return {boolean}\n * */\n const clearAlerts = useCallback(\n (containerId) => {\n // If containerId is passed then remove all alerts for specific container\n if (containerId) {\n return updateQueue((alerts) =>\n alerts.filter((alert) => {\n if (alert.containerId === containerId) {\n // eslint-disable-next-line no-unused-expressions\n alert?.onClose?.();\n return false;\n }\n\n return true;\n })\n );\n }\n // Else clear entire queue\n return clearQueue();\n },\n [updateQueue, clearQueue]\n );\n\n const providerState = useMemo(\n () => ({\n alerts: queue,\n showAlert,\n hideAlert,\n clearAlerts\n }),\n [queue, showAlert, hideAlert, clearAlerts]\n );\n\n return (\n \n {children}\n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"alertContainerInfoContainer\":\"AlertProvider--alertContainerInfoContainer--lP1o8\",\"alertContainerInfo\":\"AlertProvider--alertContainerInfo--w-NvX\"};","import React from 'react';\nimport { AlertConfig, useAlertContext } from './AlertContext';\nimport Alert from '../Alert';\nimport styles from './AlertContainer.module.scss';\n\nconst defaultTranslateAlertInfoText = (\n totalAlertsShown: number,\n totalAlerts: number\n) => `Showing ${totalAlertsShown} of ${totalAlerts} alerts`;\n\ninterface AlertContainerProps {\n containerId?: string;\n limit?: number;\n shouldShowAlertInfoText?: boolean;\n translateAlertInfoText?: typeof defaultTranslateAlertInfoText;\n}\n\nexport const AlertContainer = ({\n containerId = 'base',\n limit,\n shouldShowAlertInfoText = true,\n translateAlertInfoText = defaultTranslateAlertInfoText\n}: AlertContainerProps) => {\n const { alerts, hideAlert } = useAlertContext();\n\n const handleOnClose = (id?: string) => {\n if (id) {\n hideAlert(id);\n }\n };\n\n const filterLimit = (_: unknown, index: number) => !limit || index < limit;\n const filterContainer = (alert: AlertConfig) =>\n alert?.containerId === containerId;\n\n const totalAlerts = alerts.filter(filterContainer).length;\n const totalAlertsShown = alerts\n .filter(filterContainer)\n .filter(filterLimit).length;\n\n return (\n <>\n {alerts\n .filter(filterContainer)\n .filter(filterLimit)\n .map(\n ({\n alertType,\n id,\n content,\n containerId: containerIdProp,\n ...rest\n }) => (\n handleOnClose(id)}\n >\n {content}\n \n )\n )}\n {shouldShowAlertInfoText && totalAlerts > totalAlertsShown && (\n \n
\n {translateAlertInfoText(totalAlertsShown, totalAlerts)}\n
\n \n )}\n \n );\n};\n\nexport default AlertContainer;\n","export const APPLE = 'apple';\nexport const EMAIL = 'email';\nexport const FACEBOOK = 'facebook';\nexport const GOOGLE = 'google';\n","// extracted by mini-css-extract-plugin\nexport default {\"input\":\"Input--input--19CTT\"};","import React, { forwardRef } from 'react';\nimport clsx from '@strava/ui/clsx';\nimport styles from './Input.module.scss';\n\ntype InputProps = React.ComponentPropsWithoutRef<'input'>;\n\nexport const Input = forwardRef(\n ({ className, ...props }, ref) => (\n \n )\n);\n\nexport default Input;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsVisibleDisabledNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsVisibleDisabledNormalSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsVisibleDisabledNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsVisibleDisabledNormalSmall;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsVisibleNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsVisibleNormalSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsVisibleNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsVisibleNormalSmall;\n","// extracted by mini-css-extract-plugin\nexport default {\"passwordInput\":\"Input--passwordInput--xTJYp\",\"showPasswordButton\":\"Input--showPasswordButton--9CSLK\"};","import React, { forwardRef, useState } from 'react';\nimport clsx from '@strava/ui/clsx';\nimport ActionsVisibleDisabledNormalSmall from '@strava/icons/ActionsVisibleDisabledNormalSmall';\nimport ActionsVisibleNormalSmall from '@strava/icons/ActionsVisibleNormalSmall';\nimport VisuallyHidden from '../VisuallyHidden';\nimport Input from '.';\n\nimport styles from './PasswordInput.module.scss';\n\nexport type PasswordInputProps = React.ComponentPropsWithoutRef<'input'> & {\n showPasswordText: string; // translated text for accessibility. Should inform users that clicking show password button will display the password on the screen\n hidePasswordText: string;\n};\n\nconst PasswordInput = forwardRef(\n ({ showPasswordText, hidePasswordText, className, ...props }, ref) => {\n const [passwordIsVisible, setPasswordIsVisible] = useState(false);\n\n return (\n
\n \n setPasswordIsVisible((prev) => !prev)}\n className={styles.showPasswordButton}\n type=\"button\"\n role=\"switch\"\n aria-checked={passwordIsVisible}\n title={passwordIsVisible ? hidePasswordText : showPasswordText}\n >\n {passwordIsVisible ? (\n \n ) : (\n \n )}\n \n {passwordIsVisible ? hidePasswordText : showPasswordText}\n \n \n
\n );\n }\n);\n\nexport default PasswordInput;\n","// extracted by mini-css-extract-plugin\nexport default {\"input\":\"RegistrationInput--input--AQh-V\",\"label\":\"RegistrationInput--label--0tXB5\",\"light\":\"RegistrationInput--light--xymPQ\",\"textInput\":\"RegistrationInput--textInput--zLJDS\",\"message\":\"RegistrationInput--message--zQeRu\",\"error\":\"RegistrationInput--error--40No1\"};","import React, { forwardRef } from 'react';\nimport Input, { PasswordInput } from '@strava/ui/Input';\nimport styles from './RegistrationInput.module.scss';\nimport { ThemeTypes } from '@strava/authentication-ui';\nimport clsx from '@strava/ui/clsx';\n\ntype RegistrationInputProps = React.ComponentPropsWithoutRef<'input'> &\n (\n | {\n // type just has to not be 'password' or string for the conditional to work\n type: 'email' | 'text';\n hidePasswordText?: string;\n showPasswordText?: string;\n }\n | {\n type: 'password';\n hidePasswordText: string;\n showPasswordText: string;\n }\n ) & {\n label: string;\n inputMessage?: string | null;\n errorMessage?: string | null;\n errorMessageTestId?: string;\n theme?: ThemeTypes;\n };\n\nexport const RegistrationInput = forwardRef<\n HTMLInputElement,\n RegistrationInputProps\n>(\n (\n {\n label,\n id,\n type,\n inputMessage,\n errorMessage,\n errorMessageTestId,\n hidePasswordText,\n showPasswordText,\n theme = 'dark',\n ...props\n },\n ref\n ) => (\n
\n \n {type === 'password' ? (\n \n ) : (\n \n )}\n {inputMessage && !errorMessage && (\n

{inputMessage}

\n )}\n {errorMessage && (\n
\n {errorMessage}\n
\n )}\n
\n )\n);\n\nexport default RegistrationInput;\n","// extracted by mini-css-extract-plugin\nexport default {\"emailCaption\":\"EmailRegistrationForm--emailCaption--Ccjzm\",\"submitButton\":\"EmailRegistrationForm--submitButton--4ptar\"};","import React, { useState, useRef } from 'react';\nimport Button from '@strava/ui/Button';\nimport * as EmailValidator from 'email-validator';\nimport ReCAPTCHA from 'react-google-recaptcha';\nimport { isNil } from 'lodash-es';\nimport Spinner from '@strava/ui/Spinner';\nimport { AlertStatus, useAlertContext } from '@strava/ui/Alert';\nimport {\n elemAttrForAnalytics,\n EMAIL,\n ThemeTypes\n} from '@strava/authentication-ui';\nimport RegistrationInput from '../RegistrationInput';\nimport {\n submitFormData,\n isAlreadyRegisteredEmail\n} from './email-registration-api';\n\nimport {\n useStravaErrorLogging,\n useStravaTranslations\n} from '@strava/container-context';\n\nimport styles from './EmailRegistrationForm.module.scss';\n\nconst i18nPrefix = 'authentication_ui.email_registration_form';\n\nexport const EMAIL_REGISTRATION_FORM_ALERT_ID = 'email-registration-form-alert';\n\n// these props are passed into the parent component from the active\nexport interface EmailRegistrationFormProps {\n reCaptchaSiteKey: string | null;\n clubId?: number;\n isPremium: boolean;\n challengeId?: number;\n autoJoinChallenge?: boolean;\n honeyPot: string;\n plan?: string;\n formAuthToken?: string;\n}\n\ntype FormInputTypes = {\n email: string;\n password: string;\n honeyPot: string;\n};\n\ntype EmailValidationStateTypes = {\n message: string;\n isExistingEmail: boolean;\n isValidEmail: boolean;\n};\n\nexport type AnalyticsFieldsTypes = {\n action: string;\n element?: string;\n properties?: Record;\n};\n\nexport type AlertConfigTypes = {\n className?: string;\n contentPosition?: 'left' | 'center' | 'right';\n};\n\nconst EmailRegistrationForm = ({\n authorizationUrl,\n reCaptchaSiteKey,\n honeyPot,\n isPremium,\n clubId,\n plan,\n challengeId,\n autoJoinChallenge,\n formAuthToken,\n track,\n className,\n theme = 'dark',\n idPrefix,\n alertConfig\n}: EmailRegistrationFormProps & {\n // these props are passed in from the parent component\n authorizationUrl: string; // this url generally still comes from active\n track: (fields: AnalyticsFieldsTypes) => void;\n className?: string;\n idPrefix: string;\n theme?: ThemeTypes;\n alertConfig?: AlertConfigTypes;\n}) => {\n const [formInput, setFormInput] = useState({\n email: '',\n password: '',\n honeyPot: '' // if this field gets filled out, user is probably a bot\n });\n const [passwordErrorMsg, setPasswordErrMsg] = useState(null);\n const [emailValidationState, setEmailValidationState] =\n useState(null);\n const [isProcessing, setIsProcessing] = useState(false);\n\n const emailInput = useRef(null);\n const passwordInput = useRef(null);\n const recaptchaRef = useRef(null);\n\n const useRecaptcha = !!reCaptchaSiteKey;\n\n const { logError } = useStravaErrorLogging();\n const { t } = useStravaTranslations();\n const { showAlert, clearAlerts } = useAlertContext();\n\n const emailRegFormAlert = (content: React.ReactNode, id: string) => ({\n content,\n alertType: AlertStatus.ERROR,\n containerId: EMAIL_REGISTRATION_FORM_ALERT_ID,\n hideCloseButton: true,\n ...(alertConfig && { ...alertConfig }),\n id // to prevent showing duplicate error messages\n });\n\n const getRecaptchaToken = async () => {\n if (useRecaptcha) {\n return (await recaptchaRef?.current?.executeAsync()) ?? '';\n }\n return '';\n };\n\n const handleEmailFormSubmit = async () => {\n const recaptchaToken = await getRecaptchaToken();\n\n const element = elemAttrForAnalytics(EMAIL);\n const { email, password, honeyPot } = formInput;\n\n const formData = new FormData();\n formData.append('web_registration_form', 'true');\n formData.append('email', email);\n formData.append('password', password);\n formData.append('g-recaptcha-response', recaptchaToken);\n formData.append('checkbox_agreed_to_terms', 'on');\n formData.append(honeyPot, honeyPot);\n formData.append('plan', String(plan));\n formData.append('authenticity_token', String(formAuthToken));\n\n if (isPremium) {\n formData.append('premium', 'true');\n }\n if (!isNil(clubId)) {\n formData.append('club_id', String(clubId));\n }\n if (!isNil(challengeId)) {\n formData.append('challenge_id', String(challengeId));\n }\n if (!isNil(autoJoinChallenge)) {\n formData.append('auto_join_challenge', String(autoJoinChallenge));\n }\n\n try {\n const response = await submitFormData({\n formData,\n url: authorizationUrl,\n logError\n });\n\n if ('error' in response) {\n // join request failed server-side validations,\n // flash message is populated and shown if an error occurred\n showAlert(emailRegFormAlert(response.error, 'submitFormData error'));\n setIsProcessing(false); // let user try again\n } else {\n const { pathType, load } = response;\n track({\n action: 'redirect',\n element,\n properties: {\n path_type: pathType,\n redirect_url: load\n }\n });\n\n // navigate to onboarding flow if no errors were encountered\n window.location.href = load;\n }\n } catch (error) {\n logError(error);\n\n // generic \"something went wrong\" alert\n showAlert(\n emailRegFormAlert(\n t(`${i18nPrefix}.error_message`),\n 'submitFormData catch'\n )\n );\n setIsProcessing(false); // let user try again\n }\n };\n\n /**\n * Validate athlete email -\n * 1 - value should be provided (required)\n * 2 - valid email address should be entered (eg. should have @)\n * 3 - email address should not be already registered on strava\n *\n * @returns {Object} result\n * @returns {boolean} result.isValidEmail - true when the email has passed all validation criteria\n * @returns {string} result.isExistingEmail - true when the email is already registered on strava\n * @returns {string} result.message - string message to display to athlete when an error occurs\n */\n const validateEmail = async () => {\n const { email } = formInput;\n if (emailValidationState) {\n // avoid validating email if there is already an error that is not addressed by the athlete yet\n // this prevents making an unnecessary api call to check if email is already registered (see #isAlreadyRegisteredEmail)\n return emailValidationState;\n } else {\n let isValidEmail = true;\n let isExistingEmail = false;\n let message = null;\n\n if (!(email && email.length > 0)) {\n message = t(`${i18nPrefix}.email_required`);\n isValidEmail = false;\n } else if (!EmailValidator.validate(email)) {\n message = t(`${i18nPrefix}.email_invalid`);\n isValidEmail = false;\n } else {\n try {\n const isUniqueEmail = await isAlreadyRegisteredEmail(email);\n if (!isUniqueEmail) {\n message = t(`${i18nPrefix}.email_taken`);\n isExistingEmail = true;\n }\n } catch (error) {\n logError(error);\n isValidEmail = false;\n\n // generic \"something went wrong\" alert\n showAlert(\n emailRegFormAlert(\n t(`${i18nPrefix}.error_message`),\n 'isAlreadyRegisteredEmail catch'\n )\n );\n }\n }\n setEmailValidationState({ isExistingEmail, isValidEmail, message });\n return { message, isValidEmail, isExistingEmail };\n }\n };\n\n /**\n * Validates athlete password\n * - value should be provided (required)\n * - max length of 40 chars\n * - min length of 8 chars\n *\n * @returns {boolean} result true when the password is valid\n */\n const validatePassword = () => {\n const { password } = formInput;\n\n if (!passwordErrorMsg) {\n // avoid validating email if there is already an error that is not addressed by the athlete yet\n let isValidPassword = true;\n let passwordValidationMsg = null;\n if (!(password && password.length > 0)) {\n passwordValidationMsg = t(`${i18nPrefix}.password_required`);\n isValidPassword = false;\n } else if (password.length > 40) {\n passwordValidationMsg = t(`${i18nPrefix}.password_max_length`);\n isValidPassword = false;\n } else if (password.length < 8) {\n passwordValidationMsg = t(`${i18nPrefix}.password_min_length`);\n isValidPassword = false;\n }\n setPasswordErrMsg(passwordValidationMsg);\n return isValidPassword;\n }\n return false;\n };\n\n const validateForm = async () => {\n return {\n ...(await validateEmail()),\n isValidPassword: validatePassword()\n };\n };\n\n /**\n * Actions to perform when a user hits the \"sign up\" button (account registration using email).\n * - validate user input (email and password)\n * - submit form if input is valid\n * - focus on invalid inputs if input is invalid\n */\n const handleFormSubmission = async (\n event: React.FormEvent\n ) => {\n event.preventDefault();\n setIsProcessing(true); // prevent impatient submit clicks\n\n const { isValidEmail, isValidPassword, isExistingEmail } =\n await validateForm();\n\n track({\n action: 'click',\n element: 'signup',\n properties: {\n is_valid_email: isValidEmail,\n is_valid_password: isValidPassword,\n is_existing_email: isExistingEmail\n }\n });\n\n if (isValidEmail && !isExistingEmail && isValidPassword) {\n handleEmailFormSubmit();\n } else {\n setIsProcessing(false); // let user try again\n\n if (recaptchaRef.current) {\n recaptchaRef.current.reset();\n }\n if (!isValidPassword) {\n passwordInput?.current?.focus();\n }\n // prioritize focus on email input if both password and email inputs are invalid\n if (!isValidEmail || isExistingEmail) {\n emailInput?.current?.focus();\n }\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent) => {\n const { target } = event;\n const { name } = target;\n\n // save honeyPot input as 'honeyPot' instead of whatever the value of honeyPot is\n // (server determines honeyPot value)\n setFormInput((prev) => {\n return { ...prev, [name === honeyPot ? 'honeyPot' : name]: target.value };\n });\n\n // clear input specific errors\n if (name === 'email' && emailValidationState?.message) {\n setEmailValidationState(null);\n } else if (passwordErrorMsg) {\n setPasswordErrMsg(null);\n }\n // clear alerts on all input changes\n clearAlerts(EMAIL_REGISTRATION_FORM_ALERT_ID);\n };\n\n return (\n \n \n\n \n\n {/**\n * Honeypot input is hidden to real users but visible to bots.\n * It should be a value that seems legit to bots but one we don't actually use/care about.\n * If the input is populated, we know it's a bot. */}\n
\n \n \n
\n\n {useRecaptcha && (\n \n )}\n\n \n {isProcessing ? : t(`${i18nPrefix}.sign_up`)}\n \n \n );\n};\n\nexport default EmailRegistrationForm;\n","import { APPLE, EMAIL, FACEBOOK, GOOGLE } from './constants';\n\ntype ElementTypes =\n | typeof APPLE\n | typeof EMAIL\n | typeof FACEBOOK\n | typeof GOOGLE;\n\nexport const elemAttrForAnalytics = (option: ElementTypes) => {\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","import apiClient from '@strava/api/lib/axios-client';\n\ntype SubmitFormDataSuccessResponse = {\n success: boolean;\n pathType: string;\n load: string;\n};\n\ntype SubmitFormDataErrorResponse = {\n error: string;\n};\n\ntype SubmitFormDataResponseType =\n | SubmitFormDataSuccessResponse\n | SubmitFormDataErrorResponse;\n\nexport const submitFormData = async ({\n formData,\n url,\n logError\n}: {\n formData: FormData;\n url: string;\n logError: (s: string | unknown) => void;\n}): Promise => {\n return new Promise((resolve, reject) => {\n apiClient({\n options: {\n headers: { 'Content-Type': 'multipart/form-data' }\n }\n })\n .post(url, formData)\n .then((response: { data: SubmitFormDataResponseType }) => {\n resolve(response.data);\n })\n .catch((error: unknown) => {\n logError(error);\n reject(error);\n });\n });\n};\n\nexport const isAlreadyRegisteredEmail = async (email: string) => {\n return new Promise((resolve, reject) => {\n apiClient()\n .get('/athletes/email_unique', { params: { email } })\n .then(({ data }: { data: boolean }) => {\n resolve(data);\n })\n .catch((error: unknown) => {\n reject(error);\n });\n });\n};\n",null,null,null,null,null,null,null,null,"// extracted by mini-css-extract-plugin\nexport default {\"disclaimerText\":\"DisclaimerText--disclaimerText--oXzH1\"};","import React from 'react';\nimport { Markup } from 'interweave';\nimport { useStravaTranslations } from '@strava/container-context';\nimport clsx from '@strava/ui/clsx/clsx';\n\nimport styles from './DisclaimerText.module.scss';\n\ntype DisclaimerTextProps = {\n className?: string;\n};\n\nconst DisclaimerText = ({ className }: DisclaimerTextProps) => {\n const { t } = useStravaTranslations();\n\n const legalTerms = t(\n 'authentication_ui.disclaimer_text.by_clicking_cta_html',\n { terms_path: '/legal/terms' }\n );\n\n const legalPrivacy = t(\n 'authentication_ui.disclaimer_text.view_privacy_policy_html',\n { privacy_path: '/legal/privacy' }\n );\n\n return (\n

\n {' '}\n \n

\n );\n};\n\nexport default DisclaimerText;\n","// extracted by mini-css-extract-plugin\nexport default {\"signUpModal\":\"SignUpModal--signUpModal--xO1Kx\",\"modalBody\":\"SignUpModal--modalBody--Gpmjz\",\"headerButtons\":\"SignUpModal--headerButtons--2U3lr\",\"loginButton\":\"SignUpModal--loginButton--Vs7UG\",\"closeButton\":\"SignUpModal--closeButton--47PoO\",\"alert\":\"SignUpModal--alert--Y+599\",\"headerText\":\"SignUpModal--headerText--G1lDl\",\"disclaimerText\":\"SignUpModal--disclaimerText--BQTmz\"};","import React, { useCallback, useEffect } from 'react';\nimport Modal, { ModalBody } from '@strava/ui/Modal';\nimport {\n useStravaAnalytics,\n useStravaTranslations\n} from '@strava/container-context';\nimport AccountAuthButton from '../AccountAuthButton';\nimport OrDivider from '../OrDivider';\nimport EmailRegistrationForm, {\n EmailRegistrationFormProps,\n EMAIL_REGISTRATION_FORM_ALERT_ID,\n AnalyticsFieldsTypes\n} from '../EmailRegistrationForm';\nimport DisclaimerText from '../DisclaimerText';\nimport { APPLE, FACEBOOK, GOOGLE } from '../constants';\nimport { AlertContainer, AlertProvider } from '@strava/ui/Alert';\nimport Button, { LinkButton } from '@strava/ui/Button';\nimport VisuallyHidden from '@strava/ui/VisuallyHidden';\nimport ActionsCancelNormalSmall from '@strava/icons/ActionsCancelNormalSmall';\nimport { color } from '@strava/ui-tokens/js';\nimport { useSignUpModalContext } from './SignUpModalContext';\nimport styles from './SignUpModal.module.scss';\n\n// using `require` here instead of import to avoid adding `declare module '*.svg'`\n// everywhere the `@strava/authentication-ui` package is imported\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst echelon = require('./assets/strava-echelon.svg');\n\nexport type SignUpModalProps = {\n authorizationUrls: {\n email: string;\n facebook: string;\n google: string;\n };\n appleState: string;\n category: string;\n className?: string;\n} & EmailRegistrationFormProps;\n\nconst i18nPrefix = 'sign_up_modal';\n\nconst SignUpModal = ({\n className,\n authorizationUrls,\n category,\n ...props\n}: SignUpModalProps) => {\n const { track: _track } = useStravaAnalytics();\n const { t } = useStravaTranslations();\n\n const { isSignUpModalOpen, dismissSignUpModal, variant, copyParams } =\n useSignUpModalContext();\n\n // If we need to add `_v2` strings for the variants, we'd need to map them to the proper variant.\n // The variant is used for more than just copy, so we could end up with `follow_athlete` as a variant\n // but want to use `follow_athlete_v2` for the copy.\n\n const track = useCallback(\n (fields: AnalyticsFieldsTypes) => {\n _track({\n category,\n page: 'signup_modal',\n ...fields,\n properties: {\n copy_variant: variant,\n ...fields.properties\n }\n });\n },\n [_track, category, variant]\n );\n\n const handleExtAuthBtnClick = (\n option: typeof FACEBOOK | typeof GOOGLE | typeof APPLE\n ) => {\n track({ action: 'click', element: `${option}_signup` });\n\n // TODO ADIEL: auth url redirect, post-auth actions\n return option;\n };\n\n useEffect(() => {\n track({ action: 'screen_enter' });\n }, [track]);\n\n return (\n \n \n \n
\n track({ action: 'click', element: 'login' })}\n >\n {t(`${i18nPrefix}.log_in`)}\n \n {\n track({ action: 'click', element: 'close_modal' });\n dismissSignUpModal();\n }}\n type=\"button\"\n variant=\"icon\"\n className={styles.closeButton}\n title={t(`${i18nPrefix}.close`)}\n >\n {t(`${i18nPrefix}.close`)}\n \n \n
\n\n
\n \"\"\n

\n {t(`${i18nPrefix}.${variant}.title`, copyParams[variant])}\n

\n

{t(`${i18nPrefix}.${variant}.subtitle`)}

\n
\n\n \n\n handleExtAuthBtnClick(GOOGLE)}\n data-testid=\"google_auth_btn\"\n >\n {t(`${i18nPrefix}.signup_ctas.google_cta`)}\n \n\n handleExtAuthBtnClick(APPLE)}\n data-testid=\"apple_auth_btn\"\n >\n {t(`${i18nPrefix}.signup_ctas.apple_cta`)}\n \n\n handleExtAuthBtnClick(FACEBOOK)}\n data-testid=\"facebook_auth_btn\"\n >\n {t(`${i18nPrefix}.signup_ctas.facebook_cta`)}\n \n\n \n\n \n\n \n
\n \n
\n );\n};\n\nexport default SignUpModal;\n","import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n useState\n} from 'react';\n\nexport type SignUpModalVariants =\n | 'generic'\n | 'generic_time_delayed'\n | 'follow_athlete'\n | 'join_challenge'\n | 'kudos_comment';\n\nexport type SignUpModalContextState = {\n openSignUpModal: ({\n variant,\n params\n }: {\n variant: string;\n params?: Record;\n }) => void;\n isSignUpModalOpen: boolean;\n dismissSignUpModal: () => void;\n variant: SignUpModalVariants;\n copyParams: Record>;\n};\n\nconst SignUpModalContext = createContext(\n undefined\n);\nSignUpModalContext.displayName = 'SignUpModalContext';\n\nexport const useSignUpModalContext = () => {\n const context = useContext(SignUpModalContext);\n\n // Fail fast if hook is used outside the provider\n if (!context) {\n throw new Error(\n 'useSignUpModalContext must be used within the SignUpModalProvider'\n );\n }\n\n return context;\n};\n\ntype SignUpModalContextProviderProps = {\n children: ReactNode;\n nameForFollowAthleteVariant: string;\n};\n\nexport const SignUpModalContextProvider = ({\n children,\n nameForFollowAthleteVariant\n}: SignUpModalContextProviderProps) => {\n const [isSignUpModalOpen, setIsSignUpModalOpen] = useState(false);\n const [variant, setVariant] = useState('generic');\n\n const openSignUpModal = useCallback(({ variant: _variant }) => {\n setIsSignUpModalOpen(true);\n setVariant(_variant);\n }, []);\n\n const providerState = useMemo(\n () => ({\n openSignUpModal,\n dismissSignUpModal: () => setIsSignUpModalOpen(false),\n isSignUpModalOpen,\n variant,\n copyParams: {\n generic: {},\n generic_time_delayed: {},\n follow_athlete: { name: nameForFollowAthleteVariant },\n join_challenge: {},\n kudos_comment: {}\n }\n }),\n [openSignUpModal, isSignUpModalOpen, variant, nameForFollowAthleteVariant]\n );\n\n return (\n \n {children}\n \n );\n};\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsTrophyNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgAchievementsTrophyNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsTrophyNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsTrophyNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsCommentNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsCommentNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgActionsCommentNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsCommentNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsKudoNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsKudoNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgActionsKudoNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsKudoNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsLockClosedNormalXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsLockClosedNormalXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgActionsLockClosedNormalXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsLockClosedNormalXsmall;\n","import { useRef, useCallback, useEffect, useState } from 'react';\n\n/**\n * The `useSafeState` hook acts the same as React's `useState`,\n * where we can set the initial state, and it returns (1) the current state,\n * and (2) the state setter.\n *\n * But with `useSafeState`, it will only set the state when the component is mounted\n * in order to prevent memory leaks and avoid this warning:\n * \"Warning: Can’t perform a React state update on an unmounted component.\"\n * When a component is unmounted, we don't want to set the state.\n *\n * This helps when we have async behavior where we call an async API call,\n * then based on the async response, we set the state. But if the component\n * unmounts before the API call resolves, we don't want to set the state.\n * */\nexport const useSafeState = (initialState) => {\n const mountedRef = useRef(false);\n const [state, setState] = useState(initialState);\n\n useEffect(() => {\n mountedRef.current = true;\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n const setSafeState = useCallback(\n (args) => (mountedRef.current ? setState(args) : () => {}),\n []\n );\n\n return [state, setSafeState];\n};\n\nexport default useSafeState;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgNavigationProfileHighlightedMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgNavigationProfileHighlightedMedium.defaultProps = {\n color: \"currentColor\",\n size: 32,\n title: undefined,\n titleId: undefined,\n};\nSvgNavigationProfileHighlightedMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgNavigationProfileHighlightedMedium;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgBadgesMulticolorSuperuserSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n \n )\n);\nSvgBadgesMulticolorSuperuserSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgBadgesMulticolorSuperuserSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgBadgesMulticolorSuperuserSmall;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgBadgesMulticolorSummitSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n \n )\n);\nSvgBadgesMulticolorSummitSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgBadgesMulticolorSummitSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgBadgesMulticolorSummitSmall;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgBadgesMulticolorProSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n \n )\n);\nSvgBadgesMulticolorProSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgBadgesMulticolorProSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgBadgesMulticolorProSmall;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgBadgesMulticolorVerifiedSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n )\n);\nSvgBadgesMulticolorVerifiedSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgBadgesMulticolorVerifiedSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgBadgesMulticolorVerifiedSmall;\n","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"Avatar--avatar--EjA+i\",\"imgWrapper\":\"Avatar--imgWrapper--no4rK\",\"badge\":\"Avatar--badge--AGhgx\",\"athlete\":\"Avatar--athlete--swByo\",\"xsmall\":\"Avatar--xsmall--ooxrp\",\"small\":\"Avatar--small--d-InS\",\"large\":\"Avatar--large--yUfy1\",\"xlarge\":\"Avatar--xlarge--Yt5UL\",\"club\":\"Avatar--club--HMeLa\",\"default\":\"Avatar--default--cRgUh\"};","import React, { useEffect } from 'react';\nimport { useSafeState } from '@strava/react-hooks/src/use-safe-state';\nimport AvatarFallback from '@strava/icons/NavigationProfileHighlightedMedium';\nimport EmployeeBadge from '@strava/icons/BadgesMulticolorSuperuserSmall';\nimport SubscriberBadge from '@strava/icons/BadgesMulticolorSummitSmall';\nimport ProBadge from '@strava/icons/BadgesMulticolorProSmall';\nimport VerifiedBadge from '@strava/icons/BadgesMulticolorVerifiedSmall';\nimport clsx from '../clsx';\n\nimport styles from './Avatar.module.scss';\n\ninterface ImgProps {\n src: string;\n alt: string;\n title: string;\n fallback?: React.ReactNode;\n}\n\nconst Img = ({ src, alt, title, fallback = null }: ImgProps) => {\n const [children, setChildren] = useSafeState(\n {alt}\n );\n\n useEffect(() => {\n let image: HTMLImageElement | null = new Image();\n image.onload = () => {\n setChildren({alt});\n };\n image.onerror = () => {\n setChildren(fallback);\n };\n image.src = src;\n return () => {\n image = null;\n };\n }, [src, alt, title, fallback]);\n\n return <>{children};\n};\n\nfunction getBadge(badge: string) {\n switch (badge) {\n case 'ambassador':\n return ;\n case 'employee':\n return ;\n case 'subscriber':\n case 'premium':\n return ;\n case 'pro':\n return ;\n case 'verified':\n return ;\n default:\n return null;\n }\n}\n\nexport type AvatarType = 'athlete' | 'club';\nexport type AvatarSize = 'xsmall' | 'small' | 'default' | 'large' | 'xlarge';\nexport type AvatarBadge =\n | '' // in some cases active has member_type as empty string for default users\n | 'ambassador'\n | 'employee'\n | 'subscriber'\n | 'premium' // legacy name referring to 'subscriber', used in active\n | 'pro'\n | 'verified';\n\ninterface BaseAvatarProps {\n src: string;\n type: AvatarType;\n name?: string;\n alt?: string;\n title?: string;\n size?: AvatarSize;\n badge?: AvatarBadge;\n className?: string;\n}\n\ntype AnchorProps = React.ComponentPropsWithoutRef<'a'> & {\n href?: string;\n};\ntype DivProps = React.ComponentPropsWithoutRef<'div'> & {\n href?: never;\n};\n\n// Guard to check if href exists in props\nconst hasHref = (props: AnchorProps | DivProps): props is AnchorProps =>\n 'href' in props;\n\ntype AvatarProps = BaseAvatarProps & (AnchorProps | DivProps);\n\n/**\n * Prop Deprecation Warning: We are slowly deprecating the `name` prop in favor of the `title` prop\n * so that the React props match up to the element's attribute.\n * */\nconst Avatar = ({\n name = '',\n alt = '',\n title,\n type,\n src,\n size,\n badge,\n className,\n ...otherProps\n}: AvatarProps) => {\n const classNames = clsx([\n styles.avatar,\n styles[type],\n className,\n size && styles[size]\n ]);\n\n // TODO: uncomment when existing Avatar usage is refactored. Otherwise, there will be a lot of warning in the console.\n // if (name || process.env.NODE_ENV !== 'production') {\n // console.warn(\n // '[Prop Deprecation Warning] Deprecating the `name` prop in favor of the `title`.'\n // );\n // }\n\n const children = (\n <>\n {badge &&
{getBadge(badge)}
}\n
\n : null}\n />\n
\n \n );\n\n if (hasHref(otherProps)) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n {children}\n \n );\n};\n\nexport default Avatar;\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\n","// extracted by mini-css-extract-plugin\nexport default {\"area\":\"ElevationChart--area--rQlaC\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { area } from 'd3-shape';\nimport styles from './area.module.scss';\n\nconst Area = ({ stream, xScale, yScale, height, clipPath, fill }) => {\n const formatData = stream.convertedElevation.map((elev, index) => ({\n elev,\n dist: stream.convertedDistance[index]\n }));\n\n const drawArea = area()\n .x((d) => xScale(d.dist))\n .y1((d) => yScale(d.elev))\n .y0(height);\n\n return (\n \n \n \n );\n};\n\nArea.propTypes = {\n xScale: PropTypes.func.isRequired,\n yScale: PropTypes.func.isRequired,\n height: PropTypes.number.isRequired,\n stream: PropTypes.shape().isRequired,\n clipPath: PropTypes.string,\n fill: PropTypes.string\n};\n\nArea.defaultProps = {\n clipPath: null,\n fill: 'rgba(100, 100, 100, 0.66)'\n};\n\nexport default Area;\n","// extracted by mini-css-extract-plugin\nexport default {\"axis\":\"ElevationChart--axis--kmMnQ\",\"yAxis\":\"ElevationChart--yAxis--ZTl9K\",\"xAxis\":\"ElevationChart--xAxis--Md58V\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { axisBottom, axisLeft } from 'd3-axis';\nimport { select } from 'd3-selection';\nimport styles from './axis.module.scss';\n\nclass Axis extends React.Component {\n xAxisNode = React.createRef();\n\n yAxisNode = React.createRef();\n\n componentDidMount() {\n this.drawAxes();\n }\n\n componentDidUpdate(prevProps) {\n const { scopeTo, width, xScale, yScale } = this.props;\n\n const hasScopeChanged =\n scopeTo &&\n (prevProps.scopeTo[0] !== scopeTo[0] ||\n prevProps.scopeTo[1] !== scopeTo[1]);\n\n const hasScaleChanged =\n !this.scalesAreEqual(xScale, prevProps.xScale) ||\n !this.scalesAreEqual(yScale, prevProps.yScale);\n\n const hasWidthChanged = prevProps.width !== width;\n\n if (hasScopeChanged || hasWidthChanged || hasScaleChanged) {\n this.drawAxes();\n }\n }\n\n scalesAreEqual = (scaleA, scaleB) => {\n return scaleA\n .domain()\n .every((domainElement) => scaleB.domain().includes(domainElement));\n };\n\n drawAxes() {\n const { xScale, yScale, width, formatters } = this.props;\n const { elevationFormatter, distanceFormatter } = formatters;\n const xAxis = axisBottom(xScale);\n const yAxis = axisLeft(yScale);\n const xTickCount = width > 480 ? 8 : 4;\n\n yAxis\n .ticks(4)\n .tickSize(-width)\n .tickFormat((e) =>\n // As e here is converted/formatted value we need to unconver it\n // so that the value does not get converted twice.\n elevationFormatter.formatShort(e / elevationFormatter.convert(1.0))\n );\n\n xAxis.ticks(xTickCount).tickFormat((d) =>\n // As d here is converted/formatted value we need to unconver it\n // so that the value does not get converted twice.\n distanceFormatter.formatShort(d / distanceFormatter.convert(1.0))\n );\n\n yAxis(select(this.yAxisNode.current));\n xAxis(select(this.xAxisNode.current));\n }\n\n render() {\n const { height } = this.props;\n\n return (\n <>\n \n \n \n );\n }\n}\n\nexport default Axis;\n\nAxis.propTypes = {\n xScale: PropTypes.func.isRequired,\n yScale: PropTypes.func.isRequired,\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n formatters: PropTypes.shape().isRequired,\n scopeTo: PropTypes.arrayOf(PropTypes.number)\n};\n\nAxis.defaultProps = {\n scopeTo: null\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"group\":\"Tooltip--group--+mCJX\",\"infoBox\":\"Tooltip--infoBox--QnbSw\",\"value\":\"Tooltip--value--RmlpA\"};","import React, { useLayoutEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './styles.module.scss';\n\nconst Tooltip = ({ content, position, clipPath, chartWidth, chartMargin }) => {\n const textRef = useRef([]);\n const [boxWidth, setBoxWidth] = useState(120);\n const padding = 6;\n const lineHeight = 16;\n\n const rightBound = position + boxWidth + padding * 2;\n const currBoxAlign =\n rightBound >= chartWidth ? chartWidth - rightBound + padding : padding;\n\n useLayoutEffect(() => {\n if (textRef.current && Object.keys(content).length !== 0) {\n const widths = textRef.current.map(\n (el) => el.getBoundingClientRect().width\n );\n const maxWidth = Math.max(...widths);\n const newSize = Math.round(maxWidth + padding * 2);\n if (boxWidth !== newSize) {\n setBoxWidth(newSize);\n }\n }\n }, [content, boxWidth]);\n\n const InfoBox = () => {\n const keys = Object.keys(content);\n const contentLength = keys.length;\n const boxHeight = contentLength * lineHeight + padding + 2;\n\n return (\n \n \n {keys.map((stat, index) => {\n const contentItem = content[stat];\n\n function setRef(el) {\n textRef.current[index] = el;\n }\n\n return (\n \n {contentItem.label}\n \n {contentItem.value}\n \n \n );\n })}\n \n );\n };\n\n return (\n \n \n \n \n );\n};\n\nexport default Tooltip;\n\nTooltip.propTypes = {\n content: PropTypes.shape().isRequired,\n position: PropTypes.number.isRequired,\n clipPath: PropTypes.string.isRequired,\n chartWidth: PropTypes.number.isRequired,\n chartMargin: PropTypes.shape({\n top: PropTypes.number,\n right: PropTypes.number,\n bottom: PropTypes.number,\n left: PropTypes.number\n }).isRequired\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"hitbox\":\"ElevationChart--hitbox--JJmeG\",\"marker\":\"ElevationChart--marker--dn-WA\"};","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { scaleLinear } from 'd3-scale';\nimport { max, min, bisectLeft } from 'd3-array';\nimport { throttle } from 'lodash-es';\nimport { color } from '@strava/ui-tokens/js';\nimport Area from './Area';\nimport Axis from './Axis';\nimport Tooltip from './Tooltip';\nimport styles from './styles.module.scss';\n\nclass ElevationChart extends Component {\n state = {\n stream: null,\n xScale: null,\n yScale: null,\n height: 0,\n width: 0,\n markerPosition: this.props.margin.left,\n tooltipContent: {}\n };\n\n container = React.createRef();\n\n formatters = null;\n\n node = React.createRef();\n\n hitbox = React.createRef();\n\n handleResize = throttle(() => {\n this.buildScales();\n }, 250);\n\n componentDidMount() {\n window.addEventListener('resize', this.handleResize);\n this.updateFormatters();\n this.buildScales();\n }\n\n componentDidUpdate({\n elevation: prevElevation,\n distance: prevDistance,\n units: prevUnits\n }) {\n const { distance, elevation, units } = this.props;\n const elevationChanged = prevElevation.length !== elevation.length;\n const distanceChanged = prevDistance.length !== distance.length;\n const unitsChanged = prevUnits !== units;\n\n if (unitsChanged) {\n this.updateFormatters();\n }\n\n if (elevationChanged || distanceChanged || unitsChanged) {\n this.buildScales();\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleResize);\n }\n\n // TODO: hover got really slow on long streams\n updateMarker = (e) => {\n const {\n onUpdateMarker,\n tooltipDistanceLabel,\n tooltipElevationLabel,\n tooltipGradeLabel\n } = this.props;\n const { xScale, stream } = this.state;\n const { elevationFormatter, distanceFormatter } = this.formatters;\n const bounds = this.hitbox.current.getBoundingClientRect();\n const cursorPosition = e.clientX - bounds.left;\n const markerPosition = cursorPosition;\n const distCursor = xScale.invert(cursorPosition);\n const streamIndex = bisectLeft(stream.convertedDistance, distCursor);\n\n const tooltipContent = {\n distance: {\n label: tooltipDistanceLabel,\n value: distanceFormatter.formatShort(stream.distance[streamIndex])\n },\n elevation: {\n label: tooltipElevationLabel,\n value: elevationFormatter.formatShort(stream.elevation[streamIndex])\n },\n grade: {\n label: tooltipGradeLabel,\n value: this.gradeAtIndex(streamIndex)\n }\n };\n\n onUpdateMarker(streamIndex, {\n // distCursor at this point will be in kilometers or miles so convert distance back to meters\n // as stream.distance is in meters so we want to be consistent\n distance: distCursor / distanceFormatter.convert(1)\n });\n\n this.setState({\n markerPosition,\n tooltipContent\n });\n };\n\n handleMouseLeave = (e) => {\n const { onUpdateMarker, onMouseLeave } = this.props;\n onUpdateMarker(null, { distance: null });\n onMouseLeave(e);\n };\n\n updateFormatters() {\n const { units, formatters } = this.props;\n\n this.formatters = {\n elevationFormatter: new formatters.ElevationFormatter(units),\n distanceFormatter: new formatters.DistanceFormatter(units),\n gradePercentFormatter: new formatters.PercentFormatter()\n };\n }\n\n buildScales() {\n const { margin, height: heightProp, elevation, distance } = this.props;\n const { elevationFormatter, distanceFormatter } = this.formatters;\n\n const convertedElevation = elevation.map((elev) =>\n elevationFormatter.convert(elev)\n );\n const convertedDistance = distance.map((dist) =>\n distanceFormatter.convert(dist)\n );\n\n const width =\n this.container.current.offsetWidth - margin.left - margin.right;\n const height = heightProp - margin.top - margin.bottom;\n const yMax = max(convertedElevation);\n const yMin = min(convertedElevation);\n const xScale = scaleLinear().range([0, width]);\n const yScale = scaleLinear().range([height, 0]);\n\n xScale.domain([0, max(convertedDistance)]);\n yScale.domain([yMin, yMax + yMax * 0.02]);\n\n this.setState({\n height,\n width,\n xScale,\n yScale,\n stream: { elevation, convertedElevation, distance, convertedDistance }\n });\n }\n\n gradeAtIndex(index) {\n // Taken from charts.js: 1689 but extending the window to 5 data points\n const { stream } = this.state;\n const { gradePercentFormatter } = this.formatters;\n const { elevation, distance } = stream;\n const maxIndex = distance.length - 1;\n const threshold = 2;\n\n let streamIndex = index;\n\n if (streamIndex < threshold) {\n streamIndex = threshold;\n }\n if (maxIndex - streamIndex < threshold) {\n streamIndex = maxIndex - threshold;\n }\n\n const distanceDiff =\n distance[streamIndex + threshold] - distance[streamIndex - threshold];\n const elevationDiff =\n elevation[streamIndex + threshold] - elevation[streamIndex - threshold];\n const grade = (elevationDiff * 100) / distanceDiff;\n\n return gradePercentFormatter.formatShort(grade);\n }\n\n scopeTo() {\n const { scopeTo } = this.props;\n const { stream, xScale, yScale } = this.state;\n\n if (!stream || !scopeTo) {\n return;\n }\n\n const start = scopeTo[0];\n const end = scopeTo[1];\n\n // Taken from directory/ElevationChart.js.coffee: 263\n const range = end - start;\n // the padding on each side of the selected area should ideally be\n // 1/3 of the area itself, but this can't be the case if the start\n // or the end are too close to the edges\n const padding = parseInt(range / 3, 10);\n const enoughSpaceAtStart = start - padding <= 0;\n const enoughSpaceAtEnd = end + padding > stream.distance.length - 1;\n\n const paddedStart = enoughSpaceAtStart\n ? parseInt(start / 3, 10)\n : start - padding;\n\n const paddedEnd = enoughSpaceAtEnd\n ? parseInt(end + (stream.distance.length - 1 - end) / 3, 10)\n : end + padding;\n\n xScale.domain([\n stream.convertedDistance[paddedStart],\n stream.convertedDistance[paddedEnd]\n ]);\n\n const croppedElevationStream = stream.convertedElevation.slice(\n paddedStart,\n paddedEnd + 1\n );\n const yMax = max(croppedElevationStream);\n const yMin = min(croppedElevationStream);\n\n yScale.domain([yMin, yMax + yMax * 0.02]);\n }\n\n render() {\n const { margin, scopeTo, scopeColor, highlightArea, highlightAreaColor } =\n this.props;\n const {\n stream,\n xScale,\n yScale,\n width,\n height,\n markerPosition,\n tooltipContent\n } = this.state;\n\n if (scopeTo) this.scopeTo();\n\n return (\n
\n {height > 0 && width > 0 && (\n \n \n \n\n \n\n {scopeTo && (\n \n )}\n\n {highlightArea && (\n \n )}\n\n \n \n \n\n \n \n \n \n \n \n )}\n
\n );\n }\n}\n\nElevationChart.propTypes = {\n height: PropTypes.number.isRequired,\n elevation: PropTypes.arrayOf(PropTypes.number).isRequired,\n distance: PropTypes.arrayOf(PropTypes.number).isRequired,\n units: PropTypes.string.isRequired,\n margin: PropTypes.shape({\n top: PropTypes.number.isRequired,\n right: PropTypes.number.isRequired,\n bottom: PropTypes.number.isRequired,\n left: PropTypes.number.isRequired\n }),\n scopeTo: PropTypes.arrayOf(PropTypes.number),\n scopeColor: PropTypes.string,\n highlightArea: PropTypes.arrayOf(PropTypes.number),\n highlightAreaColor: PropTypes.string,\n onUpdateMarker: PropTypes.func,\n onMouseLeave: PropTypes.func,\n formatters: PropTypes.shape().isRequired,\n tooltipDistanceLabel: PropTypes.string,\n tooltipElevationLabel: PropTypes.string,\n tooltipGradeLabel: PropTypes.string\n};\n\nElevationChart.defaultProps = {\n margin: {\n top: 10,\n right: 24,\n bottom: 20,\n left: 45\n },\n scopeTo: null,\n scopeColor: 'rgb(23, 90, 189)',\n highlightArea: null,\n highlightAreaColor: color.colorCoreO3,\n onUpdateMarker: () => null,\n onMouseLeave: () => null,\n tooltipDistanceLabel: 'Distance',\n tooltipElevationLabel: 'Elevation',\n tooltipGradeLabel: 'Grade'\n};\n\nexport default ElevationChart;\n","// extracted by mini-css-extract-plugin\nexport default {\"stat\":\"Stat--stat--7Qurd\",\"statLabel\":\"Stat--statLabel--qWLL-\",\"statValue\":\"Stat--statValue--7eWuL\",\"stat-xs\":\"Stat--stat-xs--svVNE\",\"statXs\":\"Stat--stat-xs--svVNE\",\"stat-sm\":\"Stat--stat-sm--7BLLi\",\"statSm\":\"Stat--stat-sm--7BLLi\",\"stat-lg\":\"Stat--stat-lg--bYBGt\",\"statLg\":\"Stat--stat-lg--bYBGt\",\"stat-xl\":\"Stat--stat-xl--GtHFn\",\"statXl\":\"Stat--stat-xl--GtHFn\"};","import React, { ReactNode } from 'react';\n\nimport styles from './Stat.module.scss';\n\nimport clsx from '../clsx';\n\nexport const StatTypes = ['stat-xs', 'stat-sm', 'stat-lg', 'stat-xl'] as const;\ntype StatTypesType = (typeof StatTypes)[number];\n\ninterface StatProps {\n value: string | number | ReactNode;\n label: string;\n type?: StatTypesType;\n wrapperClassName?: string;\n labelClassName?: string;\n valueClassName?: string;\n labelAfterValue?: boolean;\n}\n\nconst Stat = ({\n value,\n label,\n type,\n wrapperClassName,\n labelClassName,\n valueClassName,\n labelAfterValue = false\n}: StatProps) => {\n const labelElement = (\n {label}\n );\n\n return (\n
\n {!labelAfterValue && labelElement}\n
{value}
\n {labelAfterValue && labelElement}\n
\n );\n};\n\nexport default Stat;\n","// extracted by mini-css-extract-plugin\nexport default {\"listStats\":\"Stats--listStats--hRQeq\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.module.scss';\n\nconst Stats = (props) => {\n const { children, listClassName } = props;\n\n return (\n
    \n {React.Children.map(\n children,\n (child) => (child &&
  • {child}
  • ) || ''\n )}\n
\n );\n};\n\nStats.propTypes = {\n children: PropTypes.node.isRequired,\n listClassName: PropTypes.string\n};\n\nStats.defaultProps = {\n listClassName: null\n};\n\nexport default Stats;\n","\"use strict\";\r\n\r\nvar tester = /^[-!#$%&'*+\\/0-9=?A-Z^_a-z{|}~](\\.?[-!#$%&'*+\\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\\.?[a-zA-Z0-9])*\\.[a-zA-Z](-?[a-zA-Z0-9])+$/;\r\n// Thanks to:\r\n// http://fightingforalostcause.net/misc/2006/compare-email-regex.php\r\n// http://thedailywtf.com/Articles/Validating_Email_Addresses.aspx\r\n// http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses/201378#201378\r\nexports.validate = function(email)\r\n{\r\n\tif (!email)\r\n\t\treturn false;\r\n\t\t\r\n\tif(email.length>254)\r\n\t\treturn false;\r\n\r\n\tvar valid = tester.test(email);\r\n\tif(!valid)\r\n\t\treturn false;\r\n\r\n\t// Further checking of some things regex can't handle\r\n\tvar parts = email.split(\"@\");\r\n\tif(parts[0].length>64)\r\n\t\treturn false;\r\n\r\n\tvar domainParts = parts[1].split(\".\");\r\n\tif(domainParts.some(function(part) { return part.length>63; }))\r\n\t\treturn false;\r\n\r\n\treturn true;\r\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\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nvar ReCAPTCHA =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReCAPTCHA, _React$Component);\n\n function ReCAPTCHA() {\n var _this;\n\n _this = _React$Component.call(this) || this;\n _this.handleExpired = _this.handleExpired.bind(_assertThisInitialized(_this));\n _this.handleErrored = _this.handleErrored.bind(_assertThisInitialized(_this));\n _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n _this.handleRecaptchaRef = _this.handleRecaptchaRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = ReCAPTCHA.prototype;\n\n _proto.getValue = function getValue() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this.props.grecaptcha.getResponse(this._widgetId);\n }\n\n return null;\n };\n\n _proto.getWidgetId = function getWidgetId() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this._widgetId;\n }\n\n return null;\n };\n\n _proto.execute = function execute() {\n var grecaptcha = this.props.grecaptcha;\n\n if (grecaptcha && this._widgetId !== undefined) {\n return grecaptcha.execute(this._widgetId);\n } else {\n this._executeRequested = true;\n }\n };\n\n _proto.executeAsync = function executeAsync() {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n _this2.executionResolve = resolve;\n _this2.executionReject = reject;\n\n _this2.execute();\n });\n };\n\n _proto.reset = function reset() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n this.props.grecaptcha.reset(this._widgetId);\n }\n };\n\n _proto.handleExpired = function handleExpired() {\n if (this.props.onExpired) {\n this.props.onExpired();\n } else {\n this.handleChange(null);\n }\n };\n\n _proto.handleErrored = function handleErrored() {\n if (this.props.onErrored) {\n this.props.onErrored();\n }\n\n if (this.executionReject) {\n this.executionReject();\n delete this.executionResolve;\n delete this.executionReject;\n }\n };\n\n _proto.handleChange = function handleChange(token) {\n if (this.props.onChange) {\n this.props.onChange(token);\n }\n\n if (this.executionResolve) {\n this.executionResolve(token);\n delete this.executionReject;\n delete this.executionResolve;\n }\n };\n\n _proto.explicitRender = function explicitRender() {\n if (this.props.grecaptcha && this.props.grecaptcha.render && this._widgetId === undefined) {\n var wrapper = document.createElement(\"div\");\n this._widgetId = this.props.grecaptcha.render(wrapper, {\n sitekey: this.props.sitekey,\n callback: this.handleChange,\n theme: this.props.theme,\n type: this.props.type,\n tabindex: this.props.tabindex,\n \"expired-callback\": this.handleExpired,\n \"error-callback\": this.handleErrored,\n size: this.props.size,\n stoken: this.props.stoken,\n hl: this.props.hl,\n badge: this.props.badge\n });\n this.captcha.appendChild(wrapper);\n }\n\n if (this._executeRequested && this.props.grecaptcha && this._widgetId !== undefined) {\n this._executeRequested = false;\n this.execute();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.explicitRender();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.explicitRender();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._widgetId !== undefined) {\n this.delayOfCaptchaIframeRemoving();\n this.reset();\n }\n };\n\n _proto.delayOfCaptchaIframeRemoving = function delayOfCaptchaIframeRemoving() {\n var temporaryNode = document.createElement(\"div\");\n document.body.appendChild(temporaryNode);\n temporaryNode.style.display = \"none\"; // move of the recaptcha to a temporary node\n\n while (this.captcha.firstChild) {\n temporaryNode.appendChild(this.captcha.firstChild);\n } // delete the temporary node after reset will be done\n\n\n setTimeout(function () {\n document.body.removeChild(temporaryNode);\n }, 5000);\n };\n\n _proto.handleRecaptchaRef = function handleRecaptchaRef(elem) {\n this.captcha = elem;\n };\n\n _proto.render = function render() {\n // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n\n /* eslint-disable no-unused-vars */\n var _this$props = this.props,\n sitekey = _this$props.sitekey,\n onChange = _this$props.onChange,\n theme = _this$props.theme,\n type = _this$props.type,\n tabindex = _this$props.tabindex,\n onExpired = _this$props.onExpired,\n onErrored = _this$props.onErrored,\n size = _this$props.size,\n stoken = _this$props.stoken,\n grecaptcha = _this$props.grecaptcha,\n badge = _this$props.badge,\n hl = _this$props.hl,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"sitekey\", \"onChange\", \"theme\", \"type\", \"tabindex\", \"onExpired\", \"onErrored\", \"size\", \"stoken\", \"grecaptcha\", \"badge\", \"hl\"]);\n /* eslint-enable no-unused-vars */\n\n\n return React.createElement(\"div\", _extends({}, childProps, {\n ref: this.handleRecaptchaRef\n }));\n };\n\n return ReCAPTCHA;\n}(React.Component);\n\nexport { ReCAPTCHA as default };\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.propTypes = {\n sitekey: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n grecaptcha: PropTypes.object,\n theme: PropTypes.oneOf([\"dark\", \"light\"]),\n type: PropTypes.oneOf([\"image\", \"audio\"]),\n tabindex: PropTypes.number,\n onExpired: PropTypes.func,\n onErrored: PropTypes.func,\n size: PropTypes.oneOf([\"compact\", \"normal\", \"invisible\"]),\n stoken: PropTypes.string,\n hl: PropTypes.string,\n badge: PropTypes.oneOf([\"bottomright\", \"bottomleft\", \"inline\"])\n};\nReCAPTCHA.defaultProps = {\n onChange: function onChange() {},\n theme: \"light\",\n type: \"image\",\n tabindex: 0,\n size: \"normal\",\n badge: \"bottomright\"\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\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport { Component, createElement, forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nvar SCRIPT_MAP = {}; // A counter used to generate a unique id for each component that uses the function\n\nvar idCount = 0;\nexport default function makeAsyncScript(getScriptURL, options) {\n options = options || {};\n return function wrapWithAsyncScript(WrappedComponent) {\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n\n var AsyncScriptLoader =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(AsyncScriptLoader, _Component);\n\n function AsyncScriptLoader(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.state = {};\n _this.__scriptURL = \"\";\n return _this;\n }\n\n var _proto = AsyncScriptLoader.prototype;\n\n _proto.asyncScriptLoaderGetScriptLoaderID = function asyncScriptLoaderGetScriptLoaderID() {\n if (!this.__scriptLoaderID) {\n this.__scriptLoaderID = \"async-script-loader-\" + idCount++;\n }\n\n return this.__scriptLoaderID;\n };\n\n _proto.setupScriptURL = function setupScriptURL() {\n this.__scriptURL = typeof getScriptURL === \"function\" ? getScriptURL() : getScriptURL;\n return this.__scriptURL;\n };\n\n _proto.asyncScriptLoaderHandleLoad = function asyncScriptLoaderHandleLoad(state) {\n var _this2 = this;\n\n // use reacts setState callback to fire props.asyncScriptOnLoad with new state/entry\n this.setState(state, function () {\n return _this2.props.asyncScriptOnLoad && _this2.props.asyncScriptOnLoad(_this2.state);\n });\n };\n\n _proto.asyncScriptLoaderTriggerOnScriptLoaded = function asyncScriptLoaderTriggerOnScriptLoaded() {\n var mapEntry = SCRIPT_MAP[this.__scriptURL];\n\n if (!mapEntry || !mapEntry.loaded) {\n throw new Error(\"Script is not loaded.\");\n }\n\n for (var obsKey in mapEntry.observers) {\n mapEntry.observers[obsKey](mapEntry);\n }\n\n delete window[options.callbackName];\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this3 = this;\n\n var scriptURL = this.setupScriptURL();\n var key = this.asyncScriptLoaderGetScriptLoaderID();\n var _options = options,\n globalName = _options.globalName,\n callbackName = _options.callbackName,\n scriptId = _options.scriptId; // check if global object already attached to window\n\n if (globalName && typeof window[globalName] !== \"undefined\") {\n SCRIPT_MAP[scriptURL] = {\n loaded: true,\n observers: {}\n };\n } // check if script loading already\n\n\n if (SCRIPT_MAP[scriptURL]) {\n var entry = SCRIPT_MAP[scriptURL]; // if loaded or errored then \"finish\"\n\n if (entry && (entry.loaded || entry.errored)) {\n this.asyncScriptLoaderHandleLoad(entry);\n return;\n } // if still loading then callback to observer queue\n\n\n entry.observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n return;\n }\n /*\n * hasn't started loading\n * start the \"magic\"\n * setup script to load and observers\n */\n\n\n var observers = {};\n\n observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n SCRIPT_MAP[scriptURL] = {\n loaded: false,\n observers: observers\n };\n var script = document.createElement(\"script\");\n script.src = scriptURL;\n script.async = true;\n\n for (var attribute in options.attributes) {\n script.setAttribute(attribute, options.attributes[attribute]);\n }\n\n if (scriptId) {\n script.id = scriptId;\n }\n\n var callObserverFuncAndRemoveObserver = function callObserverFuncAndRemoveObserver(func) {\n if (SCRIPT_MAP[scriptURL]) {\n var mapEntry = SCRIPT_MAP[scriptURL];\n var observersMap = mapEntry.observers;\n\n for (var obsKey in observersMap) {\n if (func(observersMap[obsKey])) {\n delete observersMap[obsKey];\n }\n }\n }\n };\n\n if (callbackName && typeof window !== \"undefined\") {\n window[callbackName] = function () {\n return _this3.asyncScriptLoaderTriggerOnScriptLoaded();\n };\n }\n\n script.onload = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.loaded = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n if (callbackName) {\n return false;\n }\n\n observer(mapEntry);\n return true;\n });\n }\n };\n\n script.onerror = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.errored = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n observer(mapEntry);\n return true;\n });\n }\n };\n\n document.body.appendChild(script);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Remove tag script\n var scriptURL = this.__scriptURL;\n\n if (options.removeOnUnmount === true) {\n var allScripts = document.getElementsByTagName(\"script\");\n\n for (var i = 0; i < allScripts.length; i += 1) {\n if (allScripts[i].src.indexOf(scriptURL) > -1) {\n if (allScripts[i].parentNode) {\n allScripts[i].parentNode.removeChild(allScripts[i]);\n }\n }\n }\n } // Clean the observer entry\n\n\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n delete mapEntry.observers[this.asyncScriptLoaderGetScriptLoaderID()];\n\n if (options.removeOnUnmount === true) {\n delete SCRIPT_MAP[scriptURL];\n }\n }\n };\n\n _proto.render = function render() {\n var globalName = options.globalName; // remove asyncScriptOnLoad from childProps\n\n var _this$props = this.props,\n asyncScriptOnLoad = _this$props.asyncScriptOnLoad,\n forwardedRef = _this$props.forwardedRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"asyncScriptOnLoad\", \"forwardedRef\"]); // eslint-disable-line no-unused-vars\n\n\n if (globalName && typeof window !== \"undefined\") {\n childProps[globalName] = typeof window[globalName] !== \"undefined\" ? window[globalName] : undefined;\n }\n\n childProps.ref = forwardedRef;\n return createElement(WrappedComponent, childProps);\n };\n\n return AsyncScriptLoader;\n }(Component); // Note the second param \"ref\" provided by React.forwardRef.\n // We can pass it along to AsyncScriptLoader as a regular prop, e.g. \"forwardedRef\"\n // And it can then be attached to the Component.\n\n\n var ForwardedComponent = forwardRef(function (props, ref) {\n return createElement(AsyncScriptLoader, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n ForwardedComponent.displayName = \"AsyncScriptLoader(\" + wrappedComponentName + \")\";\n ForwardedComponent.propTypes = {\n asyncScriptOnLoad: PropTypes.func\n };\n return hoistStatics(ForwardedComponent, WrappedComponent);\n };\n}","import ReCAPTCHA from \"./recaptcha\";\nimport makeAsyncScriptLoader from \"react-async-script\";\nvar callbackName = \"onloadcallback\";\nvar globalName = \"grecaptcha\";\n\nfunction getOptions() {\n return typeof window !== \"undefined\" && window.recaptchaOptions || {};\n}\n\nfunction getURL() {\n var dynamicOptions = getOptions();\n var hostname = dynamicOptions.useRecaptchaNet ? \"recaptcha.net\" : \"www.google.com\";\n return \"https://\" + hostname + \"/recaptcha/api.js?onload=\" + callbackName + \"&render=explicit\";\n}\n\nexport default makeAsyncScriptLoader(getURL, {\n callbackName: callbackName,\n globalName: globalName\n})(ReCAPTCHA);","import RecaptchaWrapper from \"./recaptcha-wrapper\";\nimport ReCAPTCHA from \"./recaptcha\";\nexport default RecaptchaWrapper;\nexport { ReCAPTCHA };"],"names":["SvgActionsCancelNormalXsmall","React","ref","color","size","title","titleId","props","_ref","fill","xmlns","viewBox","width","height","id","d","defaultProps","undefined","propTypes","PropTypes","toVal","mix","k","y","str","Array","isArray","length","_args","_key","arguments","tmp","x","i","children","className","variant","clsx","styles","btn","ModalOverlay","otherProps","DialogOverlay","_extends","ModalContent","_ref2","DialogContent","ModalBody","_ref6","ModalCloseButton","_ref7","Button","type","ActionsCancelNormalXsmall","colors","Modal","_ref8","isOpen","onDismiss","hasClose","initialFocusRef","onClick","Overlay","Content","Title","_ref3","Actions","_ref4","HeroImage","_ref5","src","alt","Body","CloseButton","forwardRef","href","AppleLogo","FacebookLogo","GoogleLogo","EmailLogo","options","fallback","text","theme","orDivider","line","or","value","style","SvgActionsCancelCircleHighlightedMedium","fillRule","SvgActionsCheckCircleOnMedium","SvgNavigationWarningHighlightedMedium","SvgNavigationInformationNormalMedium","SvgActionsCancelNormalSmall","useInterval","callback","delay","savedCallback","useRef","useEffect","current","setInterval","clearInterval","clip","clipPath","overflow","position","whiteSpace","AlertStatus","ERROR","SUCCESS","WARNING","INFO","ALERT_DELAY","fadeStyles","enter","exit","alertType","autoDismiss","autoDismissDelay","contentPosition","hideCloseButton","hideIcon","iconSize","onClose","indicatorIcon","messageType","alertStyle","buttonStyle","ErrorIcon","SuccessIcon","WarningIcon","InfoIcon","getAlertDetails","fadeStyle","setFadeStyle","useState","handleOnClose","async","Promise","resolve","setTimeout","alert","fadeIn","fadeOut","role","alertInner","alertContent","alignLeft","alignCenter","alignRight","VisuallyHidden","closeButtonContainer","button","CancelIcon","autoDismissBar","useQueue","initialValues","queue","setState","enqueue","useCallback","items","dequeue","slice","updateQueue","fn","clearQueue","peek","Object","freeze","man","woman","preferNotSay","nonBinary","LOCALE","deDE","enUS","enGB","esES","es419","frFR","itIT","jaJP","koKR","nlNL","ptBR","ptPT","ruRU","zhCN","zhTW","de","es","fr","it","ja","ko","nl","pt","ru","zh","control","variantA","variantB","android","iPhone","iPad","chrome","firefox","safari","optedOut","AlertContext","createContext","displayName","useAlertContext","context","useContext","Error","AlertProvider","showAlert","alertConfig","Math","random","toString","substring","containerId","alerts","some","hideAlert","filter","clearAlerts","providerState","useMemo","Provider","defaultTranslateAlertInfoText","totalAlertsShown","totalAlerts","AlertContainer","limit","shouldShowAlertInfoText","translateAlertInfoText","filterLimit","_","index","filterContainer","map","content","containerIdProp","rest","Alert","key","APPLE","EMAIL","FACEBOOK","GOOGLE","SvgActionsVisibleDisabledNormalSmall","SvgActionsVisibleNormalSmall","showPasswordText","hidePasswordText","passwordIsVisible","setPasswordIsVisible","Input","prev","ActionsVisibleNormalSmall","ActionsVisibleDisabledNormalSmall","label","inputMessage","errorMessage","errorMessageTestId","input","htmlFor","PasswordInput","textInput","message","error","i18nPrefix","EMAIL_REGISTRATION_FORM_ALERT_ID","authorizationUrl","reCaptchaSiteKey","honeyPot","isPremium","clubId","plan","challengeId","autoJoinChallenge","formAuthToken","track","idPrefix","formInput","setFormInput","email","password","passwordErrorMsg","setPasswordErrMsg","emailValidationState","setEmailValidationState","isProcessing","setIsProcessing","emailInput","passwordInput","recaptchaRef","useRecaptcha","logError","useStravaErrorLogging","t","useStravaTranslations","emailRegFormAlert","handleEmailFormSubmit","recaptchaToken","executeAsync","getRecaptchaToken","element","option","elemAttrForAnalytics","formData","FormData","append","String","isNil","response","url","reject","apiClient","headers","post","then","data","catch","submitFormData","pathType","load","action","properties","path_type","redirect_url","window","location","validateEmail","isValidEmail","isExistingEmail","EmailValidator","isUniqueEmail","get","params","isAlreadyRegisteredEmail","validatePassword","isValidPassword","passwordValidationMsg","handleInputChange","event","target","name","onSubmit","preventDefault","validateForm","is_valid_email","is_valid_password","is_existing_email","reset","focus","noValidate","RegistrationInput","placeholder","onChange","onBlur","autoComplete","display","ReCAPTCHA","sitekey","disabled","Spinner","Element","attributes","_ref$attributes","_ref$children","_ref$selfClose","selfClose","Tag","_proto","_node","Filter","a","self","address","invalid","audio","br","void","body","TYPE_FLOW","TYPE_PHRASING","caption","parent","col","colgroup","details","dd","dl","dt","figcaption","footer","header","hr","img","li","main","ol","picture","rb","rp","rt","rtc","ruby","source","summary","table","tbody","td","tfoot","th","thead","tr","ul","video","wbr","createConfigBuilder","config","tagConfigs","_extends2","forEach","TYPE_PALPABLE","tag","cite","class","colspan","controls","datetime","default","dir","kind","lang","loading","loop","media","muted","poster","sizes","span","start","srclang","srcset","rowspan","StyleFilter","_Filter","apply","keys","match","INVALID_STYLES","document","createHTMLDocument","Parser","matchers","filters","concat","keyIndex","container","allowed","allowList","ALLOWED_TAG_LIST","Set","BANNED_TAG_LIST","_proto3","reduce","nextNode","node","string","parentConfig","tagName","matchedString","parts","valid","_parts","isVoid","partProps","tokenName","elementIndex","tokenizedString","_this","elements","_match","includes","childConfig","Boolean","noHtml","disableLineBreaks","nextMarkup","createContainer","global","createDocument","INVALID_ROOTS","el","newName","ATTRIBUTES","newValue","Number","_this2","count","letter","toUpperCase","protocol","toLowerCase","parseNode","parentNode","transform","transformOnlyAllowList","mergedText","_this3","transformed","has","elementProps","open","_open","_match2","startIndex","_elements$tokenName","matcher","endIndex","nodes","push","containerTagName","emptyContent","parsedContent","mainContent","markup","legalTerms","terms_path","legalPrivacy","privacy_path","Markup","noWrap","echelon","require","authorizationUrls","category","_track","useStravaAnalytics","isSignUpModalOpen","dismissSignUpModal","copyParams","useSignUpModalContext","fields","page","copy_variant","handleExtAuthBtnClick","LinkButton","ActionsCancelNormalSmall","AccountAuthButton","OrDivider","EmailRegistrationForm","DisclaimerText","SignUpModalContext","SignUpModalContextProvider","nameForFollowAthleteVariant","setIsSignUpModalOpen","setVariant","openSignUpModal","_variant","generic","generic_time_delayed","follow_athlete","join_challenge","kudos_comment","SvgAchievementsTrophyNormalSmall","SvgActionsCommentNormalSmall","SvgActionsKudoNormalSmall","SvgActionsLockClosedNormalXsmall","clipRule","useSafeState","initialState","mountedRef","state","args","SvgNavigationProfileHighlightedMedium","SvgBadgesMulticolorSuperuserSmall","SvgBadgesMulticolorSummitSmall","SvgBadgesMulticolorProSmall","SvgBadgesMulticolorVerifiedSmall","Img","setChildren","image","Image","onload","onerror","badge","classNames","avatar","ProBadge","EmployeeBadge","SubscriberBadge","VerifiedBadge","getBadge","imgWrapper","AvatarFallback","root","Date","now","reWhitespace","test","charAt","reTrimStart","trimmedEndIndex","replace","isObjectLike","baseGetTag","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","isSymbol","isObject","other","valueOf","baseTrim","isBinary","nativeMax","max","nativeMin","min","func","wait","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","this","clearTimeout","toNumber","cancel","flush","debounce","Area","stream","xScale","yScale","formatData","convertedElevation","elev","dist","convertedDistance","drawArea","area","y1","y0","isRequired","Axis","xAxisNode","yAxisNode","componentDidMount","drawAxes","componentDidUpdate","prevProps","scopeTo","hasScopeChanged","hasScaleChanged","scalesAreEqual","hasWidthChanged","scaleA","scaleB","domain","every","domainElement","formatters","elevationFormatter","distanceFormatter","xAxis","axisBottom","yAxis","axisLeft","xTickCount","ticks","tickSize","tickFormat","e","formatShort","convert","select","render","Tooltip","chartWidth","chartMargin","textRef","boxWidth","setBoxWidth","rightBound","padding","currBoxAlign","useLayoutEffect","widths","getBoundingClientRect","maxWidth","newSize","round","InfoBox","boxHeight","infoBox","stat","contentItem","dy","dx","group","marker","top","y2","x1","x2","right","bottom","left","ElevationChart","Component","markerPosition","margin","tooltipContent","hitbox","handleResize","throttle","buildScales","addEventListener","updateFormatters","elevation","prevElevation","distance","prevDistance","units","prevUnits","elevationChanged","distanceChanged","unitsChanged","componentWillUnmount","removeEventListener","updateMarker","onUpdateMarker","tooltipDistanceLabel","tooltipElevationLabel","tooltipGradeLabel","bounds","cursorPosition","clientX","distCursor","invert","streamIndex","bisectLeft","grade","gradeAtIndex","handleMouseLeave","onMouseLeave","ElevationFormatter","DistanceFormatter","gradePercentFormatter","PercentFormatter","heightProp","offsetWidth","yMax","yMin","scaleLinear","range","maxIndex","distanceDiff","end","enoughSpaceAtStart","enoughSpaceAtEnd","paddedStart","paddedEnd","croppedElevationStream","scopeColor","highlightArea","highlightAreaColor","onMouseMove","wrapperClassName","labelClassName","valueClassName","labelAfterValue","labelElement","statLabel","statValue","Stats","listClassName","child","tester","exports","split","part","assign","prototype","hasOwnProperty","call","_assertThisInitialized","ReferenceError","_React$Component","subClass","superClass","handleExpired","bind","handleErrored","handleChange","handleRecaptchaRef","create","constructor","__proto__","getValue","grecaptcha","_widgetId","getResponse","getWidgetId","execute","_executeRequested","executionResolve","executionReject","onExpired","onErrored","token","explicitRender","wrapper","createElement","tabindex","stoken","hl","captcha","appendChild","delayOfCaptchaIframeRemoving","temporaryNode","firstChild","removeChild","elem","_this$props","childProps","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","SCRIPT_MAP","idCount","callbackName","getScriptURL","recaptchaOptions","useRecaptchaNet","globalName","WrappedComponent","wrappedComponentName","AsyncScriptLoader","_Component","__scriptURL","asyncScriptLoaderGetScriptLoaderID","__scriptLoaderID","setupScriptURL","asyncScriptLoaderHandleLoad","asyncScriptOnLoad","asyncScriptLoaderTriggerOnScriptLoaded","mapEntry","loaded","obsKey","observers","scriptURL","_options","scriptId","entry","errored","script","attribute","setAttribute","callObserverFuncAndRemoveObserver","observersMap","observer","removeOnUnmount","allScripts","getElementsByTagName","forwardedRef","ForwardedComponent"],"sourceRoot":""}