{"version":3,"file":"js/64585-2e006b8ed75d58c35732.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/Alert/Alert.module.scss?7e0f","webpack://StravaModern/./node_modules/@strava/ui/Alert/Alert.tsx","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/@strava/constants/src/appConstants.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/utils/src/utils.ts","webpack://StravaModern/./node_modules/@strava/ui/Alert/AlertProvider/AlertContext.tsx","webpack://StravaModern/./node_modules/@strava/ui/Alert/AlertProvider/AlertContainer.module.scss?1a42","webpack://StravaModern/./node_modules/@strava/ui/Alert/AlertProvider/AlertContainer.tsx","webpack://StravaModern/./node_modules/@strava/ui/Button/Button.tsx","webpack://StravaModern/./node_modules/@strava/ui/Button/LinkButton.tsx","webpack://StravaModern/./node_modules/@strava/ui/Input/Input.module.scss?50e4","webpack://StravaModern/./node_modules/@strava/ui/Input/Input.tsx","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/icons/dist/ActionsVisibleDisabledNormalSmall.js","webpack://StravaModern/./node_modules/@strava/ui/node_modules/@strava/icons/dist/ActionsVisibleNormalSmall.js","webpack://StravaModern/./node_modules/@strava/ui/Input/PasswordInput.module.scss?7172","webpack://StravaModern/./node_modules/@strava/ui/Input/PasswordInput.tsx","webpack://StravaModern/./node_modules/@strava/ui/Spinner/Spinner.module.scss?87e9","webpack://StravaModern/./node_modules/@strava/ui/Spinner/Spinner.tsx","webpack://StravaModern/./node_modules/@strava/ui/VisuallyHidden/VisuallyHidden.tsx","webpack://StravaModern/./node_modules/@strava/ui/clsx/clsx.ts","webpack://StravaModern/./node_modules/email-validator/index.js","webpack://StravaModern/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://StravaModern/./node_modules/@strava/ui/Button/styles.module.scss?9bcd","webpack://StravaModern/./node_modules/react-google-recaptcha/lib/esm/recaptcha.js","webpack://StravaModern/./node_modules/react-async-script/lib/esm/async-script-loader.js","webpack://StravaModern/./node_modules/react-google-recaptcha/lib/esm/recaptcha-wrapper.js","webpack://StravaModern/./node_modules/react-google-recaptcha/lib/esm/index.js"],"sourcesContent":["import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst 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","// 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, { ComponentPropsWithoutRef, ReactNode, useState } from 'react';\n// import ReachAlert from '@reach/alert';\nimport {\n ActionsCancelCircleHighlightedMedium as ErrorIcon,\n ActionsCheckCircleOnMedium as SuccessIcon,\n NavigationWarningHighlightedMedium as WarningIcon,\n NavigationInformationNormalMedium as InfoIcon,\n ActionsCancelNormalSmall as CancelIcon\n} from '@strava/icons';\nimport { useInterval } from '@strava/react-hooks';\nimport { isTest } from '@strava/utils';\nimport clsx from '../clsx';\nimport VisuallyHidden from '../VisuallyHidden';\nimport styles from './Alert.module.scss';\n\nexport const AlertStatus = {\n ERROR: 'error',\n SUCCESS: 'success',\n WARNING: 'warning',\n INFO: 'info'\n} as const;\n\nexport type AlertStatusType = (typeof AlertStatus)[keyof typeof AlertStatus];\n\nexport type AlertStyleType =\n | 'hasError'\n | 'hasSuccess'\n | 'hasWarning'\n | 'hasInfo';\nexport type AlertButtonStyleType =\n | 'buttonError'\n | 'buttonSuccess'\n | 'buttonWarning'\n | 'buttonInfo';\n\nconst ALERT_DELAY = 8000;\n\nconst getAlertDetails = ({\n type,\n iconSize\n}: {\n type: AlertStatusType;\n iconSize: number;\n}): {\n indicatorIcon: ReactNode;\n messageType: AlertStatusType;\n alertStyle: AlertStyleType;\n buttonStyle: AlertButtonStyleType;\n} =>\n ({\n [AlertStatus.ERROR]: {\n indicatorIcon: (\n \n ),\n messageType: AlertStatus.ERROR,\n alertStyle: 'hasError' as const,\n buttonStyle: 'buttonError' as const\n },\n [AlertStatus.SUCCESS]: {\n indicatorIcon: (\n \n ),\n messageType: AlertStatus.SUCCESS,\n alertStyle: 'hasSuccess' as const,\n buttonStyle: 'buttonSuccess' as const\n },\n [AlertStatus.WARNING]: {\n indicatorIcon: (\n \n ),\n messageType: AlertStatus.WARNING,\n alertStyle: 'hasWarning' as const,\n buttonStyle: 'buttonWarning' as const\n },\n [AlertStatus.INFO]: {\n indicatorIcon: (\n \n ),\n messageType: AlertStatus.INFO,\n alertStyle: 'hasInfo' as const,\n buttonStyle: 'buttonInfo' as const\n }\n }[type]);\n\nconst fadeStyles = {\n enter: isTest() ? '' : 'fadeIn',\n exit: isTest() ? '' : 'fadeOut'\n};\n\nexport interface AlertProps extends ComponentPropsWithoutRef<'div'> {\n children: ReactNode;\n alertType?: AlertStatusType;\n autoDismiss?: boolean;\n autoDismissDelay?: number;\n className?: string;\n contentPosition?: 'left' | 'center' | 'right';\n hideCloseButton?: boolean;\n hideIcon?: boolean;\n iconSize?: number;\n onClose?: () => void;\n}\n\nexport const Alert = ({\n children,\n className,\n alertType = AlertStatus.ERROR,\n autoDismiss = false,\n autoDismissDelay = ALERT_DELAY,\n contentPosition = 'left',\n hideCloseButton = false,\n hideIcon = true,\n iconSize = 32,\n onClose = () => {},\n ...options\n}: AlertProps) => {\n const { indicatorIcon, messageType, alertStyle, buttonStyle } =\n getAlertDetails({ type: alertType, iconSize });\n const [fadeStyle, setFadeStyle] = useState(fadeStyles.enter);\n\n const handleOnClose = async () => {\n setFadeStyle(fadeStyles.exit);\n // eslint-disable-next-line no-unused-expressions\n !isTest() && (await new Promise((resolve) => setTimeout(resolve, 0)));\n onClose();\n };\n\n useInterval(\n () => {\n handleOnClose();\n },\n autoDismiss ? autoDismissDelay : null\n );\n\n return (\n \n
\n {/* Icon */}\n {!hideIcon && (\n
{indicatorIcon}
\n )}\n\n {/* Content */}\n \n {messageType}: \n
{children}
\n
\n\n {/* Close Button */}\n {!hideCloseButton && (\n
\n \n \n \n
\n )}\n \n\n {/* Auto Dismiss Progress */}\n {autoDismiss && (\n \n
\n
\n )}\n \n );\n};\n\nexport default Alert;\n","import { useState, useCallback } from 'react';\n\nexport const useQueue = ({ initialValues = [] }) => {\n const [queue, setState] = useState(initialValues);\n\n /**\n * Enqueue; Adds item to queue.\n */\n const enqueue = useCallback((...items) => {\n setState((current) => [...current, ...items]);\n }, []);\n\n /**\n * Dequeue; Removes first item in queue.\n */\n const dequeue = useCallback(() => {\n // Immutable solution to remove first element in array.\n setState((current) => current.slice(1));\n }, []);\n\n /**\n * Update function to allow for more granular control of updating the queue.\n * The `update` function accepts a callback fn where the first arg is the\n * current queue state that we can then manipulate. See tests for examples.\n * */\n const updateQueue = useCallback(\n (fn) => setState((current) => fn([...current])),\n []\n );\n\n /**\n * Remove all items from queue.\n */\n const clearQueue = useCallback(() => setState(() => []), []);\n\n /**\n * Returns the first item in the queue.\n */\n const peek = useCallback(() => {\n if (queue.length > 0) {\n return queue[0];\n }\n\n return undefined;\n }, [queue]);\n\n return {\n queue,\n length: queue.length,\n enqueue,\n dequeue,\n updateQueue,\n clearQueue,\n peek\n };\n};\n\nexport default useQueue;\n","export const YOUNGEST_AGE_ON_PLATFORM = 13;\n\nexport const YOUNGEST_AGE_FOR_HEALTH_AND_PROMO = 16;\n\nexport const GENDER = Object.freeze({\n man: 'man',\n woman: 'woman',\n preferNotSay: 'prefer_not_say',\n nonBinary: 'nonbinary'\n});\n\nexport const LOCALE = Object.freeze({\n deDE: 'de-DE',\n enUS: 'en-US',\n enGB: 'en-GB',\n esES: 'es-ES',\n es419: 'es-419',\n frFR: 'fr-FR',\n itIT: 'it-IT',\n jaJP: 'ja-JP',\n koKR: 'ko-KR',\n nlNL: 'nl-NL',\n ptBR: 'pt-BR',\n ptPT: 'pt-PT',\n ruRU: 'ru-RU',\n zhCN: 'zh-CN',\n zhTW: 'zh-TW'\n});\n\n// If a language has more than one locale, the first in the list is the default\nexport const LANGUAGE_LOCALES = Object.freeze({\n de: [LOCALE.deDE],\n // en is intentionally omitted here since English is the global default\n es: [LOCALE.esES, LOCALE.es419],\n fr: [LOCALE.frFR],\n it: [LOCALE.itIT],\n ja: [LOCALE.jaJP],\n ko: [LOCALE.koKR],\n nl: [LOCALE.nlNL],\n pt: [LOCALE.ptPT, LOCALE.ptBR],\n ru: [LOCALE.ruRU],\n zh: [LOCALE.zhCN, LOCALE.zhTW]\n});\n\nexport const EXPERIMENT_COHORTS = Object.freeze({\n control: 'control',\n variantA: 'variant-a',\n variantB: 'variant-b'\n});\n\nexport const MOBILE_OS = Object.freeze({\n android: 'android',\n iPhone: 'iphone',\n iPad: 'ipad'\n});\n\nexport const SUPPORTED_BROWSERS = Object.freeze({\n chrome: 'chrome',\n firefox: 'firefox',\n safari: 'safari'\n});\n\n// universal link paths from 'apple-app-site-association' file in active\nexport const APPLE_APP_LINK_PATHS = [\n '/dashboard',\n '/activities/*',\n '/athletes/*',\n '/segments/*',\n '/challenges/*',\n '/videos/*',\n '/routes/*',\n '/premium/*',\n '/settings/*',\n '/shop/*',\n '/athlete/*',\n '/clubs/*',\n '/summit/join',\n '/summit/perks',\n '/oauth/mobile/authorize'\n];\n\nexport const ATHLETES_VISIBILITY = Object.freeze({\n optedOut: 'opted_out' // Strava::Athletes::Visibility::OPTED_OUT\n});\n\nexport default {\n YOUNGEST_AGE_ON_PLATFORM,\n YOUNGEST_AGE_FOR_HEALTH_AND_PROMO,\n GENDER,\n LOCALE,\n EXPERIMENT_COHORTS,\n MOBILE_OS,\n SUPPORTED_BROWSERS,\n APPLE_APP_LINK_PATHS,\n ATHLETES_VISIBILITY\n};\n","import {\n MOBILE_OS,\n SUPPORTED_BROWSERS,\n APPLE_APP_LINK_PATHS\n} from '@strava/constants/src/appConstants';\nimport { isString } from 'lodash-es';\nimport camelCase from 'lodash-es/camelCase';\nimport snakeCase from 'lodash-es/snakeCase';\nimport isObject from 'lodash-es/isObject';\nimport { CamelCasedPropertiesDeep, SnakeCasedPropertiesDeep } from 'type-fest';\n\nexport const generateRandomId = () => Math.random().toString(36).substring(2);\n\n// Capitalizes all the words and replaces some characters in the string to create a nicer looking title.\n// eg. 'man from the boondocks' => 'Man From The Boondocks'\nexport const titleize = (sentence: string) => {\n return sentence\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n};\n\nexport const displayName = (\n { firstName = '', lastName = '' },\n options = { forceAnonymize: false, maxLength: 100 }\n) => {\n const { maxLength, forceAnonymize } = options;\n const fullName = `${firstName} ${lastName}`;\n\n if (forceAnonymize || fullName.length > maxLength) {\n if (firstName.length > maxLength - 3) {\n return `${titleize(firstName.substring(0, maxLength - 4))}... ${lastName\n .charAt(0)\n .toUpperCase()}.`;\n }\n return `${titleize(firstName)} ${lastName.charAt(0).toUpperCase()}.`;\n }\n return fullName.trim();\n};\n\n/**\n * Checks to see if device is mobile\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {boolean} - true if the device is mobile\n */\nexport const isMobile = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n // ref - https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#mobile_tablet_or_desktop\n return userAgent.toLowerCase().includes('mobi');\n }\n return false;\n};\n\n/**\n * Determines the OS for mobile devices\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {(string|null)} - one of ['android', 'ipad', 'iphone'] or null for unknown\n */\nexport const getMobileOS = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n if (userAgent.includes('Android')) {\n return MOBILE_OS.android;\n }\n if (userAgent.includes('iPad')) {\n return MOBILE_OS.iPad;\n }\n if (userAgent.includes('iPhone')) {\n return MOBILE_OS.iPhone;\n }\n }\n return null;\n};\n\n/**\n * Determines, in a limited fashion, the browser according to the user agent.\n * NOTE: UAs are notoriously difficult to parse. This is meant as a bare-bones, noncomprehensive parser,\n * based on https://www.whatismybrowser.com/guides/the-latest-user-agent/.\n *\n * The order of conditionals is important, bc some Chrome & Firefox UAs include 'Safari', too.\n * Some Edge UAs may be recognized as Chrome for now, since they can include 'Chrome'. We don't\n * officially support Edge (yet?).\n *\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {(string|null)} - one of ['chrome', 'firefox', 'safari'] or null for unknown/unsupported browser\n */\nexport const getBrowser = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n if (userAgent.includes('Chrome') || userAgent.includes('CriOS')) {\n return SUPPORTED_BROWSERS.chrome;\n }\n if (userAgent.includes('Firefox') || userAgent.includes('FxiOS'))\n return SUPPORTED_BROWSERS.firefox;\n if (userAgent.includes('Safari')) {\n return SUPPORTED_BROWSERS.safari;\n }\n }\n\n return null;\n};\n\n/**\n * Universal links are determined by the paths described in `apple-app-site-association` in active.\n * @param {string} pathname - window.location.pathname or nextjs equivalent\n * @returns {boolean} - whether the pathname string matches\n */\nexport const isUniversalLinkPage = (pathname: string) => {\n if (isString(pathname)) {\n return APPLE_APP_LINK_PATHS.some((path: string) => {\n const pathWithoutAsterisk = path.replace('/*', '');\n return pathname.startsWith(pathWithoutAsterisk);\n });\n }\n return false;\n};\n\n// eg. given,\n// \"urls\": {\n// \"100\": \"https://photo_url_1\",\n// \"1800\": \"https://photo_url_2\"\n// }\n// returns https://photo_url_2\nexport const getPhotoWithMaxDimension = (\n photoUrlHash: Record\n) => {\n if (!isObject(photoUrlHash)) {\n return '';\n }\n const key = Object.keys(photoUrlHash).reduce((a, b) => (a > b ? a : b));\n return photoUrlHash[key];\n};\n\n/**\n * Immutably merges a payload into an item in an array of objects\n * @param {array} array - An array of objects\n * @param {string|number} id - The unique id of the item in the array to update\n * @param {object} payload - the value to merge into the matched item\n * @param {object} options\n * @param {string} [options.idName=id] - the key of the unique identifier\n * @param {bool} [options.upsert=false] - if true, will insert the payload into the array as a new item if no matching item is found\n * @return {array} - A copy of the original array with the matching item updated\n */\nexport function arrayUpdateItemById(\n array: T[],\n id: string | number,\n payload: Partial,\n { idName, upsert }: { idName?: keyof T; upsert?: boolean } = {}\n): T[] {\n let itemFound = false;\n const property = idName || ('id' as keyof T);\n const mappedArray = array.map((item) => {\n itemFound = itemFound || item[property] === id;\n return item[property] === id ? { ...item, ...payload } : item;\n });\n\n return itemFound || !upsert ? mappedArray : ([...array, payload] as T[]);\n}\n\n/**\n * Immutably removes an item from an array by index\n * @param {array} array\n * @param {number} index - the index of the item to remove\n * @return {array} - A copy of the original array with the matching item removed\n */\nexport function arrayRemoveByIndex(array: T[], index: number): T[] {\n return index === -1\n ? array\n : [...array.slice(0, index), ...array.slice(index + 1)];\n}\n\n/**\n * Immutably removes an item from an array of objects\n * @param {array} array - An array of objects\n * @param {string|number} id - The unique id of the item in the array to remove\n * @param {string} [idName=id] - the key of the unique identifier\n * @return {array} - A copy of the original array with the matching item removed\n */\n\nexport function arrayRemoveItemById(\n array: T[],\n propertyValue: string | number,\n idName = 'id'\n): T[] {\n const index = array.findIndex(\n (item) => item[idName as keyof T] === propertyValue\n );\n return arrayRemoveByIndex(array, index);\n}\n\nexport const capitalizeFirstLetter = (string: string) =>\n `${string.charAt(0).toUpperCase()}${string.slice(1)}`;\n\n/**\n * @description Converts Object keys from string of any case to camelCase.\n * Handles nested objects and arrays.\n * */\nexport function convertKeysToCamel(object: T): CamelCasedPropertiesDeep {\n if (Array.isArray(object)) {\n return (object as unknown[]).map((item) =>\n convertKeysToCamel(item)\n ) as CamelCasedPropertiesDeep;\n }\n\n if (isObject(object)) {\n return Object.keys(object).reduce((o, k) => {\n const key = camelCase(k);\n const value = object[\n k as keyof typeof object\n ] as CamelCasedPropertiesDeep;\n\n if (isObject(value)) {\n return {\n ...o,\n [key]: convertKeysToCamel(value)\n };\n }\n\n if (Array.isArray(value)) {\n return {\n ...o,\n [key]: (value as unknown[]).map((item) => convertKeysToCamel(item))\n };\n }\n\n return {\n ...o,\n [key]: value\n };\n }, {} as CamelCasedPropertiesDeep);\n }\n\n return object as CamelCasedPropertiesDeep;\n}\n\n/**\n * @description Converts Object keys from string of any case to snakeCase.\n * Handles nested objects and arrays.\n * */\nexport function convertKeysToSnake(object: T): SnakeCasedPropertiesDeep {\n if (Array.isArray(object)) {\n return (object as unknown[]).map((item) =>\n convertKeysToSnake(item)\n ) as SnakeCasedPropertiesDeep;\n }\n\n if (isObject(object)) {\n return Object.keys(object).reduce((o, k) => {\n const key = snakeCase(k);\n const value = object[\n k as keyof typeof object\n ] as SnakeCasedPropertiesDeep;\n\n if (isObject(value)) {\n return {\n ...o,\n [key]: convertKeysToSnake(value)\n };\n }\n\n if (Array.isArray(value)) {\n return {\n ...o,\n [key]: (value as unknown[]).map((item) => convertKeysToSnake(item))\n };\n }\n\n return {\n ...o,\n [key]: value\n };\n }, {} as SnakeCasedPropertiesDeep);\n }\n\n return object as SnakeCasedPropertiesDeep;\n}\n\n/**\n * Checks to see if localStorage is available\n *\n * @return {boolean} - true if localStorage can be used\n */\nexport const isLocalStorageAvailable = () => {\n const test = 'test';\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch (e) {\n return false;\n }\n};\n\n/**\n * Appends querystring params to a URL\n *\n * @param {string} originalUrl - The original URL to append params to\n * @param {object} params - An object of key value parameters to append to URL\n * @return {string} - URL with params appended\n */\nexport const addParamsToURL = (originalUrl: string, params: object) => {\n const url = new URL(originalUrl);\n\n Object.entries(params).forEach(([key, value]) => {\n url.searchParams.append(key, value);\n });\n\n return url.toString();\n};\n\n/**\n * Some of our logged-out pages have a full-screen image background.\n * This util helps with setting the background image on the `` element, and\n * just requires passing in the image to be used.\n * @param {string} background\n */\nexport const setFullScreenBackgroundImage = (background: string) => {\n // apply background image directly to ``\n const body = document.querySelector('body');\n if (body) {\n body.style.setProperty('background-image', `url(${background})`);\n body.style.setProperty('background-size', 'cover');\n body.style.setProperty('background-position', 'center');\n }\n};\n\n/**\n * Uses the host to determine if a page is being loaded in staging or localhost.\n *\n * This util function is helpful for apps that run on nextJS which has node process\n * defined as production in both staging and production.\n *\n * @param host - host name\n * @returns {boolean} - true if app is running in staging or local\n */\nexport const isStagingOrLocal = (host: string) =>\n ['staging', 'localhost'].some((_host) => host.includes(_host));\n\n/**\n * Adds an id property to each object in an array. Uses the object's index as the value for the id\n * @param {array} objects - An array of objects\n * @return {array} - A copy of the original array with id property added to each object\n */\nexport const arrayAddIndexAsId = (objects: Array) =>\n objects.map((object, index) => ({ ...object, id: index }));\n","import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo\n} from 'react';\nimport { useQueue } from '@strava/react-hooks';\nimport { generateRandomId } from '@strava/utils';\nimport { AlertStatusType } from '../Alert';\n\nexport interface AlertConfig {\n alertType: AlertStatusType;\n content: ReactNode;\n containerId?: string;\n id?: string;\n className?: string;\n autoDismiss?: boolean;\n autoDismissDelay?: number;\n contentPosition?: 'left' | 'center' | 'right';\n hideCloseButton?: boolean;\n hideIcon?: boolean;\n iconSize?: number;\n onClose?: () => void;\n}\n\nexport interface AlertState {\n alerts: AlertConfig[];\n showAlert: (config: AlertConfig) => string;\n hideAlert: (id: string) => void;\n clearAlerts: (containerId?: string) => void;\n}\n\nconst AlertContext = createContext(undefined);\nAlertContext.displayName = 'AlertContext';\n\nexport const useAlertContext = () => {\n const context = useContext(AlertContext);\n\n // Fail fast if useAlertContext hook is used outside the Provider.\n if (!context) {\n throw new Error(`useAlertContext must be used within the AlertProvider`);\n }\n\n return context;\n};\n\ninterface AlertProviderProps {\n children: ReactNode;\n}\n\nexport const AlertProvider = ({ children }: AlertProviderProps) => {\n const { queue, updateQueue, clearQueue } = useQueue({\n initialValues: []\n });\n\n /**\n * @description Display an alert.\n *\n * @param {Object} alertConfig\n * @param {'error' | 'warning' | 'info' | 'success'} alertConfig.alertType\n * @param {ReactNode} alertConfig.content - Message to display in the the content of the Alert Component.\n * @param {string} [alertConfig.containerId=\"base\"] - It's used to identify which `AlertContainer` the alert is associated to.\n * @param {string | number} [alertConfig.id] - Optional; by default id is randomly generated. Used to update or close alert.\n * @param {string} [alertConfig.className] - The className passed to Alert component.\n * @param {boolean} [alertConfig.autoDismiss=false] - Determine if alert will auto dismiss/close.\n * @param {number} [alertConfig.autoDismissDelay=8000] - Delay in ms that alert will auto dismiss.\n * @param {'left' | 'center' | 'right'} [alertConfig.contentPosition=\"left\"] - Position to align content inside of alert container.\n * @param {boolean} [alertConfig.hideCloseButton=false] - Hides the close button, alert can only be closed programmatically.\n * @param {boolean} [alertConfig.hideIcon=false] - Display or hide alert icon.\n * @param {number} [alertConfig.iconSize=32] - The Alert's SVG icon's width and height.\n * @param {Function} [alertConfig.onClose] - Callback fn; called when alert closes.\n *\n * @return {string} - Alert ID\n */\n const showAlert = useCallback(\n (alertConfig: AlertConfig) => {\n const id = alertConfig.id ?? generateRandomId();\n const containerId = alertConfig.containerId ?? 'base';\n\n updateQueue((alerts) => {\n const hasAlert =\n alertConfig?.id &&\n alerts.some((alert) => alert.id === alertConfig.id);\n // Check if alert exist in queue.\n // If true then return hasAlerts\n // Else add/append alert to queue.\n if (hasAlert) {\n return alerts;\n }\n\n return [...alerts, { ...alertConfig, id, containerId }];\n });\n\n return `${id}`;\n },\n [updateQueue]\n );\n\n /**\n * @description Hide an alert by id.\n *\n * @param {string} id - Unique id to hide/remove alert.\n *\n * @return {boolean}\n * */\n const hideAlert = useCallback(\n (id) =>\n updateQueue((alerts) =>\n alerts.filter((alert) => {\n if (alert.id === id) {\n // eslint-disable-next-line no-unused-expressions\n alert?.onClose?.();\n return false;\n }\n\n return true;\n })\n ),\n [updateQueue]\n );\n\n /**\n * @description Clears/remove all alerts.\n * If no `containerId` provided then removes ALL alerts. Else if `containerId`\n * provided then clears alerts for specific container when working with multiple containers.\n *\n * @param {string} [containerId] - Optional; Clear alerts for specific container when working with multiple containers.\n *\n * @return {boolean}\n * */\n const clearAlerts = useCallback(\n (containerId) => {\n // If containerId is passed then remove all alerts for specific container\n if (containerId) {\n return updateQueue((alerts) =>\n alerts.filter((alert) => {\n if (alert.containerId === containerId) {\n // eslint-disable-next-line no-unused-expressions\n alert?.onClose?.();\n return false;\n }\n\n return true;\n })\n );\n }\n // Else clear entire queue\n return clearQueue();\n },\n [updateQueue, clearQueue]\n );\n\n const providerState = useMemo(\n () => ({\n alerts: queue,\n showAlert,\n hideAlert,\n clearAlerts\n }),\n [queue, showAlert, hideAlert, clearAlerts]\n );\n\n return (\n \n {children}\n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"alertContainerInfoContainer\":\"AlertProvider--alertContainerInfoContainer--dxEXE\",\"alertContainerInfo\":\"AlertProvider--alertContainerInfo--RDrkO\"};","import React from 'react';\nimport { AlertConfig, useAlertContext } from './AlertContext';\nimport Alert from '../Alert';\nimport styles from './AlertContainer.module.scss';\n\nconst defaultTranslateAlertInfoText = (\n totalAlertsShown: number,\n totalAlerts: number\n) => `Showing ${totalAlertsShown} of ${totalAlerts} alerts`;\n\ninterface AlertContainerProps {\n containerId?: string;\n limit?: number;\n shouldShowAlertInfoText?: boolean;\n translateAlertInfoText?: typeof defaultTranslateAlertInfoText;\n}\n\nexport const AlertContainer = ({\n containerId = 'base',\n limit,\n shouldShowAlertInfoText = true,\n translateAlertInfoText = defaultTranslateAlertInfoText\n}: AlertContainerProps) => {\n const { alerts, hideAlert } = useAlertContext();\n\n const handleOnClose = (id?: string) => {\n if (id) {\n hideAlert(id);\n }\n };\n\n const filterLimit = (_: unknown, index: number) => !limit || index < limit;\n const filterContainer = (alert: AlertConfig) =>\n alert?.containerId === containerId;\n\n const totalAlerts = alerts.filter(filterContainer).length;\n const totalAlertsShown = alerts\n .filter(filterContainer)\n .filter(filterLimit).length;\n\n return (\n <>\n {alerts\n .filter(filterContainer)\n .filter(filterLimit)\n .map(\n ({\n alertType,\n id,\n content,\n containerId: containerIdProp,\n ...rest\n }) => (\n handleOnClose(id)}\n >\n {content}\n \n )\n )}\n {shouldShowAlertInfoText && totalAlerts > totalAlertsShown && (\n \n
\n {translateAlertInfoText(totalAlertsShown, totalAlerts)}\n
\n \n )}\n \n );\n};\n\nexport default AlertContainer;\n","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 {\"input\":\"Input--input--myCs3\"};","import React, { forwardRef } from 'react';\nimport clsx from '@strava/ui/clsx';\nimport styles from './Input.module.scss';\n\ntype InputProps = React.ComponentPropsWithoutRef<'input'>;\n\nexport const Input = forwardRef(\n ({ className, ...props }, ref) => (\n \n )\n);\n\nexport default Input;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsVisibleDisabledNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsVisibleDisabledNormalSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsVisibleDisabledNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsVisibleDisabledNormalSmall;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsVisibleNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsVisibleNormalSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsVisibleNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsVisibleNormalSmall;\n","// extracted by mini-css-extract-plugin\nexport default {\"passwordInput\":\"Input--passwordInput--ARtRG\",\"showPasswordButton\":\"Input--showPasswordButton--9Ubgm\"};","import React, { forwardRef, useState } from 'react';\nimport clsx from '@strava/ui/clsx';\nimport ActionsVisibleDisabledNormalSmall from '@strava/icons/ActionsVisibleDisabledNormalSmall';\nimport ActionsVisibleNormalSmall from '@strava/icons/ActionsVisibleNormalSmall';\nimport VisuallyHidden from '../VisuallyHidden';\nimport Input from '.';\n\nimport styles from './PasswordInput.module.scss';\n\nexport type PasswordInputProps = React.ComponentPropsWithoutRef<'input'> & {\n showPasswordText: string; // translated text for accessibility. Should inform users that clicking show password button will display the password on the screen\n hidePasswordText: string;\n};\n\nconst PasswordInput = forwardRef(\n ({ showPasswordText, hidePasswordText, className, ...props }, ref) => {\n const [passwordIsVisible, setPasswordIsVisible] = useState(false);\n\n return (\n
\n \n setPasswordIsVisible((prev) => !prev)}\n className={styles.showPasswordButton}\n type=\"button\"\n role=\"switch\"\n aria-checked={passwordIsVisible}\n title={passwordIsVisible ? hidePasswordText : showPasswordText}\n >\n {passwordIsVisible ? (\n \n ) : (\n \n )}\n \n {passwordIsVisible ? hidePasswordText : showPasswordText}\n \n \n
\n );\n }\n);\n\nexport default PasswordInput;\n","// extracted by mini-css-extract-plugin\nexport default {\"spinner\":\"Spinner--spinner--VZwB-\",\"graphic\":\"Spinner--graphic--D-BJP\",\"spin\":\"Spinner--spin--Rlswq\"};","import React from 'react';\nimport clsx from '../clsx';\n\nimport styles from './Spinner.module.scss';\n\nexport type SpinnerProps = {\n color?: 'default' | 'white';\n size?: number;\n};\n\nconst Spinner = ({ color = 'default', size = 20 }: SpinnerProps) => (\n \n \n \n);\n\nexport default Spinner;\n","import 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","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","\"use strict\";\r\n\r\nvar tester = /^[-!#$%&'*+\\/0-9=?A-Z^_a-z{|}~](\\.?[-!#$%&'*+\\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\\.?[a-zA-Z0-9])*\\.[a-zA-Z](-?[a-zA-Z0-9])+$/;\r\n// Thanks to:\r\n// http://fightingforalostcause.net/misc/2006/compare-email-regex.php\r\n// http://thedailywtf.com/Articles/Validating_Email_Addresses.aspx\r\n// http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses/201378#201378\r\nexports.validate = function(email)\r\n{\r\n\tif (!email)\r\n\t\treturn false;\r\n\t\t\r\n\tif(email.length>254)\r\n\t\treturn false;\r\n\r\n\tvar valid = tester.test(email);\r\n\tif(!valid)\r\n\t\treturn false;\r\n\r\n\t// Further checking of some things regex can't handle\r\n\tvar parts = email.split(\"@\");\r\n\tif(parts[0].length>64)\r\n\t\treturn false;\r\n\r\n\tvar domainParts = parts[1].split(\".\");\r\n\tif(domainParts.some(function(part) { return part.length>63; }))\r\n\t\treturn false;\r\n\r\n\treturn true;\r\n}","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","// extracted by mini-css-extract-plugin\nexport default {\"btn\":\"Button--btn--E4CP9\",\"default\":\"Button--default--w36Gj\",\"primary\":\"Button--primary--cUgAV\",\"primaryOutline\":\"Button--primaryOutline--ebi0I\",\"secondary\":\"Button--secondary--N9XcZ\",\"icon\":\"Button--icon--BMuQQ\",\"text\":\"Button--text--kl-AI\"};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nvar ReCAPTCHA =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReCAPTCHA, _React$Component);\n\n function ReCAPTCHA() {\n var _this;\n\n _this = _React$Component.call(this) || this;\n _this.handleExpired = _this.handleExpired.bind(_assertThisInitialized(_this));\n _this.handleErrored = _this.handleErrored.bind(_assertThisInitialized(_this));\n _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n _this.handleRecaptchaRef = _this.handleRecaptchaRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = ReCAPTCHA.prototype;\n\n _proto.getValue = function getValue() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this.props.grecaptcha.getResponse(this._widgetId);\n }\n\n return null;\n };\n\n _proto.getWidgetId = function getWidgetId() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this._widgetId;\n }\n\n return null;\n };\n\n _proto.execute = function execute() {\n var grecaptcha = this.props.grecaptcha;\n\n if (grecaptcha && this._widgetId !== undefined) {\n return grecaptcha.execute(this._widgetId);\n } else {\n this._executeRequested = true;\n }\n };\n\n _proto.executeAsync = function executeAsync() {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n _this2.executionResolve = resolve;\n _this2.executionReject = reject;\n\n _this2.execute();\n });\n };\n\n _proto.reset = function reset() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n this.props.grecaptcha.reset(this._widgetId);\n }\n };\n\n _proto.handleExpired = function handleExpired() {\n if (this.props.onExpired) {\n this.props.onExpired();\n } else {\n this.handleChange(null);\n }\n };\n\n _proto.handleErrored = function handleErrored() {\n if (this.props.onErrored) {\n this.props.onErrored();\n }\n\n if (this.executionReject) {\n this.executionReject();\n delete this.executionResolve;\n delete this.executionReject;\n }\n };\n\n _proto.handleChange = function handleChange(token) {\n if (this.props.onChange) {\n this.props.onChange(token);\n }\n\n if (this.executionResolve) {\n this.executionResolve(token);\n delete this.executionReject;\n delete this.executionResolve;\n }\n };\n\n _proto.explicitRender = function explicitRender() {\n if (this.props.grecaptcha && this.props.grecaptcha.render && this._widgetId === undefined) {\n var wrapper = document.createElement(\"div\");\n this._widgetId = this.props.grecaptcha.render(wrapper, {\n sitekey: this.props.sitekey,\n callback: this.handleChange,\n theme: this.props.theme,\n type: this.props.type,\n tabindex: this.props.tabindex,\n \"expired-callback\": this.handleExpired,\n \"error-callback\": this.handleErrored,\n size: this.props.size,\n stoken: this.props.stoken,\n hl: this.props.hl,\n badge: this.props.badge\n });\n this.captcha.appendChild(wrapper);\n }\n\n if (this._executeRequested && this.props.grecaptcha && this._widgetId !== undefined) {\n this._executeRequested = false;\n this.execute();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.explicitRender();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.explicitRender();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._widgetId !== undefined) {\n this.delayOfCaptchaIframeRemoving();\n this.reset();\n }\n };\n\n _proto.delayOfCaptchaIframeRemoving = function delayOfCaptchaIframeRemoving() {\n var temporaryNode = document.createElement(\"div\");\n document.body.appendChild(temporaryNode);\n temporaryNode.style.display = \"none\"; // move of the recaptcha to a temporary node\n\n while (this.captcha.firstChild) {\n temporaryNode.appendChild(this.captcha.firstChild);\n } // delete the temporary node after reset will be done\n\n\n setTimeout(function () {\n document.body.removeChild(temporaryNode);\n }, 5000);\n };\n\n _proto.handleRecaptchaRef = function handleRecaptchaRef(elem) {\n this.captcha = elem;\n };\n\n _proto.render = function render() {\n // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n\n /* eslint-disable no-unused-vars */\n var _this$props = this.props,\n sitekey = _this$props.sitekey,\n onChange = _this$props.onChange,\n theme = _this$props.theme,\n type = _this$props.type,\n tabindex = _this$props.tabindex,\n onExpired = _this$props.onExpired,\n onErrored = _this$props.onErrored,\n size = _this$props.size,\n stoken = _this$props.stoken,\n grecaptcha = _this$props.grecaptcha,\n badge = _this$props.badge,\n hl = _this$props.hl,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"sitekey\", \"onChange\", \"theme\", \"type\", \"tabindex\", \"onExpired\", \"onErrored\", \"size\", \"stoken\", \"grecaptcha\", \"badge\", \"hl\"]);\n /* eslint-enable no-unused-vars */\n\n\n return React.createElement(\"div\", _extends({}, childProps, {\n ref: this.handleRecaptchaRef\n }));\n };\n\n return ReCAPTCHA;\n}(React.Component);\n\nexport { ReCAPTCHA as default };\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.propTypes = {\n sitekey: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n grecaptcha: PropTypes.object,\n theme: PropTypes.oneOf([\"dark\", \"light\"]),\n type: PropTypes.oneOf([\"image\", \"audio\"]),\n tabindex: PropTypes.number,\n onExpired: PropTypes.func,\n onErrored: PropTypes.func,\n size: PropTypes.oneOf([\"compact\", \"normal\", \"invisible\"]),\n stoken: PropTypes.string,\n hl: PropTypes.string,\n badge: PropTypes.oneOf([\"bottomright\", \"bottomleft\", \"inline\"])\n};\nReCAPTCHA.defaultProps = {\n onChange: function onChange() {},\n theme: \"light\",\n type: \"image\",\n tabindex: 0,\n size: \"normal\",\n badge: \"bottomright\"\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport { Component, createElement, forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nvar SCRIPT_MAP = {}; // A counter used to generate a unique id for each component that uses the function\n\nvar idCount = 0;\nexport default function makeAsyncScript(getScriptURL, options) {\n options = options || {};\n return function wrapWithAsyncScript(WrappedComponent) {\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n\n var AsyncScriptLoader =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(AsyncScriptLoader, _Component);\n\n function AsyncScriptLoader(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.state = {};\n _this.__scriptURL = \"\";\n return _this;\n }\n\n var _proto = AsyncScriptLoader.prototype;\n\n _proto.asyncScriptLoaderGetScriptLoaderID = function asyncScriptLoaderGetScriptLoaderID() {\n if (!this.__scriptLoaderID) {\n this.__scriptLoaderID = \"async-script-loader-\" + idCount++;\n }\n\n return this.__scriptLoaderID;\n };\n\n _proto.setupScriptURL = function setupScriptURL() {\n this.__scriptURL = typeof getScriptURL === \"function\" ? getScriptURL() : getScriptURL;\n return this.__scriptURL;\n };\n\n _proto.asyncScriptLoaderHandleLoad = function asyncScriptLoaderHandleLoad(state) {\n var _this2 = this;\n\n // use reacts setState callback to fire props.asyncScriptOnLoad with new state/entry\n this.setState(state, function () {\n return _this2.props.asyncScriptOnLoad && _this2.props.asyncScriptOnLoad(_this2.state);\n });\n };\n\n _proto.asyncScriptLoaderTriggerOnScriptLoaded = function asyncScriptLoaderTriggerOnScriptLoaded() {\n var mapEntry = SCRIPT_MAP[this.__scriptURL];\n\n if (!mapEntry || !mapEntry.loaded) {\n throw new Error(\"Script is not loaded.\");\n }\n\n for (var obsKey in mapEntry.observers) {\n mapEntry.observers[obsKey](mapEntry);\n }\n\n delete window[options.callbackName];\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this3 = this;\n\n var scriptURL = this.setupScriptURL();\n var key = this.asyncScriptLoaderGetScriptLoaderID();\n var _options = options,\n globalName = _options.globalName,\n callbackName = _options.callbackName,\n scriptId = _options.scriptId; // check if global object already attached to window\n\n if (globalName && typeof window[globalName] !== \"undefined\") {\n SCRIPT_MAP[scriptURL] = {\n loaded: true,\n observers: {}\n };\n } // check if script loading already\n\n\n if (SCRIPT_MAP[scriptURL]) {\n var entry = SCRIPT_MAP[scriptURL]; // if loaded or errored then \"finish\"\n\n if (entry && (entry.loaded || entry.errored)) {\n this.asyncScriptLoaderHandleLoad(entry);\n return;\n } // if still loading then callback to observer queue\n\n\n entry.observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n return;\n }\n /*\n * hasn't started loading\n * start the \"magic\"\n * setup script to load and observers\n */\n\n\n var observers = {};\n\n observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n SCRIPT_MAP[scriptURL] = {\n loaded: false,\n observers: observers\n };\n var script = document.createElement(\"script\");\n script.src = scriptURL;\n script.async = true;\n\n for (var attribute in options.attributes) {\n script.setAttribute(attribute, options.attributes[attribute]);\n }\n\n if (scriptId) {\n script.id = scriptId;\n }\n\n var callObserverFuncAndRemoveObserver = function callObserverFuncAndRemoveObserver(func) {\n if (SCRIPT_MAP[scriptURL]) {\n var mapEntry = SCRIPT_MAP[scriptURL];\n var observersMap = mapEntry.observers;\n\n for (var obsKey in observersMap) {\n if (func(observersMap[obsKey])) {\n delete observersMap[obsKey];\n }\n }\n }\n };\n\n if (callbackName && typeof window !== \"undefined\") {\n window[callbackName] = function () {\n return _this3.asyncScriptLoaderTriggerOnScriptLoaded();\n };\n }\n\n script.onload = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.loaded = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n if (callbackName) {\n return false;\n }\n\n observer(mapEntry);\n return true;\n });\n }\n };\n\n script.onerror = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.errored = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n observer(mapEntry);\n return true;\n });\n }\n };\n\n document.body.appendChild(script);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Remove tag script\n var scriptURL = this.__scriptURL;\n\n if (options.removeOnUnmount === true) {\n var allScripts = document.getElementsByTagName(\"script\");\n\n for (var i = 0; i < allScripts.length; i += 1) {\n if (allScripts[i].src.indexOf(scriptURL) > -1) {\n if (allScripts[i].parentNode) {\n allScripts[i].parentNode.removeChild(allScripts[i]);\n }\n }\n }\n } // Clean the observer entry\n\n\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n delete mapEntry.observers[this.asyncScriptLoaderGetScriptLoaderID()];\n\n if (options.removeOnUnmount === true) {\n delete SCRIPT_MAP[scriptURL];\n }\n }\n };\n\n _proto.render = function render() {\n var globalName = options.globalName; // remove asyncScriptOnLoad from childProps\n\n var _this$props = this.props,\n asyncScriptOnLoad = _this$props.asyncScriptOnLoad,\n forwardedRef = _this$props.forwardedRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"asyncScriptOnLoad\", \"forwardedRef\"]); // eslint-disable-line no-unused-vars\n\n\n if (globalName && typeof window !== \"undefined\") {\n childProps[globalName] = typeof window[globalName] !== \"undefined\" ? window[globalName] : undefined;\n }\n\n childProps.ref = forwardedRef;\n return createElement(WrappedComponent, childProps);\n };\n\n return AsyncScriptLoader;\n }(Component); // Note the second param \"ref\" provided by React.forwardRef.\n // We can pass it along to AsyncScriptLoader as a regular prop, e.g. \"forwardedRef\"\n // And it can then be attached to the Component.\n\n\n var ForwardedComponent = forwardRef(function (props, ref) {\n return createElement(AsyncScriptLoader, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n ForwardedComponent.displayName = \"AsyncScriptLoader(\" + wrappedComponentName + \")\";\n ForwardedComponent.propTypes = {\n asyncScriptOnLoad: PropTypes.func\n };\n return hoistStatics(ForwardedComponent, WrappedComponent);\n };\n}","import ReCAPTCHA from \"./recaptcha\";\nimport makeAsyncScriptLoader from \"react-async-script\";\nvar callbackName = \"onloadcallback\";\nvar globalName = \"grecaptcha\";\n\nfunction getOptions() {\n return typeof window !== \"undefined\" && window.recaptchaOptions || {};\n}\n\nfunction getURL() {\n var dynamicOptions = getOptions();\n var hostname = dynamicOptions.useRecaptchaNet ? \"recaptcha.net\" : \"www.google.com\";\n return \"https://\" + hostname + \"/recaptcha/api.js?onload=\" + callbackName + \"&render=explicit\";\n}\n\nexport default makeAsyncScriptLoader(getURL, {\n callbackName: callbackName,\n globalName: globalName\n})(ReCAPTCHA);","import RecaptchaWrapper from \"./recaptcha-wrapper\";\nimport ReCAPTCHA from \"./recaptcha\";\nexport default RecaptchaWrapper;\nexport { ReCAPTCHA };"],"names":["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","AlertStatus","ERROR","SUCCESS","WARNING","INFO","ALERT_DELAY","fadeStyles","enter","exit","_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","style","useQueue","initialValues","queue","setState","enqueue","useCallback","items","_key","arguments","dequeue","slice","updateQueue","fn","clearQueue","peek","length","Object","freeze","man","woman","preferNotSay","nonBinary","LOCALE","deDE","enUS","enGB","esES","es419","frFR","itIT","jaJP","koKR","nlNL","ptBR","ptPT","ruRU","zhCN","zhTW","de","es","fr","it","ja","ko","nl","pt","ru","zh","control","variantA","variantB","android","iPhone","iPad","chrome","firefox","safari","optedOut","AlertContext","createContext","displayName","useAlertContext","context","useContext","Error","AlertProvider","showAlert","alertConfig","Math","random","toString","substring","containerId","alerts","some","alert","hideAlert","filter","clearAlerts","providerState","useMemo","Provider","value","defaultTranslateAlertInfoText","totalAlertsShown","totalAlerts","AlertContainer","limit","shouldShowAlertInfoText","translateAlertInfoText","filterLimit","_","index","filterContainer","map","content","containerIdProp","rest","Alert","_extends","key","Button","variant","forwardRef","href","otherProps","SvgActionsVisibleDisabledNormalSmall","SvgActionsVisibleNormalSmall","showPasswordText","hidePasswordText","passwordIsVisible","setPasswordIsVisible","Input","prev","ActionsVisibleNormalSmall","ActionsVisibleDisabledNormalSmall","clip","clipPath","overflow","position","whiteSpace","toVal","mix","k","y","str","Array","isArray","_args","tmp","x","i","tester","exports","email","test","parts","split","part","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","name","prototype","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","module","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","concat","targetStatics","sourceStatics","descriptor","e","assign","target","source","hasOwnProperty","call","apply","this","_assertThisInitialized","self","ReferenceError","ReCAPTCHA","_React$Component","subClass","superClass","_this","handleExpired","bind","handleErrored","handleChange","handleRecaptchaRef","create","constructor","__proto__","_proto","getValue","grecaptcha","_widgetId","getResponse","getWidgetId","execute","_executeRequested","executeAsync","_this2","reject","executionResolve","executionReject","reset","onExpired","onErrored","token","onChange","explicitRender","wrapper","document","createElement","sitekey","theme","tabindex","stoken","hl","badge","captcha","appendChild","componentDidMount","componentDidUpdate","componentWillUnmount","delayOfCaptchaIframeRemoving","temporaryNode","body","display","firstChild","removeChild","elem","_this$props","childProps","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","SCRIPT_MAP","idCount","callbackName","getScriptURL","window","recaptchaOptions","useRecaptchaNet","globalName","WrappedComponent","wrappedComponentName","AsyncScriptLoader","_Component","state","__scriptURL","asyncScriptLoaderGetScriptLoaderID","__scriptLoaderID","setupScriptURL","asyncScriptLoaderHandleLoad","asyncScriptOnLoad","asyncScriptLoaderTriggerOnScriptLoaded","mapEntry","loaded","obsKey","observers","_this3","scriptURL","_options","scriptId","entry","errored","script","attribute","src","attributes","setAttribute","callObserverFuncAndRemoveObserver","func","observersMap","onload","observer","onerror","removeOnUnmount","allScripts","getElementsByTagName","parentNode","forwardedRef","Component","ForwardedComponent"],"sourceRoot":""}