{"version":3,"file":"js/98876-68e654d003d8baf44f11.js","mappings":"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","sources":["webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/icons/dist/ActionsCancelCircleHighlightedMedium.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/icons/dist/ActionsCheckCircleOnMedium.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/icons/dist/NavigationWarningHighlightedMedium.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/icons/dist/NavigationInformationNormalMedium.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/icons/dist/ActionsCancelNormalSmall.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/react-hooks/src/use-interval/useInterval.hook.js","webpack://StravaModern/./node_modules/@strava/ui/VisuallyHidden/VisuallyHidden.tsx","webpack://StravaModern/./node_modules/@strava/ui/Alert/Alert.module.scss?7e0f","webpack://StravaModern/./node_modules/@strava/ui/Alert/Alert.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/react-hooks/src/use-queue/useQueue.hook.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/isString.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_arrayMap.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_baseToString.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/toString.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_baseSlice.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_castSlice.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_hasUnicode.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_asciiToArray.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_unicodeToArray.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_stringToArray.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_createCaseFirst.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/upperFirst.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/capitalize.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_arrayReduce.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_basePropertyOf.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_deburrLetter.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/deburr.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_asciiWords.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_hasUnicodeWord.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_unicodeWords.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/words.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_createCompounder.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/camelCase.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/utils/src/utils.js","webpack://StravaModern/./node_modules/@strava/ui/Alert/AlertProvider/AlertContext.js","webpack://StravaModern/./node_modules/@strava/ui/Alert/AlertProvider/AlertContainer.module.scss?1a42","webpack://StravaModern/./node_modules/@strava/ui/Alert/AlertProvider/AlertContainer.js","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/lodash-es/_freeGlobal.js","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/lodash-es/_root.js","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/lodash-es/_Symbol.js","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/lodash-es/_arrayMap.js","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/lodash-es/isArray.js","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/lodash-es/_getRawTag.js","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/lodash-es/_objectToString.js","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/lodash-es/_baseGetTag.js","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/lodash-es/isObjectLike.js","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/lodash-es/isSymbol.js","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/lodash-es/_baseToString.js","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/lodash-es/toString.js","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/lodash-es/replace.js","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/@strava/utils/src/externalSocialPartners/externalSocialPartners.ts","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/node_modules/@strava/utils/src/externalSocialPartners/useApple.ts","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/src/LohRegistrationPanel.module.scss?4fc4","webpack://StravaModern/./node_modules/@strava/loh-registration-panel-ui/src/LohRegistrationPanel.tsx","webpack://StravaModern/./node_modules/@strava/ui/StravaLogo/StravaLogo.js","webpack://StravaModern/./node_modules/escape-html/index.js","webpack://StravaModern/./node_modules/lodash-es/_Symbol.js","webpack://StravaModern/./node_modules/lodash-es/_getRawTag.js","webpack://StravaModern/./node_modules/lodash-es/_objectToString.js","webpack://StravaModern/./node_modules/lodash-es/_baseGetTag.js","webpack://StravaModern/./node_modules/lodash-es/_baseSlice.js","webpack://StravaModern/./node_modules/lodash-es/_arrayMap.js","webpack://StravaModern/./node_modules/lodash-es/_baseToString.js","webpack://StravaModern/./node_modules/lodash-es/_castSlice.js","webpack://StravaModern/./node_modules/lodash-es/_freeGlobal.js","webpack://StravaModern/./node_modules/lodash-es/_hasUnicode.js","webpack://StravaModern/./node_modules/lodash-es/_root.js","webpack://StravaModern/./node_modules/lodash-es/_asciiToArray.js","webpack://StravaModern/./node_modules/lodash-es/_unicodeToArray.js","webpack://StravaModern/./node_modules/lodash-es/_stringToArray.js","webpack://StravaModern/./node_modules/lodash-es/camelCase.js","webpack://StravaModern/./node_modules/lodash-es/capitalize.js","webpack://StravaModern/./node_modules/lodash-es/isArray.js","webpack://StravaModern/./node_modules/lodash-es/isObjectLike.js","webpack://StravaModern/./node_modules/lodash-es/isSymbol.js","webpack://StravaModern/./node_modules/lodash-es/toString.js","webpack://StravaModern/./node_modules/lodash-es/_createCaseFirst.js","webpack://StravaModern/./node_modules/lodash-es/upperFirst.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_Symbol.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_getRawTag.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_objectToString.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_baseGetTag.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_freeGlobal.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/_root.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/isArray.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/isObject.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/isObjectLike.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/lodash-es/isSymbol.js"],"sourcesContent":["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--mHJG0\",\"alertInner\":\"Alert--alertInner--Cohht\",\"hasError\":\"Alert--hasError--6H8nL\",\"buttonError\":\"Alert--buttonError--JNCju\",\"hasWarning\":\"Alert--hasWarning--XMcB+\",\"buttonWarning\":\"Alert--buttonWarning--B8+01\",\"hasSuccess\":\"Alert--hasSuccess--HEVyx\",\"buttonSuccess\":\"Alert--buttonSuccess--8cDF1\",\"hasInfo\":\"Alert--hasInfo--cIXeI\",\"buttonInfo\":\"Alert--buttonInfo--3W2YL\",\"alertContent\":\"Alert--alertContent--Ady-v\",\"alignLeft\":\"Alert--alignLeft--TWc3-\",\"alignCenter\":\"Alert--alignCenter--Wjvd+\",\"alignRight\":\"Alert--alignRight--GltzN\",\"indicatorIcon\":\"Alert--indicatorIcon--mcHuS\",\"closeButtonContainer\":\"Alert--closeButtonContainer--0bGld\",\"button\":\"Alert--button--j9wSm\",\"autoDismissBar\":\"Alert--autoDismissBar--mBh+B\",\"countdown\":\"Alert--countdown--4hdDW\",\"fadeIn\":\"Alert--fadeIn--m0c6K\",\"fadeOut\":\"Alert--fadeOut--V2zHS\",\"enterFadeOut\":\"Alert--enterFadeOut--ZHCGw\",\"newKudo\":\"Alert--newKudo--xwJ9a\"};","import React, { useState } from 'react';\n// import ReachAlert from '@reach/alert';\nimport PropTypes from 'prop-types';\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};\n\nconst ALERT_DELAY = 8000;\n\nconst getAlertDetails = ({ type, iconSize }) =>\n ({\n [AlertStatus.ERROR]: {\n indicatorIcon: (\n \n ),\n messageType: 'error',\n alertStyle: 'hasError',\n buttonStyle: 'buttonError'\n },\n [AlertStatus.SUCCESS]: {\n indicatorIcon: (\n \n ),\n messageType: 'success',\n alertStyle: 'hasSuccess',\n buttonStyle: 'buttonSuccess'\n },\n [AlertStatus.WARNING]: {\n indicatorIcon: (\n \n ),\n messageType: 'warning',\n alertStyle: 'hasWarning',\n buttonStyle: 'buttonWarning'\n },\n [AlertStatus.INFO]: {\n indicatorIcon: (\n \n ),\n messageType: 'info',\n alertStyle: 'hasInfo',\n buttonStyle: 'buttonInfo'\n }\n }[type]);\n\nconst fadeStyles = {\n enter: isTest() ? '' : 'fadeIn',\n exit: isTest() ? '' : 'fadeOut'\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}) => {\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\nAlert.defaultProps = {\n autoDismiss: false,\n autoDismissDelay: ALERT_DELAY,\n className: null,\n contentPosition: 'left',\n hideCloseButton: false,\n hideIcon: true,\n iconSize: 32,\n onClose: () => {}\n};\n\nAlert.propTypes = {\n children: PropTypes.node.isRequired,\n alertType: PropTypes.oneOf([\n AlertStatus.ERROR,\n AlertStatus.WARNING,\n AlertStatus.SUCCESS,\n AlertStatus.INFO\n ]).isRequired,\n autoDismiss: PropTypes.bool,\n autoDismissDelay: PropTypes.number,\n className: PropTypes.string,\n contentPosition: PropTypes.oneOf(['left', 'center', 'right']),\n hideCloseButton: PropTypes.bool,\n hideIcon: PropTypes.bool,\n iconSize: PropTypes.number,\n onClose: PropTypes.func\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","import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nexport default stringToArray;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nexport default createCaseFirst;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nexport default arrayReduce;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default basePropertyOf;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nexport default words;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nexport default createCompounder;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\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 isObject from 'lodash-es/isObject';\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'\nconst titleize = (str) =>\n str.replace(\n /\\w\\S*/g,\n (txt) => txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase()\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) => {\n if (isString(pathname)) {\n return APPLE_APP_LINK_PATHS.some((path) => {\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 = (photoUrlHash) => {\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,\n id,\n payload,\n { idName, upsert } = {}\n) {\n let itemFound = false;\n const property = idName || 'id';\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];\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, index) {\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(array, propertyValue, idName = 'id') {\n const index = array.findIndex((item) => item[idName] === propertyValue);\n return arrayRemoveByIndex(array, index);\n}\n\nexport const capitalizeFirstLetter = (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 const convertKeysToCamel = (object) => {\n if (Array.isArray(object)) {\n return object.map(convertKeysToCamel);\n }\n\n return Object.keys(object).reduce((o, k) => {\n const value = object[k];\n\n if (isObject(value) && !Array.isArray(value)) {\n return {\n ...o,\n [camelCase(k)]: convertKeysToCamel(value)\n };\n }\n if (Array.isArray(value)) {\n return {\n ...o,\n [camelCase(k)]: [...value.map(convertKeysToCamel)]\n };\n }\n\n return {\n ...o,\n [camelCase(k)]: value\n };\n }, {});\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, params) => {\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\nexport default {\n displayName,\n generateRandomId,\n isMobile,\n getMobileOS,\n getBrowser,\n isUniversalLinkPage,\n getPhotoWithMaxDimension,\n capitalizeFirstLetter,\n convertKeysToCamel,\n isLocalStorageAvailable,\n addParamsToURL\n};\n","import React, { createContext, useCallback, useContext, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useQueue } from '@strava/react-hooks';\nimport { generateRandomId } from '@strava/utils';\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\nexport const AlertProvider = ({ children }) => {\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) => {\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\nAlertProvider.defaultProps = {\n children: null\n};\n\nAlertProvider.propTypes = {\n children: PropTypes.node\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"alertContainerInfoContainer\":\"AlertProvider--alertContainerInfoContainer--dxEXE\",\"alertContainerInfo\":\"AlertProvider--alertContainerInfo--RDrkO\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useAlertContext } from './AlertContext';\nimport Alert from '../Alert';\nimport styles from './AlertContainer.module.scss';\n\nconst defaultTranslateAlertInfoText = (totalAlertsShown, totalAlerts) =>\n `Showing ${totalAlertsShown} of ${totalAlerts} alerts`;\n\nexport const AlertContainer = ({\n containerId = 'base',\n limit,\n shouldShowAlertInfoText = true,\n translateAlertInfoText = defaultTranslateAlertInfoText\n}) => {\n const { alerts, hideAlert } = useAlertContext();\n\n const handleOnClose = (id) => {\n hideAlert(id);\n };\n\n const filterLimit = (_, index) => !limit || index < limit;\n const filterContainer = (alert) => 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\nAlertContainer.defaultProps = {\n containerId: 'base',\n limit: undefined,\n shouldShowAlertInfoText: true,\n translateAlertInfoText: defaultTranslateAlertInfoText\n};\n\nAlertContainer.propTypes = {\n containerId: PropTypes.string,\n limit: PropTypes.number,\n shouldShowAlertInfoText: PropTypes.bool,\n translateAlertInfoText: PropTypes.func\n};\n\nexport default AlertContainer;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"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 object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\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 Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import toString from './toString.js';\n\n/**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\nfunction replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n}\n\nexport default replace;\n","import { replace } from 'lodash-es';\n\nexport type LogError = (e: Error | string) => void;\n\ndeclare global {\n interface Window {\n AppleID: {\n stravaInit: boolean;\n auth: {\n init: (params: {\n clientId: string;\n scope: string;\n redirectURI: string;\n state: string;\n }) => void;\n signIn: () => void;\n };\n };\n fbAsyncInit: () => void;\n FB: {\n init: (params: {\n appId: string;\n xfbml: boolean;\n version: string;\n status: boolean;\n cookie: boolean;\n }) => void;\n };\n Strava: {\n fbInitialized: boolean;\n };\n }\n}\n\nconst appendScriptToBody = ({\n script,\n name,\n logError\n}: {\n script: Node;\n name: string;\n logError: LogError;\n}) => {\n if (document.querySelector('body')) {\n document.querySelector('body')?.appendChild(script);\n } else {\n const e = new Error(`Failed to inject ${name} script`);\n logError(e);\n }\n};\n\n// this injects window.google and not the legacy window.gapi JS api\nexport const injectGoogleScript = ({\n callback,\n logError\n}: {\n callback: () => void;\n logError: LogError;\n}) => {\n if (!window.google) {\n const script = document.createElement('script');\n script.src = 'https://accounts.google.com/gsi/client';\n script.async = true;\n script.onload = callback;\n script.id = 'google-client-script';\n appendScriptToBody({ script, name: 'google gsi', logError });\n } else {\n callback();\n }\n};\n\nexport const injectAppleScript = ({\n logError,\n locale = 'en_US'\n}: {\n logError: LogError;\n locale?: string;\n}) => {\n if (!window.AppleID) {\n const script = window.document.createElement('script');\n const formattedLocale = replace(locale, '-', '_');\n script.src = `https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/${formattedLocale}/appleid.auth.js`;\n script.async = true;\n appendScriptToBody({ script, name: 'apple', logError });\n }\n};\n\nexport const injectFacebookScript = ({\n logError,\n appId,\n version,\n callback,\n locale = 'en_US'\n}: {\n logError: LogError;\n appId: string;\n version: string;\n callback: () => void;\n locale?: string;\n}) => {\n // make sure haml FB injection has not already injected script and also make sure nothing else\n // has injected FB script\n if (!window.Strava?.fbInitialized && !window.FB) {\n window.fbAsyncInit = () => {\n // ref - https://developers.facebook.com/docs/javascript/reference/FB.init/v13.0\n window.FB.init({\n appId,\n xfbml: true,\n version,\n status: true,\n cookie: true\n });\n callback();\n };\n\n // facebook uses format ll_CC - see https://developers.facebook.com/docs/javascript/internationalization\n const formattedLocale = replace(locale, '-', '_');\n\n const script = window.document.createElement('script');\n script.src = `https://connect.facebook.net/${formattedLocale}/sdk.js`;\n script.async = true;\n appendScriptToBody({ script, name: 'facebook-jssdk', logError });\n } else {\n callback();\n }\n};\n","import { useEffect } from 'react';\nimport { injectAppleScript, LogError } from './externalSocialPartners';\n\n/**\n *\n * @param {String} state https://developer.apple.com/documentation/sign_in_with_apple/clientconfigi/3230956-state\n */\nexport const useApple = (state: string, logError: LogError) => {\n useEffect(() => {\n injectAppleScript({ logError });\n }, [logError]);\n\n const signin = () => {\n if (!window.AppleID.stravaInit) {\n window.AppleID.auth.init({\n clientId: 'com.strava.app.sign.in',\n scope: 'name email',\n redirectURI: 'https://www.strava.com/o_auth/apple',\n state\n });\n window.AppleID.stravaInit = true;\n }\n window.AppleID.auth.signIn();\n };\n\n return { signin };\n};\n\nexport default useApple;\n","// extracted by mini-css-extract-plugin\nexport default {\"alreadyAMember\":\"src--alreadyAMember--QUWuY\"};","import React, { useMemo, useState, useCallback } from 'react';\nimport {\n AccountAuthButton,\n AlertTypes,\n AuthButtonVariantTypes,\n DisclaimerText,\n EmailRegistrationForm,\n EmailRegistrationFormProps,\n OrDivider\n} from '@strava/authentication-ui';\n\nimport {\n useStravaTranslations,\n useStravaAnalytics,\n useStravaErrorLogging\n} from '@strava/container-context';\nimport { Alert, AlertStatus } from '@strava/ui/Alert';\nimport { useApple } from '@strava/utils';\nimport styles from './LohRegistrationPanel.module.scss';\n\nexport enum SignupOption {\n apple = 'apple',\n email = 'email',\n facebook = 'facebook',\n google = 'google'\n}\n\nexport interface LohRegistrationPanelProps extends EmailRegistrationFormProps {\n authorizationUrls: {\n [SignupOption.google]: string;\n [SignupOption.facebook]: string;\n };\n config: {\n appleEnabled: boolean;\n appleState: string;\n };\n flashMessage?: string;\n}\n\nconst I18N_PREFIX = 'strava.landing_page';\n\nconst theme = 'light';\n\nconst LohRegistrationPanel = ({\n authorizationUrls,\n config,\n flashMessage,\n reCaptchaSiteKey,\n honeyPot,\n isPremium,\n formAuthToken\n}: LohRegistrationPanelProps) => {\n const [alert, setAlert] = useState(\n flashMessage ? { severity: AlertStatus.ERROR, message: flashMessage } : null\n );\n\n const { logError } = useStravaErrorLogging();\n\n const { t: _t } = useStravaTranslations();\n const { track: _track } = useStravaAnalytics();\n const { signin: appleSignin } = useApple(config.appleState, logError);\n\n const t = useMemo(\n () => (key: string, params?: object) =>\n _t(`${I18N_PREFIX}.${key}`, { ...params }),\n [_t]\n );\n\n const track = useCallback(\n (fields) => {\n _track({\n category: 'onboarding',\n page: 'home',\n ...fields,\n properties: {\n ...fields.properties\n }\n });\n },\n [_track]\n );\n\n const socialAuthConfig = {\n [SignupOption.facebook]: {\n variant: 'facebook',\n enabled: true,\n authUrl: authorizationUrls[SignupOption.facebook]\n },\n [SignupOption.google]: {\n variant: 'google',\n enabled: true,\n authUrl: authorizationUrls[SignupOption.google]\n },\n [SignupOption.apple]: {\n variant: 'apple',\n enabled: config.appleEnabled,\n authUrl: '' // apple uses SDK (useApple hook) to redirect to apple auth screen\n }\n };\n\n const handleSocialBtnClick = (option: SignupOption, authUrl: string) => {\n track({\n action: 'click',\n element: `${option}_signup`\n });\n\n if (option === SignupOption.apple) {\n // apple uses SDK (useApple hook) to redirect to apple auth screen\n appleSignin();\n } else {\n window.location.assign(authUrl);\n }\n };\n\n return (\n <>\n {alert && (\n \n {alert.message}\n \n )}\n\n {Object.entries(socialAuthConfig).map(\n ([key, { enabled, variant, authUrl }]) =>\n enabled && (\n handleSocialBtnClick(key as SignupOption, authUrl)}\n data-testid={`${key}_auth_btn`}\n >\n {t(`here_to_join.${key}_cta_v2`)}\n \n )\n )}\n\n \n\n \n\n \n

\n {t(`already_a_member`)}{' '}\n {\n track({ action: 'click', element: 'already_member_login' });\n }}\n >\n {t(`log_in`)}\n \n

\n \n );\n};\n\nexport default LohRegistrationPanel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport colors from '../colors';\nimport clsx from '../clsx';\n\nfunction StravaLogo({ alt, className, width, height, fill, style, ...props }) {\n return (\n \n \n \n );\n}\n\nStravaLogo.propTypes = {\n alt: PropTypes.string,\n className: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n fill: PropTypes.string,\n style: PropTypes.shape({})\n};\n\nStravaLogo.defaultProps = {\n alt: 'Strava',\n className: undefined,\n height: 'auto',\n width: 'auto',\n style: {},\n fill: colors.O50_STRAVA_ORANGE\n};\n\nexport default StravaLogo;\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nexport default stringToArray;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"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 object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\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 baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nexport default createCaseFirst;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"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 object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\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"],"names":["SvgActionsCancelCircleHighlightedMedium","React","ref","color","size","title","titleId","props","_ref","xmlns","viewBox","fill","width","height","id","fillRule","d","defaultProps","undefined","propTypes","PropTypes","SvgActionsCheckCircleOnMedium","SvgNavigationWarningHighlightedMedium","SvgNavigationInformationNormalMedium","SvgActionsCancelNormalSmall","useInterval","callback","delay","savedCallback","useRef","useEffect","current","setInterval","clearInterval","forwardRef","style","clip","clipPath","overflow","position","whiteSpace","AlertStatus","ERROR","SUCCESS","WARNING","INFO","ALERT_DELAY","fadeStyles","enter","exit","Alert","_ref2","children","className","alertType","autoDismiss","autoDismissDelay","contentPosition","hideCloseButton","hideIcon","iconSize","onClose","options","indicatorIcon","messageType","alertStyle","buttonStyle","type","ErrorIcon","SuccessIcon","WarningIcon","InfoIcon","getAlertDetails","fadeStyle","setFadeStyle","useState","handleOnClose","async","Promise","resolve","setTimeout","clsx","styles","role","VisuallyHidden","onClick","CancelIcon","isRequired","useQueue","initialValues","queue","setState","enqueue","useCallback","items","_key","arguments","dequeue","slice","updateQueue","fn","clearQueue","peek","length","array","iteratee","index","result","Array","symbolProto","Symbol","symbolToString","toString","baseToString","value","isArray","arrayMap","isSymbol","call","start","end","baseSlice","reHasUnicode","RegExp","string","test","split","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","join","rsSymbol","reUnicode","match","hasUnicode","unicodeToArray","asciiToArray","methodName","strSymbols","stringToArray","chr","charAt","trailing","castSlice","createCaseFirst","upperFirst","toLowerCase","accumulator","initAccum","object","key","basePropertyOf","reLatin","reComboMark","replace","deburrLetter","reAsciiWord","reHasUnicodeWord","rsDingbatRange","rsLowerRange","rsUpperRange","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsModifier","rsEmoji","reUnicodeWord","pattern","guard","hasUnicodeWord","unicodeWords","asciiWords","reApos","word","capitalize","generateRandomId","Math","random","substring","AlertContext","createContext","displayName","AlertProvider","showAlert","alertConfig","containerId","alerts","some","alert","hideAlert","filter","clearAlerts","providerState","useMemo","Provider","defaultTranslateAlertInfoText","totalAlertsShown","totalAlerts","AlertContainer","limit","shouldShowAlertInfoText","translateAlertInfoText","useAlertContext","context","useContext","Error","filterLimit","_","filterContainer","map","content","containerIdProp","rest","_extends","global","Object","freeSelf","self","freeGlobal","Function","root","objectProto","prototype","hasOwnProperty","nativeObjectToString","symToStringTag","isOwn","tag","unmasked","e","getRawTag","objectToString","isObjectLike","baseGetTag","args","appendScriptToBody","script","name","logError","document","querySelector","appendChild","useApple","state","_ref3","locale","window","AppleID","createElement","formattedLocale","src","injectAppleScript","signin","stravaInit","auth","init","clientId","scope","redirectURI","signIn","SignupOption","I18N_PREFIX","theme","authorizationUrls","config","flashMessage","reCaptchaSiteKey","honeyPot","isPremium","formAuthToken","setAlert","severity","message","useStravaErrorLogging","t","_t","useStravaTranslations","track","_track","useStravaAnalytics","appleSignin","appleState","params","fields","category","page","properties","socialAuthConfig","facebook","variant","enabled","authUrl","google","apple","appleEnabled","entries","AccountAuthButton","handleSocialBtnClick","option","action","element","location","assign","OrDivider","text","EmailRegistrationForm","authorizationUrl","plan","idPrefix","DisclaimerText","i18nPrefix","href","StravaLogo","alt","display","clipRule","colors","matchHtmlRegExp","module","exports","escape","str","exec","html","lastIndex","charCodeAt","g","camelCase"],"sourceRoot":""}