\n );\n }\n}\n\nFooterUpsell.propTypes = {\n authUrls: PropTypes.shape({\n facebook: PropTypes.string.isRequired,\n google: PropTypes.string.isRequired,\n email: PropTypes.string.isRequired\n }).isRequired,\n analyticsData: PropTypes.shape().isRequired\n};\n\nexport default FooterUpsell;\n","//\n// This file contains imports, such as React and other 3rd party libraries,\n// that do not change frequently.\n//\n// adding random string to force recompile:\n// A998D3152224818D225A880A9B627F1FB4484DD7E408EACA1B243326ED4AA01B\n// General polifyll's\nimport 'core-js/es6/array';\n// React polifyll's\nimport 'core-js/es6/promise'; // for IE 11 and below\nimport 'core-js/es6/map';\nimport 'core-js/es6/set';\nimport 'core-js/modules/es6.object.assign';\nimport 'core-js/es6/string';\nimport 'raf/polyfill';\n// React core\nimport 'react';\nimport 'react-dom';\n/* eslint-disable no-unused-vars */\nimport PropTypes from 'prop-types';\n// Utils\nimport ReactComponentMounter from './utils/react-component-mounter';\nimport Microfrontend from './apps/Microfrontend';\n// Global nav bar\nimport InviteFriendsButton from './components/shared/InviteFriends/components/InviteFriendsButton';\n\nReactComponentMounter.register({\n Microfrontend,\n InviteFriendsButton\n});\n","// This file is deprecated and only used to move node_modules accessed in the\n// sprockets asset pipeline to webpack entry points\n// adding random string to force recompile:\n// A998D3152224818D225A880A9B627F1FB4484DD7E408EACA1B243326ED4AA01B\n\n// importing jquery using script-loader to mimic adding jQuery via a script tag\n/* eslint-disable no-unused-vars,import/extensions */\nimport 'jquery/dist/jquery.min.js';\nimport 'leaflet/dist/leaflet.js';\nimport 'dexie/dist/dexie.min.js';\nimport 'intersection-observer/intersection-observer.js';\nimport '@strava/clio/dist/strava_analytics.min.js';\nimport '@strava/autotrack/autotrack.js';\nimport 'dropzone/dist/dropzone.js';\nimport 'blueimp-load-image/js/load-image.all.min.js';\nimport 'dropzone/dist/min/dropzone.min.css';\n\nimport { setPublicServiceEnv } from './utils/public-service-env';\nimport { devLog, isDev } from './utils/devUtils';\nimport { logError } from './utils/sentry';\n\n// Expose method on global scope that sets public keys that are commonly passed\n// to 3rd party libs or tooling.\nif (window.stravaPublicServiceEnv === undefined) {\n window.stravaPublicServiceEnv = setPublicServiceEnv;\n}\n\n// check if global libraries are being loaded multiple times.\n// Loading the libs might cause issues like https://reactjs.org/docs/error-decoder.html/?invariant=321\n// since react is loaded twice etc\nif (window.globalLibsLoaded === undefined) {\n window.globalLibsLoaded = true;\n} else if (isDev()) {\n // eslint-disable-next-line no-alert\n alert(\n 'WARNING: global libraries are loaded twice on this page. This could cause react errors.'\n );\n} else {\n logError(\n new Error(`global libraries are loaded twice on - ${window.location.href}`)\n );\n}\n\ndevLog('loading global libraries');\n","import MediaQuery from 'react-responsive';\n\nexport const breakpoints = {\n screenXs: 480,\n screenXsMax: 767,\n screenSm: 768,\n screenSmMax: 991,\n screenMd: 992,\n screenMdMax: 1199,\n screenLg: 1200,\n screenLgMax: 1249,\n screenXl: 1250\n};\n\nexport const matchMedia = {\n screenXs() {\n return window.matchMedia(`(max-width: ${breakpoints.screenXs}px)`).matches;\n },\n\n screenSm() {\n return window.matchMedia(`(max-width: ${breakpoints.screenSm}px)`).matches;\n },\n\n screenMd() {\n return window.matchMedia(`(max-width: ${breakpoints.screenMd}px)`).matches;\n },\n\n screenLg() {\n return window.matchMedia(`(max-width: ${breakpoints.screenLg}px)`).matches;\n },\n\n screenXl() {\n return window.matchMedia(`(max-width: ${breakpoints.screenXl}px)`).matches;\n }\n};\n\nexport default MediaQuery;\n","// Object containing no secret key value pairs that are expected to be seen and\n// used in the browser. This keys are commonly passed to 3rd party libs or tooling.\n//\n// Data that gets set to this object is set in the following file:\n// app/views/common/_react_public_service_env.haml\n//\n// Do not set values directly into this object here as that is not intended use\nconst publicServiceEnv = {};\n\n/**\n * Sets data to an object and freezes it on the initial call.\n * @param {Object} envData Object containing key value pairs that are not nested objects\n */\nfunction setPublicServiceEnv(envData) {\n // Only update the object if it's empty as we do not want to allow any updated\n // after the initial call to this method\n if (Object.keys(publicServiceEnv).length === 0) {\n const keys = Object.keys(envData);\n\n if (keys.length > 0) {\n keys.forEach((value) => {\n publicServiceEnv[value] = envData[value];\n });\n\n // Freeze object so that it can not be updated or changed\n Object.freeze(publicServiceEnv);\n }\n }\n}\n\nexport { publicServiceEnv, setPublicServiceEnv };\n"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","all","slice","t","keys","Object","module","exports","streams","useState","rabbitIndex","setRabbitIndex","Map","latLng","latlng","className","styles","Polyline","Marker","src","startMarker","alt","endMarker","rabbitMarker","ElevationChart","height","units","unitSystem","elevation","altitude","distance","onUpdateMarker","index","onMouseLeave","formatters","ElevationFormatter","I18n","DistanceFormatter","PercentFormatter","AthleteBanner","name","avatarUrl","location","followersCount","followAthleteUrl","totalDistance","distanceUnit","totalActivities","analyticsData","Avatar","type","href","onClick","trackV2","element","action","Stats","listClassName","Stat","label","value","labelClassName","charAt","toUpperCase","Date","getFullYear","defaultProps","CommentBody","body","formattedTokens","token","key","path","text","Comment","displayName","avatar","athleteLink","hideAthleteLink","num","comments","totalCommentCount","activityCommentUrl","comment","Summary","date","detailedType","kudosCount","commentCount","achievementsCount","time","calories","activityType","toLowerCase","translatedActivityType","dateTime","ActivityIcon","size","title","noWrap","content","Math","ceil","ActivityCard","activity","image","start_date_local","detailed_type","activity_type","Upsell","athlete","activities","athlete_name","maxWidth","breakpoints","photoSrc","photo","urls","Photos","photos","length","displayPhotos","overflowCount","unique_id","onKeyDown","role","tabIndex","caption","props","TYPES","ActivityPublic","present","authUrls","activityComment","relatedActivities","FooterUpsell","lazy","React","alpineski","small","xsmall","backcountryski","canoeing","crossfit","ebikeride","emountainbikeride","elliptical","golf","gravelride","handcycle","hike","iceskate","inlineskate","kayaking","kitesurf","mountainbikeride","nordicski","ride","rockclimbing","rollerski","rowing","run","sail","skateboard","snowboard","snowshoe","soccer","stairstepper","standuppaddling","surfing","swim","trailrun","velomobile","virtualride","virtualrun","walk","watersport","weighttraining","wheelchair","windsurf","wintersport","workout","yoga","SportTypeIcon","fallback","createLink","selector","options","window","Strava","BranchIO","done","link","document","querySelector","setAttribute","err","console","warn","trackClickEvent","componentDidMount","matchMedia","Branch","channel","feature","render","this","minWidth","facebook","google","email","ReactComponentMounter","Microfrontend","InviteFriendsButton","undefined","stravaPublicServiceEnv","setPublicServiceEnv","globalLibsLoaded","isDev","alert","logError","devLog","screenXs","screenXsMax","screenSm","screenSmMax","screenMd","screenMdMax","screenLg","screenLgMax","screenXl","matches","MediaQuery","publicServiceEnv","envData","forEach","freeze"],"sourceRoot":""}