{"version":3,"file":"js/35678-7d9f370ef7734fc1c487.js","mappings":"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","sources":["webpack://StravaModern/./node_modules/@strava/react-hooks/src/use-window-scroll-top/useWindowScrollTop.hook.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/constants/src/appConstants.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/ui/clsx/clsx.ts","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/state/FrontDoorsPageContainerContext.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/ui/StravaLogo/StravaLogo.tsx","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/ui/Button/styles.module.scss?ddea","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/ui/Button/Button.tsx","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/ui/Button/LinkButton.tsx","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/Header/components/DesktopNav/DesktopNav.module.scss?1042","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/IconButton/IconButton.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/Header/components/DesktopNav/DesktopNav.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/icons/dist/NavigationMenuNormalLarge.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/icons/dist/ActionsCancelNormalMedium.js","webpack://StravaModern/./node_modules/@strava/smart-banner-ui/node_modules/@strava/ui/Button/styles.module.scss?db9d","webpack://StravaModern/./node_modules/@strava/smart-banner-ui/node_modules/@strava/ui/Button/Button.tsx","webpack://StravaModern/./node_modules/@strava/smart-banner-ui/node_modules/@strava/ui/Button/LinkButton.tsx","webpack://StravaModern/./node_modules/@strava/smart-banner-ui/node_modules/@strava/ui/clsx/clsx.ts","webpack://StravaModern/./node_modules/@strava/smart-banner-ui/node_modules/@strava/icons/dist/ActionsCancelNormalXsmall.js","webpack://StravaModern/./node_modules/@strava/smart-banner-ui/node_modules/@strava/constants/src/appConstants.js","webpack://StravaModern/./node_modules/@strava/smart-banner-ui/SmartBanner.module.scss?b4e9","webpack://StravaModern/./node_modules/@strava/smart-banner-ui/SmartBanner.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/Header/components/MobileNav/MobileNav.module.scss?e3fc","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/CallToAction/CallToAction.module.scss?5e00","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/CallToAction/CallToAction.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/Header/components/MobileNav/MobileNav.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/Header/Header.module.scss?a94b","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/Header/Header.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/Footer/components/SocialLink/SocialLink.module.scss?d34c","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/Footer/components/SocialLink/SocialLink.js","webpack://StravaModern/./node_modules/@strava/react-hooks/src/use-localized-images/constants.js","webpack://StravaModern/./node_modules/@strava/react-hooks/src/use-localized-images/helpers.js","webpack://StravaModern/./node_modules/@strava/react-hooks/src/use-localized-images/useLocalizedImages.hook.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/Footer/components/AppStoreBadges/components/Badge/Badge.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/Footer/components/AppStoreBadges/constants.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/Footer/components/AppStoreBadges/AppStoreBadges.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/Footer/Footer.module.scss?33d7","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/components/Footer/Footer.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/state/FrontDoorsPageContainer.actions.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/state/FrontDoorsPageContainer.reducer.js","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/FrontDoorsPageContainer.module.scss?3c7e","webpack://StravaModern/./node_modules/@strava/front-doors-page-container-ui/FrontDoorsPageContainer.js","webpack://StravaModern/./node_modules/react-modern-drawer/dist/index.modern.js"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react';\n\nexport const useWindowScrollTop = () => {\n const [windowScrollTop, setWindowScrollTop] = useState(0);\n\n const onScroll = useCallback(() => {\n setWindowScrollTop(window.scrollY);\n }, []);\n\n useEffect(() => {\n window?.addEventListener('scroll', onScroll);\n return () => {\n window?.removeEventListener('scroll', onScroll);\n };\n }, [onScroll]);\n\n return [windowScrollTop, onScroll];\n};\n\nexport default useWindowScrollTop;\n","export const YOUNGEST_AGE_ON_PLATFORM = 13;\n\nexport const YOUNGEST_AGE_FOR_HEALTH_AND_PROMO = 16;\n\nexport const GENDER = Object.freeze({\n man: 'man',\n woman: 'woman',\n preferNotSay: 'prefer_not_say',\n nonBinary: 'nonbinary'\n});\n\nexport const LOCALE = Object.freeze({\n deDE: 'de-DE',\n enUS: 'en-US',\n enGB: 'en-GB',\n esES: 'es-ES',\n es419: 'es-419',\n frFR: 'fr-FR',\n itIT: 'it-IT',\n jaJP: 'ja-JP',\n koKR: 'ko-KR',\n nlNL: 'nl-NL',\n ptBR: 'pt-BR',\n ptPT: 'pt-PT',\n ruRU: 'ru-RU',\n zhCN: 'zh-CN',\n zhTW: 'zh-TW'\n});\n\n// If a language has more than one locale, the first in the list is the default\nexport const LANGUAGE_LOCALES = Object.freeze({\n de: [LOCALE.deDE],\n // en is intentionally omitted here since English is the global default\n es: [LOCALE.esES, LOCALE.es419],\n fr: [LOCALE.frFR],\n it: [LOCALE.itIT],\n ja: [LOCALE.jaJP],\n ko: [LOCALE.koKR],\n nl: [LOCALE.nlNL],\n pt: [LOCALE.ptPT, LOCALE.ptBR],\n ru: [LOCALE.ruRU],\n zh: [LOCALE.zhCN, LOCALE.zhTW]\n});\n\nexport const EXPERIMENT_COHORTS = Object.freeze({\n control: 'control',\n variantA: 'variant-a',\n variantB: 'variant-b'\n});\n\nexport const MOBILE_OS = Object.freeze({\n android: 'android',\n iPhone: 'iphone',\n iPad: 'ipad'\n});\n\nexport const SUPPORTED_BROWSERS = Object.freeze({\n chrome: 'chrome',\n firefox: 'firefox',\n safari: 'safari'\n});\n\n// universal link paths from 'apple-app-site-association' file in active\nexport const APPLE_APP_LINK_PATHS = [\n '/dashboard',\n '/activities/*',\n '/athletes/*',\n '/segments/*',\n '/challenges/*',\n '/videos/*',\n '/routes/*',\n '/premium/*',\n '/settings/*',\n '/shop/*',\n '/athlete/*',\n '/clubs/*',\n '/summit/join',\n '/summit/perks',\n '/oauth/mobile/authorize'\n];\n\nexport const ATHLETES_VISIBILITY = Object.freeze({\n optedOut: 'opted_out' // Strava::Athletes::Visibility::OPTED_OUT\n});\n\nexport default {\n YOUNGEST_AGE_ON_PLATFORM,\n YOUNGEST_AGE_FOR_HEALTH_AND_PROMO,\n GENDER,\n LOCALE,\n EXPERIMENT_COHORTS,\n MOBILE_OS,\n SUPPORTED_BROWSERS,\n APPLE_APP_LINK_PATHS,\n ATHLETES_VISIBILITY\n};\n","type Value = string | number | boolean | undefined | null;\ntype MixObject = {\n [key: string]: boolean | Mix | undefined | null;\n};\ntype MixArray = Array;\ntype Mix = Value | MixObject | MixArray;\n\nfunction toVal(mix: Mix): string {\n let k,\n y,\n str = '';\n\n if (typeof mix === 'string' || typeof mix === 'number') {\n str += mix;\n } else if (typeof mix === 'object') {\n if (Array.isArray(mix)) {\n for (k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((y = toVal(mix[k]))) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (k in mix) {\n if (!mix || mix[k]) {\n str && (str += ' ');\n str += k;\n }\n }\n }\n }\n\n return str;\n}\n\nexport function clsx(..._args: Mix[]): string {\n let i = 0,\n tmp,\n x,\n str = '';\n\n while (i < arguments.length) {\n if ((tmp = arguments[i++])) {\n if ((x = toVal(tmp))) {\n str && (str += ' ');\n str += x;\n }\n }\n }\n return str;\n}\n\nexport default clsx;\n","import React, { createContext, useContext } from 'react';\n\nconst FrontDoorsPageContainerContext = createContext();\nFrontDoorsPageContainerContext.displayName = 'FrontDoorsPageContainerContext';\n\nexport const useFrontDoorsPageContainerContext = () => {\n const context = useContext(FrontDoorsPageContainerContext);\n if (!context) {\n throw new Error(\n 'useFrontDoorsPageContainerContext must be used within the FrontDoorsPageContainerContext.Provider'\n );\n }\n return context;\n};\n\nexport const FrontDoorsPageContainerContextProvider = (props) => (\n \n);\n\nexport default FrontDoorsPageContainerContext;\n","import React from 'react';\nimport { color } from '@strava/ui-tokens/js';\nimport clsx from '../clsx';\n\nexport interface StravaLogoProps {\n alt?: string;\n className?: string;\n width: string | number;\n height: string | number;\n fill: string;\n style: React.CSSProperties;\n}\n\nfunction StravaLogo({\n className,\n alt = 'Strava',\n width = 'auto',\n height = 'auto',\n fill = color.colorCoreO3,\n style,\n ...props\n}: StravaLogoProps) {\n return (\n \n {alt}\n \n \n );\n}\n\nexport default StravaLogo;\n","// extracted by mini-css-extract-plugin\nexport default {\"btn\":\"Button--btn--uCOMP\",\"default\":\"Button--default--LDTwy\",\"primary\":\"Button--primary--uxskA\",\"primaryOutline\":\"Button--primaryOutline--Igbur\",\"secondary\":\"Button--secondary--KXL9Y\",\"icon\":\"Button--icon--tz2va\",\"text\":\"Button--text--y7f7I\"};","import React from 'react';\nimport clsx from 'clsx';\n\nimport styles from './styles.module.scss';\n\nexport interface ButtonProps extends React.ComponentPropsWithoutRef<'button'> {\n children: React.ReactNode;\n variant?:\n | 'default'\n | 'primary'\n | 'primaryOutline'\n | 'secondary'\n | 'icon'\n | 'text';\n className?: string;\n}\n\nconst Button = React.forwardRef(\n ({ children, className, variant = 'default', ...props }, ref) => (\n \n {children}\n \n )\n);\n\nexport default Button;\n","import clsx from 'clsx';\nimport React, { ComponentPropsWithoutRef, forwardRef } from 'react';\n\nimport styles from './styles.module.scss';\nimport { ButtonProps } from './Button';\n\nexport type LinkButtonProps = ButtonProps & ComponentPropsWithoutRef<'a'>;\n\nconst LinkButton = forwardRef(\n ({ href, children, className, variant = 'default', ...otherProps }, ref) => {\n return (\n \n {children}\n \n );\n }\n);\n\nexport default LinkButton;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"DesktopNav--container--c+Nru\",\"item\":\"DesktopNav--item--fO4GZ\",\"loginBtn\":\"DesktopNav--loginBtn--mOl73\",\"signupBtn\":\"DesktopNav--signupBtn--eUI6+\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@strava/ui/Button';\n\nconst IconButton = ({\n children,\n onClick,\n ariaLabel,\n className,\n ...options\n}) => {\n return (\n \n {children}\n \n );\n};\n\nIconButton.defaultProps = {\n className: null\n};\n\nIconButton.propTypes = {\n children: PropTypes.node.isRequired,\n onClick: PropTypes.func.isRequired,\n ariaLabel: PropTypes.string.isRequired,\n className: PropTypes.string\n};\n\nexport default IconButton;\n","import React from 'react';\nimport StravaLogo from '@strava/ui/StravaLogo';\nimport Button from '@strava/ui/Button';\nimport { EXPERIMENT_COHORTS } from '@strava/constants/src/appConstants';\nimport { useFrontDoorsPageContainerContext } from '../../../../state/FrontDoorsPageContainerContext';\nimport styles from './DesktopNav.module.scss';\nimport IconButton from '../../../IconButton';\n\nconst DesktopNav = () => {\n const { t, track, state } = useFrontDoorsPageContainerContext();\n const { cohort, menuConfig } = state;\n const { showLoginOptionOnly } = menuConfig;\n\n const handleLoginBtnClick = () => {\n track({ element: 'login_header', action: 'click' });\n window.location.href = '/login';\n };\n\n const handleSignupBtnClick = () => {\n track({\n element: 'start_signup',\n action: 'click',\n properties: {\n signup_copy: 'join_header'\n }\n });\n window.location.href = '/register';\n };\n\n const handleLogoClick = () => {\n track({ element: 'strava_logo', action: 'click' });\n window.location.href = '/';\n };\n\n // TODO - cleanup after experiment https://strava.atlassian.net/browse/ACQN-301\n const signupBtnCopy = () => {\n // join_us -> 'Join For Free'\n const key = cohort === EXPERIMENT_COHORTS.variantA ? 'join_now' : 'join_us';\n return t(`header.${key}`);\n };\n\n return (\n
\n
\n \n \n \n
\n
\n \n {t('header.log_in')}\n \n {!showLoginOptionOnly && (\n \n {signupBtnCopy()}\n \n )}\n
\n
\n );\n};\n\nexport default DesktopNav;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgNavigationMenuNormalLarge = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgNavigationMenuNormalLarge.defaultProps = {\n color: \"currentColor\",\n size: 48,\n title: undefined,\n titleId: undefined,\n};\nSvgNavigationMenuNormalLarge.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgNavigationMenuNormalLarge;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsCancelNormalMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsCancelNormalMedium.defaultProps = {\n color: \"currentColor\",\n size: 32,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsCancelNormalMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsCancelNormalMedium;\n","// extracted by mini-css-extract-plugin\nexport default {\"btn\":\"Button--btn--ioOdD\",\"default\":\"Button--default--BRVHD\",\"primary\":\"Button--primary--i3WKp\",\"primaryOutline\":\"Button--primaryOutline--0VEUP\",\"secondary\":\"Button--secondary--Hqzix\",\"icon\":\"Button--icon--M+ZI8\",\"text\":\"Button--text--dGDlJ\"};","import React from 'react';\nimport clsx from 'clsx';\n\nimport styles from './styles.module.scss';\n\nexport interface ButtonProps extends React.ComponentPropsWithoutRef<'button'> {\n children: React.ReactNode;\n variant?:\n | 'default'\n | 'primary'\n | 'primaryOutline'\n | 'secondary'\n | 'icon'\n | 'text';\n className?: string;\n}\n\nconst Button = React.forwardRef(\n ({ children, className, variant = 'default', ...props }, ref) => (\n \n {children}\n \n )\n);\n\nexport default Button;\n","import clsx from 'clsx';\nimport React, { ComponentPropsWithoutRef, forwardRef } from 'react';\n\nimport styles from './styles.module.scss';\nimport { ButtonProps } from './Button';\n\nexport type LinkButtonProps = ButtonProps & ComponentPropsWithoutRef<'a'>;\n\nconst LinkButton = forwardRef(\n ({ href, children, className, variant = 'default', ...otherProps }, ref) => {\n return (\n \n {children}\n \n );\n }\n);\n\nexport default LinkButton;\n","type Value = string | number | boolean | undefined | null;\ntype MixObject = {\n [key: string]: boolean | Mix | undefined | null;\n};\ntype MixArray = Array;\ntype Mix = Value | MixObject | MixArray;\n\nfunction toVal(mix: Mix): string {\n let k,\n y,\n str = '';\n\n if (typeof mix === 'string' || typeof mix === 'number') {\n str += mix;\n } else if (typeof mix === 'object') {\n if (Array.isArray(mix)) {\n for (k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((y = toVal(mix[k]))) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (k in mix) {\n if (!mix || mix[k]) {\n str && (str += ' ');\n str += k;\n }\n }\n }\n }\n\n return str;\n}\n\nexport function clsx(..._args: Mix[]): string {\n let i = 0,\n tmp,\n x,\n str = '';\n\n while (i < arguments.length) {\n if ((tmp = arguments[i++])) {\n if ((x = toVal(tmp))) {\n str && (str += ' ');\n str += x;\n }\n }\n }\n return str;\n}\n\nexport default clsx;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsCancelNormalXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsCancelNormalXsmall.defaultProps = {\n color: \"currentColor\",\n size: 16,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsCancelNormalXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsCancelNormalXsmall;\n","export const YOUNGEST_AGE_ON_PLATFORM = 13;\n\nexport const YOUNGEST_AGE_FOR_HEALTH_AND_PROMO = 16;\n\nexport const GENDER = Object.freeze({\n man: 'man',\n woman: 'woman',\n preferNotSay: 'prefer_not_say',\n nonBinary: 'nonbinary'\n});\n\nexport const LOCALE = Object.freeze({\n deDE: 'de-DE',\n enUS: 'en-US',\n enGB: 'en-GB',\n esES: 'es-ES',\n es419: 'es-419',\n frFR: 'fr-FR',\n itIT: 'it-IT',\n jaJP: 'ja-JP',\n koKR: 'ko-KR',\n nlNL: 'nl-NL',\n ptBR: 'pt-BR',\n ptPT: 'pt-PT',\n ruRU: 'ru-RU',\n zhCN: 'zh-CN',\n zhTW: 'zh-TW'\n});\n\n// If a language has more than one locale, the first in the list is the default\nexport const LANGUAGE_LOCALES = Object.freeze({\n de: [LOCALE.deDE],\n // en is intentionally omitted here since English is the global default\n es: [LOCALE.esES, LOCALE.es419],\n fr: [LOCALE.frFR],\n it: [LOCALE.itIT],\n ja: [LOCALE.jaJP],\n ko: [LOCALE.koKR],\n nl: [LOCALE.nlNL],\n pt: [LOCALE.ptPT, LOCALE.ptBR],\n ru: [LOCALE.ruRU],\n zh: [LOCALE.zhCN, LOCALE.zhTW]\n});\n\nexport const EXPERIMENT_COHORTS = Object.freeze({\n control: 'control',\n variantA: 'variant-a',\n variantB: 'variant-b'\n});\n\nexport const MOBILE_OS = Object.freeze({\n android: 'android',\n iPhone: 'iphone',\n iPad: 'ipad'\n});\n\nexport const SUPPORTED_BROWSERS = Object.freeze({\n chrome: 'chrome',\n firefox: 'firefox',\n safari: 'safari'\n});\n\n// universal link paths from 'apple-app-site-association' file in active\nexport const APPLE_APP_LINK_PATHS = [\n '/dashboard',\n '/activities/*',\n '/athletes/*',\n '/segments/*',\n '/challenges/*',\n '/videos/*',\n '/routes/*',\n '/premium/*',\n '/settings/*',\n '/shop/*',\n '/athlete/*',\n '/clubs/*',\n '/summit/join',\n '/summit/perks',\n '/oauth/mobile/authorize'\n];\n\nexport const ATHLETES_VISIBILITY = Object.freeze({\n optedOut: 'opted_out' // Strava::Athletes::Visibility::OPTED_OUT\n});\n\nexport default {\n YOUNGEST_AGE_ON_PLATFORM,\n YOUNGEST_AGE_FOR_HEALTH_AND_PROMO,\n GENDER,\n LOCALE,\n EXPERIMENT_COHORTS,\n MOBILE_OS,\n SUPPORTED_BROWSERS,\n APPLE_APP_LINK_PATHS,\n ATHLETES_VISIBILITY\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"smart-banner-ui--wrapper--8LVP-\",\"smartBanner\":\"smart-banner-ui--smartBanner--a9rNI\",\"appInfo\":\"smart-banner-ui--appInfo--5Nk-F\",\"btn\":\"smart-banner-ui--btn--JwtOK\",\"closeBtn\":\"smart-banner-ui--closeBtn--kuyi3\"};","import React, {\n useEffect,\n useState,\n useCallback,\n useMemo,\n forwardRef\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button, { LinkButton } from '@strava/ui/Button';\nimport clsx from '@strava/ui/clsx';\nimport {\n useStravaAnalytics,\n useStravaTranslations,\n useStravaBranch\n} from '@strava/container-context';\n\nimport ActionsCancelNormalXsmall from '@strava/icons/ActionsCancelNormalXsmall';\nimport { color } from '@strava/ui-tokens/js';\nimport { MOBILE_OS } from '@strava/constants/src/appConstants';\nimport { isLocalStorageAvailable } from '@strava/utils/src/utils';\nimport styles from './SmartBanner.module.scss';\n\nimport iOSIcon from './assets/icon-ios-app.svg';\nimport androidIcon from './assets/icon-android-app.svg';\n\nexport const I18N_PREFIX = 'microfrontends.mobile_app_download_banner';\nexport const HIDE_BANNER_STORAGE_KEY = 'hide-mobile-app-download-banner';\n\nconst SmartBanner = forwardRef(\n ({ page, category, mobileOS, showCloseBtn, className }, ref) => {\n const { hasApp, appLink, isProcessing } = useStravaBranch();\n const { track: _track } = useStravaAnalytics();\n const { t: _t } = useStravaTranslations();\n\n const [hideBanner, setHideBanner] = useState(false);\n\n const track = useCallback(\n (fields = {}) => {\n _track({\n category,\n page,\n ...fields,\n properties: {\n ...fields.properties\n }\n });\n },\n [_track, category, page]\n );\n\n const t = useMemo(\n () => (key, params) => _t(`${I18N_PREFIX}.${key}`, { ...params }),\n [_t]\n );\n\n const getAppInfoCopy = () => {\n if (\n [MOBILE_OS.iPhone, MOBILE_OS.android].includes(mobileOS?.toLowerCase())\n ) {\n return t(`app.${mobileOS.toLowerCase()}`);\n }\n return t('no_app');\n };\n\n useEffect(() => {\n let hide = false;\n if (isLocalStorageAvailable()) {\n hide = localStorage?.getItem(HIDE_BANNER_STORAGE_KEY) === 'true';\n }\n\n if (!hide) {\n track({ element: 'smartbanner', action: 'screen_enter' });\n }\n setHideBanner(hide);\n }, [track]);\n\n const handleCloseBanner = () => {\n track({\n element: 'dismiss_smartbanner',\n action: 'click'\n });\n setHideBanner(true);\n if (isLocalStorageAvailable()) {\n localStorage?.setItem(HIDE_BANNER_STORAGE_KEY, true);\n }\n\n // allows active to remove placeholder spacing when smartbanner is hidden\n document.dispatchEvent(new Event('removeSmartbanner'));\n };\n\n if (hideBanner) {\n return null;\n }\n\n return (\n \n
\n {showCloseBtn && (\n \n \n \n )}\n\n \n\n
\n
Strava
\n
{getAppInfoCopy()}
\n
\n \n track({\n element: hasApp ? 'open_app' : 'download_app',\n action: 'click',\n properties: {\n url: appLink\n }\n })\n }\n >\n {hasApp ? t('open') : t('download')}\n \n
\n \n );\n }\n);\n\nSmartBanner.defaultProps = {\n mobileOS: null,\n className: null,\n showCloseBtn: true\n};\n\nSmartBanner.propTypes = {\n page: PropTypes.string.isRequired,\n category: PropTypes.string.isRequired,\n mobileOS: PropTypes.string,\n className: PropTypes.string,\n showCloseBtn: PropTypes.bool\n};\n\nexport default SmartBanner;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"MobileNav--container--JdlQg\",\"menuDrawer\":\"MobileNav--menuDrawer--Fd+rF\",\"menuDrawerBtn\":\"MobileNav--menuDrawerBtn--8Pz9K\",\"left\":\"MobileNav--left--6QiY+\",\"right\":\"MobileNav--right--GmFUF\",\"logo\":\"MobileNav--logo--jj2HY\",\"headerCallToAction\":\"MobileNav--headerCallToAction--GhNOg\",\"drawerCallToAction\":\"MobileNav--drawerCallToAction--9780N\",\"menuBtn\":\"MobileNav--menuBtn--405MM\",\"isOpen\":\"MobileNav--isOpen--ZzcYD\"};","// extracted by mini-css-extract-plugin\nexport default {\"callToAction\":\"CallToAction--callToAction--zDaZ8\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from '@strava/ui/clsx';\nimport { LinkButton } from '@strava/ui/Button';\nimport { useStravaBranch } from '@strava/container-context';\nimport { useFrontDoorsPageContainerContext } from '../../state/FrontDoorsPageContainerContext';\n\nimport styles from './CallToAction.module.scss';\n\nconst CallToAction = ({\n element,\n label,\n className,\n dataCy,\n analyticsCtaCopy\n}) => {\n const { track } = useFrontDoorsPageContainerContext();\n\n const { appLink, isProcessing } = useStravaBranch();\n\n return (\n \n track({\n element,\n action: 'click',\n properties: { url: appLink, cta_copy: analyticsCtaCopy }\n })\n }\n disabled={isProcessing}\n >\n {label}\n \n );\n};\n\nCallToAction.propTypes = {\n element: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n className: PropTypes.string,\n dataCy: PropTypes.string,\n analyticsCtaCopy: PropTypes.string\n};\n\nCallToAction.defaultProps = {\n className: undefined,\n dataCy: undefined,\n analyticsCtaCopy: undefined\n};\n\nexport default CallToAction;\n","import React, { useState, useEffect, useRef } from 'react';\nimport clsx from '@strava/ui/clsx';\nimport Button from '@strava/ui/Button';\nimport NavigationMenuNormalLarge from '@strava/icons/NavigationMenuNormalLarge';\nimport ActionsCancelNormalLarge from '@strava/icons/ActionsCancelNormalMedium';\nimport Drawer from 'react-modern-drawer';\nimport StravaLogo from '@strava/ui/StravaLogo';\n\nimport { getMobileOS } from '@strava/utils';\nimport SmartBanner from '@strava/smart-banner-ui';\nimport { useFrontDoorsPageContainerContext } from '../../../../state/FrontDoorsPageContainerContext';\nimport styles from './MobileNav.module.scss';\nimport 'react-modern-drawer/dist/index.css';\nimport IconButton from '../../../IconButton';\n\nimport CallToAction from '../../../CallToAction';\n\nconst MobileNav = () => {\n const [isMenuOpen, toggleMenu] = useState(false);\n\n const mobileAppDownloadBannerRef = useRef();\n\n const { t, track, state } = useFrontDoorsPageContainerContext();\n\n const { page, category, userAgent, showSmartBanner, branch, url } = state;\n\n const [forceSmartBanner, setForceSmartbanner] = useState(false);\n\n const handleLoginBtnClick = () => {\n track({ element: `drawer_login_btn`, action: 'click' });\n window.location.href = '/login';\n };\n\n const handleLogoClick = () => {\n track({ element: 'strava_logo', action: 'click' });\n window.location.href = '/';\n };\n\n // disables scroll when the menu is open\n useEffect(() => {\n if (!document?.body?.style) {\n return () => {};\n }\n document.body.style.overflow = isMenuOpen ? 'hidden' : 'scroll';\n document.body.style.width = '100%';\n return () => {\n document.body.style.overflow = 'scroll';\n };\n }, [isMenuOpen]);\n\n const handleMenuToggle = () => {\n track({\n element: isMenuOpen ? 'close_menu' : 'open_menu',\n action: 'click'\n });\n toggleMenu(!isMenuOpen);\n };\n\n // For development only - use query param to force the smartbanner to show\n // on a page.\n useEffect(() => {\n if (window?.location?.href) {\n const [, queryParams] = window.location.href.split('?');\n const searchParams = new URLSearchParams(queryParams);\n setForceSmartbanner(!!searchParams.get('force_smartbanner'));\n }\n }, [url]);\n\n return (\n <>\n {(showSmartBanner || forceSmartBanner) && (\n \n )}\n
\n
\n \n {isMenuOpen ? (\n \n ) : (\n \n )}\n \n
\n \n \n \n
\n
\n\n
\n \n
\n \n handleLoginBtnClick()}\n className={styles.menuDrawerBtn}\n data-cy=\"mobile-nav-drawer-login-btn\"\n >\n {t('header.log_in')}\n \n \n \n
\n \n );\n};\n\nexport default MobileNav;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Header--container--R-v2A\",\"isScrolling\":\"Header--isScrolling--LW5RU\",\"menu\":\"Header--menu--CaRj2\",\"items\":\"Header--items--ZjIvC\"};","import React, { forwardRef } from 'react';\nimport clsx from '@strava/ui/clsx';\nimport { useFrontDoorsPageContainerContext } from '../../state/FrontDoorsPageContainerContext';\nimport DesktopNav from './components/DesktopNav';\nimport MobileNav from './components/MobileNav';\n\nimport styles from './Header.module.scss';\n\nconst Header = forwardRef((_, ref) => {\n const { state } = useFrontDoorsPageContainerContext();\n\n const isScrolling = state.windowScrollTop > 0;\n\n return (\n \n \n \n );\n});\n\nexport default Header;\n","// extracted by mini-css-extract-plugin\nexport default {\"socialLink\":\"SocialLink--socialLink--HOKPx\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './SocialLink.module.scss';\n\nconst SocialLink = ({ url, image, altText, target, rel }) => {\n return (\n \n {altText}\n \n );\n};\n\nSocialLink.propTypes = {\n url: PropTypes.string.isRequired,\n image: PropTypes.string.isRequired,\n altText: PropTypes.string.isRequired,\n target: PropTypes.string,\n rel: PropTypes.string\n};\n\nSocialLink.defaultProps = {\n target: '_blank',\n rel: 'noopener noreferrer'\n};\n\nexport default SocialLink;\n","export const DEFAULT_LOCALIZED_IMAGES_SIZES = [\n { id: 'lg', value: 'large', minVw: '1200px' },\n { id: 'md', value: 'medium', minVw: '992px' },\n { id: 'sm', value: 'small', minVw: '768px' },\n { id: 'xs', value: 'xsmall', minVw: '0px' }\n];\n\nexport const DEFAULT_LOCALIZED_IMAGES_FORMATS = ['webp', 'png'];\n\nexport const DEFAULT_LOCALIZED_IMAGES_RESOLUTIONS = ['1x', '2x'];\n\nexport const DEFAULT_LOCALIZED_IMAGES_DIRECTORY = 'shared';\n\nexport const DEFAULT_LOCALIZED_IMAGES_SIZES_ORDER = [\n 'xl',\n 'lg',\n 'md',\n 'sm',\n 'xs'\n];\n\nexport const DEFAULT_LOCALIZED_IMAGES_FORMATS_ORDER = ['webp', 'png', 'jpg'];\n","import { LOCALE } from '@strava/constants/src/appConstants';\n\nexport const sortImagesBySizeAndFormat =\n (sizeOrder, formatOrder) => (image1, image2) => {\n const { size: image1Size, format: image1Format } = image1;\n const { size: image2Size, format: image2Format } = image2;\n\n // Sort images by size\n if (sizeOrder.indexOf(image1Size?.id) > sizeOrder.indexOf(image2Size?.id)) {\n return 1;\n }\n\n if (sizeOrder.indexOf(image1Size?.id) < sizeOrder.indexOf(image2Size?.id)) {\n return -1;\n }\n\n // Sort images by format\n if (formatOrder.indexOf(image1Format) > formatOrder.indexOf(image2Format)) {\n return 1;\n }\n\n if (formatOrder.indexOf(image1Format) < formatOrder.indexOf(image2Format)) {\n return -1;\n }\n\n return 0;\n };\n\nexport const getImageLocaleDirectory = (locale, defaultDirectory) => {\n if (!locale) {\n return defaultDirectory;\n }\n\n return Object.values(LOCALE).includes(locale) ? locale : LOCALE.enUS;\n};\n\nexport const getImageLocale = (locale) => {\n if (!locale) {\n return null;\n }\n\n return Object.values(LOCALE).includes(locale) ? locale : LOCALE.enUS;\n};\n\nexport default {\n getImageLocaleDirectory,\n getImageLocale,\n sortImagesBySizeAndFormat\n};\n","import { useEffect } from 'react';\nimport { useSafeState } from '../use-safe-state';\nimport {\n DEFAULT_LOCALIZED_IMAGES_SIZES,\n DEFAULT_LOCALIZED_IMAGES_FORMATS,\n DEFAULT_LOCALIZED_IMAGES_RESOLUTIONS,\n DEFAULT_LOCALIZED_IMAGES_DIRECTORY,\n DEFAULT_LOCALIZED_IMAGES_SIZES_ORDER,\n DEFAULT_LOCALIZED_IMAGES_FORMATS_ORDER\n} from './constants';\nimport {\n getImageLocale,\n getImageLocaleDirectory,\n sortImagesBySizeAndFormat\n} from './helpers';\n\n/**\n * This hook accepts a 'key' and additional optional params and returns an array of localized image assets.\n * For each image asset a callback is called to load the asset.\n * @param {string} key - string representing collection of image files e.g. 'Strava.com-Home-Screen1'\n * @param {string} locale - locale to use in filename / filepath e.g. 'de-DE' (optional, if none provided, defaults to 'defaultDirectory')\n * @param {Array} sizes - sizes to use for a given asset. e.g. [{ id: 'lg', value: 'large', minVw: '1200px' }, { id: 'md', value: 'medium', minVw: '992px' }]\n * @param {Array} formats - formats to use for a given asset. e.g. ['webp', 'png']\n * @param {Array} resolutions - resolutions to use for a given asset e.g. ['1x', '2x']\n * @param {string} defaultDirectory - directory to use if no locale provided. Defaults to 'shared'\n * @param {Function} imageImportCallback - Callback function; called for each image instance. Params passed: imageLocaleDirectory, imageKey, imageSize, imageFormat, imageResolution, imageLocale\n * @param {Function} logError - Error handling function\n * @returns {Array} images\n */\n\nexport const useLocalizedImages = ({\n key,\n locale,\n sizes = DEFAULT_LOCALIZED_IMAGES_SIZES,\n formats = DEFAULT_LOCALIZED_IMAGES_FORMATS,\n resolutions = DEFAULT_LOCALIZED_IMAGES_RESOLUTIONS,\n defaultDirectory = DEFAULT_LOCALIZED_IMAGES_DIRECTORY,\n imageImportCallback = () => {},\n logError\n}) => {\n const [images, setImages] = useSafeState([]);\n\n useEffect(() => {\n // Import asset from dynamic filepath\n const importImage = async (imageData) => {\n try {\n return imageImportCallback(imageData);\n } catch (error) {\n logError(new Error(`Error in imageImportCallback, Error: ${error}`));\n return null;\n }\n };\n\n const initImages = async () => {\n sizes.forEach((size) => {\n formats.forEach((format) => {\n resolutions.forEach(async (resolution) => {\n // Import file\n const file = await importImage({\n imageLocaleDirectory: getImageLocaleDirectory(\n locale,\n defaultDirectory\n ),\n imageKey: key,\n imageSize: size,\n imageFormat: format,\n imageResolution: resolution,\n imageLocale: getImageLocale(locale)\n });\n\n if (file) {\n // Update state with new image\n setImages((prevImages) => [\n ...prevImages,\n { size, format, resolution, file }\n ]);\n }\n });\n });\n });\n };\n\n initImages();\n }, [\n key,\n locale,\n formats,\n sizes,\n resolutions,\n imageImportCallback,\n logError,\n defaultDirectory,\n setImages\n ]);\n\n // Note: Sorting the images before returning as the order is not guranteed due to async import operations.\n // Order is important for use cases such as tags within elements\n return images.sort(\n sortImagesBySizeAndFormat(\n DEFAULT_LOCALIZED_IMAGES_SIZES_ORDER,\n DEFAULT_LOCALIZED_IMAGES_FORMATS_ORDER\n )\n );\n};\n\nexport default useLocalizedImages;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useFrontDoorsPageContainerContext } from '../../../../../../state/FrontDoorsPageContainerContext';\n\nconst Badge = ({\n badge,\n imgTagFallbackConfig = { size: 'md', format: 'png', resolution: '1x' }\n}) => {\n const [sources, setSources] = useState({});\n const [fallbackImgSrc, setFallbackImgSrc] = useState(null);\n const { track } = useFrontDoorsPageContainerContext();\n const { id, url, images, isLazy, alt } = badge;\n\n useEffect(() => {\n const getSourceData = () => {\n const imgWebp1x = images.find(\n (image) => image.resolution === '1x' && image.format === 'webp'\n )?.file;\n const imgWebp2x = images.find(\n (image) => image.resolution === '2x' && image.format === 'webp'\n )?.file;\n const imgPng1x = images.find(\n (image) => image.resolution === '1x' && image.format === 'png'\n )?.file;\n const imgPng2x = images.find(\n (image) => image.resolution === '2x' && image.format === 'png'\n )?.file;\n\n return {\n ...((imgWebp1x || imgWebp2x) && {\n webp: [\n ...(imgWebp1x ? [`${imgWebp1x} 1x`] : []),\n ...(imgWebp2x ? [`${imgWebp2x} 2x`] : [])\n ].join(', ')\n }),\n ...((imgPng1x || imgPng2x) && {\n png: [\n ...(imgPng1x ? [`${imgPng1x} 1x`] : []),\n ...(imgPng2x ? [`${imgPng2x} 2x`] : [])\n ].join(', ')\n })\n };\n };\n\n const sourceData = getSourceData();\n\n setSources(sourceData);\n }, [images]);\n\n useEffect(() => {\n if (!fallbackImgSrc) {\n const defaultImage = images.find(\n (image) =>\n image.resolution === imgTagFallbackConfig.resolution &&\n image.format === imgTagFallbackConfig.format &&\n image.size.id === imgTagFallbackConfig.size\n );\n\n if (defaultImage?.file) {\n setFallbackImgSrc(defaultImage.file);\n }\n }\n }, [images, imgTagFallbackConfig, fallbackImgSrc]);\n\n const handleBadgeClick = () => {\n track({\n element: 'get_app',\n action: 'click',\n properties: { url, cta_copy: `${id}_app_store` }\n });\n };\n\n return (\n \n \n {Object.entries(sources).map(([key, value]) => (\n \n ))}\n \n \n \n );\n};\n\nBadge.propTypes = {\n badge: PropTypes.shape({\n id: PropTypes.string.isRequired,\n url: PropTypes.string,\n images: PropTypes.arrayOf(\n PropTypes.shape({\n file: PropTypes.string,\n format: PropTypes.string,\n resolution: PropTypes.string,\n size: PropTypes.shape({\n id: PropTypes.string,\n value: PropTypes.string,\n minVw: PropTypes.string\n })\n })\n ),\n isLazy: PropTypes.bool,\n alt: PropTypes.string\n }).isRequired,\n imgTagFallbackConfig: PropTypes.shape({\n size: PropTypes.oneOf(['xs', 'sm', 'md', 'lg']),\n format: PropTypes.oneOf(['png', 'webp']),\n resolution: PropTypes.oneOf(['1x', '2x'])\n })\n};\n\nBadge.defaultProps = {\n imgTagFallbackConfig: undefined\n};\n\nexport default Badge;\n","export const APP_STORE_BADGE_SIZES = [{ id: 'md', value: '', minVw: '0px' }];\n\nexport default {\n APP_STORE_BADGE_SIZES\n};\n","import React, { useCallback } from 'react';\nimport { useLocalizedImages } from '@strava/react-hooks/src/use-localized-images';\nimport { useStravaBranch } from '@strava/container-context';\nimport Badge from './components/Badge';\nimport { useFrontDoorsPageContainerContext } from '../../../../state/FrontDoorsPageContainerContext';\nimport { APP_STORE_BADGE_SIZES } from './constants';\n\nconst AppStoreBadges = () => {\n const { t, state, logError } = useFrontDoorsPageContainerContext();\n const { locale } = state;\n\n const { appLink } = useStravaBranch();\n\n // Note: Example path (locale provided) - '../../../../media/de-DE/app-store-de-DE@1x.png`\n const importBadgeImage = useCallback(\n async ({\n imageLocaleDirectory,\n imageKey,\n imageFormat,\n imageResolution,\n imageLocale\n }) => {\n // Create dynamic path to file\n const path = `${imageLocaleDirectory}/${imageKey}-${\n imageLocale ? `${imageLocale}` : ''\n }@${imageResolution}.${imageFormat}`;\n\n try {\n // Import file\n return (\n await import(\n /* webpackMode: \"eager\" */\n /* webpackExports: [\"default\", \"named\"] */\n `../../../../media/${path}`\n )\n ).default;\n } catch (error) {\n logError(new Error(`Localized badge not imported, Error: ${error}`));\n return null;\n }\n },\n [logError]\n );\n\n const appleBadgeImages = useLocalizedImages({\n key: 'app-store',\n locale,\n imageImportCallback: importBadgeImage,\n logError,\n sizes: APP_STORE_BADGE_SIZES\n });\n\n const googleBadgeImages = useLocalizedImages({\n key: 'play-store',\n locale,\n imageImportCallback: importBadgeImage,\n logError,\n sizes: APP_STORE_BADGE_SIZES\n });\n\n const badges = [\n {\n id: 'apple',\n url: appLink,\n isLazy: true,\n images: appleBadgeImages,\n alt: t('footer.links.apps_alt.app_store')\n },\n {\n id: 'google',\n url: appLink,\n isLazy: true,\n images: googleBadgeImages,\n alt: t('footer.links.apps_alt.play_store')\n }\n ];\n\n return (\n
    \n {badges.map((badge) => (\n
  • \n \n
  • \n ))}\n
\n );\n};\n\nexport default AppStoreBadges;\n","// extracted by mini-css-extract-plugin\nexport default {\"footer\":\"Footer--footer--PjFQL\",\"cpraComplianceCta\":\"Footer--cpraComplianceCta--QQWeV\",\"container\":\"Footer--container--1gwsQ\",\"privacySocial\":\"Footer--privacySocial--FpGo3\",\"social\":\"Footer--social--54oRo\",\"links\":\"Footer--links--OtNG1\",\"highlight\":\"Footer--highlight--s9hb0\"};","import React, { useMemo } from 'react';\nimport StravaLogo from '@strava/ui/StravaLogo';\nimport { EXPERIMENT_COHORTS } from '@strava/constants/src/appConstants';\nimport CPRAComplianceCTA from '@strava/cpra-compliance-cta';\nimport clsx from '@strava/ui/clsx';\nimport SocialLink from './components/SocialLink';\nimport { useFrontDoorsPageContainerContext } from '../../state/FrontDoorsPageContainerContext';\n\nimport AppStoreBadges from './components/AppStoreBadges';\n\nimport socialTwitterImage from '../../media/social_tw.svg';\nimport socialYouTubeImage from '../../media/social_yt.svg';\nimport socialInstagramImage from '../../media/social_ig.svg';\nimport socialLinkedInImage from '../../media/social_li.svg';\nimport socialFacebookImage from '../../media/social_fb.svg';\n\nimport styles from './Footer.module.scss';\n\nconst Footer = () => {\n const { t, state } = useFrontDoorsPageContainerContext();\n const { cohort, dataSharingOptedOut, cpraI18nPrefix, menuConfig } = state;\n const { showLoginOptionOnly } = menuConfig;\n\n const socialLinks = useMemo(\n () => [\n {\n id: 1,\n url: 'https://twitter.com/strava',\n image: socialTwitterImage,\n altText: t('footer.social.alt.twitter')\n },\n {\n id: 2,\n url: 'https://www.youtube.com/stravainc',\n image: socialYouTubeImage,\n altText: t('footer.social.alt.youtube')\n },\n {\n id: 3,\n url: 'https://www.instagram.com/strava/',\n image: socialInstagramImage,\n altText: t('footer.social.alt.instagram')\n },\n {\n id: 4,\n url: 'https://www.linkedin.com/company/strava-inc.',\n image: socialLinkedInImage,\n altText: t('footer.social.alt.linkedin')\n },\n {\n id: 5,\n url: 'https://www.facebook.com/Strava',\n image: socialFacebookImage,\n altText: t('footer.social.alt.facebook')\n }\n ],\n [t]\n );\n\n // TODO - cleanup after experiment https://strava.atlassian.net/browse/ACQN-301\n const signUpLinkCopy = () => {\n // join_us -> 'Join For Free'\n const key =\n cohort === EXPERIMENT_COHORTS.variantA\n ? 'header.join_now'\n : 'footer.links.join_us';\n return t(key);\n };\n\n return (\n \n );\n};\n\nexport default Footer;\n","export const UPDATE_WINDOW_SCROLL_TOP = 'UPDATE_WINDOW_SCROLL_TOP';\n\nexport default {\n UPDATE_WINDOW_SCROLL_TOP\n};\n","import { UPDATE_WINDOW_SCROLL_TOP } from './FrontDoorsPageContainer.actions';\n\nexport const reducer = (state, action) => {\n switch (action.type) {\n case UPDATE_WINDOW_SCROLL_TOP: {\n const { windowScrollTop } = action.payload;\n return {\n ...state,\n windowScrollTop\n };\n }\n default: {\n return { ...state };\n }\n }\n};\n\nexport default { reducer };\n","// extracted by mini-css-extract-plugin\nexport default {\"body\":\"front-doors-page-container-ui--body--0zUDy\"};","import React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef\n} from 'react';\nimport PropTypes from 'prop-types';\nimport {\n useStravaAnalytics,\n useStravaErrorLogging,\n useStravaTranslations\n} from '@strava/container-context';\nimport { useWindowScrollTop } from '@strava/react-hooks/src/use-window-scroll-top';\nimport { EXPERIMENT_COHORTS } from '@strava/constants/src/appConstants';\nimport clsx from '@strava/ui/clsx';\nimport Header from './components/Header';\nimport Footer from './components/Footer';\nimport { FrontDoorsPageContainerContextProvider } from './state/FrontDoorsPageContainerContext';\nimport { reducer } from './state/FrontDoorsPageContainer.reducer';\nimport { UPDATE_WINDOW_SCROLL_TOP } from './state/FrontDoorsPageContainer.actions';\nimport styles from './FrontDoorsPageContainer.module.scss';\n\n/**\n *\n * @param {string} cohort - Defaults to control. Front-door pages can only have one experiment\n * running on them at a time because we depend on snowplow cookies for cohorting. This\n * prop is built-in to be reusable for any pages that need to show different treatments based\n * on the cohort in which an athlete is placed.\n *\n * @param {object} authorizationUrls - (optional) urls to be used for facebook, google, apple and email sign-up\n * options\n *\n * @param {boolean} showSmartBanner - Controls whether the smartbanner should be shown on the mobile-web version of the page.\n * Default is false (hide).\n *\n * @param {string} userAgent - Request user agent. This is required for SSR (nextJS apps).\n *\n * @param {string} cpraI18nPrefix - (optional) path to 'cpra_compliance_cta' translations, if different from just `legal` (as is the\n * case for when the FrontDoorsPageContainer is used in active instead of a nextjs app)\n *\n * @param {boolean} menuConfig.showLoginOptionOnly - (optional) true if we want to hide the `register` options, such as on the `/register` page.\n * Will also adjust styling for the login option so it gets primary/highlighted styling. Defaults to false.\n */\nconst FrontDoorsPageContainer = ({\n children,\n locale,\n page,\n category,\n showSmartBanner,\n dataSharingOptedOut,\n cohort,\n cpraI18nPrefix,\n userAgent,\n className,\n header,\n footer,\n menuConfig\n}) => {\n const { track: _track } = useStravaAnalytics();\n const { t: _t } = useStravaTranslations();\n const noop = () => {};\n\n const { showHeader } = header;\n const { showFooter } = footer;\n\n const {\n logError,\n setTags = noop,\n setContext = noop\n } = useStravaErrorLogging();\n\n const [windowScrollTop] = useWindowScrollTop();\n\n // override translations helper function\n const t = useMemo(\n () => (key, params) =>\n _t(`front_doors_page_container_ui.${key}`, { ...params }),\n [_t]\n );\n\n const headerRef = useRef();\n\n // override analytics helper function\n const track = useCallback(\n (fields = {}) => {\n _track({\n category,\n page,\n ...fields,\n properties: {\n ...fields.properties\n }\n });\n },\n [_track, category, page]\n );\n\n const [state, dispatch] = useReducer(reducer, {\n category,\n cohort,\n headerRef,\n locale,\n page,\n userAgent,\n windowScrollTop,\n dataSharingOptedOut,\n cpraI18nPrefix,\n menuConfig,\n showSmartBanner\n });\n\n const providerState = useMemo(\n () => ({\n state,\n dispatch,\n track,\n t,\n logError\n }),\n [logError, state, t, track]\n );\n\n // screen enter\n // - track analytics\n // - set container-level tags and context for sentry error tracking and performance monitoring\n useEffect(() => {\n track({\n action: 'screen_enter'\n });\n\n setTags({\n 'frontDoorsPageContainer.locale': locale,\n 'frontDoorsPageContainer.cohort': cohort,\n 'frontDoorsPageContainer.page': page\n });\n setContext('frontDoorsPageContainer', {\n showSmartBanner,\n category\n });\n }, [\n category,\n cohort,\n locale,\n showSmartBanner,\n page,\n setContext,\n setTags,\n track\n ]);\n\n useEffect(() => {\n dispatch({ type: UPDATE_WINDOW_SCROLL_TOP, payload: { windowScrollTop } });\n }, [windowScrollTop]);\n\n return (\n \n
\n {showHeader &&
}\n {children}\n {showFooter &&
\n
\n );\n};\n\nFrontDoorsPageContainer.defaultProps = {\n locale: null,\n showSmartBanner: false,\n cohort: EXPERIMENT_COHORTS.control,\n userAgent:\n typeof window === 'undefined' ? null : window?.navigator?.userAgent,\n className: null,\n cpraI18nPrefix: 'legal',\n menuConfig: {\n showLoginOptionOnly: false\n },\n header: {\n showHeader: true\n },\n footer: {\n showFooter: true\n }\n};\n\nFrontDoorsPageContainer.propTypes = {\n children: PropTypes.node.isRequired,\n locale: PropTypes.string,\n page: PropTypes.string.isRequired,\n category: PropTypes.string.isRequired,\n showSmartBanner: PropTypes.bool,\n dataSharingOptedOut: PropTypes.bool.isRequired,\n cpraI18nPrefix: PropTypes.string,\n cohort: PropTypes.oneOf(Object.values(EXPERIMENT_COHORTS)),\n userAgent: PropTypes.string,\n className: PropTypes.string,\n menuConfig: PropTypes.shape({\n showLoginOptionOnly: PropTypes.bool\n }),\n header: PropTypes.shape({\n showHeader: PropTypes.bool\n }),\n footer: PropTypes.shape({\n showFooter: PropTypes.bool\n })\n};\n\nexport default FrontDoorsPageContainer;\n","import React, { useRef, useEffect, useMemo } from 'react';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar getDirectionStyle = function getDirectionStyle(dir, size) {\n switch (dir) {\n case 'left':\n return {\n top: 0,\n left: 0,\n transform: 'translate3d(-100%, 0, 0)',\n width: size,\n height: '100vh'\n };\n\n case 'right':\n return {\n top: 0,\n right: 0,\n transform: 'translate3d(100%, 0, 0)',\n width: size,\n height: '100vh'\n };\n\n case 'bottom':\n return {\n left: 0,\n right: 0,\n bottom: 0,\n transform: 'translate3d(0, 100%, 0)',\n width: '100%',\n height: size\n };\n\n case 'top':\n return {\n left: 0,\n right: 0,\n top: 0,\n transform: 'translate3d(0, -100%, 0)',\n width: '100%',\n height: size\n };\n\n default:\n return {};\n }\n};\n\nvar EZDrawer = function EZDrawer(props) {\n var open = props.open,\n _props$onClose = props.onClose,\n onClose = _props$onClose === void 0 ? function () {} : _props$onClose,\n children = props.children,\n style = props.style,\n _props$enableOverlay = props.enableOverlay,\n enableOverlay = _props$enableOverlay === void 0 ? true : _props$enableOverlay,\n _props$overlayColor = props.overlayColor,\n overlayColor = _props$overlayColor === void 0 ? '#000' : _props$overlayColor,\n _props$overlayOpacity = props.overlayOpacity,\n overlayOpacity = _props$overlayOpacity === void 0 ? 0.4 : _props$overlayOpacity,\n _props$zIndex = props.zIndex,\n zIndex = _props$zIndex === void 0 ? 100 : _props$zIndex,\n _props$duration = props.duration,\n duration = _props$duration === void 0 ? 500 : _props$duration,\n direction = props.direction,\n _props$size = props.size,\n size = _props$size === void 0 ? 250 : _props$size,\n className = props.className,\n customIdSuffix = props.customIdSuffix,\n _props$lockBackground = props.lockBackgroundScroll,\n lockBackgroundScroll = _props$lockBackground === void 0 ? false : _props$lockBackground;\n var bodyRef = useRef(null);\n useEffect(function () {\n var updatePageScroll = function updatePageScroll() {\n bodyRef.current = window.document.querySelector('body');\n\n if (bodyRef.current && lockBackgroundScroll) {\n if (open) {\n bodyRef.current.style.overflow = 'hidden';\n } else {\n bodyRef.current.style.overflow = '';\n }\n }\n };\n\n updatePageScroll();\n }, [open]);\n var idSuffix = useMemo(function () {\n return customIdSuffix || (Math.random() + 1).toString(36).substring(7);\n }, [customIdSuffix]);\n var overlayStyles = {\n backgroundColor: \"\" + overlayColor,\n opacity: \"\" + overlayOpacity,\n zIndex: zIndex\n };\n\n var drawerStyles = _extends({\n zIndex: zIndex + 1,\n transitionDuration: duration + \"ms\"\n }, getDirectionStyle(direction, size), style);\n\n return React.createElement(\"div\", {\n id: 'EZDrawer' + idSuffix,\n className: 'EZDrawer'\n }, React.createElement(\"input\", {\n type: 'checkbox',\n id: 'EZDrawer__checkbox' + idSuffix,\n className: 'EZDrawer__checkbox',\n onChange: onClose,\n checked: open\n }), React.createElement(\"nav\", {\n role: 'navigation',\n id: 'EZDrawer__container' + idSuffix,\n style: drawerStyles,\n className: 'EZDrawer__container ' + className\n }, children), enableOverlay && React.createElement(\"label\", {\n htmlFor: 'EZDrawer__checkbox' + idSuffix,\n id: 'EZDrawer__overlay' + idSuffix,\n className: 'EZDrawer__overlay',\n style: overlayStyles\n }));\n};\n\nexport default EZDrawer;\n//# sourceMappingURL=index.modern.js.map\n"],"names":["useWindowScrollTop","windowScrollTop","setWindowScrollTop","useState","onScroll","useCallback","window","scrollY","useEffect","addEventListener","removeEventListener","Object","freeze","man","woman","preferNotSay","nonBinary","LOCALE","deDE","enUS","enGB","esES","es419","frFR","itIT","jaJP","koKR","nlNL","ptBR","ptPT","ruRU","zhCN","zhTW","EXPERIMENT_COHORTS","de","es","fr","it","ja","ko","nl","pt","ru","zh","control","variantA","variantB","android","iPhone","iPad","chrome","firefox","safari","optedOut","toVal","mix","k","y","str","Array","isArray","length","_args","_key","arguments","tmp","x","i","FrontDoorsPageContainerContext","createContext","displayName","useFrontDoorsPageContainerContext","context","useContext","Error","FrontDoorsPageContainerContextProvider","props","React","Provider","_ref","className","alt","width","height","fill","color","style","role","viewBox","clsx","xmlns","display","id","fillRule","clipRule","d","ref","children","variant","styles","forwardRef","href","otherProps","IconButton","onClick","ariaLabel","options","Button","_extends","type","defaultProps","propTypes","PropTypes","DesktopNav","t","track","state","cohort","menuConfig","showLoginOptionOnly","handleLogoClick","element","action","location","StravaLogo","handleLoginBtnClick","handleSignupBtnClick","properties","signup_copy","signupBtnCopy","key","SvgNavigationMenuNormalLarge","size","title","titleId","undefined","SvgActionsCancelNormalMedium","SvgActionsCancelNormalXsmall","MOBILE_OS","HIDE_BANNER_STORAGE_KEY","SmartBanner","page","category","mobileOS","showCloseBtn","hasApp","appLink","isProcessing","useStravaBranch","_track","useStravaAnalytics","_t","useStravaTranslations","hideBanner","setHideBanner","fields","useMemo","params","hide","isLocalStorageAvailable","localStorage","getItem","handleCloseBanner","setItem","document","dispatchEvent","Event","ActionsCancelNormalXsmall","src","toLowerCase","androidIcon","iOSIcon","includes","LinkButton","disabled","url","CallToAction","label","dataCy","analyticsCtaCopy","cta_copy","MobileNav","isMenuOpen","toggleMenu","mobileAppDownloadBannerRef","useRef","userAgent","showSmartBanner","branch","forceSmartBanner","setForceSmartbanner","body","overflow","queryParams","split","searchParams","URLSearchParams","get","getMobileOS","handleMenuToggle","ActionsCancelNormalLarge","NavigationMenuNormalLarge","Drawer","open","direction","zIndex","customIdSuffix","_","isScrolling","SocialLink","image","altText","target","rel","DEFAULT_LOCALIZED_IMAGES_SIZES","value","minVw","DEFAULT_LOCALIZED_IMAGES_FORMATS","DEFAULT_LOCALIZED_IMAGES_RESOLUTIONS","DEFAULT_LOCALIZED_IMAGES_DIRECTORY","DEFAULT_LOCALIZED_IMAGES_SIZES_ORDER","DEFAULT_LOCALIZED_IMAGES_FORMATS_ORDER","sortImagesBySizeAndFormat","sizeOrder","formatOrder","image1","image2","image1Size","format","image1Format","image2Size","image2Format","indexOf","getImageLocaleDirectory","locale","defaultDirectory","values","getImageLocale","useLocalizedImages","sizes","formats","resolutions","imageImportCallback","logError","images","setImages","useSafeState","async","forEach","file","imageData","error","importImage","imageLocaleDirectory","imageKey","imageSize","imageFormat","imageResolution","resolution","imageLocale","prevImages","initImages","sort","Badge","badge","imgTagFallbackConfig","sources","setSources","fallbackImgSrc","setFallbackImgSrc","isLazy","sourceData","getSourceData","imgWebp1x","find","imgWebp2x","imgPng1x","imgPng2x","webp","join","png","defaultImage","handleBadgeClick","entries","map","_ref2","srcSet","loading","isRequired","APP_STORE_BADGE_SIZES","AppStoreBadges","importBadgeImage","path","default","appleBadgeImages","googleBadgeImages","badges","Footer","dataSharingOptedOut","cpraI18nPrefix","socialLinks","socialTwitterImage","socialYouTubeImage","socialInstagramImage","socialLinkedInImage","socialFacebookImage","socialLink","CPRAComplianceCTA","i18nPrefix","signUpLinkCopy","UPDATE_WINDOW_SCROLL_TOP","reducer","payload","FrontDoorsPageContainer","header","footer","noop","showHeader","showFooter","setTags","setContext","useStravaErrorLogging","headerRef","dispatch","useReducer","providerState","Header","navigator","assign","source","prototype","hasOwnProperty","call","apply","this","_props$onClose","onClose","_props$enableOverlay","enableOverlay","_props$overlayColor","overlayColor","_props$overlayOpacity","overlayOpacity","_props$zIndex","_props$duration","duration","_props$size","_props$lockBackground","lockBackgroundScroll","bodyRef","current","querySelector","idSuffix","Math","random","toString","substring","overlayStyles","backgroundColor","opacity","drawerStyles","transitionDuration","dir","top","left","transform","right","bottom","getDirectionStyle","onChange","checked","htmlFor"],"sourceRoot":""}