{"version":3,"file":"js/45233-804e2c156964d2b371af.js","mappings":"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","sources":["webpack://StravaModern/./node_modules/@strava/icons/BadgesMulticolorProSmall.js","webpack://StravaModern/./node_modules/@strava/icons/BadgesMulticolorSummitSmall.js","webpack://StravaModern/./node_modules/@strava/icons/BadgesMulticolorSuperuserSmall.js","webpack://StravaModern/./node_modules/@strava/icons/BadgesMulticolorVerifiedSmall.js","webpack://StravaModern/./node_modules/@strava/icons/NavigationProfileHighlightedMedium.js","webpack://StravaModern/./node_modules/@strava/react-hooks/src/use-local-storage/useLocalStorage.hook.js","webpack://StravaModern/./node_modules/@strava/react-hooks/src/use-safe-dispatch/useSafeDispatch.hook.js","webpack://StravaModern/./node_modules/@strava/react-hooks/src/use-safe-state/useSafeState.hook.js","webpack://StravaModern/./node_modules/@strava/ui/Avatar/styles.scss?af32","webpack://StravaModern/./node_modules/@strava/ui/Avatar/index.js"],"sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgBadgesMulticolorProSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n )\n);\nSvgBadgesMulticolorProSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgBadgesMulticolorProSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgBadgesMulticolorProSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgBadgesMulticolorSummitSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n )\n);\nSvgBadgesMulticolorSummitSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgBadgesMulticolorSummitSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgBadgesMulticolorSummitSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgBadgesMulticolorSuperuserSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n )\n);\nSvgBadgesMulticolorSuperuserSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgBadgesMulticolorSuperuserSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgBadgesMulticolorSuperuserSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgBadgesMulticolorVerifiedSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n )\n);\nSvgBadgesMulticolorVerifiedSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgBadgesMulticolorVerifiedSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgBadgesMulticolorVerifiedSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgNavigationProfileHighlightedMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n )\n);\nSvgNavigationProfileHighlightedMedium.defaultProps = {\n color: 'currentColor',\n size: 32,\n title: undefined,\n titleId: undefined\n};\nSvgNavigationProfileHighlightedMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgNavigationProfileHighlightedMedium;\n","import { useEffect, useState } from 'react';\n\n// Exporting so we can test this function\n/**\n * Merges two objects, but also removes/adds fields based on defaultObj\n * fields and structure\n * @param {Object} defaultObj Object with default fields\n * @param {Object} savedObj Object Saved object\n */\nexport function mergeData(defaultObj, savedObj) {\n const merged = {};\n\n Object.keys(defaultObj).forEach((k) => {\n if (!Object.prototype.hasOwnProperty.call(savedObj, k)) {\n merged[k] = defaultObj[k];\n }\n });\n Object.keys(savedObj).forEach((k) => {\n if (Object.prototype.hasOwnProperty.call(defaultObj, k)) {\n merged[k] = savedObj[k];\n }\n });\n\n return merged;\n}\n\nexport function useLocalStorage(\n key,\n defaultValue = '',\n options = { merge: false }\n) {\n const [state, setState] = useState(() => {\n try {\n const value = window.localStorage.getItem(key);\n\n if (value) {\n const saved = JSON.parse(value);\n\n if (options.merge) {\n return mergeData(defaultValue, saved);\n }\n\n return saved;\n }\n return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n } catch (e) {\n return defaultValue;\n }\n });\n\n useEffect(() => {\n try {\n window.localStorage.setItem(key, JSON.stringify(state));\n } catch (e) {\n // Noop\n }\n }, [key, state]);\n\n return [state, setState];\n}\n\nexport default useLocalStorage;\n","import { useCallback, useEffect, useRef } from 'react';\n\n/**\n * This is just a wrapper function over the dispatch,\n * we want to pass any arguments back to the actual dispatch and\n * when a component un-mounts we should no longer dispatch.\n * This tells a component that it is ok to still dispatch and prevents\n * memory leaks when the component un-mounts.\n *\n * Using `safeDispatch` prevents this error:\n * \"Warning: Can’t perform a React state update on an unmounted component.\"\n *\n * This helps when we have async behavior where we call an async API call,\n * then based on the async response, we set the state. But if the component\n * unmounts before the API call resolves, we don't want to set the state.\n * */\nexport const useSafeDispatch = (dispatch) => {\n const mountedRef = useRef(false);\n\n useEffect(() => {\n mountedRef.current = true;\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n return useCallback(\n (...args) => (mountedRef.current ? dispatch(...args) : () => {}),\n [dispatch]\n );\n};\n\nexport default useSafeDispatch;\n","import { useRef, useCallback, useEffect, useState } from 'react';\n\n/**\n * The `useSafeState` hook acts the same as React's `useState`,\n * where we can set the initial state, and it returns (1) the current state,\n * and (2) the state setter.\n *\n * But with `useSafeState`, it will only set the state when the component is mounted\n * in order to prevent memory leaks and avoid this warning:\n * \"Warning: Can’t perform a React state update on an unmounted component.\"\n * When a component is unmounted, we don't want to set the state.\n *\n * This helps when we have async behavior where we call an async API call,\n * then based on the async response, we set the state. But if the component\n * unmounts before the API call resolves, we don't want to set the state.\n * */\nexport const useSafeState = (initialState) => {\n const mountedRef = useRef(false);\n const [state, setState] = useState(initialState);\n\n useEffect(() => {\n mountedRef.current = true;\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n const setSafeState = useCallback(\n (args) => (mountedRef.current ? setState(args) : () => {}),\n []\n );\n\n return [state, setSafeState];\n};\n\nexport default useSafeState;\n","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"Avatar--avatar--0cH8u\",\"img-wrapper\":\"Avatar--img-wrapper--uEKlj\",\"imgWrapper\":\"Avatar--img-wrapper--uEKlj\",\"badge\":\"Avatar--badge--dPtDC\",\"athlete\":\"Avatar--athlete--sA9o6\",\"xsmall\":\"Avatar--xsmall--pBfF6\",\"small\":\"Avatar--small--UyvKr\",\"large\":\"Avatar--large--+f+X2\",\"xlarge\":\"Avatar--xlarge--CUpYU\",\"club\":\"Avatar--club--wlZQJ\"};","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useSafeState } from '@strava/react-hooks';\n\nimport AvatarFallback from '@strava/icons/NavigationProfileHighlightedMedium';\n\nimport EmployeeBadge from '@strava/icons/BadgesMulticolorSuperuserSmall';\nimport SubscriberBadge from '@strava/icons/BadgesMulticolorSummitSmall';\nimport ProBadge from '@strava/icons/BadgesMulticolorProSmall';\nimport VerifiedBadge from '@strava/icons/BadgesMulticolorVerifiedSmall';\n\nimport styles from './styles.scss';\n\nconst Img = ({ src, alt, title, fallback }) => {\n const [children, setChildren] = useSafeState(null);\n\n useEffect(() => {\n let image = new Image();\n image.onload = () => {\n setChildren();\n };\n image.onerror = () => {\n setChildren(fallback);\n };\n image.src = src;\n return () => {\n image = null;\n };\n }, [src, alt, title, fallback]);\n\n return children;\n};\n\nImg.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n fallback: PropTypes.node\n};\n\nImg.defaultProps = {\n fallback: null\n};\n\nfunction getBadge(badge) {\n switch (badge) {\n case 'ambassador':\n return