{"version":3,"file":"js/94762-b09466bc883ce58c61e0.js","mappings":"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","sources":["webpack://StravaModern/./app/javascript/components/StravaAlert/StravaAlert.scss?a1ac","webpack://StravaModern/./app/javascript/components/StravaAlert/StravaAlert.js","webpack://StravaModern/./app/javascript/constants/alerts/alert-types.js","webpack://StravaModern/./app/javascript/externalSocialPartners.js","webpack://StravaModern/./app/javascript/utils/analytics.js","webpack://StravaModern/./app/javascript/utils/generalUtils.js","webpack://StravaModern/./app/javascript/utils/networking-client.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"alert\":\"StravaAlert--alert--0tRrZ\",\"error\":\"StravaAlert--error--Cha6i\",\"success\":\"StravaAlert--success--52fm+\",\"warning\":\"StravaAlert--warning--JQQmd\",\"info\":\"StravaAlert--info---apjx\"};","import React from 'react';\nimport Alert from '@reach/alert';\nimport PropTypes from 'prop-types';\nimport clsx from '@strava/ui/clsx';\nimport { ALERT_TYPES } from 'constants/alerts/alert-types';\nimport styles from './StravaAlert.scss';\n\nconst StravaAlert = ({ children, className, severity, ...options }) => {\n return (\n \n {children}\n \n );\n};\n\nStravaAlert.defaultProps = {\n className: null\n};\n\nStravaAlert.propTypes = {\n severity: PropTypes.oneOf(Object.values(ALERT_TYPES)).isRequired,\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n};\n\nexport default StravaAlert;\n","export const ALERT_TYPES = Object.freeze({\n warning: 'warning',\n error: 'error',\n info: 'info',\n success: 'success'\n});\n\nexport default { ALERT_TYPES };\n","import { replace } from 'lodash-es';\nimport { logError } from './utils/sentry';\n\nconst appendScriptToBody = ({ script, name }) => {\n if (document.querySelector('body')) {\n document.querySelector('body').appendChild(script);\n } else {\n const e = new Error(`Failed to inject ${name} script`);\n logError(e);\n }\n};\n\n// this injects window.google and not the legacy window.gapi JS api\nexport const injectGoogleScript = (callback) => {\n if (!window.google) {\n const script = document.createElement('script');\n script.src = 'https://accounts.google.com/gsi/client';\n script.async = true;\n script.onload = callback;\n script.id = 'google-client-script';\n appendScriptToBody({ script, name: 'google gsi' });\n } else {\n callback();\n }\n};\n\nexport const injectAppleScript = (locale = 'en_US') => {\n if (!window.apple) {\n const script = window.document.createElement('script');\n const formattedLocale = replace(locale, '-', '_');\n script.src = `https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/${formattedLocale}/appleid.auth.js`;\n script.async = true;\n appendScriptToBody({ script, name: 'apple' });\n }\n};\n\nexport const injectFacebookScript = ({\n appId,\n version,\n callback,\n locale = 'en_US'\n}) => {\n if (!window.FB) {\n window.fbAsyncInit = () => {\n // ref - https://developers.facebook.com/docs/javascript/reference/FB.init/v13.0\n window.FB.init({\n appId,\n xfbml: true,\n version,\n status: true,\n cookie: true\n });\n callback();\n };\n\n // facebook uses format ll_CC - see https://developers.facebook.com/docs/javascript/internationalization\n const formattedLocale = replace(locale, '-', '_');\n\n const script = window.document.createElement('script');\n script.src = `https://connect.facebook.net/${formattedLocale}/sdk.js`;\n script.async = true;\n appendScriptToBody({ script, name: 'facebook-jssdk' });\n } else {\n callback();\n }\n};\n\nexport default { injectGoogleScript, injectAppleScript, injectFacebookScript };\n","import { logMessage } from './sentry';\n\nexport function trackV2({ category, page, action, element, properties = {} }) {\n try {\n window.Strava.ExternalAnalytics.trackV2({\n category,\n page,\n action,\n element,\n properties\n });\n } catch (e) {\n logMessage(\n `Could not execute Strava.ExternalAnalytics.trackV2 event with the category:action ${category}:${action}`\n );\n }\n}\n\nexport default {\n trackV2\n};\n","import { split } from 'lodash-es';\n\nexport { timeout } from './devUtils';\n\nexport const generateRandomId = () =>\n Math.random()\n .toString(36)\n .substring(2);\n\n// Capitalizes all the words and replaces some characters in the string to create a nicer looking title.\n// eg. 'man from the boondocks' => 'Man From The Boondocks'\nconst titleize = (str) =>\n str.replace(\n /\\w\\S*/g,\n (txt) => txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase()\n );\n\nexport const displayName = (\n { firstName = '', lastName = '' },\n options = { forceAnonymize: false, maxLength: 100 }\n) => {\n const { maxLength, forceAnonymize } = options;\n const fullName = `${firstName} ${lastName}`;\n\n if (forceAnonymize || fullName.length > maxLength) {\n if (firstName.length > maxLength - 3) {\n return `${titleize(\n firstName.substring(0, maxLength - 4)\n )}... ${lastName.charAt(0).toUpperCase()}.`;\n }\n return `${titleize(firstName)} ${lastName.charAt(0).toUpperCase()}.`;\n }\n return fullName.trim();\n};\n\nexport const isMobile = () => window.navigator.userAgent.includes('Mobile');\n\nexport const dateYearsAgo = (years) => {\n const d = new Date(new Date().toDateString());\n d.setFullYear(d.getFullYear() - years);\n return d;\n};\n\nexport const parseServerDateString = (date) => {\n const dobArray = split(date, '-');\n return {\n year: parseInt(dobArray[0], 10),\n month: parseInt(dobArray[1], 10),\n day: parseInt(dobArray[2], 10)\n };\n};\n\n// eg. given,\n// \"urls\": {\n// \"100\": \"https://photo_url_1\",\n// \"1800\": \"https://photo_url_2\"\n// }\n// returns https://photo_url_2\nexport const getPhotoWithMaxDimension = (photoUrlHash) => {\n const key = Object.keys(photoUrlHash).reduce((a, b) => (a > b ? a : b));\n return photoUrlHash[key];\n};\n\nexport default {\n displayName,\n generateRandomId,\n isMobile,\n dateYearsAgo,\n parseServerDateString,\n getPhotoWithMaxDimension\n};\n","import axios from 'axios';\n\nfunction baseUrl() {\n const port = window.location.port === '' ? '' : `:${window.location.port}`;\n\n return `${window.location.protocol}//${window.location.hostname}${port}`;\n}\n\nexport function csrfToken() {\n return document\n .querySelector('meta[name=\"csrf-token\"]')\n .getAttribute('content');\n}\n\nexport default function createNetworkingClient(options = {}) {\n return axios.create({\n baseUrl: baseUrl(),\n /**\n * The Axios timeout was set to 5s, causing requests taking longer than 5s to error out, and therefore causing Sentry errors.\n * Several factors can cause a slow request, such as slow network speeds or server.\n * Bumping the timeout to 30s should help account for these slow requests but also ensure that\n * we are not waiting for request resources for an indefinite time.\n * */\n timeout: 30000, // 30 seconds\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-CSRF-TOKEN': csrfToken()\n },\n ...options\n });\n}\n"],"names":["StravaAlert","children","className","severity","options","clsx","styles","defaultProps","ALERT_TYPES","Object","freeze","warning","error","info","success","appendScriptToBody","script","name","document","querySelector","appendChild","e","Error","logError","injectGoogleScript","callback","window","google","createElement","src","async","onload","id","injectAppleScript","locale","apple","formattedLocale","replace","injectFacebookScript","appId","version","FB","fbAsyncInit","init","xfbml","status","cookie","trackV2","category","page","action","element","properties","Strava","ExternalAnalytics","logMessage","generateRandomId","Math","random","toString","substring","titleize","str","s","txt","charAt","toUpperCase","substr","toLowerCase","displayName","firstName","lastName","forceAnonymize","maxLength","fullName","length","trim","isMobile","navigator","userAgent","includes","dateYearsAgo","years","d","Date","toDateString","setFullYear","getFullYear","parseServerDateString","date","dobArray","split","year","parseInt","month","day","getPhotoWithMaxDimension","photoUrlHash","key","keys","reduce","a","b","baseUrl","port","location","protocol","hostname","csrfToken","getAttribute","createNetworkingClient","axios","timeout","headers"],"sourceRoot":""}