{"version":3,"file":"js/strava_with_framework-4ebd2f1768099af798c0.js","mappings":"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","sources":["webpack://StravaModern/./app/javascript/components/shared/Modal/styles.scss?227e","webpack://StravaModern/./app/javascript/components/shared/Modal/index.js","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/components/Tagging/styles.scss?aa3d","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/actions.js","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/components/TaggingInterstitial/styles.scss?452f","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/components/TaggingInterstitial/index.js","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/components/TaggingInviteContainer/styles.scss?d591","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/components/FollowersList/styles.scss?258c","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/components/FollowersListItem/styles.scss?b73d","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/const.js","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/components/FollowersListItem/index.js","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/components/FollowersList/index.js","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/components/TaggingLinkCopy/styles.scss?a092","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/components/TaggingLinkCopy/index.js","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/components/TaggingInviteContainer/index.js","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/components/Tagging/index.js","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/reducers.js","webpack://StravaModern/./app/javascript/apps/activities/ActivityTagging/index.js","webpack://StravaModern/./app/javascript/components/map/PrivacyZones.scss?2d7a","webpack://StravaModern/./app/javascript/components/map/PrivacyZones.js","webpack://StravaModern/./app/javascript/components/RangeSelectMap/styles.scss?0489","webpack://StravaModern/./app/javascript/components/RangeSelectMap/index.js","webpack://StravaModern/./app/javascript/components/RangeSlider/Handle/styles.scss?5793","webpack://StravaModern/./app/javascript/components/RangeSlider/Handle/index.js","webpack://StravaModern/./app/javascript/components/RangeSlider/Track/styles.scss?d29c","webpack://StravaModern/./app/javascript/components/RangeSlider/Track/index.js","webpack://StravaModern/./app/javascript/components/RangeSlider/styles.scss?5fb3","webpack://StravaModern/./app/javascript/components/RangeSlider/index.js","webpack://StravaModern/./app/javascript/apps/activities/Truncate/api.js","webpack://StravaModern/./app/javascript/apps/activities/Truncate/index.js","webpack://StravaModern/./app/javascript/apps/activities/RelativeEffort/styles.scss?1b4f","webpack://StravaModern/./app/javascript/apps/activities/RelativeEffort/Disclaimer/styles.scss?f343","webpack://StravaModern/./app/javascript/apps/activities/RelativeEffort/Disclaimer/index.js","webpack://StravaModern/./app/javascript/utils/relative-effort.js","webpack://StravaModern/./app/javascript/apps/activities/RelativeEffort/ActivitySummary/styles.scss?7dd8","webpack://StravaModern/./app/javascript/apps/activities/RelativeEffort/ActivitySummary/index.js","webpack://StravaModern/./app/javascript/apps/activities/RelativeEffort/WeeklySummary/styles.scss?31b4","webpack://StravaModern/./app/javascript/apps/activities/RelativeEffort/WeeklySummary/WeekInsight/styles.scss?c4cb","webpack://StravaModern/./app/javascript/apps/activities/RelativeEffort/WeeklySummary/WeekInsight/index.js","webpack://StravaModern/./app/javascript/apps/activities/RelativeEffort/WeeklySummary/WeekChart/index.js","webpack://StravaModern/./app/javascript/apps/activities/RelativeEffort/WeeklySummary/WeeklyGraph/index.js","webpack://StravaModern/./app/javascript/apps/activities/RelativeEffort/WeeklySummary/Activities/styles.scss?e27e","webpack://StravaModern/./app/javascript/apps/activities/RelativeEffort/WeeklySummary/Activities/index.js","webpack://StravaModern/./app/javascript/apps/activities/RelativeEffort/WeeklySummary/index.js","webpack://StravaModern/./app/javascript/apps/activities/RelativeEffort/index.js","webpack://StravaModern/./app/javascript/apps/activities/ExcludedEfforts/styles.scss?c560","webpack://StravaModern/./app/javascript/apps/segments/ExcludedSegmentEffortsModal/styles.scss?4a1a","webpack://StravaModern/./app/javascript/apps/segments/ExcludedSegmentEffortsModal/components/AbbrUnit/styles.scss?eb5e","webpack://StravaModern/./app/javascript/apps/segments/ExcludedSegmentEffortsModal/components/AbbrUnit/index.js","webpack://StravaModern/./app/javascript/apps/segments/ExcludedSegmentEffortsModal/ExcludedSegmentEffortsModal.js","webpack://StravaModern/./app/javascript/apps/segments/ExcludedSegmentEffortsModal/index.js","webpack://StravaModern/./app/javascript/apps/activities/ExcludedEfforts/index.js","webpack://StravaModern/./app/javascript/apps/activities/CorrectDistance/styles.scss","webpack://StravaModern/./app/javascript/apps/activities/CorrectDistance/CorrectDistance.js","webpack://StravaModern/./app/javascript/apps/activities/CorrectElevation/styles.scss?83e8","webpack://StravaModern/./app/javascript/apps/activities/CorrectElevation/CorrectElevation.js","webpack://StravaModern/./app/javascript/apps/activities/MapTypeInfo/styles.scss?8412","webpack://StravaModern/./app/javascript/components/InfoModal/styles.scss?48fe","webpack://StravaModern/./app/javascript/components/InfoModal/InfoModal.js","webpack://StravaModern/./app/javascript/apps/activities/MapTypeInfo/MapTypeInfo.js","webpack://StravaModern/./app/javascript/apps/activities/HideStatsInfo/styles.scss?6401","webpack://StravaModern/./app/javascript/apps/activities/HideStatsInfo/HideStatsInfo.js","webpack://StravaModern/./app/javascript/components/ActivityDetailsMap/MapControls.scss?59ed","webpack://StravaModern/./app/javascript/components/ActivityDetailsMap/MapControls.js","webpack://StravaModern/./app/javascript/components/ActivityDetailsMap/ActivityDetailsMap.scss?d52d","webpack://StravaModern/./app/javascript/components/ActivityDetailsMap/PrivacyZonePolylines.js","webpack://StravaModern/./app/javascript/components/Video/Video.scss?4fa4","webpack://StravaModern/./app/javascript/components/Video/Video.js","webpack://StravaModern/./app/javascript/components/Video/index.js","webpack://StravaModern/./app/javascript/components/VideoWrapper/VideoWrapper.js","webpack://StravaModern/./app/javascript/components/VideoWrapper/index.js","webpack://StravaModern/./app/javascript/components/StravaMediaLightbox/components/BaseModal/styles.scss?08a0","webpack://StravaModern/./app/javascript/components/StravaMediaLightbox/components/BaseModal/BaseModal.js","webpack://StravaModern/./app/javascript/components/StravaMediaLightbox/components/BaseModal/index.js","webpack://StravaModern/./app/javascript/components/StravaMediaLightbox/components/ReportMediaModal/styles.scss?5496","webpack://StravaModern/./app/javascript/components/StravaMediaLightbox/components/ReportMediaModal/ReportMediaModal.js","webpack://StravaModern/./app/javascript/components/StravaMediaLightbox/components/ReportMediaModal/index.js","webpack://StravaModern/./app/javascript/components/StravaMediaLightbox/components/DescriptionEditModal/DescriptionEditModal.scss?6814","webpack://StravaModern/./app/javascript/components/StravaMediaLightbox/components/DescriptionEditModal/DescriptionEditModal.js","webpack://StravaModern/./app/javascript/components/StravaMediaLightbox/components/DescriptionEditModal/index.js","webpack://StravaModern/./app/javascript/components/StravaMediaLightbox/StravaMediaLightbox.scss?8eed","webpack://StravaModern/./app/javascript/components/StravaMediaLightbox/StravaMediaLightbox.js","webpack://StravaModern/./app/javascript/components/StravaMediaLightbox/index.js","webpack://StravaModern/./app/javascript/components/ActivityDetailsMap/ActivityDetailsMap.js","webpack://StravaModern/./app/javascript/components/ActivityDetailsMap/ActivityDetailsMapWrapper.js","webpack://StravaModern/./app/javascript/components/ActivityDetailsMap/index.js","webpack://StravaModern/./app/javascript/apps/AthleteProfileApp/components/LimitedProfileEntry/styles.scss?ce73","webpack://StravaModern/./app/javascript/apps/AthleteProfileApp/components/LimitedProfileEntry/LimitedProfileEntry.js","webpack://StravaModern/./app/javascript/apps/AthleteProfileApp/components/LimitedProfileEntry/index.js","webpack://StravaModern/./app/javascript/apps/AthleteProfileApp/components/FollowsList/styles.scss?e47f","webpack://StravaModern/./app/javascript/apps/AthleteProfileApp/components/FollowsList/hooks/useFetchFollowers.js","webpack://StravaModern/./app/javascript/apps/AthleteProfileApp/components/FollowsList/FollowsList.js","webpack://StravaModern/./app/javascript/apps/AthleteProfileApp/components/FollowsList/index.js","webpack://StravaModern/./app/javascript/components/ButtonCTAWithCancel/index.scss?8b82","webpack://StravaModern/./app/javascript/components/ButtonCTAWithCancel/index.js","webpack://StravaModern/./app/javascript/apps/settings/EditPastActivitiesApp/components/Step/components/OptionList/index.scss?c52b","webpack://StravaModern/./app/javascript/apps/settings/EditPastActivitiesApp/components/Step/components/OptionList/index.js","webpack://StravaModern/./app/javascript/apps/settings/EditPastActivitiesApp/components/Step/index.js","webpack://StravaModern/./app/javascript/apps/settings/EditPastActivitiesApp/components/Summary/index.scss?c31b","webpack://StravaModern/./app/javascript/apps/settings/EditPastActivitiesApp/components/Summary/index.js","webpack://StravaModern/./app/javascript/apps/settings/EditPastActivitiesApp/index.scss?0e44","webpack://StravaModern/./app/javascript/apps/settings/EditPastActivitiesApp/index.js","webpack://StravaModern/./app/javascript/apps/settings/PartnerIntegrations/actions.js","webpack://StravaModern/./app/javascript/apps/settings/PartnerIntegrations/reducers.js","webpack://StravaModern/./app/javascript/apps/settings/PartnerIntegrations/components/OptOutSetting/index.scss?1265","webpack://StravaModern/./app/javascript/apps/settings/PartnerIntegrations/components/OptOutSetting/index.js","webpack://StravaModern/./app/javascript/apps/settings/PartnerIntegrations/components/PartnerIntegrationsList/index.scss?90e5","webpack://StravaModern/./app/javascript/apps/settings/PartnerIntegrations/components/PartnerIntegrationsList/index.js","webpack://StravaModern/./app/javascript/apps/settings/PartnerIntegrations/index.js","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/components/StreamPrivacySlider/Handle/styles.scss?62a8","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/components/StreamPrivacySlider/Handle/Handle.js","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/components/StreamPrivacySlider/Handle/index.js","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/components/StreamPrivacySlider/Track/styles.scss?cab2","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/components/StreamPrivacySlider/Track/Track.js","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/components/StreamPrivacySlider/Track/index.js","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/components/StreamPrivacySlider/Tick/styles.scss?3f47","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/components/StreamPrivacySlider/Tick/Tick.js","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/components/StreamPrivacySlider/Tick/index.js","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/components/StreamPrivacySlider/styles.scss?11d6","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/components/StreamPrivacySlider/StreamPrivacySlider.js","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/components/StreamPrivacySlider/index.js","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/styles.scss?dbda","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/HideAnywhereApp.js","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAnywhereApp/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/actions.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/reducers.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/Achievements/styles.scss?b6df","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/Achievements/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/Club/styles.scss?5bc9","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/Club/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/Header/styles.scss?2cf6","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/Header/index.js","webpack://StravaModern/./app/javascript/components/CollapsibleTitleWithCaret/styles.scss?9eb6","webpack://StravaModern/./app/javascript/components/CollapsibleTitleWithCaret/index.js","webpack://StravaModern/./app/javascript/components/Discussions/components/CreatePost/styles.scss?e265","webpack://StravaModern/./app/javascript/components/Discussions/components/CreatePost/index.js","webpack://StravaModern/./app/javascript/components/Discussions/components/Comment/styles.scss?297a","webpack://StravaModern/./app/javascript/components/Discussions/components/Comment/index.js","webpack://StravaModern/./app/javascript/components/Discussions/components/CreateComment/styles.scss?6806","webpack://StravaModern/./app/javascript/components/Discussions/components/CreateComment/index.js","webpack://StravaModern/./app/javascript/components/Discussions/components/Comments/styles.scss?2430","webpack://StravaModern/./app/javascript/components/Discussions/components/Comments/index.js","webpack://StravaModern/./app/javascript/components/Discussions/components/ActionsDropdown/styles.scss?df97","webpack://StravaModern/./app/javascript/components/Discussions/components/ActionsDropdown/index.js","webpack://StravaModern/./app/javascript/components/Discussions/components/Post/styles.scss?62c2","webpack://StravaModern/./app/javascript/components/Discussions/components/Post/index.js","webpack://StravaModern/./app/javascript/components/Discussions/styles.scss?a2f2","webpack://StravaModern/./app/javascript/components/Discussions/index.js","webpack://StravaModern/./app/javascript/apps/challenges/shared/components/CollapsibleSection/styles.scss?88fc","webpack://StravaModern/./app/javascript/apps/challenges/shared/components/Leaderboard/useFetchLeaderboardData.js","webpack://StravaModern/./app/javascript/apps/challenges/shared/components/Leaderboard/CurrentPlace/styles.scss?78f2","webpack://StravaModern/./app/javascript/apps/challenges/shared/components/Leaderboard/CurrentPlace/index.js","webpack://StravaModern/./app/javascript/apps/challenges/shared/components/Leaderboard/CategoryTabs/styles.scss?6e14","webpack://StravaModern/./app/javascript/apps/challenges/shared/components/Leaderboard/CategoryTabs/index.js","webpack://StravaModern/./app/javascript/apps/challenges/shared/components/Leaderboard/LeaderboardsTable/styles.scss?21f4","webpack://StravaModern/./app/javascript/apps/challenges/shared/components/Leaderboard/LeaderboardsTable/index.js","webpack://StravaModern/./app/javascript/apps/challenges/shared/components/Leaderboard/styles.scss?afe8","webpack://StravaModern/./app/javascript/apps/challenges/shared/components/Leaderboard/index.js","webpack://StravaModern/./app/javascript/apps/challenges/shared/components/CollapsibleSection/index.js","webpack://StravaModern/./app/javascript/components/shared/Facepile/styles.scss?5a69","webpack://StravaModern/./app/javascript/components/shared/Facepile/index.js","webpack://StravaModern/./app/javascript/components/shared/tabs/Tabs/index.js","webpack://StravaModern/./app/javascript/components/shared/tabs/TabList/styles.scss?7db8","webpack://StravaModern/./app/javascript/components/shared/tabs/TabList/index.js","webpack://StravaModern/./app/javascript/components/shared/tabs/Tab/styles.scss?411e","webpack://StravaModern/./app/javascript/components/shared/tabs/Tab/index.js","webpack://StravaModern/./app/javascript/components/shared/tabs/TabPanel/index.js","webpack://StravaModern/./app/javascript/components/shared/tabs/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/FriendsList/styles.scss?eb65","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/FriendsList/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/Followers/styles.scss?2ce2","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/Followers/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/Progress/index.js","webpack://StravaModern/./app/javascript/utils/validators.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/InviteFriends/components/EmailInput/styles.scss?a2b2","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/InviteFriends/components/EmailInput/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/InviteFriends/components/Email/styles.scss?1be9","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/InviteFriends/components/Email/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/InviteFriends/components/Select/styles.scss?e626","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/InviteFriends/components/Select/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/InviteFriends/components/StravaInvite/styles.scss?c940","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/InviteFriends/components/StravaInvite/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/InviteFriends/components/ShareModal/styles.scss?18f7","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/InviteFriends/components/ShareModal/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/InviteFriends/styles.scss?81d9","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/InviteFriends/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/ChallengeJoinButton/styles.scss?cfda","webpack://StravaModern/./app/javascript/utils/generalUtils.js","webpack://StravaModern/./app/javascript/apps/challenges/shared/helpers/gating_helper.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/ChallengeJoinButton/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/DataGrid/styles.scss?e4b0","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/DataGrid/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/styles.scss?eb93","webpack://StravaModern/./app/javascript/constants/appConstants.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/ChallengeGalleryJoinButton/helper.js","webpack://StravaModern/./app/javascript/components/shared/DropdownDatePicker/styles.scss?7327","webpack://StravaModern/./app/javascript/components/shared/StravaDropdownSelect/StravaDropdownSelect.js","webpack://StravaModern/./app/javascript/components/shared/DropdownDatePicker/DropdownDatePicker.js","webpack://StravaModern/./app/javascript/components/shared/DropdownDatePicker/index.js","webpack://StravaModern/./app/javascript/apps/challenges/shared/components/AgeGateModal/styles.scss?19ca","webpack://StravaModern/./app/javascript/apps/challenges/shared/components/AgeGateModal/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/components/TopSidebar/index.js","webpack://StravaModern/./app/javascript/apps/challenges/Show/styles.scss?a1f1","webpack://StravaModern/./app/javascript/apps/challenges/Show/index.js","webpack://StravaModern/./app/javascript/apps/dashboard/components/MapVisModal/styles.scss?b68d","webpack://StravaModern/./app/javascript/apps/dashboard/components/MapVisModal/MapVisModal.js","webpack://StravaModern/./app/javascript/apps/dashboard/components/MapVisModal/index.js","webpack://StravaModern/./app/javascript/apps/segments/SegmentDetailsSideBar/styles.scss?f45c","webpack://StravaModern/./app/javascript/apps/segments/SegmentDetailsSideBar/components/AvatarWithDataRow/styles.scss?fb23","webpack://StravaModern/./app/javascript/apps/segments/SegmentDetailsSideBar/components/ExcludedSegmentEffortsItem/styles.scss?78bc","webpack://StravaModern/./app/javascript/apps/segments/SegmentDetailsSideBar/components/ExcludedSegmentEffortsItem/index.js","webpack://StravaModern/./app/javascript/apps/segments/SegmentDetailsSideBar/components/AvatarWithDataRow/index.js","webpack://StravaModern/./app/javascript/apps/segments/SegmentDetailsSideBar/components/CardActionsSection/styles.scss?4d27","webpack://StravaModern/./app/javascript/apps/segments/SegmentDetailsSideBar/components/CardActionsSection/index.js","webpack://StravaModern/./app/javascript/apps/segments/SegmentDetailsSideBar/index.js","webpack://StravaModern/./app/javascript/components/StarredSegment/actions.js","webpack://StravaModern/./app/javascript/components/StarredSegment/reducers.js","webpack://StravaModern/./app/javascript/components/StarredSegment/components/StarToggle/index.scss?f7f2","webpack://StravaModern/./app/javascript/components/StarredSegment/components/StarToggle/index.js","webpack://StravaModern/./app/javascript/components/StarredSegment/index.js","webpack://StravaModern/./app/javascript/components/VerifiedSegmentModal/VerifiedSegmentModal.scss?1cf9","webpack://StravaModern/./app/javascript/components/VerifiedSegmentModal/VerifiedSegmentModal.js","webpack://StravaModern/./app/javascript/components/VerifiedSegmentModal/index.js","webpack://StravaModern/./app/javascript/components/VisibilitySetting/actions.js","webpack://StravaModern/./app/javascript/components/VisibilitySetting/reducers.js","webpack://StravaModern/./app/javascript/components/shared/FocusableElement/index.js","webpack://StravaModern/./app/javascript/components/VisibilitySetting/components/ExpandableOptionList/index.scss?5cea","webpack://StravaModern/./app/javascript/components/VisibilitySetting/components/Footer/index.scss?9575","webpack://StravaModern/./app/javascript/components/VisibilitySetting/components/Controls/index.scss?5678","webpack://StravaModern/./app/javascript/components/VisibilitySetting/components/Controls/index.js","webpack://StravaModern/./app/javascript/components/VisibilitySetting/components/Footer/index.js","webpack://StravaModern/./app/javascript/components/VisibilitySetting/components/OptionList/index.scss?b418","webpack://StravaModern/./app/javascript/components/VisibilitySetting/components/Option/index.scss?4d24","webpack://StravaModern/./app/javascript/components/VisibilitySetting/components/Option/index.js","webpack://StravaModern/./app/javascript/components/VisibilitySetting/components/OptionList/index.js","webpack://StravaModern/./app/javascript/components/VisibilitySetting/components/ExpandableOptionList/index.js","webpack://StravaModern/./app/javascript/components/VisibilitySetting/index.js","webpack://StravaModern/./app/javascript/components/MapVisibilityControls/styles.scss?8a0c","webpack://StravaModern/./app/javascript/components/MapVisibilityControls/MapVisibilityControls.js","webpack://StravaModern/./app/javascript/components/MapVisibilityControls/index.js","webpack://StravaModern/./app/javascript/components/StravaMentionsInput/MentionInputStyles.js","webpack://StravaModern/./app/javascript/components/StravaMentionsInput/StravaMentionsInput.scss?a9be","webpack://StravaModern/./app/javascript/components/StravaMentionsInput/StravaMentionsInput.utils.js","webpack://StravaModern/./app/javascript/components/StravaMentionsInput/StravaMentionsInput.cache.js","webpack://StravaModern/./app/javascript/components/StravaMentionsInput/StravaMentionsInput.js","webpack://StravaModern/./app/javascript/components/StravaMentionsInput/index.js","webpack://StravaModern/./app/javascript/components/MentionableComment/styles.scss?173e","webpack://StravaModern/./app/javascript/components/MentionableComment/index.js","webpack://StravaModern/./app/javascript/components/PerceivedExertionInput/components/RPESlider/Handle/styles.scss?01db","webpack://StravaModern/./app/javascript/components/PerceivedExertionInput/components/RPESlider/Handle/index.js","webpack://StravaModern/./app/javascript/components/PerceivedExertionInput/components/RPESlider/Track/styles.scss?4422","webpack://StravaModern/./app/javascript/components/PerceivedExertionInput/components/RPESlider/Track/index.js","webpack://StravaModern/./app/javascript/components/PerceivedExertionInput/components/RPESlider/Tick/styles.scss?40d6","webpack://StravaModern/./app/javascript/components/PerceivedExertionInput/components/RPESlider/Tick/index.js","webpack://StravaModern/./app/javascript/components/PerceivedExertionInput/components/RPESlider/styles.scss?5bb6","webpack://StravaModern/./app/javascript/components/PerceivedExertionInput/components/RPESlider/index.js","webpack://StravaModern/./app/javascript/components/PerceivedExertionInput/styles.scss?a07f","webpack://StravaModern/./app/javascript/components/shared/Portal/index.js","webpack://StravaModern/./app/javascript/components/shared/Tooltip/styles.scss?feca","webpack://StravaModern/./app/javascript/components/shared/Tooltip/index.js","webpack://StravaModern/./app/javascript/components/PerceivedExertionInput/components/Toggle/styles.scss?6e7a","webpack://StravaModern/./app/javascript/components/PerceivedExertionInput/components/Toggle/index.js","webpack://StravaModern/./app/javascript/components/PerceivedExertionInput/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/styles.scss?8b5d","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/LoadingState/Placeholder/styles.scss?567c","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/LoadingState/Placeholder/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/LoadingState/NoAccess/styles.scss?6732","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/LoadingState/NoAccess/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/WeeklySummary/WeekInsightStats/WeekChart/styles.scss?2beb","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/WeeklySummary/WeekInsightStats/WeekChart/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/LoadingState/HasAccess/styles.scss?2f59","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/LoadingState/HasAccess/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/LoadingState/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/Disclaimer/styles.scss?1dad","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/Disclaimer/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/NoAccess/styles.scss?eb7e","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/NoAccess/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/LoadingError/styles.scss?4008","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/LoadingError/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/WeeklySummary/WeekInsightText/styles.scss?0bd1","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/WeeklySummary/WeekInsightText/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/WeeklySummary/WeekInsightStats/styles.scss?05b4","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/WeeklySummary/WeekInsightStats/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/WeeklySummary/WeeklyGraph/styles.scss?f2bb","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/WeeklySummary/WeeklyGraph/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/WeeklySummary/DateRange/styles.scss?e190","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/WeeklySummary/DateRange/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/components/WeeklySummary/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoalsRelativeEffortTab/index.js","webpack://StravaModern/./app/javascript/apps/FeedbackApp/components/Breadcrumbs/styles.scss?6200","webpack://StravaModern/./app/javascript/apps/FeedbackApp/components/Breadcrumbs/index.js","webpack://StravaModern/./app/javascript/apps/FeedbackApp/components/OptionList/styles.scss?9e4f","webpack://StravaModern/./app/javascript/apps/FeedbackApp/components/OptionList/index.js","webpack://StravaModern/./app/javascript/apps/FeedbackApp/components/SurveyLanding/index.js","webpack://StravaModern/./app/javascript/apps/FeedbackApp/components/SurveyStep/styles.scss?0c0f","webpack://StravaModern/./app/javascript/apps/FeedbackApp/components/SurveyStep/index.js","webpack://StravaModern/./app/javascript/apps/FeedbackApp/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/LoadingStates/NoAccess/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/LoadingStates/FetchError/styles.scss?6657","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/LoadingStates/FetchError/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/LoadingStates/FetchInProgress/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/LoadingStates/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/Footer/styles.scss?5360","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/Footer/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/CircularProgressChart/styles.scss?0422","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/utils.js","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/CircularProgressChart/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/HorizontalProgressChart/styles.scss?3fa3","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/HorizontalProgressChart/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/ProgressGoalDisplay/styles.scss?82a9","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/ProgressGoalDisplay/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/ProgressGoalPeriodList/styles.scss?d162","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/components/ProgressGoalPeriodList/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoals/Sidebar/index.js","webpack://StravaModern/./app/javascript/components/ProgressGoals/SidebarTabContainer/styles.scss?c01d","webpack://StravaModern/./app/javascript/components/ProgressGoals/SidebarTabContainer/index.js","webpack://StravaModern/./app/javascript/components/ActivityDescriptionEdit/index.scss?33c5","webpack://StravaModern/./app/javascript/components/ActivityDescriptionEdit/ActivityDescriptionEdit.js","webpack://StravaModern/./app/javascript/components/ActivityDescriptionEdit/index.js","webpack://StravaModern/./app/javascript/components/MediaThumbnailList/MediaThumbnailList.scss?1427","webpack://StravaModern/./app/javascript/components/MediaThumbnailList/MediaThumbnailList.js","webpack://StravaModern/./app/javascript/components/MediaThumbnailList/index.js","webpack://StravaModern/./app/javascript/components/AthleteProfileHeaderMediaGrid/AthleteProfileHeaderMediaGrid.scss?c22e","webpack://StravaModern/./app/javascript/components/AthleteProfileHeaderMediaGrid/AthleteProfileHeaderMediaGrid.js","webpack://StravaModern/./app/javascript/components/AthleteProfileHeaderMediaGrid/index.js","webpack://StravaModern/./app/javascript/components/EmbedModal/EmbedModalWrapper.js","webpack://StravaModern/./app/javascript/components/MediaUploader/FeatureEdInfoBox/FeatureEdInfoBox.scss?12c2","webpack://StravaModern/./app/javascript/components/MediaUploader/FeatureEdInfoBox/FeatureEdInfoBox.js","webpack://StravaModern/./app/javascript/components/MediaUploader/FeatureEdInfoBox/index.js","webpack://StravaModern/./app/javascript/components/MediaUploader/MediaUploader.scss?ef80","webpack://StravaModern/./app/javascript/components/MediaUploader/Thumbnail/Thumbnail.scss?c323","webpack://StravaModern/./app/javascript/components/MediaUploader/Thumbnail/PopupContents/PopupContents.scss?2c7e","webpack://StravaModern/./app/javascript/components/MediaUploader/Thumbnail/PopupContents/PopupContents.js","webpack://StravaModern/./app/javascript/components/MediaUploader/Thumbnail/PopupContents/index.js","webpack://StravaModern/./app/javascript/components/MediaUploader/Thumbnail/Thumbnail.js","webpack://StravaModern/./app/javascript/components/MediaUploader/Thumbnail/index.js","webpack://StravaModern/./app/javascript/components/MediaUploader/FeatureEdInfoIcon/FeatureEdInfoIcon.scss?f4da","webpack://StravaModern/./app/javascript/components/MediaUploader/FeatureEdInfoIcon/FeatureEdInfoIcon.js","webpack://StravaModern/./app/javascript/components/MediaUploader/FeatureEdInfoIcon/index.js","webpack://StravaModern/./app/javascript/components/MediaUploader/AddMediaThumbnail/AddMediaThumbnail.scss?3b1e","webpack://StravaModern/./app/javascript/components/MediaUploader/AddMediaThumbnail/AddMediaThumbnail.js","webpack://StravaModern/./app/javascript/components/MediaUploader/AddMediaThumbnail/index.js","webpack://StravaModern/./app/javascript/components/MediaUploader/MediaUploader.utils.js","webpack://StravaModern/./app/javascript/components/MediaUploader/FeatureEdPopup/FeatureEdPopup.scss?2871","webpack://StravaModern/./app/javascript/components/MediaUploader/FeatureEdPopup/FeatureEdPopup.js","webpack://StravaModern/./app/javascript/components/MediaUploader/FeatureEdPopup/index.js","webpack://StravaModern/./app/javascript/components/MediaUploader/MediaUploader.js","webpack://StravaModern/./app/javascript/components/MediaUploader/index.js","webpack://StravaModern/./app/javascript/components/EditActivityButton/EditActivityButton.scss?813f","webpack://StravaModern/./app/javascript/components/EditActivityButton/EditActivityButton.js","webpack://StravaModern/./app/javascript/components/EditActivityButton/index.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/CommentReactionList/index.scss?a901","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/CommentReactionList/CommentReactionList.js","webpack://StravaModern/./app/javascript/apps/Onboarding/components/AthleteName/AthleteName.js","webpack://StravaModern/./app/javascript/apps/Onboarding/components/AthleteName/index.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/kudosAndComments.actions.js","webpack://StravaModern/./app/javascript/apps/activities/ADPKudosAndComments/styles.scss?66f6","webpack://StravaModern/./app/javascript/components/Feed/constants.js","webpack://StravaModern/./app/javascript/components/shared/utils/updateKudosEndpoint.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/KudosAndCommentsContext.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/kudosAndComments.initial-state.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/kudosAndComments.reducer.js","webpack://StravaModern/./app/javascript/hooks/kudosAndComments/useKudosAndCommentsReducer.js","webpack://StravaModern/./app/javascript/components/shared/utils/handleKudosAndCommentsNotificationLinkNavigation.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/AvatarAndMeta/index.scss?7d70","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/CommentReaction/styles.scss?e934","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/CommentReactionIcons/HeartIconUnfilled.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/CommentReactionIcons/HeartIconFilled.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/CommentReactionIcons/CommentReactionIcon.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/CommentReaction/CommentReaction.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/CommentReaction/index.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/AvatarAndMeta/AvatarAndMeta.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/AvatarAndMeta/index.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/CommentReactionList/index.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/KudosCommentsAndAchievementsModal/styles.scss?a759","webpack://StravaModern/./app/javascript/components/shared/MentionableCommentForm/mentionable_comment.scss?f7c6","webpack://StravaModern/./app/javascript/components/shared/MentionableCommentForm/MentionableCommentForm.js","webpack://StravaModern/./app/javascript/components/shared/MentionableCommentForm/index.js","webpack://StravaModern/./app/javascript/components/shared/utils/buildTimeAgoTimeStamp.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/KudosCommentsAndAchievementsModal/KudosCommentsAndAchievementsModal.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/CommentDeleteAlertDialog/CommentDeleteAlertDialog.js","webpack://StravaModern/./app/javascript/components/shared/KudosCommentsAndAchievements/CommentDeleteAlertDialog/index.js","webpack://StravaModern/./app/javascript/components/shared/utils/onClickKudo.js","webpack://StravaModern/./app/javascript/apps/activities/ADPKudosAndComments/ADPKudosAndComments.js","webpack://StravaModern/./app/javascript/components/Feed/components/shared/EntityDeleteAlertDialog.js","webpack://StravaModern/./app/javascript/apps/posts/PostsKudosAndComments/styles.scss?8165","webpack://StravaModern/./app/javascript/apps/posts/PostsKudosAndComments/PostsKudosAndComments.js","webpack://StravaModern/./app/javascript/packs/strava_with_framework.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"modal-open\":\"Modal--modal-open--kChhd\",\"modalOpen\":\"Modal--modal-open--kChhd\",\"base\":\"Modal--base--3VnHO\",\"fade-in\":\"Modal--fade-in--6nkdi\",\"fadeIn\":\"Modal--fade-in--6nkdi\",\"fade-out\":\"Modal--fade-out--puMJg\",\"fadeOut\":\"Modal--fade-out--puMJg\",\"dialog\":\"Modal--dialog--+VJZV\",\"content\":\"Modal--content--PBv25\"};","import React from 'react';\nimport ReactModal from 'react-modal';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.scss';\n\nconst customStyles = {\n  overlay: {\n    zIndex: '100'\n  },\n  afterOpen: '',\n  beforeClose: ''\n};\n\nconst Modal = ({ariaHideApp = false, shouldCloseOnOverlayClick = true, ...props}) => (\n  <ReactModal\n    closeTimeoutMS={200}\n    isOpen={props.isOpen}\n    onRequestClose={props.onRequestClose}\n    shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n    ariaHideApp={ariaHideApp}\n    bodyOpenClassName={`modal-open ${styles.modalOpen}`}\n    overlayClassName={{\n      base: `${styles.base} ${props.className}`,\n      afterOpen: `${styles.fadeIn}`,\n      beforeClose: `${styles.fadeOut}`\n    }}\n    style={customStyles}\n    className={`${styles.dialog} ${props.dialogClassName}`}\n    onAfterOpen={props.onAfterOpen}\n  >\n    <div className={styles.content}>{props.children}</div>\n  </ReactModal>\n);\n\nModal.propTypes = {\n  children: PropTypes.node.isRequired,\n  isOpen: PropTypes.bool.isRequired,\n  onRequestClose: PropTypes.func.isRequired,\n  ariaHideApp: PropTypes.bool,\n  shouldCloseOnOverlayClick: PropTypes.bool,\n  className: PropTypes.string,\n  dialogClassName: PropTypes.string,\n  onAfterOpen: PropTypes.func\n};\n\nexport default Modal;\n","// extracted by mini-css-extract-plugin\nexport default {\"btn-add-friend\":\"Tagging--btn-add-friend--LUbvS\",\"btnAddFriend\":\"Tagging--btn-add-friend--LUbvS\",\"dialog\":\"Tagging--dialog--BEeeQ\",\"close-button\":\"Tagging--close-button--HSnz5\",\"closeButton\":\"Tagging--close-button--HSnz5\"};","import createNetworkingClient from 'utils/networking-client';\n\nexport const types = {\n  TOGGLE_MODAL: 'TOGGLE_MODAL',\n  HIDE_INTERSTITIAL: 'HIDE_INTERSTITIAL',\n  INVITE_SUBMITTING: 'INVITE_SUBMITTING',\n  INVITE_COMPLETE: 'INVITE_COMPLETE',\n  INVITE_ERROR: 'INVITE_ERROR',\n  FOLLOWERS_LOADING: 'FOLLOWERS_LOADING',\n  FOLLOWERS_COMPLETE: 'FOLLOWERS_COMPLETE',\n  FOLLOWERS_ERROR: 'FOLLOWERS_ERROR'\n};\n\nexport const toggleModal = () => ({\n  type: types.TOGGLE_MODAL\n});\n\nexport const hideInterstitial = () => ({\n  type: types.HIDE_INTERSTITIAL\n});\n\nconst inviteSubmitting = (athleteId) => ({\n  type: types.INVITE_SUBMITTING,\n  athleteId\n});\n\nconst inviteComplete = (athleteId) => ({\n  type: types.INVITE_COMPLETE,\n  athleteId\n});\n\nconst inviteError = (athleteId) => ({\n  type: types.INVITE_ERROR,\n  athleteId\n});\n\nexport const invite = (athleteId, activityId) => (dispatch) => {\n  dispatch(inviteSubmitting(athleteId));\n\n  createNetworkingClient()\n    .post(`/activities/${activityId}/invite_friend`, {\n      invitedAthleteId: athleteId\n    })\n    .then((response) => {\n      if (response && response.status === 200) {\n        dispatch(inviteComplete(athleteId));\n      } else {\n        dispatch(inviteError(athleteId));\n      }\n    })\n    .catch(() => {\n      dispatch(inviteError(athleteId));\n    });\n};\n\nconst followersLoading = () => ({\n  type: types.FOLLOWERS_LOADING\n});\n\nconst followersComplete = (followers) => ({\n  type: types.FOLLOWERS_COMPLETE,\n  followers\n});\n\nconst followersError = (error) => ({\n  type: types.FOLLOWERS_ERROR,\n  error: error.message\n});\n\nexport const fetchFollowers = (input) => (dispatch) => {\n  const searchTerm = input === undefined ? '' : input;\n  dispatch(followersLoading());\n  return createNetworkingClient()\n    .get(`/athlete/followers/${searchTerm}`)\n    .then((response) => {\n      if (response && response.status === 200) {\n        dispatch(followersComplete(response.data.results.followers));\n      } else {\n        dispatch(\n          followersError(\n            'An error has occured fetching your followers, please try again later.'\n          )\n        );\n      }\n    })\n    .catch((e) => {\n      dispatch(followersError(e));\n    });\n};\n\nexport default {\n  types,\n  toggleModal,\n  hideInterstitial,\n  invite,\n  fetchFollowers\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"interstitial-container\":\"TaggingInterstitial--interstitial-container--2hOyJ\",\"interstitialContainer\":\"TaggingInterstitial--interstitial-container--2hOyJ\",\"body\":\"TaggingInterstitial--body--A7AXz\",\"banner\":\"TaggingInterstitial--banner--H6p22\",\"title\":\"TaggingInterstitial--title--W3+ut\",\"description\":\"TaggingInterstitial--description--zaRxl\",\"continue-button\":\"TaggingInterstitial--continue-button--UWmYv\",\"continueButton\":\"TaggingInterstitial--continue-button--UWmYv\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\n\nimport I18n from 'utils/I18n';\n\nimport banner from '../../assets/banner-tagging-interstitial.jpg';\nimport retinaBanner from '../../assets/banner-tagging-interstitial@2x.jpg';\nimport styles from './styles.scss';\n\nconst TaggingInterstitial = (props) => (\n  <div className={styles.interstitialContainer}>\n    <div className=\"card\">\n      <img\n        alt=\"Invite\"\n        className={`${styles.banner} card-image-top`}\n        src={banner}\n        srcSet={`${banner} 1x, ${retinaBanner} 2x`}\n      />\n      <div className={styles.body}>\n        <h2 className={styles.title}>\n          {I18n.t('strava.activities.tagging.feature_ed.title', {\n            activity_type: I18n.t(\n              `strava.activities.types_v2.${props.activityType}`\n            )\n          })}\n        </h2>\n        <p className={styles.description}>\n          {I18n.t('strava.activities.tagging.feature_ed.description')}\n        </p>\n        <p className={styles.description}>\n          {I18n.t('strava.activities.tagging.feature_ed.privacy')}\n        </p>\n        <div className=\"mt-lg text-right\">\n          <Button\n            type=\"button\"\n            variant=\"primary\"\n            className={styles.continueButton}\n            onClick={props.triggerContinue}\n          >\n            {I18n.t('strava.activities.tagging.feature_ed.cta')}\n          </Button>\n        </div>\n      </div>\n    </div>\n  </div>\n);\n\nTaggingInterstitial.propTypes = {\n  activityType: PropTypes.string.isRequired,\n  triggerContinue: PropTypes.func.isRequired\n};\n\nexport default TaggingInterstitial;\n","// extracted by mini-css-extract-plugin\nexport default {\"invite-container\":\"TaggingInviteContainer--invite-container--izdgX\",\"inviteContainer\":\"TaggingInviteContainer--invite-container--izdgX\",\"invite-container-body\":\"TaggingInviteContainer--invite-container-body--Pfwl7\",\"inviteContainerBody\":\"TaggingInviteContainer--invite-container-body--Pfwl7\",\"title\":\"TaggingInviteContainer--title--fluwG\",\"footer\":\"TaggingInviteContainer--footer--MfhHf\",\"footer-title\":\"TaggingInviteContainer--footer-title--iRw7R\",\"footerTitle\":\"TaggingInviteContainer--footer-title--iRw7R\",\"footer-description\":\"TaggingInviteContainer--footer-description--vjQe1\",\"footerDescription\":\"TaggingInviteContainer--footer-description--vjQe1\"};","// extracted by mini-css-extract-plugin\nexport default {\"list-container\":\"FollowersList--list-container--DKaL7\",\"listContainer\":\"FollowersList--list-container--DKaL7\",\"search-bar-container\":\"FollowersList--search-bar-container--u0Lxt\",\"searchBarContainer\":\"FollowersList--search-bar-container--u0Lxt\",\"search-bar\":\"FollowersList--search-bar--C0-Mq\",\"searchBar\":\"FollowersList--search-bar--C0-Mq\",\"loading-container\":\"FollowersList--loading-container--ptMTZ\",\"loadingContainer\":\"FollowersList--loading-container--ptMTZ\",\"empty-state-container\":\"FollowersList--empty-state-container--AZVnX\",\"emptyStateContainer\":\"FollowersList--empty-state-container--AZVnX\",\"find-friends-button\":\"FollowersList--find-friends-button--k4zig\",\"findFriendsButton\":\"FollowersList--find-friends-button--k4zig\",\"followers-list\":\"FollowersList--followers-list--TGYI4\",\"followersList\":\"FollowersList--followers-list--TGYI4\"};","// extracted by mini-css-extract-plugin\nexport default {\"list-item\":\"FollowersListItem--list-item--Tn1Nm\",\"listItem\":\"FollowersListItem--list-item--Tn1Nm\",\"content\":\"FollowersListItem--content--5Ca1A\",\"button-wrapper\":\"FollowersListItem--button-wrapper--Y-L3B\",\"buttonWrapper\":\"FollowersListItem--button-wrapper--Y-L3B\",\"add-button\":\"FollowersListItem--add-button--U5W8b\",\"addButton\":\"FollowersListItem--add-button--U5W8b\",\"complete\":\"FollowersListItem--complete--AOhfV\",\"error-message\":\"FollowersListItem--error-message--JdRDB\",\"errorMessage\":\"FollowersListItem--error-message--JdRDB\",\"error-icon\":\"FollowersListItem--error-icon--GBuck\",\"errorIcon\":\"FollowersListItem--error-icon--GBuck\",\"name\":\"FollowersListItem--name--HNRBf\",\"location\":\"FollowersListItem--location--Q--1u\"};","export const followerStatus = {\n  READY: 1,\n  SUBMITTING: 2,\n  COMPLETE: 3,\n  ERROR: 4\n};\n\nexport default { followerStatus };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\nimport { Spinner } from '@strava/ui/Spinner';\nimport { Avatar } from '@strava/ui/Avatar';\n\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\nimport { followerStatus } from '../../const';\n\nclass FollowersListItem extends React.Component {\n  addButtonClickHandler = (athleteId, activityId) => () => {\n    this.props.handleInvite(athleteId, activityId);\n  };\n\n  addButtonClassName = () => {\n    const { follower } = this.props;\n    const status =\n      follower.status === followerStatus.COMPLETE ? styles.complete : '';\n\n    return `${styles.addButton} ${status}`;\n  };\n\n  addButtonVariant = () => {\n    const { follower } = this.props;\n\n    if (follower.status === followerStatus.READY) {\n      return 'primaryOutline';\n    }\n    return 'default';\n  };\n\n  renderSubmitButtonContent = () => {\n    switch (this.props.follower.status) {\n      case followerStatus.SUBMITTING:\n        return (\n          <div>\n            <Spinner />\n          </div>\n        );\n      case followerStatus.COMPLETE:\n        return I18n.t('strava.activities.tagging.invite_module.requested');\n      default:\n        return I18n.t('strava.activities.tagging.invite_module.add_cta');\n    }\n  };\n\n  renderErrorMessage = () => {\n    const { follower } = this.props;\n\n    return (\n      <div className={styles.errorMessage}>\n        <p>\n          <span className={`${styles.errorIcon} app-icon icon-close icon-xs`} />\n          Sorry, we were unable to add {follower.name}. Try again later.\n        </p>\n      </div>\n    );\n  };\n\n  render() {\n    const { follower, activityId } = this.props;\n    const { athleteId, name, location, avatarUrl } = follower;\n\n    return (\n      <li className={`${styles.listItem}`}>\n        <div className={`${styles.content} media media-middle`}>\n          <div className=\"media-left\">\n            <Avatar\n              type=\"athlete\"\n              src={avatarUrl}\n              name={`${name}'s avatar`}\n              size=\"small\"\n              data-testid=\"avatar\"\n            />\n          </div>\n          <div className=\"media-body\">\n            <div className={`${styles.name}`}>{name}</div>\n            <div className={`${styles.location}`}>{location}</div>\n          </div>\n          <div className={`${styles.buttonWrapper} media-actions`}>\n            <Button\n              type=\"button\"\n              variant={this.addButtonVariant()}\n              className={this.addButtonClassName()}\n              onClick={this.addButtonClickHandler(athleteId, activityId)}\n              disabled={follower.status !== followerStatus.READY}\n            >\n              {this.renderSubmitButtonContent()}\n            </Button>\n          </div>\n        </div>\n        {follower.status === followerStatus.ERROR && this.renderErrorMessage()}\n      </li>\n    );\n  }\n}\n\nFollowersListItem.propTypes = {\n  follower: PropTypes.shape({\n    athleteId: PropTypes.number.isRequired,\n    avatarUrl: PropTypes.string.isRequired,\n    name: PropTypes.string.isRequired,\n    location: PropTypes.string.isRequired,\n    status: PropTypes.number.isRequired\n  }).isRequired,\n  activityId: PropTypes.number.isRequired,\n  handleInvite: PropTypes.func.isRequired\n};\n\nexport default FollowersListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Spinner } from '@strava/ui/Spinner';\n\nimport I18n from 'utils/I18n';\nimport styles from './styles.scss';\nimport FollowersListItem from '../FollowersListItem';\nimport { fetchFollowers, invite } from '../../actions';\n\nexport class FollowersList extends React.Component {\n  state = {\n    searchTerm: '',\n    showEmptyState: false\n  };\n\n  componentDidMount() {\n    this.props.handleFetchFollowers().then((response) => {\n      if (\n        response &&\n        response.status === 200 &&\n        response.data.results.followers.length === 0\n      ) {\n        this.setState({ showEmptyState: true });\n      }\n    });\n  }\n\n  renderLoadingState = () => (\n    <div className={styles.loadingContainer}>\n      <Spinner size={90} />\n    </div>\n  );\n\n  renderErrorState = () => (\n    // TODO: Get design feedback and translations here.\n    <div className={styles.emptyStateContainer}>\n      An error has occured fetching your followers, please try again later.\n    </div>\n  );\n\n  renderEmptyState = () => (\n    <div className={styles.emptyStateContainer}>\n      <p>{I18n.t('strava.activities.tagging.invite_module.empty_state')}</p>\n      <a\n        href={this.props.findFriendsUrl}\n        className={`${styles.findFriendsButton} btn`}\n      >\n        {I18n.t('strava.activities.tagging.invite_module.find_friend_cta')}\n      </a>\n    </div>\n  );\n\n  renderFollowersList = () => (\n    <ul>\n      {this.props.followers.map((follower) => (\n        <FollowersListItem\n          key={follower.athleteId}\n          follower={follower}\n          activityId={this.props.activityId}\n          handleInvite={this.props.handleInvite}\n        />\n      ))}\n    </ul>\n  );\n\n  filterList = (event) => {\n    // Throttle calls while user is typing\n    if (this.timeout) {\n      clearTimeout(this.timeout);\n    }\n    const val = event.target.value.toLowerCase();\n    this.setState({ searchTerm: val });\n\n    this.timeout = setTimeout(() => {\n      this.timeout = null;\n      this.props.handleFetchFollowers(val);\n    }, 200);\n  };\n\n  render() {\n    const { loading, error } = this.props;\n    let listContent;\n    if (loading) {\n      listContent = this.renderLoadingState();\n    } else if (error !== '') {\n      listContent = this.renderErrorState();\n    } else if (this.state.showEmptyState) {\n      listContent = this.renderEmptyState();\n    } else {\n      listContent = this.renderFollowersList();\n    }\n    return (\n      <div className={styles.listContainer}>\n        <div className={styles.searchBarContainer}>\n          <input\n            type=\"text\"\n            autoFocus={true}\n            className={`${styles.searchBar} mb-md form-control form-control-lg`}\n            value={this.state.searchTerm}\n            placeholder={I18n.t(\n              'strava.activities.tagging.invite_module.search_placeholder'\n            )}\n            onChange={this.filterList}\n          />\n        </div>\n        <div className={styles.followersList} data-testid=\"followers-list\">\n          {listContent}\n        </div>\n      </div>\n    );\n  }\n}\n\nFollowersList.propTypes = {\n  followers: PropTypes.arrayOf(PropTypes.object).isRequired,\n  activityId: PropTypes.number.isRequired,\n  handleInvite: PropTypes.func.isRequired,\n  handleFetchFollowers: PropTypes.func.isRequired,\n  loading: PropTypes.bool.isRequired,\n  error: PropTypes.string.isRequired,\n  findFriendsUrl: PropTypes.string.isRequired\n};\n\nfunction mapStateToProps(state) {\n  return {\n    followers: state.followers,\n    activityId: state.activityId,\n    loading: state.loading,\n    error: state.error,\n    findFriendsUrl: state.findFriendsUrl\n  };\n}\n\nexport default connect(\n  mapStateToProps,\n  {\n    handleInvite: invite,\n    handleFetchFollowers: fetchFollowers\n  }\n)(FollowersList);\n","// extracted by mini-css-extract-plugin\nexport default {\"link-copy\":\"TaggingLinkCopy--link-copy--jMGs3\",\"linkCopy\":\"TaggingLinkCopy--link-copy--jMGs3\",\"copy-base\":\"TaggingLinkCopy--copy-base--PhAKO\",\"copyBase\":\"TaggingLinkCopy--copy-base--PhAKO\",\"copy-text\":\"TaggingLinkCopy--copy-text--wWcrM\",\"copyText\":\"TaggingLinkCopy--copy-text--wWcrM\",\"copy-button\":\"TaggingLinkCopy--copy-button--1f8PY\",\"copyButton\":\"TaggingLinkCopy--copy-button--1f8PY\",\"copied-to-clipboard\":\"TaggingLinkCopy--copied-to-clipboard--c1x4F\",\"copiedToClipboard\":\"TaggingLinkCopy--copied-to-clipboard--c1x4F\",\"copied\":\"TaggingLinkCopy--copied--Ih+bu\",\"wrapper\":\"TaggingLinkCopy--wrapper--9ng6h\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\n\nimport I18n from 'utils/I18n';\nimport styles from './styles.scss';\n\nclass TaggingLinkCopy extends React.Component {\n  state = {\n    showCopiedText: false,\n    branchLink: this.props.branchLinkData.desktopUrl\n  };\n\n  componentDidMount() {\n    const {\n      branchLinkData,\n      activityId,\n      activityType,\n      athleteId,\n      athleteName\n    } = this.props;\n    const { signature, desktopUrl, inviterAvatarUrl } = branchLinkData;\n\n    const data = {\n      channel: 'web',\n      feature: 'activity-tagging',\n      data: {\n        $desktop_url: desktopUrl, // eslint-disable-line\n        strava_deeplink_url: `strava://activities/${activityId}?activity_tag=true&sig=${signature}`,\n        inviter_athlete_id: athleteId.toString(),\n        inviter_first_name: athleteName,\n        inviter_avatar_url: inviterAvatarUrl,\n        inviter_tagged_activity_id: activityId.toString(),\n        inviter_activity_type_key: activityType,\n        inviter_activity_signature: signature,\n        redirect_after_signup: 'true'\n      }\n    };\n    try {\n      window.Strava?.BranchIO.createLink(data).done((link) => {\n        this.setState({ branchLink: link });\n      });\n    } catch (err) {\n      console.warn(err); // eslint-disable-line\n    }\n  }\n\n  componentWillUnmount() {\n    if (this.hideCopiedTextTimer) {\n      clearTimeout(this.hideCopiedTextTimer);\n      this.hideCopiedTextTimer = null;\n    }\n  }\n\n  onInputClick = () => {\n    this.input.select();\n  };\n\n  copyToClipboard = () => {\n    this.input.select();\n    // This is the actual code that copies selected text to clipboard\n    const successful = document.execCommand('copy');\n    if (successful) {\n      this.setState(() => ({ showCopiedText: true }));\n      this.hideCopiedText();\n    }\n  };\n\n  hideCopiedText = () => {\n    this.hideCopiedTextTimer = setTimeout(() => {\n      this.setState(() => ({ showCopiedText: false }));\n    }, 5000);\n  };\n\n  render() {\n    return (\n      <div className={styles.linkCopy}>\n        <div className={styles.copyBase}>\n          <input\n            ref={(el) => {\n              this.input = el;\n            }}\n            className={styles.copyText}\n            type=\"text\"\n            value={this.state.branchLink}\n            onClick={this.onInputClick}\n            readOnly={true}\n          />\n          <Button\n            type=\"button\"\n            variant=\"primary\"\n            className={styles.copyButton}\n            onClick={this.copyToClipboard}\n          >\n            {I18n.t('strava.activities.tagging.invite_module.copy_cta')}\n          </Button>\n        </div>\n\n        <div\n          className={`${styles.copiedToClipboard} ${\n            this.state.showCopiedText ? styles.copied : ''\n          }`}\n        >\n          <div className={`text-center ${styles.wrapper}`}>\n            <span className=\"app-icon-wrapper\">\n              <span className=\"app-icon icon-strava icon-sm icon-save\" />\n            </span>\n            {I18n.t('strava.activities.tagging.invite_module.copied')}\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n\nTaggingLinkCopy.propTypes = {\n  branchLinkData: PropTypes.shape({\n    signature: PropTypes.string.isRequired,\n    desktopUrl: PropTypes.string.isRequired,\n    inviterAvatarUrl: PropTypes.string.isRequired\n  }).isRequired,\n  activityId: PropTypes.number.isRequired,\n  activityType: PropTypes.string.isRequired,\n  athleteName: PropTypes.string.isRequired,\n  athleteId: PropTypes.number.isRequired\n};\n\nexport default TaggingLinkCopy;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport I18n from 'utils/I18n';\nimport styles from './styles.scss';\nimport FollowersList from '../FollowersList';\nimport TaggingLinkCopy from '../TaggingLinkCopy';\n\nconst TaggingInviteContainer = (props) => (\n  <div className={styles.inviteContainer}>\n    <h2 className={styles.title}>\n      {I18n.t('strava.activities.tagging.invite_module.title')}\n    </h2>\n    <div className={styles.inviteContainerBody}>\n      <FollowersList />\n    </div>\n    <div className={styles.footer}>\n      <h3 className={styles.footerTitle}>\n        {I18n.t('strava.activities.tagging.invite_module.not_on_strava')}\n      </h3>\n      <p className={styles.footerDescription}>\n        {I18n.t('strava.activities.tagging.invite_module.share_activity')}\n      </p>\n      <TaggingLinkCopy\n        branchLinkData={props.branchLinkData}\n        activityId={props.activityId}\n        activityType={props.activityType}\n        athleteName={props.athleteName}\n        athleteId={props.athleteId}\n      />\n    </div>\n  </div>\n);\n\nTaggingInviteContainer.propTypes = {\n  activityId: PropTypes.number.isRequired,\n  activityType: PropTypes.string.isRequired,\n  athleteId: PropTypes.number.isRequired,\n  athleteName: PropTypes.string.isRequired,\n  branchLinkData: PropTypes.shape({}).isRequired\n};\n\nexport default TaggingInviteContainer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Button } from '@strava/ui/Button';\n\nimport I18n from 'utils/I18n';\nimport Modal from 'components/shared/Modal';\n\nimport styles from './styles.scss';\nimport { toggleModal, hideInterstitial } from '../../actions';\nimport TaggingInterstitial from '../TaggingInterstitial';\nimport TaggingInviteContainer from '../TaggingInviteContainer';\n\nexport class Tagging extends React.Component {\n  openModal = () => {\n    this.props.handleToggleModal();\n  };\n\n  closeModal = () => {\n    this.props.handleToggleModal();\n  };\n\n  addOthersBtn = () => (\n    <Button\n      type=\"button\"\n      variant=\"primary\"\n      className={styles.btnAddFriend}\n      onClick={this.openModal}\n    >\n      {I18n.t('strava.activities.tagging.cta.add_others')}\n    </Button>\n  );\n\n  someoneWithYou = () => (\n    <>\n      <span>{I18n.t('strava.activities.tagging.cta.title')}</span>\n      <Button\n        type=\"button\"\n        variant=\"primary\"\n        className={styles.btnAddFriend}\n        onClick={this.openModal}\n      >\n        {I18n.t('strava.activities.tagging.cta.add_friends')}\n      </Button>\n    </>\n  );\n\n  continueClicked = () => {\n    this.props.handleHideInterstitial();\n  };\n\n  renderInviteList = () => {\n    const { showInterstitial = true } = this.props;\n    let inviteContent;\n    if (showInterstitial) {\n      inviteContent = (\n        <>\n          <button\n            className={`${styles.closeButton} btn btn-unstyled btn-close`}\n            onClick={this.closeModal}\n            title=\"Close modal\"\n          >\n            <div className=\"app-icon icon-close icon-sm icon-white\" />\n          </button>\n          <TaggingInterstitial\n            activityType={this.props.activityType}\n            triggerContinue={this.continueClicked}\n          />\n        </>\n      );\n    } else {\n      inviteContent = (\n        <>\n          <button\n            className={`${styles.closeButton} btn btn-unstyled btn-close`}\n            onClick={this.closeModal}\n            title=\"Close modal\"\n          >\n            <div className=\"app-icon icon-close icon-sm\" />\n          </button>\n          <TaggingInviteContainer\n            activityId={this.props.activityId}\n            activityType={this.props.activityType}\n            athleteName={this.props.athleteName}\n            athleteId={this.props.athleteId}\n            findFriendsUrl={this.props.findFriendsUrl}\n            branchLinkData={this.props.branchLinkData}\n          />\n        </>\n      );\n    }\n    return (\n      <Modal\n        isOpen={this.props.isModalOpen ?? false}\n        onRequestClose={this.closeModal}\n        shouldCloseOnOverlayClick={false}\n      >\n        <div className={styles.dialog}>\n          <div>{inviteContent}</div>\n        </div>\n      </Modal>\n    );\n  };\n\n  render() {\n    return (\n      <div className=\"activity-athlete-tagging-inviter\">\n        {this.props.groupActivity ? this.addOthersBtn() : this.someoneWithYou()}\n        {this.renderInviteList()}\n      </div>\n    );\n  }\n}\n\nTagging.propTypes = {\n  groupActivity: PropTypes.bool,\n  activityId: PropTypes.number.isRequired,\n  activityType: PropTypes.string.isRequired,\n  athleteId: PropTypes.number.isRequired,\n  athleteName: PropTypes.string.isRequired,\n  findFriendsUrl: PropTypes.string.isRequired,\n  branchLinkData: PropTypes.shape({}).isRequired,\n  isModalOpen: PropTypes.bool,\n  handleToggleModal: PropTypes.func.isRequired,\n  showInterstitial: PropTypes.bool,\n  handleHideInterstitial: PropTypes.func.isRequired\n};\n\nfunction mapStateToProps(state) {\n  return {\n    groupActivity: state.groupActivity,\n    activityId: state.activityId,\n    activityType: state.activityType,\n    athleteId: state.activityId,\n    athleteName: state.athleteName,\n    findFriendsUrl: state.findFriendsUrl,\n    branchLinkData: state.branchLinkData,\n    isModalOpen: state.isModalOpen,\n    showInterstitial: state.showInterstitial\n  };\n}\n\nexport default connect(\n  mapStateToProps,\n  {\n    handleToggleModal: toggleModal,\n    handleHideInterstitial: hideInterstitial\n  }\n)(Tagging);\n","import { types } from './actions';\nimport { followerStatus } from './const';\n\nfunction prepareFollowerItem(follower) {\n  return {\n    ...follower,\n    status: followerStatus.READY\n  };\n}\n\nfunction updateFollowerStatus(state, action, status) {\n  return state.followers.map((follower) => {\n    if (follower.athleteId === action.athleteId) {\n      return {\n        ...follower,\n        status\n      };\n    }\n    return follower;\n  });\n}\n\nexport default function reducer(state = {}, action) {\n  switch (action.type) {\n    case types.TOGGLE_MODAL:\n      return {\n        ...state,\n        isModalOpen: !state.isModalOpen\n      };\n    case types.HIDE_INTERSTITIAL:\n      return {\n        ...state,\n        showInterstitial: false\n      };\n    case types.INVITE_SUBMITTING:\n      return {\n        ...state,\n        followers: updateFollowerStatus(\n          state,\n          action,\n          followerStatus.SUBMITTING\n        )\n      };\n    case types.INVITE_COMPLETE:\n      return {\n        ...state,\n        followers: updateFollowerStatus(state, action, followerStatus.COMPLETE)\n      };\n    case types.INVITE_ERROR:\n      return {\n        ...state,\n        followers: updateFollowerStatus(state, action, followerStatus.ERROR)\n      };\n    case types.FOLLOWERS_LOADING:\n      return {\n        ...state,\n        loading: true,\n        error: ''\n      };\n    case types.FOLLOWERS_COMPLETE:\n      return {\n        ...state,\n        followers: action.followers.map(prepareFollowerItem),\n        loading: false,\n        error: ''\n      };\n    case types.FOLLOWERS_ERROR:\n      return {\n        ...state,\n        loading: true,\n        error: action.error\n      };\n    default:\n      return state;\n  }\n}\n","import React from 'react';\nimport { createStore, applyMiddleware } from 'redux';\nimport { Provider } from 'react-redux';\nimport thunk from 'redux-thunk';\n\nimport Tagging from './components/Tagging';\nimport reducer from './reducers';\n\nclass ActivityTagging extends React.Component {\n  store = createStore(\n    reducer,\n    {\n      ...this.props,\n      followers: [],\n      isModalOpen: false,\n      showInterstitial: true,\n      loading: false,\n      error: ''\n    },\n    applyMiddleware(thunk)\n  );\n\n  render() {\n    return (\n      <Provider store={this.store}>\n        <Tagging />\n      </Provider>\n    );\n  }\n}\n\nexport default ActivityTagging;\n","// extracted by mini-css-extract-plugin\nexport default {\"popup\":\"map--popup--WVMim\"};","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport mapboxgl from 'mapbox-gl';\n\nimport { PolygonCircle, withMap, latLngToLngLat } from '@strava/ui/Map';\nimport I18n from 'utils/I18n';\n\nimport styles from './PrivacyZones.scss';\n\nlet startPopup = null;\nlet endPopup = null;\n\nfunction PrivacyZones({ map, zones, start, end }) {\n  const zonesWithId = zones.map((zone, i) => ({\n    ...zone,\n    id: `privacy-zone-${i}`\n  }));\n\n  function createPopup(lngLat) {\n    return new mapboxgl.Popup({\n      closeButton: true,\n      closeOnClick: false,\n      className: styles.popup,\n      maxWidth: '320px'\n    })\n      .setLngLat(lngLat)\n      .setHTML(I18n.t('strava.maps.privacy_zone_helper_v2'))\n      .addTo(map);\n  }\n\n  function removeStartPopup() {\n    startPopup.remove();\n    startPopup = null;\n  }\n\n  function removeEndPopup() {\n    endPopup.remove();\n    endPopup = null;\n  }\n\n  function getFeaturesByLatLng(latLng) {\n    return map.queryRenderedFeatures(map.project(latLngToLngLat(latLng)), {\n      layers: zonesWithId.map((z) => z.id)\n    });\n  }\n\n  function checkStartPopup() {\n    if (start === null) return;\n    const features = getFeaturesByLatLng(start);\n\n    if (startPopup === null && features.length > 0) {\n      features.forEach(({ properties }) => {\n        startPopup = createPopup([properties.lng, properties.lat]);\n      });\n    }\n\n    if (startPopup !== null && features.length === 0) {\n      removeStartPopup();\n    }\n  }\n\n  function checkEndPopup() {\n    if (end === null) return;\n    const features = getFeaturesByLatLng(end);\n\n    if (endPopup === null && features.length > 0) {\n      features.forEach(({ properties }) => {\n        endPopup = createPopup([properties.lng, properties.lat]);\n      });\n    }\n\n    if (endPopup !== null && features.length === 0) {\n      removeEndPopup();\n    }\n  }\n\n  // componentDidMount\n  useEffect(() => {\n    setTimeout(() => {\n      checkStartPopup();\n      checkEndPopup();\n    }, 200);\n\n    // componentWillUnmount\n    return function cleanup() {\n      if (startPopup) {\n        removeStartPopup();\n      }\n      if (endPopup) {\n        removeEndPopup();\n      }\n    };\n  }, []);\n\n  useEffect(() => {\n    checkStartPopup();\n  }, [start]);\n\n  useEffect(() => {\n    checkEndPopup();\n  }, [end]);\n\n  return (\n    <>\n      {zonesWithId.map((zone) => (\n        <PolygonCircle\n          key={zone.id}\n          id={zone.id}\n          lat={zone.position.lat}\n          lng={zone.position.lng}\n          // radius is in meeters and we need to conver it to kilometers\n          radius={zone.radius / 1000}\n          style={{\n            fillColor: '#f00',\n            fillOpacity: 0.35,\n            strokeColor: '#f00',\n            strokeOpacity: 0.5,\n            strokeWeight: 1,\n            strokeOffset: 0.5\n          }}\n        />\n      ))}\n    </>\n  );\n}\n\nPrivacyZones.propTypes = {\n  map: PropTypes.shape().isRequired,\n  zones: PropTypes.arrayOf(\n    PropTypes.shape({\n      position: PropTypes.shape({\n        lat: PropTypes.number.isRequired,\n        lng: PropTypes.number.isRequired\n      }).isRequired,\n      radius: PropTypes.number.isRequired\n    })\n  ).isRequired,\n  start: PropTypes.arrayOf(PropTypes.number),\n  end: PropTypes.arrayOf(PropTypes.number)\n};\n\nexport default withMap(PrivacyZones);\n","// extracted by mini-css-extract-plugin\nexport default {\"map\":\"RangeSelectMap--map---Lnaa\",\"primary-marker\":\"RangeSelectMap--primary-marker--CHm18\",\"primaryMarker\":\"RangeSelectMap--primary-marker--CHm18\",\"secondary-marker\":\"RangeSelectMap--secondary-marker--J4mz0\",\"secondaryMarker\":\"RangeSelectMap--secondary-marker--J4mz0\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Polyline, Marker, Map, WaypointCircle } from '@strava/ui/Map';\n\n// Static Assets\nimport secondaryStartMarker from 'components/map/images/map-marker-range-start.png';\nimport secondaryEndMarker from 'components/map/images/map-marker-range-end.png';\n\nimport FitBounds from 'components/map/FitBounds';\nimport PrivacyZones from 'components/map/PrivacyZones';\nimport StyleNav from 'components/map/StyleNav';\n\n// Stylesheets\nimport styles from './styles.scss';\n\nfunction RangeSelectMap({\n  currentStep = 1,\n  primaryLatLng,\n  secondaryLatlng = [],\n  fitBounds = [],\n  privacyZones = []\n}) {\n  const showSecondaryLine = secondaryLatlng.length > 0;\n\n  return (\n    <Map\n      latLng={primaryLatLng}\n      className={styles.map}\n      options={{\n        minZoom: 9,\n        maxZoom: 18\n      }}\n    >\n      <StyleNav />\n\n      {fitBounds.length > 0 && (\n        <FitBounds\n          latlng={fitBounds}\n          start={fitBounds[0]}\n          end={fitBounds.slice(-1)[0]}\n          updateOnLatlngChange={currentStep === 2}\n        />\n      )}\n\n      {privacyZones.length > 0 && (\n        <PrivacyZones\n          zones={privacyZones}\n          start={secondaryLatlng[0]}\n          end={secondaryLatlng.slice(-1)[0]}\n        />\n      )}\n\n      <Polyline\n        latLng={primaryLatLng}\n        id=\"primary-polyline\"\n        style={{\n          lineColor: '#105CB6',\n          outlineWidth: 5\n        }}\n      />\n\n      <Polyline\n        latLng={secondaryLatlng}\n        id=\"secondary-polyline\"\n        style={{\n          lineColor: '#fc5200',\n          outlineWidth: 0,\n          opacity: currentStep === 2 ? 0.75 : 1\n        }}\n      />\n\n      {/* Primary markers */}\n      <Marker latLng={primaryLatLng[0]}>\n        {currentStep === 1 ? (\n          <WaypointCircle type=\"start\" />\n        ) : (\n          <img\n            src={secondaryStartMarker}\n            alt=\"Start\"\n            className={styles.secondaryMarker}\n          />\n        )}\n      </Marker>\n      <Marker latLng={primaryLatLng.slice(-1)[0]}>\n        {currentStep === 1 ? (\n          <WaypointCircle type=\"end\" />\n        ) : (\n          <img\n            src={secondaryEndMarker}\n            alt=\"End\"\n            className={styles.secondaryMarker}\n          />\n        )}\n      </Marker>\n\n      {/* Secondary markers */}\n      {showSecondaryLine && (\n        <Marker latLng={secondaryLatlng[0]}>\n          {currentStep === 1 ? (\n            <img\n              src={secondaryStartMarker}\n              alt=\"Start\"\n              className={styles.secondaryMarker}\n            />\n          ) : (\n            <WaypointCircle type=\"start\" />\n          )}\n        </Marker>\n      )}\n      {showSecondaryLine && (\n        <Marker latLng={secondaryLatlng.slice(-1)[0]}>\n          {currentStep === 1 ? (\n            <img\n              src={secondaryEndMarker}\n              alt=\"End\"\n              className={styles.secondaryMarker}\n            />\n          ) : (\n            <WaypointCircle type=\"end\" />\n          )}\n        </Marker>\n      )}\n    </Map>\n  );\n}\n\nRangeSelectMap.propTypes = {\n  currentStep: PropTypes.number,\n  primaryLatLng: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.number))\n    .isRequired,\n  secondaryLatlng: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.number)),\n  privacyZones: PropTypes.arrayOf(PropTypes.shape()),\n  fitBounds: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.number))\n};\n\nexport default RangeSelectMap;\n","// extracted by mini-css-extract-plugin\nexport default {\"slider\":\"Handle--slider--SzVAC\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.scss';\n\nconst Handle = ({ style, domain: [min, max], handle, getHandleProps }) => {\n  return (\n    <button\n      role=\"slider\"\n      type=\"button\"\n      aria-valuemin={min}\n      aria-valuemax={max}\n      aria-valuenow={handle.value}\n      className={styles.slider}\n      style={{\n        left: `${handle.percent}%`,\n        ...style\n      }}\n      {...getHandleProps(handle.id)}\n    />\n  );\n};\n\nHandle.propTypes = {\n  style: PropTypes.shape({}),\n  domain: PropTypes.arrayOf(Number).isRequired,\n  handle: PropTypes.shape({\n    id: PropTypes.string.isRequired,\n    value: PropTypes.number.isRequired,\n    percent: PropTypes.number.isRequired\n  }).isRequired,\n  getHandleProps: PropTypes.func.isRequired\n};\n\nexport default Handle;\n","// extracted by mini-css-extract-plugin\nexport default {\"track\":\"Track--track--zj7xS\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.scss';\n\nconst Track = ({ source, target }) => (\n  <div\n    className={styles.track}\n    style={{\n      left: `${source.percent}%`,\n      width: `${target.percent - source.percent}%`\n    }}\n  />\n);\n\nTrack.propTypes = {\n  source: PropTypes.shape({\n    value: PropTypes.number.isRequired,\n    percent: PropTypes.number.isRequired\n  }).isRequired,\n  target: PropTypes.shape({\n    value: PropTypes.number.isRequired,\n    percent: PropTypes.number.isRequired\n  }).isRequired\n};\n\nexport default Track;\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"RangeSlider--wrapper--K8plT\",\"slider\":\"RangeSlider--slider--8SQ2u\",\"graphic-wrap\":\"RangeSlider--graphic-wrap--A6j22\",\"graphicWrap\":\"RangeSlider--graphic-wrap--A6j22\",\"rail\":\"RangeSlider--rail--PB5KO\",\"ticks\":\"RangeSlider--ticks--hWdAy\",\"rail-hitarea\":\"RangeSlider--rail-hitarea--nSsIj\",\"railHitarea\":\"RangeSlider--rail-hitarea--nSsIj\",\"control\":\"RangeSlider--control--b3iEw\",\"control-label-start\":\"RangeSlider--control-label-start--5UHbI\",\"controlLabelStart\":\"RangeSlider--control-label-start--5UHbI\",\"control-label-end\":\"RangeSlider--control-label-end--tyOei\",\"controlLabelEnd\":\"RangeSlider--control-label-end--tyOei\"};","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Slider, Rail, Handles, Tracks } from 'react-compound-slider';\nimport { Button } from '@strava/ui/Button';\nimport I18n from 'utils/I18n';\n\nimport Handle from './Handle';\nimport Track from './Track';\n\nimport styles from './styles.scss';\n\nexport function getStartBackValue(value, max, step) {\n  let x = value - step;\n  if (x < max) {\n    x = max;\n  }\n  return x;\n}\n\nexport function getStartForwardValue(value, min, step) {\n  let x = value + step;\n  if (min <= x) {\n    x = min - 1;\n  }\n  return x;\n}\n\nexport function getEndBackValue(value, max, step) {\n  let x = value - step;\n  if (x <= max) {\n    x = max + 1;\n  }\n  return x;\n}\n\nexport function getEndForwardValue(value, min, step) {\n  let x = value + step;\n  if (min < x) {\n    x = min;\n  }\n  return x;\n}\n\nconst RangeSlider = ({ step = 1, scopeTo, domain, onUpdate = () => {} }) => {\n  const [start, setStart] = useState(scopeTo[0]);\n  const [end, setEnd] = useState(scopeTo[1]);\n\n  useEffect(() => {\n    onUpdate([start, end]);\n  }, [start, end]);\n\n  return (\n    <>\n      <div className={styles.wrapper}>\n        <Slider\n          mode={2}\n          step={1}\n          domain={domain}\n          onUpdate={(values) => {\n            setStart(values[0]);\n            setEnd(values[1]);\n          }}\n          values={[start, end]}\n          className={styles.slider}\n        >\n          <div className={styles.graphicWrap}>\n            <div className={styles.rail} />\n          </div>\n\n          <Tracks left={false} right={false}>\n            {({ tracks, getTrackProps }) => (\n              <div className={styles.graphicWrap}>\n                {tracks.map(({ id, source, target }) => (\n                  <Track\n                    key={id}\n                    source={source}\n                    target={target}\n                    getTrackProps={getTrackProps}\n                  />\n                ))}\n              </div>\n            )}\n          </Tracks>\n\n          {/*\n            whe need to use Rail component here so that we can add getRailProps\n            which will add mouse interections\n          */}\n          <Rail>\n            {({ getRailProps }) => (\n              <div className={styles.graphicWrap}>\n                <div className={styles.railHitarea} {...getRailProps()} />\n              </div>\n            )}\n          </Rail>\n\n          <Handles>\n            {({ handles, getHandleProps }) => (\n              <div className={styles.graphicWrap}>\n                <Handle\n                  key={handles[0].id}\n                  handle={handles[0]}\n                  domain={domain}\n                  getHandleProps={getHandleProps}\n                  style={{\n                    backgroundColor: 'rgb(84, 176, 58)'\n                  }}\n                />\n                <Handle\n                  key={handles[1].id}\n                  handle={handles[1]}\n                  domain={domain}\n                  getHandleProps={getHandleProps}\n                  style={{\n                    backgroundColor: '#f00'\n                  }}\n                />\n              </div>\n            )}\n          </Handles>\n        </Slider>\n      </div>\n\n      <div className={styles.control}>\n        <div>\n          <div className={styles.controlLabelStart}>\n            {I18n.t('strava.ui.slider.move_start')}\n          </div>\n          <Button\n            onClick={() => setStart(getStartBackValue(start, 0, step))}\n            disabled={start === domain[0]}\n          >\n            {I18n.t('strava.ui.slider.back')}\n          </Button>\n          <Button\n            onClick={() => setStart(getStartForwardValue(start, end, step))}\n          >\n            {I18n.t('strava.ui.slider.forward')}\n          </Button>\n        </div>\n        <div>\n          <div className={styles.controlLabelEnd}>\n            {I18n.t('strava.ui.slider.move_end')}\n          </div>\n          <Button onClick={() => setEnd(getEndBackValue(end, start, step))}>\n            {I18n.t('strava.ui.slider.back')}\n          </Button>\n          <Button\n            onClick={() => setEnd(getEndForwardValue(end, domain[1], step))}\n            disabled={end === domain[domain.length - 1]}\n          >\n            {I18n.t('strava.ui.slider.forward')}\n          </Button>\n        </div>\n      </div>\n    </>\n  );\n};\n\nRangeSlider.propTypes = {\n  step: PropTypes.number,\n  scopeTo: PropTypes.arrayOf(Number).isRequired,\n  domain: PropTypes.arrayOf(Number).isRequired,\n  onUpdate: PropTypes.func\n};\n\nexport default RangeSlider;\n","import createNetworkingClient from 'utils/networking-client';\n\nexport async function fetchStreams({ id }) {\n  const response = await createNetworkingClient({ timeout: 30 * 1000 }).get(\n    `/activities/${id}/streams`,\n    {\n      params: {\n        stream_types: ['latlng', 'altitude', 'distance']\n      }\n    }\n  );\n\n  if (!response || response.status !== 200) {\n    throw new Error('Request failed');\n  }\n\n  return response.data;\n}\nexport default {\n  fetchStreams\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport I18n from 'utils/I18n';\nimport { ElevationChart } from '@strava/ui/ElevationChart';\nimport RangeSelectMap from 'components/RangeSelectMap';\nimport RangeSlider from 'components/RangeSlider';\n\n// Stylesheets\nimport { fetchStreams } from './api';\n\nclass Truncate extends React.Component {\n  state = {\n    activityLatlng: [],\n    cropLatlng: [],\n    scopeTo: null,\n    altitude: [],\n    distance: []\n  };\n\n  async componentDidMount() {\n    const { activityId, startIndex, endIndex } = this.props;\n\n    try {\n      const { altitude, distance, latlng } = await fetchStreams({\n        id: activityId\n      });\n\n      const scopeTo = [\n        startIndex === null ? 0 : startIndex,\n        endIndex === null ? parseInt(latlng.length / 2, 10) : endIndex\n      ];\n\n      this.setState({\n        scopeTo,\n        activityLatlng: latlng,\n        cropLatlng: latlng.slice(scopeTo[0], scopeTo[1] + 1),\n        altitude,\n        distance\n      });\n    } catch (error) {\n      // TODO: show some error to the user\n      console.error(error);\n    }\n  }\n\n  handleRangeSliderChange = (values) => {\n    const { activityLatlng } = this.state;\n    const [startIndex, endIndex] = values;\n\n    document.getElementById('start-index').value = startIndex;\n    document.getElementById('end-index').value = endIndex;\n\n    this.setState({\n      scopeTo: values,\n      cropLatlng: activityLatlng.slice(startIndex, endIndex + 1)\n    });\n  };\n\n  render() {\n    const { unitSystem, privacyZones = [] } = this.props;\n    const {\n      scopeTo,\n      activityLatlng,\n      cropLatlng,\n      altitude,\n      distance\n    } = this.state;\n\n    if (activityLatlng.length === 0) {\n      return null;\n    }\n\n    return (\n      <>\n        <div className=\"mb-md\">\n          <RangeSlider\n            domain={[0, activityLatlng.length - 1]}\n            scopeTo={scopeTo}\n            onUpdate={this.handleRangeSliderChange}\n          />\n        </div>\n        <div className=\"mb-md\">\n          <RangeSelectMap\n            primaryLatLng={activityLatlng}\n            secondaryLatlng={cropLatlng}\n            fitBounds={cropLatlng}\n            privacyZones={privacyZones}\n            checkLatlngChanges={true}\n          />\n        </div>\n        <div>\n          <ElevationChart\n            height={220}\n            units={unitSystem}\n            elevation={altitude}\n            distance={distance}\n            scopeTo={scopeTo}\n            scopeColor=\"#fc5200\"\n            formatters={{\n              ElevationFormatter(units) {\n                return I18n.elevationFormatter(units);\n              },\n              DistanceFormatter(units) {\n                return I18n.distanceFormatter(units);\n              },\n              PercentFormatter(units) {\n                return I18n.percentFormatter(units);\n              }\n            }}\n          />\n        </div>\n      </>\n    );\n  }\n}\n\nTruncate.propTypes = {\n  activityId: PropTypes.number.isRequired,\n  unitSystem: PropTypes.string.isRequired,\n  privacyZones: PropTypes.arrayOf(\n    PropTypes.shape({\n      position: PropTypes.shape({\n        lat: PropTypes.number.isRequired,\n        lng: PropTypes.number.isRequired\n      }).isRequired,\n      radius: PropTypes.number.isRequired\n    })\n  ),\n  startIndex: PropTypes.number,\n  endIndex: PropTypes.number\n};\n\nexport default Truncate;\n","// extracted by mini-css-extract-plugin\nexport default {\"spinner-container\":\"RelativeEffort--spinner-container--3CghA\",\"spinnerContainer\":\"RelativeEffort--spinner-container--3CghA\",\"container\":\"RelativeEffort--container--6dZ9v\"};","// extracted by mini-css-extract-plugin\nexport default {\"base\":\"Disclaimer--base--+0euY\",\"fade-out\":\"Disclaimer--fade-out--k6pf-\",\"fadeOut\":\"Disclaimer--fade-out--k6pf-\",\"dialog\":\"Disclaimer--dialog--ZIQx5\",\"content\":\"Disclaimer--content--p-gJ6\",\"cta\":\"Disclaimer--cta--nOiWQ\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport I18n from 'utils/I18n';\nimport { Button } from '@strava/ui/Button';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'strava.relative_effort.disclaimer';\n\nfunction Disclaimer({ handleContinueClick }) {\n  const [fadeOut, setFadeOut] = useState(false);\n\n  return (\n    <div className={`${styles.base} ${fadeOut ? styles.fadeOut : ''}`}>\n      <div className={styles.dialog}>\n        <div className={styles.content}>\n          <h3 className=\"text-display1 mb-md\">\n            {I18n.t(`${I18nPrefix}.title`)}\n          </h3>\n          <p className=\"text-subhead\">{I18n.t(`${I18nPrefix}.body`)}</p>\n          <div className=\"mt-lg text-right\">\n            <Button\n              type=\"button\"\n              variant=\"primary\"\n              className={`text-subhead ${styles.cta}`}\n              onClick={() => {\n                if (fadeOut) {\n                  return;\n                }\n                setFadeOut(true);\n                setTimeout(() => handleContinueClick(), 200);\n              }}\n            >\n              {I18n.t(`${I18nPrefix}.cta`)}\n            </Button>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n\nDisclaimer.propTypes = {\n  handleContinueClick: PropTypes.func.isRequired\n};\n\nexport default Disclaimer;\n","const COLORS = {\n  NO_ZONE: {\n    PRIMARY: 'rgba(190, 190, 190, 1)',\n    SECONDARY: 'rgba(190, 190, 190, 0.3)'\n  },\n  LOW_ZONE: {\n    PRIMARY: 'rgba(174, 157, 255, 1)',\n    SECONDARY: 'rgba(174, 157, 255, 0.3)'\n  },\n  OPTIMUM_ZONE: {\n    PRIMARY: 'rgba(176, 60, 255, 1)',\n    SECONDARY: 'rgba(176, 60, 255, 0.3)'\n  },\n  HIGH_ZONE: {\n    PRIMARY: 'rgba(189, 12, 15, 1)',\n    SECONDARY: 'rgba(189, 12, 15, 0.3)'\n  }\n};\n\nconst ZONES = {\n  NONE: 'NONE',\n  LOW: 'LOW',\n  OPTIMUM: 'OPTIMUM',\n  STEADY_PROGRESS: 'STEADY_PROGRESS',\n  HIGH: 'HIGH',\n  VERY_HIGH: 'VERY_HIGH'\n};\n\nconst TRAINING_IMPACT = {\n  LOWER_RATIO: 0.33,\n  MID_RATIO: 0.5,\n  UPPER_RATIO: 0.66\n};\n\nexport const CONSTS = {\n  COLORS,\n  ZONES,\n  TRAINING_IMPACT\n};\n\n/**\n * @param {Number} value RE score\n * @param {Array} buckets RE buckets\n * @return {String} zone\n */\nexport function getZone(value, buckets) {\n  switch (true) {\n    case value === 0:\n      return ZONES.NONE;\n    case value < buckets[0]:\n      return ZONES.LOW;\n    case buckets[0] <= value && value < buckets[1]:\n      return ZONES.OPTIMUM;\n    case buckets[1] <= value && value < buckets[2]:\n      return ZONES.STEADY_PROGRESS;\n    case buckets[2] <= value && value < buckets[3]:\n      return ZONES.HIGH;\n    case buckets[3] <= value:\n      return ZONES.VERY_HIGH;\n    default:\n      return ZONES.NONE;\n  }\n}\n\n/**\n * @param {Number} value RE score\n * @param {Array} buckets RE buckets\n * @return {String} rgba color\n */\nexport function getPrimaryColor(value, buckets) {\n  const zone = getZone(value, buckets);\n\n  switch (zone) {\n    case ZONES.NONE:\n      return COLORS.NO_ZONE.PRIMARY;\n\n    case ZONES.LOW:\n      return COLORS.LOW_ZONE.PRIMARY;\n\n    case ZONES.OPTIMUM:\n    case ZONES.STEADY_PROGRESS:\n      return COLORS.OPTIMUM_ZONE.PRIMARY;\n\n    case ZONES.HIGH:\n    case ZONES.VERY_HIGH:\n      return COLORS.HIGH_ZONE.PRIMARY;\n\n    default:\n      return '';\n  }\n}\n\n/**\n * @param {Number} value RE score\n * @param {Array} buckets RE buckets\n * @return {String} rgba color\n */\nexport function getSecondaryColor(value, buckets) {\n  const zone = getZone(value, buckets);\n\n  switch (zone) {\n    case ZONES.NONE:\n      return COLORS.NO_ZONE.SECONDARY;\n\n    case ZONES.LOW:\n      return COLORS.LOW_ZONE.SECONDARY;\n\n    case ZONES.OPTIMUM:\n    case ZONES.STEADY_PROGRESS:\n      return COLORS.OPTIMUM_ZONE.SECONDARY;\n\n    case ZONES.HIGH:\n    case ZONES.VERY_HIGH:\n      return COLORS.HIGH_ZONE.SECONDARY;\n\n    default:\n      return '';\n  }\n}\n\n/**\n * @param {Number} ratio float number between 0.0 and 1.0\n * @return {String} rgba color\n */\nexport function getTrainingImpactColor(ratio) {\n  let color = COLORS.LOW_ZONE;\n\n  if (ratio < TRAINING_IMPACT.LOWER_RATIO) {\n    color = COLORS.LOW_ZONE.PRIMARY;\n  } else if (ratio < TRAINING_IMPACT.UPPER_RATIO) {\n    color = COLORS.OPTIMUM_ZONE.PRIMARY;\n  } else {\n    color = COLORS.HIGH_ZONE.PRIMARY;\n  }\n\n  return color;\n}\n\n/**\n * Return Monday for a given year and ISO 8601 calendar week (where a week number\n * is counted based on the Thursday of that week). This matches the Ruby cweek\n * implementation.\n * @param {Number} year\n * @param {Number} week\n * @return {Date}\n */\nexport function getDateFromYearWeek(year, week) {\n  const simple = new Date(year, 0, 1 + (week - 1) * 7);\n  const dow = simple.getDay();\n  const ISOweekStart = simple;\n  if (dow <= 4) {\n    ISOweekStart.setDate(simple.getDate() - simple.getDay() + 1);\n  } else {\n    ISOweekStart.setDate(simple.getDate() + 8 - simple.getDay());\n  }\n\n  return ISOweekStart;\n}\n\n/**\n * Returns first day of a week for a give date\n * @param {Date} date\n * @return {Date}\n */\nexport function getFirstDayOfWeekFromDate(date) {\n  return date.getDate() - date.getDay();\n}\n\n/**\n * Check if date is current week\n * @param {Date} week\n * @return {Bool}\n */\nexport function isCurrentWeek(week) {\n  const now = new Date();\n  now.setHours(0, 0, 0, 0);\n\n  const firstDayOfWeek = getFirstDayOfWeekFromDate(now);\n  const monday = new Date(now.setDate(firstDayOfWeek + 1));\n  const sunday = new Date(now.setDate(firstDayOfWeek + 7));\n\n  return monday <= week && week <= sunday;\n}\n\nexport default {\n  CONSTS,\n  getZone,\n  getPrimaryColor,\n  getSecondaryColor,\n  getTrainingImpactColor,\n  getDateFromYearWeek,\n  getFirstDayOfWeekFromDate,\n  isCurrentWeek\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"base\":\"ActivitySummary--base--gKFJA\",\"title\":\"ActivitySummary--title--CDBz+\",\"info-icon\":\"ActivitySummary--info-icon---7mzk\",\"infoIcon\":\"ActivitySummary--info-icon---7mzk\",\"bucket\":\"ActivitySummary--bucket--1J0S6\",\"impact\":\"ActivitySummary--impact--QUNSY\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport I18n from 'utils/I18n';\nimport { CONSTS, getTrainingImpactColor } from 'utils/relative-effort';\n\nimport styles from './styles.scss';\n\nexport const I18nPrefix = 'strava.relative_effort';\n\nfunction getTrainingImpactText(trendingRatio) {\n  let textKey = 'low';\n\n  if (trendingRatio < CONSTS.TRAINING_IMPACT.LOWER_RATIO) {\n    textKey = 'low';\n  } else if (trendingRatio < CONSTS.TRAINING_IMPACT.UPPER_RATIO) {\n    textKey = 'moderate';\n  } else {\n    textKey = 'high';\n  }\n\n  return I18n.t(`${I18nPrefix}.impact.${textKey}`);\n}\n\nconst ActivitySummary = ({ trendingRatio, summary }) => {\n  const trainingImpactColor = getTrainingImpactColor(trendingRatio);\n\n  return (\n    <div className={styles.base}>\n      <h2 className={`text-title2 ${styles.title}`}>\n        {I18n.t(`${I18nPrefix}.title`)}\n        <span\n          // .help.new-version here is needed here so that jQuery code can\n          // pickup the click event and show the glossary modal\n          className=\"help new-version\"\n          data-glossary-term=\"definition-suffer-score\"\n        >\n          <span className=\"app-icon-wrapper\">\n            <span className={`app-icon icon-info-xsmall ${styles.infoIcon}`} />\n          </span>\n        </span>\n      </h2>\n\n      {summary && (\n        <>\n          <div className={styles.intensity}>\n            <span\n              data-testid=\"score\"\n              // TODO: remove text-demi when we fully roll out spandex\n              className=\"text-display5 text-demi\"\n              style={{ color: trainingImpactColor }}\n            >\n              {summary.score}\n            </span>\n            {summary.label && (\n              <span\n                className={`text-display1 ${styles.bucket}`}\n                style={{ color: trainingImpactColor }}\n              >\n                {summary.label}\n              </span>\n            )}\n          </div>\n\n          <div className={`text-callout ${styles.impact}`}>\n            {getTrainingImpactText(trendingRatio)}\n          </div>\n        </>\n      )}\n    </div>\n  );\n};\n\nActivitySummary.propTypes = {\n  trendingRatio: PropTypes.number.isRequired,\n  summary: PropTypes.shape({\n    score: PropTypes.number.isRequired,\n    label: PropTypes.string\n  })\n};\n\nexport default ActivitySummary;\n","// extracted by mini-css-extract-plugin\nexport default {\"base\":\"WeeklySummary--base--YQgHZ\",\"title\":\"WeeklySummary--title--Tcbes\",\"week-chart\":\"WeeklySummary--week-chart--uxKmw\",\"weekChart\":\"WeeklySummary--week-chart--uxKmw\",\"week-details\":\"WeeklySummary--week-details--7Fo3D\",\"weekDetails\":\"WeeklySummary--week-details--7Fo3D\",\"week-insight\":\"WeeklySummary--week-insight--7Xvc7\",\"weekInsight\":\"WeeklySummary--week-insight--7Xvc7\",\"weekly-graph\":\"WeeklySummary--weekly-graph--YXffH\",\"weeklyGraph\":\"WeeklySummary--weekly-graph--YXffH\",\"divider\":\"WeeklySummary--divider--AlY-B\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"WeekInsight--container--gVWGA\",\"date-range\":\"WeekInsight--date-range--O8aWx\",\"dateRange\":\"WeekInsight--date-range--O8aWx\",\"cumulative-score\":\"WeekInsight--cumulative-score--qezwF\",\"cumulativeScore\":\"WeekInsight--cumulative-score--qezwF\",\"title\":\"WeekInsight--title--CitJN\",\"description\":\"WeekInsight--description--V1GNG\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Cldr from 'utils/Cldr';\nimport I18n from 'utils/I18n';\nimport reUtils, {\n  CONSTS,\n  getZone,\n  getPrimaryColor,\n  getDateFromYearWeek,\n  getFirstDayOfWeekFromDate\n} from 'utils/relative-effort';\n\nimport styles from './styles.scss';\n\nexport const I18nPrefix = 'strava.relative_effort.insight_week';\n\nclass WeekInsight extends React.Component {\n  getTitleText = (isCurrentWeek) => {\n    const { cumulativeScore, buckets } = this.props;\n    const zone = getZone(cumulativeScore, buckets);\n    const titles = `${I18nPrefix}.${isCurrentWeek ? 'current' : 'past'}.titles`;\n\n    switch (zone) {\n      case CONSTS.ZONES.NONE:\n        return I18n.t(`${titles}.none`);\n      case CONSTS.ZONES.LOW:\n        return I18n.t(`${titles}.low`);\n      case CONSTS.ZONES.OPTIMUM:\n        return I18n.t(`${titles}.optimum`);\n      case CONSTS.ZONES.STEADY_PROGRESS:\n        return I18n.t(`${titles}.steady_progress`);\n      case CONSTS.ZONES.HIGH:\n        return I18n.t(`${titles}.high`);\n      case CONSTS.ZONES.VERY_HIGH:\n        return I18n.t(`${titles}.very_high`);\n      default:\n        return '';\n    }\n  };\n\n  getDescriptionText = (isCurrentWeek) => {\n    const { cumulativeScore, buckets } = this.props;\n    const zone = getZone(cumulativeScore, buckets);\n    if (isCurrentWeek) {\n      const descriptions = `${I18nPrefix}.current.descriptions`;\n      switch (zone) {\n        case CONSTS.ZONES.NONE:\n          return I18n.t(`${descriptions}.none`);\n        case CONSTS.ZONES.LOW:\n          return I18n.t(`${descriptions}.low`, {\n            value: parseInt(buckets[0], 10)\n          });\n        case CONSTS.ZONES.OPTIMUM:\n          return I18n.t(`${descriptions}.optimum`);\n        case CONSTS.ZONES.STEADY_PROGRESS:\n          return I18n.t(`${descriptions}.steady_progress`, {\n            value: parseInt(buckets[2] - cumulativeScore, 10)\n          });\n        case CONSTS.ZONES.HIGH:\n          return I18n.t(`${descriptions}.high`);\n        case CONSTS.ZONES.VERY_HIGH:\n          return I18n.t(`${descriptions}.very_high`);\n        default:\n          return '';\n      }\n    } else {\n      const descriptions = `${I18nPrefix}.past.descriptions`;\n      switch (zone) {\n        case CONSTS.ZONES.NONE:\n          return I18n.t(`${descriptions}.none`);\n        case CONSTS.ZONES.LOW:\n          return I18n.t(`${descriptions}.low_v2`, {\n            value: parseInt(buckets[0], 10)\n          });\n        case CONSTS.ZONES.OPTIMUM:\n          return I18n.t(`${descriptions}.optimum_v2`);\n        case CONSTS.ZONES.STEADY_PROGRESS:\n          return I18n.t(`${descriptions}.steady_progress_v2`, {\n            value: parseInt(buckets[2] - cumulativeScore, 10)\n          });\n        case CONSTS.ZONES.HIGH:\n          return I18n.t(`${descriptions}.high_v2`);\n        case CONSTS.ZONES.VERY_HIGH:\n          return I18n.t(`${descriptions}.very_high_v2`);\n        default:\n          return '';\n      }\n    }\n  };\n\n  dateRange = (activityWeek) => {\n    const date = new Date(activityWeek);\n    const firstDayOfWeek = getFirstDayOfWeekFromDate(date);\n\n    const monday = Cldr.formatDateTime(\n      new Date(date.setDate(firstDayOfWeek + 1)),\n      {\n        format: 'additional',\n        type: 'yMMMd'\n      }\n    );\n    const sunday = Cldr.formatDateTime(\n      new Date(date.setDate(firstDayOfWeek + 7)),\n      {\n        format: 'additional',\n        type: 'yMMMd'\n      }\n    );\n\n    return `${monday} - ${sunday}`;\n  };\n\n  render() {\n    const { year, week, cumulativeScore, buckets } = this.props;\n    const activityWeek = getDateFromYearWeek(year, week);\n    const isCurrentWeek = reUtils.isCurrentWeek(activityWeek);\n    const cumulativeScoreColor = getPrimaryColor(cumulativeScore, buckets);\n\n    return (\n      <div className={styles.container}>\n        <div className={`text-footnote ${styles.dateRange}`}>\n          {this.dateRange(activityWeek)}\n        </div>\n        <div\n          className={`text-display1 ${styles.cumulativeScore}`}\n          style={{ color: cumulativeScoreColor }}\n        >\n          {cumulativeScore}\n        </div>\n        <div className={`text-callout ${styles.title}`}>\n          {this.getTitleText(isCurrentWeek)}\n        </div>\n        <div className={`text-caption1 ${styles.description}`}>\n          {this.getDescriptionText(isCurrentWeek)}\n        </div>\n      </div>\n    );\n  }\n}\n\nWeekInsight.propTypes = {\n  year: PropTypes.number.isRequired,\n  week: PropTypes.number.isRequired,\n  cumulativeScore: PropTypes.number.isRequired,\n  buckets: PropTypes.arrayOf(PropTypes.number).isRequired\n};\n\nexport default WeekInsight;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { XAxis, BarChart, Bar } from 'recharts';\nimport Cldr from 'utils/Cldr';\n\nconst weekdayNames = (key) => {\n  return Cldr.calendar.weekdays({\n    format: 'stand-alone',\n    names_form: 'narrow'\n  })[key];\n};\n\nconst WEEKDAY_KEYS = {\n  0: 'mon',\n  1: 'tue',\n  2: 'wed',\n  3: 'thu',\n  4: 'fri',\n  5: 'sat',\n  6: 'sun'\n};\n\nconst WeekChart = ({ dailyScores }) => {\n  const tickTextStyle = {\n    fill: '#6b6b76',\n    fontSize: '11px'\n  };\n\n  const barData = dailyScores.map((v, i) => ({\n    x: v,\n    w: weekdayNames(WEEKDAY_KEYS[i])\n  }));\n\n  return (\n    <BarChart data={barData} height={120} width={150}>\n      <XAxis\n        dataKey=\"w\"\n        tick={tickTextStyle}\n        stroke=\"none\"\n        minTickGap={0}\n        dy={3}\n      />\n      <Bar dataKey=\"x\" fill=\"#494950\" barSize={11} minPointSize={2} />\n    </BarChart>\n  );\n};\n\nWeekChart.propTypes = {\n  dailyScores: PropTypes.arrayOf(PropTypes.number).isRequired\n};\n\nexport default WeekChart;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n  XAxis,\n  YAxis,\n  CartesianGrid,\n  ComposedChart,\n  ResponsiveContainer,\n  Tooltip,\n  Line,\n  Area,\n  ReferenceLine,\n  ReferenceDot\n} from 'recharts';\nimport Cldr from 'utils/Cldr';\nimport {\n  getPrimaryColor,\n  getSecondaryColor,\n  getDateFromYearWeek,\n  getFirstDayOfWeekFromDate\n} from 'utils/relative-effort';\n\n// Returns Monday date for a given year and week\nfunction getDate(year, week) {\n  const date = getDateFromYearWeek(year, week);\n  const firstDayOfWeek = getFirstDayOfWeekFromDate(date);\n\n  // Shift date to be the first day of the week (Monday)\n  return new Date(date.setDate(firstDayOfWeek + 1));\n}\n\nclass WeeklyGraph extends React.Component {\n  constructor(props) {\n    super(props);\n\n    const { weeklyScores } = props;\n\n    const rangeData = weeklyScores.map((d) => ({\n      date: getDate(d.year, d.week).getTime(),\n      score: d.cumulative_score,\n      range: [d.buckets[0], d.buckets[2]]\n    }));\n\n    const scores = weeklyScores.map((w) => w.cumulative_score);\n    const maxScore = Math.max(...scores);\n\n    this.state = {\n      rangeData,\n      maxScore\n    };\n  }\n\n  onMouseMove = (d) => {\n    const { activeTooltipIndex, isTooltipActive } = d;\n    const { selectedWeekIndex, snapToPoint } = this.props;\n\n    if (!isTooltipActive) {\n      return;\n    }\n\n    if (activeTooltipIndex === selectedWeekIndex) {\n      return;\n    }\n\n    snapToPoint(activeTooltipIndex);\n  };\n\n  formatXAxisTick = (d) =>\n    Cldr.formatDateTime(new Date(d), {\n      format: 'additional',\n      type: 'MMMd'\n    });\n\n  render() {\n    const { weeklyScores, selectedWeekIndex, currentWeekIndex } = this.props;\n    const { rangeData, maxScore } = this.state;\n\n    const tickColor = '#efefef';\n    const tickTextStyle = {\n      fill: '#6b6b76',\n      fontSize: '9px'\n    };\n\n    const activeDotFillColor = getPrimaryColor(\n      weeklyScores[selectedWeekIndex].cumulative_score,\n      weeklyScores[selectedWeekIndex].buckets\n    );\n    const activeDotStrokeColor = getSecondaryColor(\n      weeklyScores[selectedWeekIndex].cumulative_score,\n      weeklyScores[selectedWeekIndex].buckets\n    );\n\n    const showCurrentWeekIndicator = currentWeekIndex !== selectedWeekIndex;\n\n    return (\n      <ResponsiveContainer width=\"100%\" height={160}>\n        <ComposedChart\n          data={rangeData}\n          margin={{ top: 0, right: -20, left: 30 }}\n          onMouseMove={this.onMouseMove}\n        >\n          <CartesianGrid horizontal={false} stroke={tickColor} />\n          <XAxis\n            dy={8}\n            dataKey=\"date\"\n            scale=\"point\"\n            tick={tickTextStyle}\n            tickLine={{ stroke: tickColor }}\n            stroke=\"none\"\n            tickFormatter={this.formatXAxisTick}\n            minTickGap={0}\n          />\n          <YAxis\n            dx={4}\n            orientation=\"right\"\n            tick={tickTextStyle}\n            tickLine={{ stroke: tickColor }}\n            stroke=\"none\"\n            type=\"number\"\n            domain={[0, (dataMax) => dataMax * 1.25]}\n            ticks={[parseInt(maxScore * 0.5, 10), maxScore]}\n          />\n          <Area\n            isAnimationActive={false}\n            dataKey=\"range\"\n            stroke=\"#efefef\"\n            fill=\"#efefef\"\n            fillOpacity={1}\n            activeDot={false}\n          />\n          <Line\n            isAnimationActive={false}\n            dataKey=\"score\"\n            stroke=\"none\"\n            dot={{\n              fill: '#fff',\n              stroke: '#000',\n              strokeWidth: 1.4,\n              r: 3\n            }}\n            activeDot={false}\n          />\n          <Tooltip content={() => {}} cursor={false} />\n          {showCurrentWeekIndicator && (\n            <ReferenceLine\n              x={rangeData[currentWeekIndex].date}\n              stroke=\"#000\"\n              strokeWidth={1}\n            />\n          )}\n          {showCurrentWeekIndicator && (\n            <ReferenceDot\n              x={rangeData[currentWeekIndex].date}\n              y={rangeData[currentWeekIndex].score}\n              fill=\"#000\"\n              stroke=\"none\"\n              r={4}\n            />\n          )}\n          <ReferenceLine\n            x={rangeData[selectedWeekIndex].date}\n            stroke={activeDotFillColor}\n            strokeWidth={1}\n          />\n          <ReferenceDot\n            x={rangeData[selectedWeekIndex].date}\n            y={rangeData[selectedWeekIndex].score}\n            fill={activeDotFillColor}\n            stroke={activeDotStrokeColor}\n            strokeWidth={12}\n            strokeOpacity={0.4}\n            r={5}\n          />\n        </ComposedChart>\n      </ResponsiveContainer>\n    );\n  }\n}\n\nWeeklyGraph.propTypes = {\n  currentWeekIndex: PropTypes.number.isRequired,\n  selectedWeekIndex: PropTypes.number.isRequired,\n  weeklyScores: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n  snapToPoint: PropTypes.func.isRequired\n};\n\nexport default WeeklyGraph;\n","// extracted by mini-css-extract-plugin\nexport default {\"table\":\"Activities--table--ysu9S\",\"type\":\"Activities--type--f-RsU\",\"date\":\"Activities--date--c2qcK\",\"name\":\"Activities--name--YwPVu\",\"time\":\"Activities--time--wdn0B\",\"score\":\"Activities--score--ecTUV\",\"lock-icon-wrap\":\"Activities--lock-icon-wrap--d4iTq\",\"lockIconWrap\":\"Activities--lock-icon-wrap--d4iTq\",\"lock-icon\":\"Activities--lock-icon--TLNEj\",\"lockIcon\":\"Activities--lock-icon--TLNEj\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ActivityIcon from 'components/ActivityIcon';\nimport Cldr from 'utils/Cldr';\nimport I18n from 'utils/I18n';\nimport { getTrainingImpactColor } from 'utils/relative-effort';\n\nimport styles from './styles.scss';\n\nfunction formatDate(date) {\n  return Cldr.formatDateTime(new Date(date), {\n    format: 'additional',\n    type: 'yMEd'\n  });\n}\n\nfunction formatMovingTime(movingTime) {\n  return I18n.timespanFormatter().display(movingTime);\n}\n\nconst Activities = ({ currentActivityId, activities }) => (\n  <table className={styles.table}>\n    <tbody>\n      {activities.map((activity) => (\n        <tr key={activity.id} className={styles.row}>\n          <td className={styles.type}>\n            <ActivityIcon type={activity.activity_type} size=\"small\" />\n          </td>\n          <td className={styles.date}>\n            {formatDate(activity.start_date_local)}\n          </td>\n          <td className={styles.name}>\n            {currentActivityId === activity.id.toString() ? (\n              activity.name\n            ) : (\n              <a href={`/activities/${activity.id}`}>{activity.name}</a>\n            )}\n            {activity.private && (\n              <span className={`app-icon-wrapper ${styles.lockIconWrap}`}>\n                <span\n                  className={`app-icon icon-lock-closed-normal-xsmall ${styles.lockIcon}`}\n                />\n              </span>\n            )}\n          </td>\n          <td className={styles.time}>\n            {formatMovingTime(activity.moving_time)}\n          </td>\n          <td className={styles.score}>\n            <span\n              className=\"text-demi\"\n              style={{ color: getTrainingImpactColor(activity.trending_ratio) }}\n            >\n              {activity.suffer_score}\n            </span>\n          </td>\n        </tr>\n      ))}\n    </tbody>\n  </table>\n);\n\nActivities.propTypes = {\n  currentActivityId: PropTypes.string.isRequired,\n  activities: PropTypes.arrayOf(\n    PropTypes.shape({\n      id: PropTypes.number.isRequired,\n      moving_time: PropTypes.number.isRequired,\n      name: PropTypes.string.isRequired,\n      start_date_local: PropTypes.string.isRequired,\n      suffer_score: PropTypes.number.isRequired,\n      type: PropTypes.string.isRequired,\n      activity_type: PropTypes.string.isRequired\n    })\n  ).isRequired\n};\n\nexport default Activities;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\nimport WeekInsight from './WeekInsight';\nimport WeekChart from './WeekChart';\nimport WeeklyGraph from './WeeklyGraph';\nimport Activities from './Activities';\n\nconst I18nPrefix = 'strava.relative_effort';\n\nclass WeeklySummary extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      selectedWeekIndex: props.selectedWeekIndex\n    };\n  }\n\n  snapToPoint = (index) => {\n    this.setState({ selectedWeekIndex: index });\n  };\n\n  onMouseEnter = () => {\n    clearTimeout(this.mouseLeaveTimer);\n  };\n\n  onMouseLeave = () => {\n    const { selectedWeekIndex: currentWeekIndex } = this.props;\n\n    clearTimeout(this.mouseLeaveTimer);\n    this.mouseLeaveTimer = setTimeout(() => {\n      this.setState({ selectedWeekIndex: currentWeekIndex });\n    }, 250);\n  };\n\n  render() {\n    const { selectedWeekIndex } = this.state;\n    const {\n      weeklyScores,\n      currentActivityId,\n      selectedWeekIndex: currentWeekIndex\n    } = this.props;\n\n    const selectedWeek = weeklyScores[selectedWeekIndex];\n\n    return (\n      <div className={styles.base}>\n        <div className={styles.weekDetails}>\n          <div className={styles.weekChart}>\n            <h3 className={`text-title3 ${styles.title}`}>\n              {I18n.t(`${I18nPrefix}.weekly_effort`)}\n            </h3>\n            <WeekChart dailyScores={selectedWeek.daily_scores} />\n          </div>\n          <div className={styles.weekInsight}>\n            <WeekInsight\n              year={selectedWeek.year}\n              week={selectedWeek.week}\n              cumulativeScore={selectedWeek.cumulative_score}\n              buckets={selectedWeek.buckets}\n            />\n          </div>\n        </div>\n\n        <div className={styles.divider} />\n\n        <div onMouseEnter={this.onMouseEnter} onMouseLeave={this.onMouseLeave}>\n          <div className={styles.weeklyGraph}>\n            <WeeklyGraph\n              currentWeekIndex={currentWeekIndex}\n              selectedWeekIndex={selectedWeekIndex}\n              weeklyScores={weeklyScores}\n              snapToPoint={this.snapToPoint}\n            />\n          </div>\n\n          {selectedWeek.activities.length > 0 && (\n            <>\n              <div className={styles.divider} />\n              <Activities\n                currentActivityId={currentActivityId}\n                activities={selectedWeek.activities}\n              />\n            </>\n          )}\n        </div>\n      </div>\n    );\n  }\n}\n\nWeeklySummary.propTypes = {\n  currentActivityId: PropTypes.string.isRequired,\n  weeklyScores: PropTypes.arrayOf(PropTypes.object).isRequired,\n  selectedWeekIndex: PropTypes.number.isRequired\n};\n\nexport default WeeklySummary;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport createNetworkingClient from 'utils/networking-client';\nimport { Spinner } from '@strava/ui/Spinner';\n\nimport styles from './styles.scss';\nimport Disclaimer from './Disclaimer';\nimport ActivitySummary from './ActivitySummary';\nimport WeeklySummary from './WeeklySummary';\n\nclass TrainingImpact extends React.Component {\n  state = {\n    isLoading: true,\n    disclaimerAgreed: false,\n    weeklyScores: [],\n    selectedWeekIndex: -1,\n    trendingRatio: 0,\n    activitySummary: null\n  };\n\n  componentDidMount() {\n    const { athleteId, activityId } = this.props;\n\n    createNetworkingClient()\n      .get(`/athletes/${athleteId}/relative_effort`, {\n        params: {\n          activity_id: activityId\n        }\n      })\n      .then((response) => {\n        if (response && response.status === 200) {\n          this.handleDataFetchComplete(response.data);\n        } else {\n          // TODO: show some error to the user\n        }\n      })\n      .catch(() => {\n        // TODO: show some error to the user\n      });\n  }\n\n  handleDataFetchComplete = (data) => {\n    const weeklyScores = data.weekly_scores.reverse();\n    const selectedWeekIndex =\n      weeklyScores.length - data.selected_week_index - 1;\n\n    const activitySummary = data.bucket_detail\n      ? {\n          score: data.bucket_detail.relative_effort,\n          label: data.bucket_detail.label ? data.bucket_detail.label : null\n        }\n      : null;\n\n    this.setState({\n      isLoading: false,\n      disclaimerAgreed: data.disclaimer_agreed,\n      weeklyScores,\n      selectedWeekIndex,\n      trendingRatio: data.trending_ratio,\n      activitySummary\n    });\n  };\n\n  handleDisclaimerContinueClick = () => {\n    const { athleteId } = this.props;\n\n    createNetworkingClient().post(\n      `/athletes/${athleteId}/relative_effort_disclaimer_agreed`\n    );\n\n    this.setState({ disclaimerAgreed: true });\n  };\n\n  render() {\n    const {\n      isLoading,\n      disclaimerAgreed,\n      weeklyScores,\n      selectedWeekIndex,\n      trendingRatio,\n      activitySummary\n    } = this.state;\n    const { activityId } = this.props;\n    const showDisclaimer = !disclaimerAgreed;\n\n    if (isLoading) {\n      return (\n        <div className={styles.spinnerContainer}>\n          <Spinner size={16} />\n        </div>\n      );\n    }\n\n    return (\n      <div className={styles.container}>\n        {showDisclaimer && (\n          <Disclaimer\n            handleContinueClick={this.handleDisclaimerContinueClick}\n          />\n        )}\n        <ActivitySummary\n          summary={activitySummary}\n          trendingRatio={trendingRatio}\n        />\n        <WeeklySummary\n          currentActivityId={activityId}\n          weeklyScores={weeklyScores}\n          selectedWeekIndex={selectedWeekIndex}\n        />\n      </div>\n    );\n  }\n}\n\nTrainingImpact.propTypes = {\n  athleteId: PropTypes.number.isRequired,\n  activityId: PropTypes.string.isRequired\n};\n\nexport default TrainingImpact;\n","// extracted by mini-css-extract-plugin\nexport default {\"placeholder-no-op-empty-nothing-here\":\"ExcludedEfforts--placeholder-no-op-empty-nothing-here--W1HBU\",\"placeholderNoOpEmptyNothingHere\":\"ExcludedEfforts--placeholder-no-op-empty-nothing-here--W1HBU\"};","// extracted by mini-css-extract-plugin\nexport default {\"overlay\":\"ExcludedSegmentEffortsModal--overlay--UZ1V5\",\"close-button\":\"ExcludedSegmentEffortsModal--close-button--yftv9\",\"closeButton\":\"ExcludedSegmentEffortsModal--close-button--yftv9\",\"excluded-efforts\":\"ExcludedSegmentEffortsModal--excluded-efforts---QO+E\",\"excludedEfforts\":\"ExcludedSegmentEffortsModal--excluded-efforts---QO+E\",\"ee-description\":\"ExcludedSegmentEffortsModal--ee-description--DcCJN\",\"eeDescription\":\"ExcludedSegmentEffortsModal--ee-description--DcCJN\",\"table-data-body\":\"ExcludedSegmentEffortsModal--table-data-body--138Ly\",\"tableDataBody\":\"ExcludedSegmentEffortsModal--table-data-body--138Ly\",\"table-body\":\"ExcludedSegmentEffortsModal--table-body--E1MDm\",\"tableBody\":\"ExcludedSegmentEffortsModal--table-body--E1MDm\",\"subtitle\":\"ExcludedSegmentEffortsModal--subtitle--LoIU4\"};","// extracted by mini-css-extract-plugin\nexport default {\"unit\":\"AbbrUnit--unit--zfiTg\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './styles.scss';\n\nconst AbbrUnit = ({ data }) => {\n  return (\n    <>\n      {data.value}\n      <abbr className={styles.unit} title={data.unit.unit_long}>\n        {data.unit.unit_short}\n      </abbr>\n    </>\n  );\n};\n\nAbbrUnit.propTypes = {\n  data: PropTypes.shape({\n    value: PropTypes.string,\n    unit: PropTypes.shape({\n      unit_long: PropTypes.string,\n      unit_short: PropTypes.string\n    })\n  }).isRequired\n};\n\nexport default AbbrUnit;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n  ModalOverlay,\n  ModalContent,\n  ModalCloseButton,\n  ModalTitle,\n  ModalBody\n} from '@strava/ui/Modal';\nimport I18n from 'utils/I18n';\nimport { trackV2 } from 'utils/analytics';\n\nimport styles from './styles.scss';\n\nimport AbbrUnit from './components/AbbrUnit';\n\nconst ExcludedSegmentEffortsModal = ({\n  entity,\n  flaggedEfforts,\n  speedUnit,\n  isModalOpen,\n  onDismiss\n}) => {\n  const trackModalClick = () => {\n    trackV2({\n      action: 'click',\n      element: 'learn_more',\n      category: 'segments',\n      page: 'excluded_efforts',\n      properties: { source: `${entity}_detail` }\n    });\n    return true;\n  };\n\n  const modalContent = () => {\n    return (\n      <>\n        <ModalCloseButton className={styles.closeButton} onClick={onDismiss} />\n        <ModalTitle id=\"excluded-segment-efforts-modal-title\">\n          {I18n.t(\n            'strava.labs.activities.segments_view.excluded_efforts.heading'\n          )}\n        </ModalTitle>\n        <ModalBody className={styles.excludedEfforts}>\n          <p className={styles.eeDescription}>\n            {I18n.t(\n              'strava.labs.activities.segments_view.excluded_efforts.description1_v2'\n            )}\n          </p>\n          <p className={styles.eeDescription}>\n            {I18n.t_html(\n              'strava.labs.activities.segments_view.excluded_efforts.description2_html',\n              {\n                learn_more_path:\n                  'https://support.strava.com/hc/articles/360061896712'\n              },\n              {\n                onLinkClick: trackModalClick\n              }\n            )}\n          </p>\n          <table>\n            <thead>\n              <tr>\n                <th>{I18n.t('templates.activities.segments.table.name')}</th>\n                <th>{I18n.t('templates.activities.segments.table.time')}</th>\n                {speedUnit && (\n                  <th>\n                    {I18n.t(\n                      `templates.activities.segments.table.speed.${speedUnit}`\n                    )}\n                  </th>\n                )}\n              </tr>\n            </thead>\n            <tbody>\n              {flaggedEfforts.map((row) => (\n                <tr key={row.id}>\n                  <td className={styles.tableDataBody}>\n                    <div>\n                      {entity === 'segment' && (\n                        <p className={styles.tableBody}>\n                          <a href={row.path}>{row.date}</a>\n                        </p>\n                      )}\n                      {entity === 'activity' && (\n                        <p className={styles.tableBody}>\n                          <a href={row.path}>{row.name}</a>\n                        </p>\n                      )}\n                      <p className={styles.subtitle}>\n                        {`${I18n.t(\n                          'strava.labs.activities.segments_view.excluded_efforts.subtitle'\n                        )} - `}{' '}\n                        <AbbrUnit data={row.distance} />{' '}\n                        <AbbrUnit data={row.elev_difference} />{' '}\n                        <AbbrUnit data={row.avg_grade} />\n                      </p>\n                    </div>\n                  </td>\n                  <td className={styles.tableDataBody}>{row.elapsed_time}</td>\n                  <td className={styles.tableDataBody}>\n                    <AbbrUnit data={row.avg_speed} />\n                  </td>\n                </tr>\n              ))}\n            </tbody>\n          </table>\n        </ModalBody>\n      </>\n    );\n  };\n\n  return (\n    <ModalOverlay\n      isOpen={isModalOpen}\n      onDismiss={onDismiss}\n      className={styles.overlay}\n    >\n      <ModalContent aria-labelledby=\"excluded-segment-efforts-modal-title\">\n        {modalContent()}\n      </ModalContent>\n    </ModalOverlay>\n  );\n};\n\nconst abbrUnitType = PropTypes.shape({\n  value: PropTypes.string,\n  unit: PropTypes.shape({\n    unit_long: PropTypes.string,\n    unit_short: PropTypes.string\n  })\n}).isRequired;\n\nExcludedSegmentEffortsModal.propTypes = {\n  entity: PropTypes.oneOf(['activity', 'segment']).isRequired,\n  flaggedEfforts: PropTypes.arrayOf(\n    PropTypes.shape({\n      id: PropTypes.number,\n      path: PropTypes.string,\n      date: PropTypes.string,\n      name: PropTypes.string,\n      distance: abbrUnitType,\n      elev_difference: abbrUnitType,\n      avg_grade: abbrUnitType,\n      avg_speed: abbrUnitType,\n      elapsed_time: PropTypes.string\n    })\n  ).isRequired,\n  speedUnit: PropTypes.string,\n  isModalOpen: PropTypes.bool.isRequired,\n  onDismiss: PropTypes.func.isRequired\n};\n\nexport default ExcludedSegmentEffortsModal;\n","export { default } from './ExcludedSegmentEffortsModal';\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport I18n from 'utils/I18n';\nimport { trackV2 } from 'utils/analytics';\nimport createNetworkingClient from 'utils/networking-client';\nimport { Spinner } from '@strava/ui/Spinner';\nimport styles from './styles.scss';\n\nimport ExcludedSegmentEffortsModal from '../../segments/ExcludedSegmentEffortsModal';\n\nconst ExcludedEfforts = ({ activityId }) => {\n  const [isLoading, setIsLoading] = useState(true);\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [flaggedEfforts, setFlaggedEfforts] = useState([]);\n  const [speedUnit, setSpeedUnit] = useState(null);\n\n  useEffect(() => {\n    const fetchData = async () => {\n      const url = '/frontend/segments/excluded_efforts';\n      const params = { params: { entity: 'activity', id: activityId } };\n      createNetworkingClient()\n        .get(url, params)\n        .then(({ data }) => {\n          setFlaggedEfforts(data.flagged_efforts);\n          setSpeedUnit(data.speed_unit);\n        })\n        .catch(() => {})\n        .finally(() => {\n          setIsLoading(false);\n        });\n    };\n\n    fetchData();\n  }, [activityId]);\n\n  useEffect(() => {\n    if (flaggedEfforts.length > 0) {\n      trackV2({\n        action: 'screen_enter',\n        element: 'excluded_efforts',\n        category: 'activity_detail',\n        page: 'activity_detail'\n      });\n    }\n  }, [flaggedEfforts]);\n\n  const spinner = (\n    <div className={styles.spinner}>\n      <Spinner />\n    </div>\n  );\n\n  const openModal = () => {\n    setIsModalOpen(true);\n    trackV2({\n      action: 'click',\n      element: 'excluded_efforts',\n      category: 'activity_detail',\n      page: 'activity_detail'\n    });\n    trackV2({\n      action: 'screen_enter',\n      category: 'segments',\n      page: 'excluded_efforts'\n    });\n  };\n\n  const closeModal = () => {\n    setIsModalOpen(false);\n    trackV2({\n      action: 'screen_exit',\n      category: 'segments',\n      page: 'excluded_efforts'\n    });\n  };\n\n  const button = (\n    <>\n      <button className=\"compact minimal\" type=\"button\" onClick={openModal}>\n        {I18n.t(\n          'strava.labs.activities.segments_view.excluded_efforts.show_lightbox',\n          { count: flaggedEfforts.length }\n        )}\n      </button>\n      <ExcludedSegmentEffortsModal\n        entity=\"activity\"\n        id={activityId}\n        flaggedEfforts={flaggedEfforts}\n        speedUnit={speedUnit}\n        isModalOpen={isModalOpen}\n        onDismiss={closeModal}\n      />\n    </>\n  );\n\n  if (isLoading) {\n    return spinner;\n  }\n\n  if (flaggedEfforts.length > 0) {\n    return button;\n  }\n\n  return null;\n};\n\nExcludedEfforts.propTypes = {\n  activityId: PropTypes.number.isRequired\n};\n\nexport default ExcludedEfforts;\n","// extracted by mini-css-extract-plugin\nexport default {\"modal\":\"CorrectDistance--modal--AqffP\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Modal, ModalTitle, ModalBody, ModalActions } from '@strava/ui/Modal';\nimport { Button } from '@strava/ui/Button';\n\nimport { csrfToken } from 'utils/networking-client';\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\n\nconst CorrectDistance = ({ activityId, activeSource }) => {\n  const [isModalOpen, setIsModalOpen] = useState(false);\n\n  const toggleModalOpen = () => {\n    setIsModalOpen(!isModalOpen);\n  };\n\n  const modalContents =\n    activeSource === 'device' ? (\n      <>\n        <ModalBody>\n          {I18n.t_html(\n            'templates.activities.distance_correction.synthetic_html'\n          )}\n        </ModalBody>\n\n        <ModalActions>\n          <Button type=\"submit\" variant=\"primary\">\n            {I18n.t(\n              'templates.activities.distance_correction.correct_distance'\n            )}\n          </Button>\n        </ModalActions>\n      </>\n    ) : (\n      <>\n        <ModalBody>\n          {I18n.t_html(\n            'templates.activities.distance_correction.synthetic_revert_html'\n          )}\n        </ModalBody>\n\n        <ModalActions>\n          <Button type=\"submit\" variant=\"default\">\n            {I18n.t(\n              'templates.activities.distance_correction.correct_distance_revert'\n            )}\n          </Button>\n        </ModalActions>\n      </>\n    );\n\n  const CorrectDistanceModal = (\n    <Modal\n      isOpen={isModalOpen}\n      onDismiss={toggleModalOpen}\n      hasClose={true}\n      className={styles.modal}\n      aria-labelledby=\"correct-distance-modal-title\"\n    >\n      <form\n        action={`/activities/${activityId}/swap_distance_stream?to_source=${\n          activeSource === 'device' ? 'synthetic' : 'device'\n        }`}\n        method=\"post\"\n      >\n        <input type=\"hidden\" name=\"authenticity_token\" value={csrfToken()} />\n\n        <ModalTitle id=\"correct-distance-modal-title\">\n          {I18n.t('templates.activities.distance_correction.distance_help')}\n        </ModalTitle>\n        {modalContents}\n      </form>\n    </Modal>\n  );\n\n  return (\n    <>\n      {\n        // This is needed in order to make the link match all the others in the rails side menu\n        // TODO this should be changed to a sidebar of buttons for accesibility once moved out of rails\n      }\n      {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n      <a href=\"#\" onClick={toggleModalOpen}>\n        {activeSource === 'device'\n          ? I18n.t('templates.activities.distance_correction.correct_distance')\n          : I18n.t(\n              'templates.activities.distance_correction.correct_distance_revert'\n            )}\n      </a>\n      {CorrectDistanceModal}\n    </>\n  );\n};\n\nCorrectDistance.propTypes = {\n  activityId: PropTypes.number.isRequired,\n  activeSource: PropTypes.string.isRequired\n};\n\nexport default CorrectDistance;\n","// extracted by mini-css-extract-plugin\nexport default {\"modal\":\"CorrectElevation--modal--xSbDt\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Modal, ModalTitle, ModalBody, ModalActions } from '@strava/ui/Modal';\nimport { Button } from '@strava/ui/Button';\n\nimport { csrfToken } from 'utils/networking-client';\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\n\nconst CorrectElevation = ({\n  activityId,\n  activeSource,\n  lookupExists,\n  adjusting\n}) => {\n  const [isModalOpen, setIsModalOpen] = useState(false);\n\n  const toggleModalOpen = () => {\n    setIsModalOpen(!isModalOpen);\n  };\n\n  const formAction = lookupExists\n    ? `/activities/${activityId}/swap_elevation_stream?from_source=${activeSource}`\n    : `/activities/${activityId}/fetch_elevation?send_notification=true`;\n\n  const modalContents = (\n    <>\n      <form action={formAction} method=\"post\">\n        <input type=\"hidden\" name=\"authenticity_token\" value={csrfToken()} />\n        {lookupExists && <input type=\"hidden\" name=\"_method\" value=\"put\" />}\n\n        <ModalTitle>\n          {I18n.t('templates.activities.elevation_correction.elevation_help')}\n        </ModalTitle>\n\n        {activeSource === 'lookup' ? (\n          <>\n            <ModalBody>\n              {I18n.t_html(\n                'templates.activities.elevation_correction.lookup_revert_v2_html',\n                {\n                  support_article_url:\n                    'https://support.strava.com/hc/en-us/articles/216919447-Elevation-for-Your-Activity'\n                }\n              )}\n            </ModalBody>\n\n            <ModalActions>\n              <Button type=\"submit\" variant=\"default\">\n                {I18n.t(\n                  'templates.activities.elevation_correction.correct_elevation_revert'\n                )}\n              </Button>\n            </ModalActions>\n          </>\n        ) : (\n          <>\n            <ModalBody>\n              {I18n.t_html(\n                'templates.activities.elevation_correction.lookup_v2_html',\n                {\n                  support_article_url:\n                    'https://support.strava.com/hc/en-us/articles/216919447-Elevation-for-Your-Activity'\n                }\n              )}\n            </ModalBody>\n\n            <ModalActions>\n              <Button type=\"submit\" variant=\"primary\">\n                {I18n.t(\n                  'templates.activities.elevation_correction.correct_elevation'\n                )}\n              </Button>\n            </ModalActions>\n          </>\n        )}\n      </form>\n    </>\n  );\n\n  const CorrectElevationModal = (\n    <Modal\n      isOpen={isModalOpen}\n      onDismiss={toggleModalOpen}\n      hasClose={true}\n      className={styles.modal}\n      aria-labelledby=\"correct-elevation-modal-title\"\n    >\n      {adjusting ? (\n        <>\n          <ModalTitle id=\"correct-elevation-modal-title\">\n            {I18n.t('templates.activities.elevation_correction.elevation_help')}\n          </ModalTitle>\n          <ModalBody>\n            {I18n.t_html(\n              'templates.activities.elevation_correction.adjusting_html'\n            )}\n          </ModalBody>\n        </>\n      ) : (\n        modalContents\n      )}\n    </Modal>\n  );\n\n  return (\n    <>\n      {\n        // This is needed in order to make the link match all the others in the rails side menu\n        // TODO this should be changed to a sidebar of buttons for accesibility once moved out of rails\n      }\n      {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n      <a href=\"#\" onClick={toggleModalOpen}>\n        {activeSource === 'device'\n          ? I18n.t(\n              'templates.activities.elevation_correction.correct_elevation'\n            )\n          : I18n.t(\n              'templates.activities.elevation_correction.correct_elevation_revert'\n            )}\n      </a>\n      {CorrectElevationModal}\n    </>\n  );\n};\n\nCorrectElevation.propTypes = {\n  activityId: PropTypes.number.isRequired,\n  activeSource: PropTypes.string.isRequired,\n  lookupExists: PropTypes.bool.isRequired,\n  adjusting: PropTypes.bool.isRequired\n};\n\nexport default CorrectElevation;\n","// extracted by mini-css-extract-plugin\nexport default {\"modal-header\":\"MapTypeInfo--modal-header--advB4\",\"modalHeader\":\"MapTypeInfo--modal-header--advB4\"};","// extracted by mini-css-extract-plugin\nexport default {\"info-button\":\"InfoModal--info-button--fQxXq\",\"infoButton\":\"InfoModal--info-button--fQxXq\"};","import React, { useState } from 'react';\nimport { Button } from '@strava/ui/Button';\nimport PropTypes from 'prop-types';\nimport I18n from 'utils/I18n';\nimport clsx from 'clsx';\n\nimport { Modal, ModalBody } from '@strava/ui/Modal';\nimport NavigationInformationNormalXsmall from '@strava/icons/NavigationInformationNormalXsmall';\n\nimport styles from './styles.scss';\n\nconst InfoModal = ({ children, className = '' }) => {\n  const [isModalOpen, setIsModalOpen] = useState(false);\n\n  const toggleModalOpen = () => {\n    setIsModalOpen(!isModalOpen);\n  };\n\n  const ContentModal = (\n    <Modal isOpen={isModalOpen} onDismiss={toggleModalOpen} hasClose={true}>\n      <ModalBody>{children}</ModalBody>\n    </Modal>\n  );\n\n  return (\n    <>\n      <Button\n        className={clsx(styles.infoButton, className)}\n        variant=\"icon\"\n        type=\"button\"\n        onClick={toggleModalOpen}\n        aria-label={I18n.t('strava.info.modal.open_modal')}\n      >\n        <NavigationInformationNormalXsmall color=\"grey\" aria-hidden={true} />\n      </Button>\n      {ContentModal}\n    </>\n  );\n};\n\nInfoModal.propTypes = {\n  children: PropTypes.element.isRequired,\n  className: PropTypes.string\n};\n\nexport default InfoModal;\n","import React from 'react';\n\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\nimport InfoModal from '../../../components/InfoModal/InfoModal';\n\nconst MapTypeInfo = () => {\n  const MapTypeModal = (\n    <>\n      <div className={styles.modalHeader}>\n        {I18n.t('templates.activities.edit.map_types.modal.title')}\n      </div>\n      <p>{I18n.t('templates.activities.edit.map_types.modal.text_1')}</p>\n      <p>\n        {I18n.t_html('templates.activities.edit.map_types.modal.text_2_html')}\n      </p>\n    </>\n  );\n\n  return <InfoModal> {MapTypeModal} </InfoModal>;\n};\n\nexport default MapTypeInfo;\n","// extracted by mini-css-extract-plugin\nexport default {\"modal-header\":\"HideStatsInfo--modal-header--clEVm\",\"modalHeader\":\"HideStatsInfo--modal-header--clEVm\"};","import React from 'react';\n\nimport I18n from 'utils/I18n';\nimport InfoModal from '../../../components/InfoModal/InfoModal';\n\nimport styles from './styles.scss';\n\nconst HideStatsInfo = () => {\n  return (\n    <InfoModal>\n      <div className={styles.modalHeader}>\n        {I18n.t('templates.activities.edit.hide_stats.modal.title_v2')}\n      </div>\n      <p>{I18n.t('templates.activities.edit.hide_stats.modal.text_1')}</p>\n      <p>{I18n.t('templates.activities.edit.hide_stats.modal.text_2')}</p>\n    </InfoModal>\n  );\n};\n\nexport default HideStatsInfo;\n","// extracted by mini-css-extract-plugin\nexport default {\"map-control-container\":\"ActivityDetailsMap--map-control-container--2I9DR\",\"mapControlContainer\":\"ActivityDetailsMap--map-control-container--2I9DR\",\"map-controls\":\"ActivityDetailsMap--map-controls--VncXn\",\"mapControls\":\"ActivityDetailsMap--map-controls--VncXn\",\"button\":\"ActivityDetailsMap--button--nkq2h\",\"full-screen-toggle\":\"ActivityDetailsMap--full-screen-toggle--lMLcR\",\"fullScreenToggle\":\"ActivityDetailsMap--full-screen-toggle--lMLcR\",\"privacy-legend\":\"ActivityDetailsMap--privacy-legend--CdfZb\",\"privacyLegend\":\"ActivityDetailsMap--privacy-legend--CdfZb\",\"legend-item\":\"ActivityDetailsMap--legend-item--QDaCn\",\"legendItem\":\"ActivityDetailsMap--legend-item--QDaCn\",\"line\":\"ActivityDetailsMap--line--n6Pbd\",\"visible\":\"ActivityDetailsMap--visible--vqAxc\",\"hidden\":\"ActivityDetailsMap--hidden--KmV53\"};","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { components } from 'react-select';\nimport I18n from 'utils/I18n';\nimport { MAP_STYLES } from '@strava/ui/Map';\nimport { DropdownSelect } from '@strava/ui/DropdownSelect';\nimport ActivityRoutesNormalXsmall from '@strava/icons/ActivityRoutesNormalXsmall';\nimport ActionsDownloadNormalXsmall from '@strava/icons/ActionsDownloadNormalXsmall';\nimport ActionsFullScreenEnterNormalXsmall from '@strava/icons/ActionsFullScreenEnterNormalXsmall';\nimport ActionsFullScreenExitNormalXsmall from '@strava/icons/ActionsFullScreenExitNormalXsmall';\nimport ActionsArrowDownNormalXsmall from '@strava/icons/ActionsArrowDownNormalXsmall';\nimport styles from './MapControls.scss';\n\nconst MapControls = ({\n  showCreateRoute = true,\n  activityId,\n  showGpxDownload = true,\n  showFullScreenToggle = false,\n  mapStyle,\n  handleMapStyleChange,\n  hasPrivacyZones\n}) => {\n  const [isFullscreen, setIsFullscreen] = useState(false);\n\n  useEffect(() => {\n    const isSafari =\n      /safari/.test(navigator.userAgent.toLowerCase()) &&\n      !/chrome/.test(navigator.userAgent.toLowerCase());\n\n    const className = isSafari ? 'fauxscreen' : 'fullscreen';\n\n    if (isFullscreen) {\n      document.body.classList.add(className);\n    } else {\n      document.body.classList.remove(className);\n    }\n  }, [isFullscreen]);\n\n  const handleFullscreenToggleClick = () => {\n    const toggleFullscreenEvent = new CustomEvent('toggleFullscreen');\n    document.dispatchEvent(toggleFullscreenEvent);\n\n    setIsFullscreen(!isFullscreen);\n  };\n\n  const styleOptions = Object.keys(MAP_STYLES).map((style) => ({\n    label: I18n.t(`strava.maps.mapbox_gl.custom_control.map_style.${style}`),\n    value: style\n  }));\n\n  const DropdownIndicator = (props) => {\n    return (\n      <components.DropdownIndicator {...props}>\n        <ActionsArrowDownNormalXsmall />\n      </components.DropdownIndicator>\n    );\n  };\n\n  // This is a crazy amount of work to achieve custom height/styling, but this is a well\n  // documented/complained about limitation of react-select. Custom styles pulled from\n  // https://github.com/JedWatson/react-select/issues/1322#issuecomment-591189551 and\n  // modified.\n  const customDropdownStyles = {\n    control: (base) => ({\n      ...base,\n      width: 120,\n      minHeight: 'initial',\n      backgroundColor: '#f7f7fa',\n      cursor: 'pointer',\n      '&:hover': {\n        backgroundColor: '#f0f0f5'\n      },\n      borderColor: '#dfdfe8'\n    }),\n    valueContainer: (base) => ({\n      ...base,\n      height: `${30 - 1 - 1}px`,\n      padding: '0 8px'\n    }),\n    singleValue: (base) => ({\n      ...base,\n      marginBottom: 5,\n      color: '#007FB6'\n    }),\n    indicatorSeparator: () => ({\n      display: 'none'\n    }),\n    dropdownIndicator: () => ({\n      display: 'flex',\n      alignItems: 'center',\n      padding: `${(30 - 20 - 1 - 1) / 2}px 8px`,\n      color: '#000',\n      '& svg': {\n        height: 12,\n        width: 12\n      }\n    }),\n    menu: (base) => ({\n      ...base,\n      marginTop: 0,\n      zIndex: 3\n    }),\n    option: (base) => ({\n      ...base,\n      cursor: 'pointer'\n    })\n  };\n\n  return (\n    <div className={styles.mapControlContainer}>\n      <div className={styles.mapControls}>\n        {showCreateRoute && (\n          <a\n            className={styles.button}\n            id=\"create-route\"\n            href={`/activities/${activityId}/route`}\n          >\n            <ActivityRoutesNormalXsmall />\n            <span>\n              {I18n.t('strava.maps.mapbox_gl.custom_control.create_route')}\n            </span>\n          </a>\n        )}\n\n        {showGpxDownload && (\n          <a\n            className={styles.button}\n            id=\"gpx-download\"\n            href={`/activities/${activityId}/export_gpx`}\n          >\n            <ActionsDownloadNormalXsmall />\n            <span>\n              {I18n.t('strava.maps.mapbox_gl.custom_control.export_gpx')}\n            </span>\n          </a>\n        )}\n\n        <DropdownSelect\n          value={styleOptions.find((option) => option.value === mapStyle)}\n          onChange={handleMapStyleChange}\n          options={styleOptions}\n          isSearchable={false}\n          blurInputOnSelect={true}\n          components={{\n            DropdownIndicator\n          }}\n          styles={customDropdownStyles}\n        />\n\n        {showFullScreenToggle && (\n          <button\n            className={`${styles.button} ${styles.fullScreenToggle}`}\n            onClick={handleFullscreenToggleClick}\n            label={I18n.t(\n              isFullscreen\n                ? 'strava.maps.mapbox_gl.custom_control.exit_fullscreen_mode'\n                : 'strava.maps.mapbox_gl.custom_control.enter_fullscreen_mode'\n            )}\n          >\n            {isFullscreen ? (\n              <ActionsFullScreenExitNormalXsmall />\n            ) : (\n              <ActionsFullScreenEnterNormalXsmall />\n            )}\n          </button>\n        )}\n      </div>\n\n      {hasPrivacyZones && (\n        <div className={styles.privacyLegend}>\n          <div className={styles.legendItem}>\n            <div className={`${styles.line} ${styles.visible}`} />\n            <div>\n              {I18n.t(\n                'strava.maps.mapbox_gl.custom_control.route_visible_label'\n              )}\n            </div>\n          </div>\n          <div className={styles.legendItem}>\n            <div className={`${styles.line} ${styles.hidden}`} />\n            <div>\n              {I18n.t(\n                'strava.maps.mapbox_gl.custom_control.route_hidden_label'\n              )}\n            </div>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n\nMapControls.propTypes = {\n  showCreateRoute: PropTypes.bool,\n  activityId: PropTypes.number.isRequired,\n  showGpxDownload: PropTypes.bool,\n  showFullScreenToggle: PropTypes.bool,\n  mapStyle: PropTypes.string.isRequired,\n  handleMapStyleChange: PropTypes.func.isRequired,\n  hasPrivacyZones: PropTypes.bool.isRequired\n};\n\nexport default MapControls;\n","// extracted by mini-css-extract-plugin\nexport default {\"map\":\"ActivityDetailsMap--map--gchax\",\"photo-marker\":\"ActivityDetailsMap--photo-marker--WZoCF\",\"photoMarker\":\"ActivityDetailsMap--photo-marker--WZoCF\",\"photo-arrow\":\"ActivityDetailsMap--photo-arrow--wXhOL\",\"photoArrow\":\"ActivityDetailsMap--photo-arrow--wXhOL\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Polyline } from '@strava/ui/Map';\nimport { color } from '@strava/ui-tokens/js';\n\nconst PrivacyZonePolylines = ({\n  polyline,\n  privacyZoneFromStartIndex,\n  privacyZoneFromEndIndex\n}) => {\n  const privacyZonePolylineStyle = {\n    lineColor: color.colorExtendedNeutralN2,\n    outlineWidth: 5\n  };\n\n  return (\n    <>\n      <Polyline\n        latLng={[...polyline.slice(0, privacyZoneFromStartIndex)]}\n        id=\"privacy-polyline-start\"\n        style={privacyZonePolylineStyle}\n      />\n\n      <Polyline\n        latLng={[\n          ...polyline.slice(\n            polyline.length - privacyZoneFromEndIndex,\n            polyline.length - 1\n          )\n        ]}\n        id=\"privacy-polyline-end\"\n        style={privacyZonePolylineStyle}\n      />\n    </>\n  );\n};\n\nPrivacyZonePolylines.propTypes = {\n  polyline: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.number)).isRequired,\n  privacyZoneFromStartIndex: PropTypes.number.isRequired,\n  privacyZoneFromEndIndex: PropTypes.number.isRequired\n};\n\nexport default PrivacyZonePolylines;\n","// extracted by mini-css-extract-plugin\nexport default {\"video-player\":\"Video--video-player--cbWW0\",\"videoPlayer\":\"Video--video-player--cbWW0\"};","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { isEqual } from 'lodash-es';\nimport videojs from 'video.js';\nimport 'video.js/dist/video-js.css';\n\nimport clsx from 'clsx';\n\nimport { trackV2 } from 'utils/analytics';\nimport { publicServiceEnv } from 'utils/public-service-env';\n\nimport styles from './Video.scss';\n\nconst { VIDEOJS_LOG_LEVEL = 'error' } = publicServiceEnv;\n\n// Duration in seconds that a video should play for to consider it a \"quality\"\n// play for analytics purposes.\nconst QUALITY_PLAY_DURATION = 3;\n\n// Only show error logs from videojs as warning and other logs can get noisy in\n// production.\n//\nvideojs.log.level(VIDEOJS_LOG_LEVEL);\n\nfunction Video({ mediaId, options, className, onReady }) {\n  const videoRef = useRef(null);\n  const playerRef = useRef(null);\n\n  const [hasPlay, setHasPlay] = useState(false);\n  const [hasQualityPlay, setHasQualityPlay] = useState(false);\n\n  useEffect(() => {\n    if (!playerRef.current) {\n      if (!videoRef.current) {\n        return;\n      }\n\n      playerRef.current = videojs(videoRef.current, {\n        controlBar: {\n          children: [\n            'playToggle',\n            'volumePanel',\n            'currentTimeDisplay',\n            'progressControl',\n            'durationDisplay',\n            'fullscreenToggle'\n          ]\n        },\n        ...options\n      });\n\n      if (onReady) {\n        onReady(playerRef.current);\n      }\n    } else {\n      const player = playerRef.current;\n\n      // As sources usually are a really small object there should not be any\n      // issues with using isEqual and deep comparing two objects\n      if (!isEqual(player.options().sources, options.sources)) {\n        player.src(options.sources);\n      }\n      if (player.autoplay() !== options.autoplay) {\n        player.autoplay(options.autoplay);\n      }\n      if (player.controls() !== options.controls) {\n        player.controls(options.controls);\n      }\n      if (player.muted() !== options.muted) {\n        player.muted(options.muted);\n      }\n      if (player.loop() !== options.loop) {\n        player.loop(options.loop);\n      }\n    }\n  }, [options, onReady]);\n\n  useEffect(() => {\n    return () => {\n      if (playerRef.current) {\n        playerRef.current.dispose();\n        playerRef.current = null;\n      }\n    };\n  }, []);\n\n  const trackAction = useCallback((action) => {\n    trackV2({\n      action,\n      category: 'media',\n      page: 'lightbox',\n      properties: {\n        autoplay: playerRef.current?.autoplay() ? 1 : 0,\n        media_id: mediaId\n      }\n    });\n  }, [mediaId]);\n\n  const onPlay = useCallback(() => {\n    trackAction('video_start');\n    if (!hasPlay) {\n      setHasPlay(true);\n    }\n    if (!playerRef.current) {\n      return;\n    }\n\n    // Reset quality play state if the video is replayed so we can capture\n    // subsequent quality plays. Typically triggered when a user manually\n    // replays the video.\n    if (hasPlay && playerRef.current.currentTime() < 0.1) {\n      setHasQualityPlay(false);\n    }\n  }, [hasPlay, trackAction]);\n\n  const onTimeUpdate = useCallback(() => {\n    if (\n      !hasQualityPlay &&\n      playerRef.current?.currentTime() >= QUALITY_PLAY_DURATION\n    ) {\n      trackAction(`video_progress_${QUALITY_PLAY_DURATION}s`);\n      setHasQualityPlay(true);\n    }\n  }, [hasQualityPlay, trackAction]);\n\n  return (\n    <div data-vjs-player={true}>\n      {/* eslint-disable-next-line jsx-a11y/media-has-caption */}\n      <video\n        ref={videoRef}\n        className={clsx(\n          'video-js vjs-big-play-centered',\n          className,\n          styles.videoPlayer\n        )}\n        playsInline={true}\n        autoPlay={false}\n        muted={true}\n        onPlay={onPlay}\n        onEnded={() => trackAction('video_end')}\n        onTimeUpdate={onTimeUpdate}\n      />\n    </div>\n  );\n}\n\nVideo.propTypes = {\n  mediaId: PropTypes.string.isRequired,\n  // Full list of options can be checked here:\n  // https://docs.videojs.com/tutorial-options.html\n  // The following is not a complete list so please\n  // add more as needed!\n  options: PropTypes.shape({\n    autoplay: PropTypes.oneOfType([\n      PropTypes.bool,\n      PropTypes.oneOf(['muted', 'play', 'any'])\n    ]),\n    sources: PropTypes.arrayOf(\n      PropTypes.shape({\n        src: PropTypes.string,\n        type: PropTypes.string\n      })\n    ),\n    controls: PropTypes.bool,\n    muted: PropTypes.bool,\n    loop: PropTypes.bool\n  }).isRequired,\n  onReady: PropTypes.func,\n  className: PropTypes.string\n};\n\nexport default Video;\n","export { default } from './Video';\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Video from 'components/Video';\n\nfunction VideoWrapper({ media, onReady = () => {}, options = {}, className }) {\n  const { video, large, photo_id: mediaId } = media;\n\n  return (\n    // TODO: Placeholder for enhanced tag?\n    <Video\n      mediaId={mediaId}\n      options={{\n        autoplay: false,\n        controls: true,\n        responsive: true,\n        fluid: true,\n        sources: [{ src: video }],\n        poster: large,\n        ...options\n      }}\n      className={className}\n      onReady={onReady}\n    />\n  );\n}\n\nVideoWrapper.propTypes = {\n  media: PropTypes.shape({\n    photo_id: PropTypes.string,\n    video: PropTypes.string,\n    type: PropTypes.string,\n    large: PropTypes.string\n  }).isRequired,\n  onReady: PropTypes.func,\n  options: PropTypes.shape({}),\n  className: PropTypes.string\n};\n\nexport default VideoWrapper;\n","export { default } from './VideoWrapper';\n","// extracted by mini-css-extract-plugin\nexport default {\"overlay\":\"BaseModal--overlay--JgxJN\",\"modal\":\"BaseModal--modal--cURyY\",\"content\":\"BaseModal--content--4uJ6j\",\"header\":\"BaseModal--header--CTyR-\",\"header-title\":\"BaseModal--header-title--2vDYq\",\"headerTitle\":\"BaseModal--header-title--2vDYq\",\"header-content\":\"BaseModal--header-content--uHY8Q\",\"headerContent\":\"BaseModal--header-content--uHY8Q\",\"close-button\":\"BaseModal--close-button--6RBIw\",\"closeButton\":\"BaseModal--close-button--6RBIw\",\"body\":\"BaseModal--body--ePynr\",\"save-btn\":\"BaseModal--save-btn---rIFk\",\"saveBtn\":\"BaseModal--save-btn---rIFk\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Button } from '@strava/ui/Button';\nimport { ModalOverlay, ModalContent } from '@strava/ui/Modal';\nimport ActionsCancelNormalXsmall from '@strava/icons/ActionsCancelNormalXsmall';\n\nimport styles from './styles.scss';\n\nconst BaseModal = ({\n  children,\n  onSubmit = () => {},\n  onDismiss = () => {},\n  isSaving = false,\n  hasChanges = false,\n  title,\n  buttonLabels,\n  isOpen = false,\n  hideSaveBtn = false\n}) => {\n  return (\n    <ModalOverlay\n      className={styles.overlay}\n      isOpen={isOpen}\n      onDismiss={onDismiss}\n    >\n      <ModalContent\n        className={styles.modal}\n        aria-labelledby=\"photo-lightbox-modal-title\"\n      >\n        <div className={styles.content} data-testid=\"modal-content\">\n          <div className={styles.header}>\n            <div className={styles.headerContent}>\n              <h2\n                data-testid=\"title\"\n                id=\"photo-lightbox-modal-title\"\n                className={`text-title3 text-book mt-0 mb-0 ${styles.headerTitle}`}\n              >\n                {title}\n              </h2>\n            </div>\n            <Button\n              variant=\"icon\"\n              data-testid=\"close-button\"\n              className={styles.closeButton}\n              onClick={onDismiss}\n              tabIndex={-1}\n              type=\"button\"\n            >\n              <ActionsCancelNormalXsmall />\n            </Button>\n          </div>\n\n          <div className={styles.body}>\n            <form onSubmit={onSubmit}>\n              {children}\n              {!hideSaveBtn && (\n                <Button\n                  variant=\"primary\"\n                  data-testid=\"save-button\"\n                  className={styles.saveBtn}\n                  disabled={isSaving || !hasChanges}\n                >\n                  {/* eg. \"Saving...\" vs \"Save\" button labels */}\n                  {isSaving ? buttonLabels.isSavingText : buttonLabels.saveText}\n                </Button>\n              )}\n            </form>\n          </div>\n        </div>\n      </ModalContent>\n    </ModalOverlay>\n  );\n};\n\nBaseModal.propTypes = {\n  isOpen: PropTypes.bool,\n  children: PropTypes.node.isRequired,\n  onSubmit: PropTypes.func,\n  onDismiss: PropTypes.func,\n  isSaving: PropTypes.bool,\n  hasChanges: PropTypes.bool,\n  title: PropTypes.string.isRequired,\n  buttonLabels: PropTypes.shape({\n    saveText: PropTypes.string,\n    isSavingText: PropTypes.string\n  }).isRequired,\n  hideSaveBtn: PropTypes.bool\n};\n\nexport default BaseModal;\n","export { default } from './BaseModal';\n","// extracted by mini-css-extract-plugin\nexport default {\"label\":\"ReportMediaModal--label--avF7v\",\"label-value\":\"ReportMediaModal--label-value--C15io\",\"labelValue\":\"ReportMediaModal--label-value--C15io\",\"label-example\":\"ReportMediaModal--label-example--9Eyf6\",\"labelExample\":\"ReportMediaModal--label-example--9Eyf6\",\"reported-photo-message\":\"ReportMediaModal--reported-photo-message--SutgK\",\"reportedPhotoMessage\":\"ReportMediaModal--reported-photo-message--SutgK\",\"eu-form\":\"ReportMediaModal--eu-form--pC0VJ\",\"euForm\":\"ReportMediaModal--eu-form--pC0VJ\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Markup } from 'interweave';\n\nimport { Radio } from '@strava/ui/Radio';\nimport I18n from 'utils/I18n';\n\nimport BaseModal from '../BaseModal';\n\nimport styles from './styles.scss';\n\nconst ReportMediaModal = ({\n  isOpen = false,\n  isReported = false,\n  isReporting = false,\n  onDismiss = () => {},\n  onSubmit = () => {}\n}) => {\n  const [selectedOption, setSelectedOption] = useState('');\n\n  const optionInappropriate = 'inappropriate';\n  const optionHarassment = 'harassment';\n  const optionNoConsent = 'no_consent';\n\n  const labelStyles = {\n    cursor: 'pointer',\n    display: 'flex',\n    alignItems: 'center'\n  };\n\n  const handleOnDismiss = () => {\n    setSelectedOption('');\n    onDismiss();\n  };\n\n  const handleSubmit = (e) => {\n    e.preventDefault();\n    onSubmit(selectedOption);\n    setSelectedOption('');\n  };\n\n  return (\n    <BaseModal\n      isOpen={isOpen}\n      hasChanges={selectedOption !== ''}\n      isSaving={isReporting}\n      buttonLabels={{\n        savingText: I18n.t('templates.feed.activity.report_photo.submitting'),\n        saveText: I18n.t('templates.feed.activity.report_photo.submit')\n      }}\n      onDismiss={handleOnDismiss}\n      onSubmit={handleSubmit}\n      title={I18n.t('templates.feed.activity.report_photo.report_media')}\n      hideSaveBtn={isReported}\n    >\n      {isReported && (\n        <div className={styles.reportedPhotoMessage}>\n          {I18n.t('templates.feed.activity.report_photo.report_success_media')}\n        </div>\n      )}\n\n      {!isReported && (\n        <>\n          <span className={styles.euForm}>\n            <Markup\n              content={I18n.t(\n                'templates.feed.activity.report_photo.eu_report.eu_web_link',\n                {\n                  link_url:\n                    'https://support.strava.com/hc/requests/new?ticket_form_id=24760679798925'\n                }\n              )}\n              noWrap={true}\n            />\n          </span>\n          <label\n            htmlFor={optionInappropriate}\n            className={styles.label}\n            style={labelStyles}\n          >\n            <Radio\n              id={optionInappropriate}\n              name=\"report-options\"\n              value={optionInappropriate}\n              checked={selectedOption === optionInappropriate}\n              onChange={() => setSelectedOption(optionInappropriate)}\n            />\n            <span className={styles.labelValue}>\n              {I18n.t(\n                'templates.feed.activity.report_photo.inappropriate_content.header'\n              )}\n            </span>\n            <span className={styles.labelExample}>\n              {I18n.t(\n                'templates.feed.activity.report_photo.inappropriate_content.examples'\n              )}\n            </span>\n          </label>\n\n          <label\n            htmlFor={optionHarassment}\n            className={styles.label}\n            style={labelStyles}\n          >\n            <Radio\n              id={optionHarassment}\n              name=\"report-options\"\n              value={optionHarassment}\n              checked={selectedOption === optionHarassment}\n              onChange={() => setSelectedOption(optionHarassment)}\n            />\n            <span className={styles.labelValue}>\n              {I18n.t('templates.feed.activity.report_photo.harassment')}\n            </span>\n          </label>\n\n          <label\n            htmlFor={optionNoConsent}\n            className={styles.label}\n            style={labelStyles}\n          >\n            <Radio\n              id={optionNoConsent}\n              name=\"report-options\"\n              value={optionNoConsent}\n              checked={selectedOption === optionNoConsent}\n              onChange={() => setSelectedOption(optionNoConsent)}\n            />\n            <span className={styles.labelValue}>\n              {I18n.t(\n                'templates.feed.activity.report_photo.no_consent_from_me_media'\n              )}\n            </span>\n          </label>\n          <span className={styles.euForm}>\n            <Markup\n              content={I18n.t(\n                'templates.feed.activity.report_photo.eu_report.additional_information',\n                {\n                  link_url:\n                    'https://support.strava.com/hc/en-us/articles/216917777-How-Do-I-Contact-Strava-Support'\n                }\n              )}\n              noWrap={true}\n            />\n          </span>\n        </>\n      )}\n    </BaseModal>\n  );\n};\n\nReportMediaModal.propTypes = {\n  isOpen: PropTypes.bool,\n  isReported: PropTypes.bool,\n  onDismiss: PropTypes.func,\n  onSubmit: PropTypes.func,\n  isReporting: PropTypes.bool\n};\n\nexport default ReportMediaModal;\n","export { default } from './ReportMediaModal';\n","// extracted by mini-css-extract-plugin\nexport default {\"text-area\":\"DescriptionEditModal--text-area--UzYUi\",\"textArea\":\"DescriptionEditModal--text-area--UzYUi\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport I18n from 'utils/I18n';\nimport { trackV2 } from 'utils/analytics';\nimport BaseModal from '../BaseModal';\n\nimport styles from './DescriptionEditModal.scss';\n\nconst DescriptionEditModal = ({\n  isOpen = false,\n  isSaving = false,\n  onDismiss = () => {},\n  onSubmit = () => {},\n  description,\n  onTextChange = () => {},\n  title,\n  analyticProps\n}) => {\n  const [updatedDescription, setUpdatedDescription] = useState(description);\n  const { entityId, page, feedType, currentPhoto } = analyticProps;\n\n  const handleSubmit = (e) => {\n    e.preventDefault();\n    trackV2({\n      category: 'media',\n      page: 'lightbox',\n      action: 'click',\n      element: 'save_description',\n      properties: {\n        source: feedType,\n        entity_id: entityId,\n        entity_type: page,\n        element_entity_type: currentPhoto.media_type,\n        element_entity_id: currentPhoto.photo_id\n      }\n    });\n    onSubmit();\n  };\n\n  const handleTextChange = (e) => {\n    const descriptionText = e.target.value;\n    setUpdatedDescription(descriptionText);\n    onTextChange(descriptionText);\n  };\n\n  return (\n    <BaseModal\n      isOpen={isOpen}\n      hasChanges={updatedDescription !== description}\n      isSaving={isSaving}\n      buttonLabels={{\n        savingText: I18n.t('templates.feed.activity.edit_caption.saving'),\n        saveText: I18n.t('templates.feed.activity.edit_caption.save')\n      }}\n      onDismiss={onDismiss}\n      onSubmit={handleSubmit}\n      title={title}\n    >\n      <textarea\n        className={styles.textArea}\n        id=\"description\"\n        name=\"description\"\n        disabled={isSaving}\n        defaultValue={description}\n        onChange={handleTextChange}\n        onClick={() => {\n          trackV2({\n            category: 'media',\n            page: 'lightbox',\n            action: 'interact',\n            element: 'description',\n            properties: {\n              source: feedType,\n              entity_id: entityId,\n              entity_type: page,\n              element_entity_type: currentPhoto.media_type,\n              element_entity_id: currentPhoto.photo_id\n            }\n          });\n        }}\n      />\n    </BaseModal>\n  );\n};\n\nDescriptionEditModal.propTypes = {\n  isOpen: PropTypes.bool,\n  onDismiss: PropTypes.func,\n  onSubmit: PropTypes.func,\n  isSaving: PropTypes.bool,\n  description: PropTypes.string,\n  onTextChange: PropTypes.func,\n  title: PropTypes.string.isRequired,\n  analyticProps: PropTypes.shape({\n    entityId: PropTypes.string,\n    page: PropTypes.string,\n    feedType: PropTypes.string,\n    currentPhoto: PropTypes.shape({\n      media_type: PropTypes.number,\n      photo_id: PropTypes.string\n    })\n  })\n};\n\nexport default DescriptionEditModal;\n","export { default } from './DescriptionEditModal';\n","// extracted by mini-css-extract-plugin\nexport default {\"lightbox-wrapper\":\"StravaMediaLightbox--lightbox-wrapper--S50Q9\",\"lightboxWrapper\":\"StravaMediaLightbox--lightbox-wrapper--S50Q9\",\"description-box\":\"StravaMediaLightbox--description-box--rZVzx\",\"descriptionBox\":\"StravaMediaLightbox--description-box--rZVzx\",\"description\":\"StravaMediaLightbox--description--cuTER\",\"side\":\"StravaMediaLightbox--side--dVeSZ\",\"add-description-bar-button\":\"StravaMediaLightbox--add-description-bar-button--siCXp\",\"addDescriptionBarButton\":\"StravaMediaLightbox--add-description-bar-button--siCXp\",\"edit-description-bar-button\":\"StravaMediaLightbox--edit-description-bar-button--7FAzz\",\"editDescriptionBarButton\":\"StravaMediaLightbox--edit-description-bar-button--7FAzz\",\"video-js-lightbox\":\"StravaMediaLightbox--video-js-lightbox--A6pr0\",\"videoJsLightbox\":\"StravaMediaLightbox--video-js-lightbox--A6pr0\",\"video\":\"StravaMediaLightbox--video--fqMp9\",\"more-options-dropdown-button\":\"StravaMediaLightbox--more-options-dropdown-button--zM2n2\",\"moreOptionsDropdownButton\":\"StravaMediaLightbox--more-options-dropdown-button--zM2n2\",\"more-options-dropdown-list\":\"StravaMediaLightbox--more-options-dropdown-list--mS7Sa\",\"moreOptionsDropdownList\":\"StravaMediaLightbox--more-options-dropdown-list--mS7Sa\",\"dropdown-item\":\"StravaMediaLightbox--dropdown-item--YcxaA\",\"dropdownItem\":\"StravaMediaLightbox--dropdown-item--YcxaA\"};","import React, { useState, useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { Interweave } from 'interweave';\nimport { UrlMatcher } from 'interweave-autolink';\n\nimport Lightbox from '@strava/react-image-lightbox';\nimport '@strava/react-image-lightbox/style.css';\nimport { Button } from '@strava/ui/Button';\nimport {\n  DropdownMenu,\n  DropdownButton,\n  DropdownPopover,\n  DropdownItems,\n  DropdownLink,\n  DropdownItem\n} from '@strava/ui/Dropdown';\n\nimport NavigationMoreHighlightedXsmall from '@strava/icons/NavigationMoreHighlightedXsmall';\nimport ActionsEditNormalXsmall from '@strava/icons/ActionsEditNormalXsmall';\n\nimport { trackV2 } from 'utils/analytics';\nimport I18n from 'utils/I18n';\nimport createNetworkingClient from 'utils/networking-client';\nimport { logError } from 'utils/sentry';\n\nimport VideoWrapper from '../VideoWrapper';\n\nimport ReportMediaModal from './components/ReportMediaModal';\nimport DescriptionEditModal from './components/DescriptionEditModal';\nimport styles from './StravaMediaLightbox.scss';\n\nconst lightboxCustomStyles = {\n  overlay: {\n    zIndex: '4000' // Modals on top of this lightbox are set to 5000\n  }\n};\n\nconst StravaMediaLightbox = ({\n  selectedPhotoIndex,\n  photoList,\n  onMount = () => {},\n  onCloseRequest,\n  analyticProps\n}) => {\n  const [params, setParams] = useState({\n    photoIndex: selectedPhotoIndex,\n    isSavingDescription: false,\n    isReportingMedia: false,\n    openEditDescriptionModal: false,\n    openReportMediaModal: false,\n    showReportPhotoButton: false,\n    updatedDescription: '',\n    reportedMediaHash: {}\n    // reported status is kept in-memory\n    // on refresh, phoots-service does not include reported media in the results\n  });\n  const [video, setVideo] = useState();\n  const { entityId, page, feedType } = analyticProps;\n\n  useEffect(() => {\n    onMount();\n\n    const lockWheelScrolling = (e) => {\n      e.preventDefault();\n      e.stopPropagation();\n    };\n\n    const lockKeyScrolling = (e) => {\n      if (['ArrowUp', 'ArrowDown'].indexOf(e.code) > -1) {\n        e.preventDefault();\n        e.stopPropagation();\n      }\n    };\n\n    if (document) {\n      document.addEventListener('wheel', lockWheelScrolling, {\n        passive: false\n      });\n      document.addEventListener('keydown', lockKeyScrolling, false);\n    }\n\n    return () => {\n      if (document) {\n        document.removeEventListener('wheel', lockWheelScrolling, {\n          passive: false\n        });\n        document.removeEventListener('keydown', lockKeyScrolling, false);\n      }\n    };\n  }, []);\n\n  // Analytics for screen enter\n  useEffect(() => {\n    if (photoList.length === 0) {\n      return;\n    }\n    const selectedMedia = photoList[selectedPhotoIndex];\n    const isImage = selectedMedia.media_type === 1;\n\n    const data = {\n      category: 'media',\n      page: 'lightbox',\n      properties: {\n        source: feedType,\n        entity_id: entityId,\n        entity_type: page,\n        element_entity_type: selectedMedia.media_type,\n        element_entity_id: selectedMedia.photo_id\n      }\n    };\n\n    // Lightbox Screen Enter Photo / Video\n    trackV2({\n      ...data,\n      action: 'screen_enter',\n      element: isImage ? 'photo' : 'video'\n    });\n  }, []);\n\n  const photoCount = photoList.length;\n  const prevPhotoIndex = (params.photoIndex + photoCount - 1) % photoCount;\n  const nextPhotoIndex = (params.photoIndex + 1) % photoCount;\n\n  const currentPhoto = photoList[params.photoIndex];\n  const prevPhoto = photoList[prevPhotoIndex];\n  const nextPhoto = photoList[nextPhotoIndex];\n  const onMoveNextRequest = useCallback(\n    () =>\n      setParams((prevParams) => ({\n        ...prevParams,\n        photoIndex: nextPhotoIndex\n      })),\n    [nextPhotoIndex]\n  );\n  const onMovePrevRequest = useCallback(\n    () =>\n      setParams((prevParams) => ({\n        ...prevParams,\n        photoIndex: prevPhotoIndex\n      })),\n    [prevPhotoIndex]\n  );\n\n  const toggleReportMediaButton = useCallback(\n    () =>\n      setParams((prevState) => ({\n        ...params,\n        showReportPhotoButton: !prevState.showReportPhotoButton,\n        openReportPhotoModal: false\n      })),\n    []\n  );\n\n  const reportMedia = (reason) => {\n    setParams({ ...params, isReportingMedia: true });\n    const url = `/media/${currentPhoto.media_type}/${currentPhoto.photo_id}`;\n    const payload = {\n      report_reason: reason,\n      owner_id: currentPhoto.owner_id\n    };\n    createNetworkingClient()\n      .put(url, payload)\n      .then(() => {\n        const updatedReportedMediaHash = params.reportedMediaHash;\n        updatedReportedMediaHash[currentPhoto.photo_id] = true;\n        setParams({\n          ...params,\n          isReportingMedia: false,\n          reportedMediaHash: updatedReportedMediaHash\n        });\n      })\n      .catch((e) => {\n        logError(e);\n        const updatedReportedMediaHash = params.reportedMediaHash;\n        updatedReportedMediaHash[currentPhoto.photo_id] = false;\n        setParams({\n          ...params,\n          isReportingMedia: false,\n          reportedMediaHash: updatedReportedMediaHash\n        });\n      });\n  };\n\n  const updateDescription = () => {\n    setParams({ ...params, isSavingDescription: true });\n    const url = `/media/${currentPhoto.media_type}/${currentPhoto.photo_id}/add_caption`;\n    const payload = {\n      caption: params.updatedDescription\n    };\n    createNetworkingClient()\n      .put(url, payload)\n      .then(() => {\n        // Update the caption in-memory\n        // eslint-disable-next-line no-param-reassign\n        currentPhoto.caption_escaped = params.updatedDescription;\n        setParams({\n          ...params,\n          isSavingDescription: false,\n          openEditDescriptionModal: false,\n          updatedDescription: ''\n        });\n      })\n      .catch((e) => {\n        logError(e);\n        setParams({\n          ...params,\n          isSavingDescription: false\n        });\n      });\n  };\n\n  const addOrEditDescriptionLabel = () =>\n    currentPhoto.caption_escaped\n      ? I18n.t('templates.feed.activity.edit_description_label')\n      : I18n.t('templates.feed.activity.add_description_label');\n\n  const pause = () => {\n    if (video && !video.paused()) {\n      video.pause();\n    }\n  };\n\n  const openAddEditDescriptionModal = useCallback(() => {\n    setParams((prevParams) => ({\n      ...prevParams,\n      openEditDescriptionModal: true\n    }));\n    pause();\n  }, [video]);\n\n  const openReportMediaModal = useCallback(() => {\n    setParams({\n      ...params,\n      openReportMediaModal: true\n    });\n    pause();\n  }, [video]);\n\n  const toolbarButtons = useCallback(() => {\n    const buttons = [];\n    const isReportable =\n      currentPhoto.viewing_athlete_id !== currentPhoto.owner_id;\n    const isEditable = currentPhoto.editable;\n    const isNotOnActivityDetailPage =\n      currentPhoto.activity &&\n      currentPhoto.activity_id &&\n      window.location.pathname !== `/activities/${currentPhoto.activity_id}`;\n\n    buttons.push(\n      <DropdownMenu>\n        <DropdownButton\n          className={styles.moreOptionsDropdownButton}\n          data-testid=\"more_options_button\"\n        >\n          <NavigationMoreHighlightedXsmall />\n        </DropdownButton>\n        <DropdownPopover\n          className={styles.moreOptionsDropdownList}\n          portal={true}\n        >\n          <DropdownItems>\n            {/* Go to Activity */}\n            {isNotOnActivityDetailPage && (\n              <DropdownLink\n                href={`/activities/${currentPhoto.activity_id}`}\n                className={styles.dropdownItem}\n                data-testid=\"go_to_activity\"\n                onClick={() => {\n                  trackV2({\n                    category: 'media',\n                    page: 'lightbox_overflow',\n                    action: 'click',\n                    element: 'go_to_activity',\n                    properties: {\n                      source: feedType,\n                      entity_id: entityId,\n                      entity_type: page,\n                      element_entity_type: currentPhoto.media_type,\n                      element_entity_id: currentPhoto.photo_id\n                    }\n                  });\n                }}\n              >\n                {I18n.t(\n                  'strava.external_photos.photostream_lightbox_view.go_to_activity_v2'\n                )}\n              </DropdownLink>\n            )}\n            {/* Report Media */}\n            {isReportable && (\n              <DropdownItem\n                className={styles.dropdownItem}\n                onClick={() => {\n                  openReportMediaModal();\n                  trackV2({\n                    category: 'media',\n                    page: 'lightbox_overflow',\n                    action: 'click',\n                    element: 'report_media',\n                    properties: {\n                      source: feedType,\n                      entity_id: entityId,\n                      entity_type: page,\n                      element_entity_type: currentPhoto.media_type,\n                      element_entity_id: currentPhoto.photo_id\n                    }\n                  });\n                }}\n                data-testid=\"report_photo_button\"\n              >\n                {I18n.t('templates.feed.activity.report_photo.report_media')}\n              </DropdownItem>\n            )}\n            {/* Add or Edit Description for Media */}\n            {isEditable && (\n              <DropdownItem\n                className={styles.dropdownItem}\n                onClick={() => {\n                  openAddEditDescriptionModal();\n                  trackV2({\n                    category: 'media',\n                    page: 'lightbox_overflow',\n                    action: 'click',\n                    element: 'description',\n                    properties: {\n                      source: feedType,\n                      entity_id: entityId,\n                      entity_type: page,\n                      element_entity_type: currentPhoto.media_type,\n                      element_entity_id: currentPhoto.photo_id,\n                      cta_copy: addOrEditDescriptionLabel()\n                    }\n                  });\n                }}\n                data-testid=\"edit-description-toolbar-button\"\n              >\n                {addOrEditDescriptionLabel()}\n              </DropdownItem>\n            )}\n          </DropdownItems>\n        </DropdownPopover>\n      </DropdownMenu>\n    );\n\n    return buttons;\n  }, [currentPhoto, video]);\n\n  const imageDescription = useCallback(() => {\n    return (\n      <div className={styles.descriptionBox}>\n        <div className={styles.side} />\n        {currentPhoto.caption_escaped && (\n          <div className={styles.description} data-testid=\"photo-description\">\n            <Interweave\n              noWrap={true}\n              content={currentPhoto.caption_escaped}\n              matchers={[\n                new UrlMatcher('url', {\n                  customTLDs: ['link'] // For Branch links\n                })\n              ]}\n            />\n          </div>\n        )}\n        {!currentPhoto.caption_escaped &&\n          currentPhoto.viewing_athlete_id === currentPhoto.owner_id && (\n            <Button\n              className={styles.addDescriptionBarButton}\n              data-testid=\"add-description-bar-button\"\n              onClick={() => {\n                openAddEditDescriptionModal();\n                trackV2({\n                  category: 'media',\n                  page: 'lightbox',\n                  action: 'click',\n                  element: 'description',\n                  properties: {\n                    source: feedType,\n                    entity_id: entityId,\n                    entity_type: page,\n                    element_entity_type: currentPhoto.media_type,\n                    element_entity_id: currentPhoto.photo_id,\n                    cta_copy: addOrEditDescriptionLabel()\n                  }\n                });\n              }}\n              type=\"button\"\n            >\n              {addOrEditDescriptionLabel()}\n            </Button>\n          )}\n        <div className={styles.side}>\n          {currentPhoto.caption_escaped &&\n            currentPhoto.viewing_athlete_id === currentPhoto.owner_id && (\n              <Button\n                className={styles.editDescriptionBarButton}\n                data-testid=\"edit-description-bar-button\"\n                onClick={() => {\n                  openAddEditDescriptionModal();\n                  trackV2({\n                    category: 'media',\n                    page: 'lightbox',\n                    action: 'click',\n                    element: 'description',\n                    properties: {\n                      source: feedType,\n                      entity_id: entityId,\n                      entity_type: page,\n                      element_entity_type: currentPhoto.media_type,\n                      element_entity_id: currentPhoto.photo_id,\n                      cta_copy: addOrEditDescriptionLabel()\n                    }\n                  });\n                }}\n                variant=\"icon\"\n                type=\"button\"\n              >\n                <ActionsEditNormalXsmall />\n              </Button>\n            )}\n        </div>\n      </div>\n    );\n  }, [currentPhoto, video]);\n\n  function handleVolumeEvent(player) {\n    trackV2({\n      category: 'media',\n      page: player.isFullscreen() ? 'video_full_screen_player' : 'lightbox',\n      action: 'click',\n      properties: {\n        source: feedType,\n        source_type: 'activity',\n        source_id: currentPhoto.activity_id,\n        video_id: currentPhoto.photo_id,\n        cta: player.muted() ? 'muted' : 'unmute'\n      }\n    });\n  }\n\n  function handleFullScreenEvent(player) {\n    // Screen Enter / Exit\n    trackV2({\n      category: 'media',\n      page: 'video_full_screen_player',\n      action: player.isFullscreen() ? 'screen_enter' : 'screen_exit',\n      properties: {\n        source: feedType,\n        source_type: 'activity',\n        source_id: currentPhoto.activity_id,\n        video_id: currentPhoto.photo_id\n      }\n    });\n\n    // Click Event\n    trackV2({\n      category: 'media',\n      page: 'lightbox',\n      action: 'click',\n      element: 'full_screen',\n      properties: {\n        source: feedType,\n        source_type: 'activity',\n        source_id: currentPhoto.activity_id,\n        video_id: currentPhoto.photo_id,\n        cta: player.isFullscreen()\n          ? 'enter_full_screen_view'\n          : 'exit_full_screen_view'\n      }\n    });\n  }\n\n  const isVideo = currentPhoto && currentPhoto.media_type === 2;\n  const currentVideo = useCallback(\n    isVideo ? (\n      <React.Suspense fallback={<div />}>\n        <VideoWrapper\n          media={currentPhoto}\n          onReady={(player) => {\n            setVideo(player);\n            player.on('volumechange', () => handleVolumeEvent(player));\n            player.on('fullscreenchange', () => handleFullScreenEvent(player));\n          }}\n          options={{ autoplay: true, fluid: false, responsive: false }}\n          className={styles.video}\n        />\n      </React.Suspense>\n    ) : (\n      undefined\n    ),\n    [currentPhoto]\n  );\n\n  return (\n    <>\n      {currentPhoto && (\n        <div data-testid=\"light-box\">\n          <DescriptionEditModal\n            isOpen={params.openEditDescriptionModal}\n            isSaving={params.isSavingDescription}\n            description={currentPhoto.caption_escaped}\n            onDismiss={() =>\n              setParams({ ...params, openEditDescriptionModal: false })\n            }\n            onSubmit={updateDescription}\n            onTextChange={(descriptionText) => {\n              params.updatedDescription = descriptionText;\n            }}\n            title={addOrEditDescriptionLabel()}\n            analyticProps={{ currentPhoto, ...analyticProps }}\n          />\n          <ReportMediaModal\n            isReported={params.reportedMediaHash[currentPhoto.photo_id]}\n            isReporting={params.isReportingMedia}\n            isOpen={params.openReportMediaModal}\n            onDismiss={() => {\n              setParams({ ...params, openReportMediaModal: false });\n              toggleReportMediaButton();\n            }}\n            onSubmit={(reason) => {\n              reportMedia(reason);\n            }}\n          />\n\n          <Lightbox\n            key=\"light_box\"\n            wrapperClassName={styles.lightboxWrapper}\n            mainCustomContent={isVideo ? currentVideo : undefined}\n            mainSrc={!isVideo ? currentPhoto.large : undefined}\n            nextSrc={photoCount > 1 ? nextPhoto.large : ''} // no next photo if activity only has one photo\n            prevSrc={photoCount > 1 ? prevPhoto.large : ''} // no previous photo if activity only has one photo\n            onCloseRequest={() => {\n              onCloseRequest();\n              const currentMedia = isVideo ? currentVideo : currentPhoto;\n              // Lightbox Screen Exit Photo / Video\n              trackV2({\n                category: 'media',\n                page: 'lightbox',\n                properties: {\n                  source: feedType,\n                  entity_id: entityId,\n                  entity_type: page,\n                  element_entity_type: currentMedia.media_type,\n                  element_entity_id: currentMedia.photo_id\n                },\n                action: 'screen_exit',\n                element: currentMedia.media_type === 1 ? 'photo' : 'video'\n              });\n            }}\n            onMovePrevRequest={onMovePrevRequest}\n            onMoveNextRequest={onMoveNextRequest}\n            imageCaption={imageDescription()}\n            imagePadding={80}\n            reactModalStyle={lightboxCustomStyles}\n            toolbarButtons={toolbarButtons()}\n            enableZoom={!isVideo}\n          />\n        </div>\n      )}\n    </>\n  );\n};\n\nStravaMediaLightbox.propTypes = {\n  selectedPhotoIndex: PropTypes.number.isRequired,\n  photoList: PropTypes.arrayOf(\n    PropTypes.shape({\n      large: PropTypes.string.isRequired,\n      caption_escaped: PropTypes.string,\n      photo_id: PropTypes.string.isRequired,\n      viewing_athlete_id: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.number\n      ]),\n      owner_id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n      editable: PropTypes.bool,\n      media_type: PropTypes.number\n    })\n  ).isRequired,\n  onMount: PropTypes.func,\n  onCloseRequest: PropTypes.func.isRequired,\n  analyticProps: PropTypes.shape({\n    entityId: PropTypes.string,\n    page: PropTypes.string,\n    feedType: PropTypes.string\n  })\n};\n\nexport default StravaMediaLightbox;\n","export { default } from './StravaMediaLightbox';\n","import React, { useState, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport I18n from 'utils/I18n';\nimport {\n  getBoundsFromLatLng,\n  Polyline,\n  Marker,\n  Map,\n  MAP_STYLES,\n  WaypointCircle\n} from '@strava/ui/Map';\nimport MapControls from './MapControls';\nimport styles from './ActivityDetailsMap.scss';\nimport PrivacyZonePolylines from './PrivacyZonePolylines';\nimport StravaMediaLightbox from '../StravaMediaLightbox';\n\nconst FALLBACK_LATLNG = [0, 0];\n\nconst ActivityDetailsMap = ({\n  activityId,\n  mapBounds,\n  streamData,\n  defaultHighlight,\n  interactive = true,\n  showCreateRoute = true,\n  showGpxDownload = true,\n  showFullScreenToggle = false,\n  measurementUnits = 'metric',\n  mapCreatedCallback\n}) => {\n  const polyline = streamData.latlng;\n\n  // If we have privacy zone info from the stream request, we want to show those privacy zones on\n  // the map via a polyline. Privacy stream data comes to the client in the form of an array of\n  // numbers. The index of a given number corresponds to an index in the streamData.latLng array.\n  // The values are either 0 or 2. 0 indicating that the corresponding latLng is not hidden, 2\n  // indicating that it is. So we can look for the first index of a 0 value to figure out when the\n  // privacy zones begin and end.\n  const privacyZoneFromStartIndex = useMemo(\n    () =>\n      streamData.privacy ? streamData.privacy.findIndex((val) => val === 0) : 0,\n    [streamData.privacy]\n  );\n  const privacyZoneFromEndIndex = useMemo(\n    () =>\n      streamData.privacy\n        ? streamData.privacy.reverse().findIndex((val) => val === 0)\n        : 0,\n    [streamData.privacy]\n  );\n\n  const hasPrivacyZones =\n    privacyZoneFromStartIndex > 0 || privacyZoneFromEndIndex > 0;\n\n  // For some views, we want to highlight a section of the route by default, i.e. when viewing a map\n  // for a segment within an activity\n  const defaultHighlightLatLng = defaultHighlight\n    ? [...streamData.latlng.slice(defaultHighlight[0], defaultHighlight[1])]\n    : null;\n\n  const [mapboxRef, setMapboxRef] = useState(null);\n  const [currentMapBounds, setCurrentMapBounds] = useState(\n    defaultHighlightLatLng ?? mapBounds\n  );\n  const [polylineHighlight, setPolylineHightlight] = useState(\n    defaultHighlightLatLng ?? null\n  );\n  const [rabbitLatLng, setRabbitLatLng] = useState(null);\n  const [mapStyle, setMapStyle] = useState('standard');\n  const [mapStyleUrl, setMapStyleUrl] = useState(MAP_STYLES.standard);\n  const [resizeMap, setResizeMap] = useState(false);\n  const [mapPhotos, setMapPhotos] = useState(null);\n  const [expandedPhoto, setExpandedPhoto] = useState(null);\n\n  useEffect(() => {\n    if (mapboxRef) {\n      const bounds = getBoundsFromLatLng(currentMapBounds);\n\n      mapboxRef.fitBounds(bounds, {\n        linear: false,\n        duration: 0,\n        // TODO do we need to adjust padding at all?\n        padding: 24\n      });\n    }\n  }, [currentMapBounds, mapboxRef]);\n\n  useEffect(() => {\n    if (mapboxRef) {\n      mapboxRef.resize();\n      setResizeMap(false);\n    }\n  }, [mapboxRef, resizeMap]);\n\n  const handleMapStyleChange = ({ value }) => {\n    setMapStyle(value);\n    setMapStyleUrl(MAP_STYLES[value]);\n  };\n\n  const onSetRabbitPosition = ({ detail }) => {\n    const { index } = detail;\n    const latLng = streamData.latlng[index];\n    setRabbitLatLng(latLng);\n  };\n\n  const onHideRabbit = () => {\n    setRabbitLatLng(null);\n  };\n\n  const onHighlightPolyline = ({ detail }) => {\n    const { start, end } = detail;\n    const latLng = [...streamData.latlng.slice(start, end)];\n    setPolylineHightlight(latLng);\n  };\n\n  const onUnhighlightPolyline = () => {\n    setPolylineHightlight(null);\n  };\n\n  const onHighlightPolylineAndCenterOnMap = ({ detail }) => {\n    const { start, end } = detail;\n    const latLng = [...streamData.latlng.slice(start, end)];\n\n    setPolylineHightlight(latLng);\n    setCurrentMapBounds(latLng);\n  };\n\n  const onResetMapBounds = () => {\n    setCurrentMapBounds(mapBounds);\n  };\n\n  const onResizeMap = () => {\n    setResizeMap(true);\n  };\n\n  const onRenderMapImages = ({ detail }) => {\n    const { photos } = detail;\n    setMapPhotos(photos);\n  };\n\n  useEffect(() => {\n    document.addEventListener('SetRabbitPosition', onSetRabbitPosition);\n    document.addEventListener('HideRabbit', onHideRabbit);\n\n    document.addEventListener('HighlightPolyline', onHighlightPolyline);\n    document.addEventListener('UnhighlightPolyline', onUnhighlightPolyline);\n    document.addEventListener(\n      'HighlightPolyLineAndCenterOnMap',\n      onHighlightPolylineAndCenterOnMap\n    );\n    document.addEventListener('ResetMapBounds', onResetMapBounds);\n    document.addEventListener('ResizeMap', onResizeMap);\n\n    document.addEventListener('RenderMapImages', onRenderMapImages);\n\n    return function cleanup() {\n      [\n        'SetRabbitPosition',\n        'HideRabbit',\n        'HighlightPolyline',\n        'UnhighlightPolyline',\n        'HighlightPolyLineAndCenterOnMap',\n        'ResetMapBounds',\n        'ResizeMap',\n        'RenderMapImages'\n      ].forEach((listener) => {\n        document.removeEventListener(listener);\n      });\n    };\n  }, []);\n\n  useEffect(() => {\n    if (mapCreatedCallback) {\n      mapCreatedCallback()();\n    }\n  }, [mapCreatedCallback]);\n\n  return (\n    <Map\n      mapboxRef={setMapboxRef}\n      className={styles.map}\n      latLng={currentMapBounds}\n      language={I18n.language()}\n      zoomControl={interactive}\n      measurementUnits={measurementUnits}\n      options={{\n        style: `${mapStyleUrl}&exclude_pois=true&exclude_networks=true`,\n        minZoom: 3,\n        pitchWithRotate: true,\n        dragRotate: true,\n        interactive\n      }}\n    >\n      {interactive && (\n        <MapControls\n          activityId={activityId}\n          showFullScreenToggle={showFullScreenToggle}\n          showGpxDownload={showGpxDownload}\n          showCreateRoute={showCreateRoute}\n          handleMapStyleChange={handleMapStyleChange}\n          mapStyle={mapStyle}\n          hasPrivacyZones={hasPrivacyZones}\n        />\n      )}\n\n      <Polyline\n        latLng={polyline}\n        id=\"polyline\"\n        style={{\n          // TODO set polyline style based on activity map style if applicable\n          lineColor: '#FF0000',\n          outlineWidth: 5\n        }}\n      />\n\n      {hasPrivacyZones && !polylineHighlight && (\n        <PrivacyZonePolylines\n          polyline={polyline}\n          privacyZoneFromStartIndex={privacyZoneFromStartIndex}\n          privacyZoneFromEndIndex={privacyZoneFromEndIndex}\n        />\n      )}\n\n      {polylineHighlight && (\n        <Polyline\n          latLng={polylineHighlight}\n          id=\"polylineHighlight\"\n          style={{\n            lineColor: '#105CB6',\n            outlineWidth: 5\n          }}\n        />\n      )}\n\n      <Marker latLng={polyline[0] || FALLBACK_LATLNG}>\n        <WaypointCircle type=\"start\" />\n      </Marker>\n\n      <Marker latLng={polyline[polyline.length - 1] || FALLBACK_LATLNG}>\n        <WaypointCircle type=\"end\" />\n      </Marker>\n\n      <Marker latLng={rabbitLatLng || FALLBACK_LATLNG}>\n        <WaypointCircle type=\"rabbit\" />\n      </Marker>\n\n      {mapPhotos && (\n        <>\n          {mapPhotos.map((photo, index) => {\n            const { attributes, id } = photo;\n            if (attributes.lat && attributes.lng) {\n              return (\n                <Marker\n                  latLng={[attributes.lat, attributes.lng]}\n                  key={id}\n                  legacyOptions={{ riseOnHover: true }}\n                >\n                  {/* TODO this is not ideal, as these elements are not able to be interacted with via\n                      the keyboard. However, the existing map photos also do not support this, so we\n                      aren't introducing any regressions here */}\n                  {/* eslint-disable jsx-a11y/click-events-have-key-events */}\n                  {/* eslint-disable jsx-a11y/no-static-element-interactions */}\n                  <div\n                    className={styles.photoMarker}\n                    onClick={() => {\n                      setExpandedPhoto({ ...attributes, index });\n                    }}\n                  >\n                    <img\n                      src={attributes.thumbnail}\n                      alt={I18n.t('strava.maps.mapbox_gl.photo_marker_alt')}\n                    />\n                  </div>\n                </Marker>\n              );\n            }\n            return null;\n          })}\n          {expandedPhoto ? (\n            <StravaMediaLightbox\n              selectedPhotoIndex={expandedPhoto.index}\n              photoList={mapPhotos.map((p) => p.attributes)}\n              onMount={() => {}}\n              onCloseRequest={() => {\n                setExpandedPhoto(null);\n              }}\n              analyticProps={{}}\n            />\n          ) : null}\n        </>\n      )}\n    </Map>\n  );\n};\n\nActivityDetailsMap.propTypes = {\n  activityId: PropTypes.number.isRequired,\n  mapBounds: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.number)).isRequired,\n  streamData: PropTypes.shape({\n    latlng: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.number)),\n    privacy: PropTypes.arrayOf(PropTypes.number)\n  }).isRequired,\n  defaultHighlight: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.number)),\n  interactive: PropTypes.bool,\n  showGpxDownload: PropTypes.bool,\n  showCreateRoute: PropTypes.bool,\n  showFullScreenToggle: PropTypes.bool,\n  measurementUnits: PropTypes.string,\n  mapCreatedCallback: PropTypes.func\n};\n\nexport default ActivityDetailsMap;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport createNetworkingClient from 'utils/networking-client';\nimport ActivityDetailsMap from './ActivityDetailsMap';\n\nconst ActivityDetailsMapWrapper = (props) => {\n  const [streamData, setStreamData] = useState(null);\n  const { activityId } = props;\n\n  useEffect(() => {\n    const fetchStreams = async () => {\n      const response = await createNetworkingClient().get(\n        `/activities/${activityId}/streams`,\n        {\n          params: {\n            stream_types: ['latlng', 'privacy']\n          }\n        }\n      );\n\n      // TODO wrap this in a try/catch\n      if (!response || response.status !== 200) {\n        console.error('Request failed');\n      }\n\n      setStreamData(response.data);\n    };\n\n    if (!streamData) {\n      fetchStreams();\n    }\n  }, [activityId, streamData]);\n\n  if (!streamData) {\n    return null;\n  }\n\n  return <ActivityDetailsMap {...props} streamData={streamData} />;\n};\n\nActivityDetailsMapWrapper.propTypes = {\n  activityId: PropTypes.number.isRequired\n};\n\nexport default ActivityDetailsMapWrapper;\n","export { default } from './ActivityDetailsMapWrapper';\n","// extracted by mini-css-extract-plugin\nexport default {\"content\":\"LimitedProfileEntry--content--1H4xC\",\"description\":\"LimitedProfileEntry--description--UWW4C\"};","import React, { useEffect } from 'react';\nimport I18n from 'utils/I18n';\nimport { trackV2 } from 'utils/analytics';\nimport PropTypes from 'prop-types';\nimport styles from './styles.scss';\n\nconst LimitedProfileEntry = ({ athleteName }) => {\n  useEffect(() => {\n    trackV2({\n      page: 'athlete_profile',\n      action: 'screen_enter',\n      element: 'limited_profile_cta'\n    });\n  }, []);\n\n  const I18nPrefix = 'strava.athletes.limited_profile';\n\n  return (\n    <div className={styles.content} data-testid=\"limited-profile-entry\">\n      <h3 className=\"text-title3\">\n        {I18n.t(`${I18nPrefix}.account_is_private`)}\n      </h3>\n      <div className={`text-footnote ${styles.description}`}>\n        {I18n.t(`${I18nPrefix}.follow_athlete_cta`, { name: athleteName })}\n      </div>\n    </div>\n  );\n};\n\nLimitedProfileEntry.propTypes = {\n  athleteName: PropTypes.string.isRequired\n};\n\nexport default LimitedProfileEntry;\n","export { default } from './LimitedProfileEntry';\n","// extracted by mini-css-extract-plugin\nexport default {\"options-dropdown\":\"FollowsList--options-dropdown--R1LSD\",\"optionsDropdown\":\"FollowsList--options-dropdown--R1LSD\",\"results-container\":\"FollowsList--results-container--c2mD+\",\"resultsContainer\":\"FollowsList--results-container--c2mD+\",\"spinner\":\"FollowsList--spinner--36rfO\",\"error\":\"FollowsList--error--VeWXQ\"};","import { useState } from 'react';\nimport createNetworkingClient from 'utils/networking-client';\nimport { logError } from '../../../../../utils/sentry';\n\nconst useFetchFollowers = ({ resultsPerPage }) => {\n  const [results, setResults] = useState([]);\n  const [hasMore, setHasMore] = useState(true);\n  const [error, setError] = useState();\n  const [isLoading, setIsLoading] = useState(false);\n\n  const errorState = (e) => {\n    setError(e);\n    setIsLoading(false);\n    logError(e);\n  };\n\n  /**\n   * Computes the page number that is to be used for retrieving more results based on\n   * the current number of rows that have already been fetched.\n   * eg. If an athlete has 50 rows retrieved, the next page is 50/25 + 1 (== 2)\n   *\n   * @param {boolean} reset - forces the page number to be 1\n   * @returns {number} representing the page number which is used for pagination\n   */\n  const pageNum = (reset) =>\n    reset ? 1 : Math.ceil(results.length / resultsPerPage) + 1;\n\n  /**\n   *  Retrieves follows data using endpoint FollowsController#index\n   * @param {Object} param\n   * @param {String} param.selectionOption the type of follows selected by athlete (eg. \"suggested\", \"blocked\", \"following\")\n   * @param {Boolean} param.reset a switch to indicate if an athlete changed the follows type. When the value is true, it means that\n   * a new type of follows was selected so we want to clear the results instead of appending to the previous results.\n   */\n  const loadFollows = async ({ selectedOption: followsType, reset }) => {\n    setIsLoading(true);\n    setHasMore(false);\n    const url = `follows?type=${followsType}&page=${pageNum(reset)}`;\n\n    if (reset) {\n      // start all over again when the follows type has been changed\n      setResults([]);\n    }\n\n    try {\n      await createNetworkingClient()\n        .get(url, { params: {} })\n        .then((response) => {\n          if (response && response.status === 200) {\n            const { data } = response;\n            const fetchedFollows = data.follows;\n\n            setResults((prev) => [...prev, ...fetchedFollows]);\n            setHasMore(fetchedFollows.length >= resultsPerPage);\n            setIsLoading(false);\n          } else {\n            errorState(response.error);\n          }\n        })\n        .catch((err) => {\n          errorState(err);\n        });\n    } catch (err) {\n      errorState(err);\n    }\n  };\n\n  return { loadFollows, isLoading, results, hasMore, error };\n};\n\nexport default useFetchFollowers;\n","import React, { useState } from 'react';\nimport I18n from 'utils/I18n';\nimport PropTypes from 'prop-types';\nimport { DropdownSelect } from '@strava/ui/DropdownSelect';\n\nimport { Spinner } from '@strava/ui/Spinner';\nimport { AutoSizer, InfiniteLoader, List } from 'react-virtualized';\nimport styles from './styles.scss';\nimport useFetchFollowers from './hooks/useFetchFollowers';\n\nconst FollowsList = ({\n  athleteFirstName,\n  primaryNav,\n  hasBlockedAthletes,\n  resultsPerPage,\n  type\n}) => {\n  const t = (key, name) =>\n    name\n      ? I18n.t(`strava.athletes.follows.menu.${key}`, name)\n      : I18n.t(`strava.athletes.follows.menu.${key}`);\n\n  const [selectedOption, setSelectedOption] = useState(type);\n\n  const { isLoading, loadFollows, results, hasMore, error } = useFetchFollowers(\n    {\n      resultsPerPage\n    }\n  );\n\n  const options = (() => {\n    if (primaryNav === 'profile') {\n      // when viewing own profile\n      const o = [\n        { label: t('profile.following'), value: 'following' },\n        { label: t('profile.followers'), value: 'followers' },\n        { label: t('profile.suggested'), value: 'suggested' }\n      ];\n      if (hasBlockedAthletes) {\n        o.push({ label: t('profile.blocked'), value: 'blocked' });\n      }\n      return o;\n    }\n    const nameParam = { firstName: athleteFirstName };\n    // when viewing another athletes profile\n    return [\n      {\n        label: t('athlete.following', nameParam),\n        value: 'following'\n      },\n      {\n        label: t('athlete.followers', nameParam),\n        value: 'followers'\n      },\n      { label: t('athlete.both_following'), value: 'both_following' }\n    ];\n  })();\n\n  const handleOptionChange = (option) => {\n    setSelectedOption(option.value);\n    // clear and reload results when an athlete changes the follows type\n    loadFollows({\n      selectedOption: option.value,\n      reset: true\n    });\n  };\n\n  const loader = () => {\n    return (\n      <div className={styles.spinner}>\n        <Spinner />\n      </div>\n    );\n  };\n\n  /**\n   * Number of follows.\n   *\n   * This messages to infinite scroller that there is always one more\n   * row to be fetched until we verify that the athlete does not have any more follows\n   * (hasMore == false). This happens when we fetch a page that returns less results than\n   * the results per page limit (resultsPerPage)\n   */\n  const rowCount = (() => (hasMore ? results.length + 1 : results.length))();\n\n  /**\n   * Responsible for tracking the loaded state of each result row\n   */\n  const isRowLoaded = ({ index }) => {\n    return index < results.length;\n  };\n\n  // responsible for rendering a single card entry (row), given its index\n  const rowRenderer = (params) => {\n    // [ named parameters from react-virtualized ]\n    // index - index of row\n    // key - unique key within array of rows\n    // style - style object to be applied to row\n    const { index, key, style } = params;\n    let content;\n    if (!isRowLoaded({ index })) {\n      content = loader();\n    } else {\n      const athleteEntry = results[index].find((o) => o.athlete);\n      const followEntry = results[index].find((o) => o.follow);\n\n      const athlete = athleteEntry ? athleteEntry.athlete : {};\n      const follow = followEntry ? followEntry.follow : {}; // some follows-types do not have this follow entry\n      content = `${athlete.firstname} - ${follow.status}`;\n    }\n\n    return (\n      <div key={key} style={style}>\n        {content}\n      </div>\n    );\n  };\n\n  /**\n   * Callback to be invoked when more rows must be loaded.\n   */\n  const loadMoreRows = ({ startIndex, stopIndex }) => {\n    return new Promise((resolve) => {\n      loadFollows({\n        selectedOption,\n        reset: false,\n        startIndex,\n        stopIndex\n      }).then(() => {\n        resolve();\n      });\n    });\n  };\n\n  /**\n   *  Callback used to render placeholder content when rowCount is 0\n   */\n  const noRowsRenderer = () => {\n    return isLoading ? (\n      loader()\n    ) : (\n      <div>{t(`no_results.${selectedOption}`)}</div>\n    );\n  };\n\n  return (\n    <>\n      <DropdownSelect\n        className={styles.optionsDropdown}\n        options={options}\n        value={options.find((o) => o.value === selectedOption)}\n        onChange={handleOptionChange}\n        ariaLabel={t('aria_label')}\n      />\n      <div className={styles.resultsContainer}>\n        {!error && (\n          <InfiniteLoader\n            isRowLoaded={isRowLoaded}\n            loadMoreRows={loadMoreRows}\n            rowCount={rowCount}\n          >\n            {({ onRowsRendered, registerChild }) => (\n              <AutoSizer disableHeight={true}>\n                {({ width }) => (\n                  <List\n                    className={styles.list}\n                    height={800}\n                    noRowsRenderer={noRowsRenderer}\n                    rowCount={rowCount}\n                    rowHeight={60}\n                    rowRenderer={rowRenderer}\n                    ref={registerChild}\n                    onRowsRendered={onRowsRendered}\n                    width={width}\n                  />\n                )}\n              </AutoSizer>\n            )}\n          </InfiniteLoader>\n        )}\n\n        {error && <div className={styles.error}>{t('error_message')}</div>}\n      </div>\n    </>\n  );\n};\n\nFollowsList.propTypes = {\n  primaryNav: PropTypes.oneOf(['profile', 'athlete']).isRequired,\n  hasBlockedAthletes: PropTypes.bool.isRequired,\n  athleteFirstName: PropTypes.string.isRequired,\n  resultsPerPage: PropTypes.number.isRequired,\n  type: PropTypes.oneOf([\n    'following',\n    'followers',\n    'both_following',\n    'suggested',\n    'blocked'\n  ]).isRequired\n};\n\nexport default FollowsList;\n","export { default } from './FollowsList';\n","// extracted by mini-css-extract-plugin\nexport default {\"btn-cta\":\"ButtonCTAWithCancel--btn-cta--GEeWm\",\"btnCta\":\"ButtonCTAWithCancel--btn-cta--GEeWm\",\"btn-cancel\":\"ButtonCTAWithCancel--btn-cancel--PsNTV\",\"btnCancel\":\"ButtonCTAWithCancel--btn-cancel--PsNTV\",\"controls\":\"ButtonCTAWithCancel--controls--5Lw+m\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\n\nimport I18n from 'utils/I18n';\n\nimport styles from './index.scss';\n\nconst I18nPrefix = 'components.button_cta_with_cancel.';\nconst I18nKey = {\n  cancel: `${I18nPrefix}cancel`,\n  ok: `${I18nPrefix}ok`,\n  next: `${I18nPrefix}next`\n};\n\nfunction ButtonCTAWithCancel({\n  onCancel,\n  onCTA,\n  disabled = false,\n  ctaDisabled = false,\n  ctaVariant = 'ok',\n  ctaText\n}) {\n  return (\n    <div className={styles.controls}>\n      <Button\n        key=\"cancel\"\n        type=\"button\"\n        className={styles.btnCancel}\n        onClick={onCancel}\n        disabled={disabled}\n      >\n        {I18n.t(I18nKey.cancel)}\n      </Button>\n      <Button\n        key=\"next\"\n        type=\"button\"\n        variant=\"primary\"\n        className={styles.btnCta}\n        onClick={onCTA}\n        disabled={disabled || ctaDisabled}\n      >\n        {ctaVariant === 'custom' && ctaText\n          ? ctaText\n          : I18n.t(I18nKey[ctaVariant])}\n      </Button>\n    </div>\n  );\n}\n\nButtonCTAWithCancel.propTypes = {\n  onCancel: PropTypes.func.isRequired,\n  onCTA: PropTypes.func.isRequired,\n  disabled: PropTypes.bool,\n  ctaDisabled: PropTypes.bool,\n  ctaVariant: PropTypes.oneOf(['ok', 'next', 'custom']),\n  ctaText: PropTypes.string\n};\n\nexport default ButtonCTAWithCancel;\n","// extracted by mini-css-extract-plugin\nexport default {\"options\":\"OptionList--options--7zMaY\",\"title\":\"OptionList--title--Oo06n\",\"detail\":\"OptionList--detail--Jessw\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './index.scss';\n\nfunction OptionList({ currentValue = null, handleNext, handleValueChange, options }) {\n  return (\n    <ul className={styles.options}>\n      {options.map((option) => (\n        <Option\n          {...option}\n          key={option.value}\n          isSelected={currentValue === option.value}\n          handleNext={handleNext}\n          valueChanged={handleValueChange}\n        />\n      ))}\n    </ul>\n  );\n}\n\nOptionList.propTypes = {\n  currentValue: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  handleNext: PropTypes.func.isRequired,\n  handleValueChange: PropTypes.func.isRequired,\n  options: PropTypes.arrayOf(\n    PropTypes.shape({\n      title: PropTypes.string.isRequired,\n      detail: PropTypes.string.isRequired,\n      value: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]).isRequired\n    })\n  ).isRequired\n};\n\nfunction Option({\n  value,\n  title,\n  detail,\n  isSelected,\n  handleNext,\n  valueChanged\n}) {\n  return (\n    <li>\n      <label>\n        <input\n          type=\"radio\"\n          value={value}\n          checked={isSelected}\n          onChange={() => valueChanged(value, title)}\n          onKeyPress={(e) => e.key === 'Enter' && isSelected && handleNext()}\n          tabIndex={isSelected ? '0' : '-1'}\n        />\n        <div>\n          <span className={styles.title}>{title}</span>\n          <span className={styles.detail}>{detail}</span>\n        </div>\n      </label>\n    </li>\n  );\n}\n\nOption.propTypes = {\n  value: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]).isRequired,\n  title: PropTypes.string.isRequired,\n  detail: PropTypes.string.isRequired,\n  isSelected: PropTypes.bool.isRequired,\n  handleNext: PropTypes.func.isRequired,\n  valueChanged: PropTypes.func.isRequired\n};\n\nexport default OptionList;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\n\nimport ButtonCTAWithCancel from 'components/ButtonCTAWithCancel';\nimport OptionList from './components/OptionList';\n\nexport function Step({\n  name,\n  title,\n  flow,\n  isSubmitted,\n  config,\n  currentValue = null,\n  handleValueChange,\n  handleCancel,\n  trackNext,\n  trackScreenEnter,\n  trackScreenExit,\n  history\n}) {\n  useEffect(() => {\n    trackScreenEnter();\n    return trackScreenExit;\n  }, [history]);\n\n  if (isSubmitted) {\n    handleCancel();\n    return null;\n  }\n\n  const nextStep = flow[flow.indexOf(name) + 1];\n  const handleNext = () => {\n    trackNext();\n    history.push(nextStep);\n  };\n\n  return (\n    <>\n      <h2>{title}</h2>\n      <OptionList\n        {...config}\n        {...{ currentValue, handleNext, handleValueChange }}\n      />\n      <ButtonCTAWithCancel\n        onCancel={handleCancel}\n        onCTA={handleNext}\n        ctaVariant=\"next\"\n        ctaDisabled={currentValue === null}\n      />\n    </>\n  );\n}\n\nStep.propTypes = {\n  name: PropTypes.string.isRequired,\n  title: PropTypes.string.isRequired,\n  type: PropTypes.oneOf(['OptionList']).isRequired,\n  isSubmitted: PropTypes.bool.isRequired,\n  flow: PropTypes.arrayOf(PropTypes.string).isRequired,\n  currentValue: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  handleValueChange: PropTypes.func.isRequired,\n  config: PropTypes.shape({}).isRequired,\n  handleCancel: PropTypes.func.isRequired,\n  trackNext: PropTypes.func.isRequired,\n  trackScreenEnter: PropTypes.func.isRequired,\n  trackScreenExit: PropTypes.func.isRequired,\n\n  // withRouter\n  history: PropTypes.shape({\n    push: PropTypes.func.isRequired\n  }).isRequired\n};\n\nexport default withRouter(Step);\n","// extracted by mini-css-extract-plugin\nexport default {\"summary-table\":\"Summary--summary-table--uIgQX\",\"summaryTable\":\"Summary--summary-table--uIgQX\",\"summary-field\":\"Summary--summary-field--DLhQr\",\"summaryField\":\"Summary--summary-field--DLhQr\",\"summary-update\":\"Summary--summary-update--8Nani\",\"summaryUpdate\":\"Summary--summary-update--8Nani\"};","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\n\nimport I18n from 'utils/I18n';\nimport ButtonCTAWithCancel from 'components/ButtonCTAWithCancel';\n\nimport styles from './index.scss';\n\nconst I18nPrefix = 'strava.settings.edit_past_activities.';\nconst I18nKey = {\n  title: `${I18nPrefix}summary.title`,\n  detailHtml: `${I18nPrefix}summary.detail_html`,\n  updating: `${I18nPrefix}summary.updating`\n};\n\nexport function Summary({\n  isSubmitted,\n  isSubmitting,\n  handleCancel,\n  handleSubmit,\n  summary,\n  trackScreenEnter,\n  trackScreenExit,\n  history\n}) {\n  useEffect(() => {\n    trackScreenEnter();\n    return trackScreenExit;\n  }, [history]);\n\n  const attributes = Object.keys(summary);\n\n  if (attributes.length === 0) {\n    handleCancel();\n    return null;\n  }\n\n  return (\n    <>\n      <h2>{I18n.t(I18nKey.title)}</h2>\n      <p>{I18n.t_html(I18nKey.detailHtml)}</p>\n      <hr />\n      <table className={styles.summaryTable}>\n        <tbody>\n          {attributes.map((attr) => (\n            <tr key={attr}>\n              <td className={styles.summaryField}>{summary[attr].title}</td>\n              <td className={styles.summaryUpdate}>\n                {isSubmitted ? I18n.t(I18nKey.updating) : summary[attr].changes}\n              </td>\n            </tr>\n          ))}\n        </tbody>\n      </table>\n      <hr />\n      {!isSubmitted && (\n        <ButtonCTAWithCancel\n          onCancel={handleCancel}\n          onCTA={handleSubmit}\n          ctaDisabled={isSubmitting}\n          ctaVariant=\"next\"\n        />\n      )}\n    </>\n  );\n}\n\nSummary.propTypes = {\n  isSubmitted: PropTypes.bool.isRequired,\n  isSubmitting: PropTypes.bool.isRequired,\n  handleCancel: PropTypes.func.isRequired,\n  handleSubmit: PropTypes.func.isRequired,\n  trackScreenEnter: PropTypes.func.isRequired,\n  trackScreenExit: PropTypes.func.isRequired,\n  summary: PropTypes.objectOf(\n    PropTypes.shape({\n      title: PropTypes.string.isRequired,\n      changes: PropTypes.oneOfType([PropTypes.string, PropTypes.bool])\n        .isRequired\n    })\n  ).isRequired,\n\n  // withRouter\n  history: PropTypes.shape({\n    push: PropTypes.func.isRequired\n  }).isRequired\n};\n\nexport default withRouter(Summary);\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"EditPastActivitiesApp--container--psAcA\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n  HashRouter as Router,\n  Switch,\n  Redirect,\n  Route\n} from 'react-router-dom';\n\nimport createNetworkingClient from 'utils/networking-client';\nimport { trackV2 } from 'utils/analytics';\nimport I18n from 'utils/I18n';\n\nimport Step from './components/Step';\nimport Summary from './components/Summary';\n\nimport styles from './index.scss';\n\nconst I18nPrefix = 'strava.settings.edit_past_activities.';\nconst I18nKey = {\n  areYouSure: `${I18nPrefix}are_you_sure`\n};\n\nconst AnalyticsCategory = 'edit_past_activities';\nconst AnalyticsAction = {\n  Click: 'click',\n  Error: 'error',\n  ScreenEnter: 'screen_enter',\n  ScreenExit: 'screen_exit'\n};\n\nconst SummaryRoute = 'summary';\nconst ConfirmationRoute = 'confirmation'; // psuedo 'route' for analytics, this is the window.confirm\n\nclass EditPastActivitiesApp extends React.Component {\n  constructor(props) {\n    super(props);\n\n    const { attributes } = props;\n    this.flow = attributes.map((a) => a.name).concat(SummaryRoute);\n\n    this.state = {\n      isSubmitted: false,\n      isSubmitting: false,\n      updates: {},\n      summary: {}\n    };\n  }\n\n  trackState = ({ page, action, element, properties }) => () => {\n    const category = AnalyticsCategory;\n    const { updates } = this.state;\n\n    trackV2({\n      category,\n      page,\n      action,\n      element,\n      properties: { setting_value: updates, ...properties }\n    });\n  };\n\n  trackScreenEnter = (page) =>\n    this.trackState({ page, action: AnalyticsAction.ScreenEnter });\n\n  trackScreenExit = (page) =>\n    this.trackState({ page, action: AnalyticsAction.ScreenExit });\n\n  trackClick = (page, element) =>\n    this.trackState({ page, element, action: AnalyticsAction.Click });\n\n  trackError = (page, status) =>\n    this.trackState({\n      page,\n      action: AnalyticsAction.Error,\n      properties: { status }\n    });\n\n  handleCancel = (page) => {\n    return () => {\n      this.trackClick(page, 'cancel')();\n      this.routeToReturnTo();\n    };\n  };\n\n  routeToReturnTo = () => {\n    const { returnTo } = this.props;\n    window.location = returnTo;\n  };\n\n  handleValueChange = (name, title) => (value, changes) => {\n    this.setState((prevState) => {\n      return {\n        ...prevState,\n        updates: {\n          ...prevState.updates,\n          [name]: value\n        },\n        summary: {\n          ...prevState.summary,\n          [name]: { title, changes }\n        }\n      };\n    }, this.trackClick(name, value));\n  };\n\n  confirmSubmit = () => {\n    const page = ConfirmationRoute;\n\n    this.trackScreenEnter(page)();\n    const { summary } = this.state;\n\n    const changes = Object.keys(summary).map((k) => {\n      return `* ${summary[k].changes}`;\n    });\n\n    const copy = `${I18n.t(I18nKey.areYouSure)}\\n${changes.join('\\n')}`;\n\n    // eslint-disable-next-line no-alert\n    const didSubmit = window.confirm(copy);\n\n    const element = didSubmit ? 'next' : 'cancel';\n    this.trackClick(page, element)();\n    this.trackScreenExit(page)();\n    return didSubmit;\n  };\n\n  handleSubmit = () => {\n    this.trackClick(SummaryRoute, 'next')();\n    const { updates } = this.state;\n    const { url } = this.props;\n\n    if (!this.confirmSubmit()) {\n      return;\n    }\n\n    const successState = { isSubmitted: true, isSubmitting: false };\n    const failState = { isSubmitting: false };\n\n    this.setState({ isSubmitting: true }, () => {\n      createNetworkingClient()\n        .post(url, { updates })\n        .then((response) => {\n          const status = response && response.status;\n          if (status === 202) {\n            this.setState(successState);\n            return;\n          }\n\n          this.trackError(ConfirmationRoute, status)();\n          this.setState(failState);\n        })\n        .catch((error) => {\n          const status = error.response && error.response.status;\n          this.trackError(ConfirmationRoute, status)();\n          if (status === 429) {\n            this.routeToReturnTo();\n            return;\n          }\n          // unexpected error\n          this.setState(failState);\n        });\n    });\n  };\n\n  render() {\n    const { attributes } = this.props;\n    const { isSubmitted, isSubmitting, updates, summary } = this.state;\n\n    return (\n      <Router>\n        <div className={styles.container}>\n          <Switch>\n            <Redirect exact={true} from=\"/\" to={this.flow[0]} />\n            {attributes.map((attr) => (\n              <Route path={`/${attr.name}`} key={attr.name}>\n                <Step\n                  {...attr}\n                  flow={this.flow}\n                  isSubmitted={isSubmitted}\n                  handleCancel={this.handleCancel(attr.name)}\n                  trackNext={this.trackClick(attr.name, 'next')}\n                  trackScreenEnter={this.trackScreenEnter(attr.name)}\n                  trackScreenExit={this.trackScreenExit(attr.name)}\n                  handleValueChange={this.handleValueChange(\n                    attr.name,\n                    attr.title\n                  )}\n                  currentValue={updates[attr.name]}\n                />\n              </Route>\n            ))}\n            <Route path={`/${SummaryRoute}`}>\n              <Summary\n                {...this.props}\n                {...{ isSubmitted, isSubmitting, summary }}\n                handleCancel={this.handleCancel(SummaryRoute)}\n                handleSubmit={this.handleSubmit}\n                trackScreenEnter={this.trackScreenEnter(SummaryRoute)}\n                trackScreenExit={this.trackScreenExit(SummaryRoute)}\n              />\n            </Route>\n          </Switch>\n        </div>\n      </Router>\n    );\n  }\n}\n\nEditPastActivitiesApp.propTypes = {\n  url: PropTypes.string.isRequired,\n  returnTo: PropTypes.string.isRequired,\n  attributes: PropTypes.arrayOf(\n    PropTypes.shape({\n      name: PropTypes.string.isRequired,\n      title: PropTypes.string.isRequired,\n      type: PropTypes.oneOf(['OptionList']),\n      config: PropTypes.object\n    })\n  ).isRequired\n};\n\nexport default EditPastActivitiesApp;\n","import createNetworkingClient from 'utils/networking-client';\n\nexport const types = {\n  VALUE_CHANGED: 'VALUE_CHANGED',\n  VALUE_SAVED_FAILURE: 'VALUE_SAVED_FAILURE',\n  VALUE_SAVED_REQUESTED: 'VALUE_SAVED_REQUESTED',\n  VALUE_SAVED_SUCCESS: 'VALUE_SAVED_SUCCESS'\n};\n\nconst valueSavedFailure = (partnerName, partnerType) => ({\n  type: types.VALUE_SAVED_FAILURE,\n  partnerName,\n  partnerType\n});\n\nconst valueSavedRequested = (partnerName, partnerType) => ({\n  type: types.VALUE_SAVED_REQUESTED,\n  partnerName,\n  partnerType\n});\n\nconst valueSavedSuccess = (partnerName, partnerType) => ({\n  type: types.VALUE_SAVED_SUCCESS,\n  partnerName,\n  partnerType\n});\n\nexport const valueChanged = ({\n  athleteId,\n  optOutName,\n  partnerName,\n  partnerType,\n  value\n}) => (dispatch) => {\n  dispatch(valueSavedRequested(partnerName, partnerType));\n  const url = `/athletes/${athleteId}`;\n  const payload = {\n    athlete: {\n      partner_opt_outs: [\n        {\n          opt_out_name: optOutName,\n          value\n        }\n      ]\n    }\n  };\n\n  const instance = createNetworkingClient();\n  return instance\n    .put(url, payload, { headers: { Accept: 'text/javascript' } })\n    .then(() => dispatch(valueSavedSuccess(partnerName, partnerType)))\n    .catch(() => dispatch(valueSavedFailure(partnerName, partnerType)));\n};\n\nexport default types;\n","import { types } from './actions';\n\nexport default function reducer(state = {}, action) {\n  let newState;\n  let changedPartner;\n\n  switch (action.type) {\n    case types.VALUE_SAVED_FAILURE:\n      changedPartner = state[action.partnerType][action.partnerName];\n      return {\n        ...state,\n        [action.partnerType]: {\n          ...state[action.partnerType],\n          [action.partnerName]: {\n            ...changedPartner,\n            disabled: false\n          }\n        }\n      };\n    case types.VALUE_SAVED_REQUESTED:\n      changedPartner = state[action.partnerType][action.partnerName];\n      return {\n        ...state,\n        [action.partnerType]: {\n          ...state[action.partnerType],\n          [action.partnerName]: {\n            ...changedPartner,\n            disabled: true\n          }\n        }\n      };\n    case types.VALUE_SAVED_SUCCESS:\n      changedPartner = state[action.partnerType][action.partnerName];\n      newState = {\n        ...state,\n        [action.partnerType]: {\n          ...state[action.partnerType],\n          [action.partnerName]: {\n            ...changedPartner,\n            value: !changedPartner.value,\n            disabled: false\n          }\n        },\n        selected: action.partnerName\n      };\n      return { ...newState };\n\n    default:\n      return state;\n  }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"opt-out-section\":\"OptOutSetting--opt-out-section--SO4Aa\",\"optOutSection\":\"OptOutSetting--opt-out-section--SO4Aa\",\"partner-image-container\":\"OptOutSetting--partner-image-container--ZWM2I\",\"partnerImageContainer\":\"OptOutSetting--partner-image-container--ZWM2I\",\"partner-image\":\"OptOutSetting--partner-image--QH+D6\",\"partnerImage\":\"OptOutSetting--partner-image--QH+D6\",\"partner-body\":\"OptOutSetting--partner-body--vqCRw\",\"partnerBody\":\"OptOutSetting--partner-body--vqCRw\",\"partner-name\":\"OptOutSetting--partner-name--kbPWn\",\"partnerName\":\"OptOutSetting--partner-name--kbPWn\",\"input\":\"OptOutSetting--input--4tmfv\",\"radio-label\":\"OptOutSetting--radio-label--TsFHI\",\"radioLabel\":\"OptOutSetting--radio-label--TsFHI\",\"description\":\"OptOutSetting--description--gDW3p\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport I18n from 'utils/I18n';\n\nimport styles from './index.scss';\n\nconst I18nPrefix = 'strava.settings.partner_integrations.';\nconst I18nPrefixSelected = `${I18nPrefix}settings_changed.`;\nconst I18nKey = {\n  enabled: `${I18nPrefix}enabled`,\n  disabled: `${I18nPrefix}disabled`,\n  seeYourActivities: `${I18nPrefix}see_your_activities`,\n  selected: {\n    enabled: `${I18nPrefixSelected}enabled_without_date`,\n    disabled: `${I18nPrefixSelected}disabled_without_date`\n  }\n};\n\nexport const getDescriptionString = (partnerName, value) => {\n  if (value) {\n    return I18n.t(I18nKey.selected.disabled, {\n      partnerName\n    });\n  }\n  return I18n.t(I18nKey.selected.enabled, {\n    partnerName\n  });\n};\n\nexport const renderText = (selected, name, value) => {\n  if (selected) {\n    return (\n      <div className={styles.description}>\n        <p>{getDescriptionString(name, value)}</p>\n      </div>\n    );\n  }\n  return null;\n};\n\nconst OptOutSetting = ({ partner, partnerType, onChange, selected }) => (\n  <div className={styles.optOutSection}>\n    <div className={styles.partnerImageContainer}>\n      <img\n        className={styles.partnerImage}\n        src={partner.profileImage}\n        alt={partner.name}\n      />\n    </div>\n    <div className={styles.partnerBody}>\n      <h4 className={`text-subhead ${styles.partnerName}`}>\n        {partner.partnerName}\n      </h4>\n      <form action=\"\">\n        <label className={styles.input}>\n          <input\n            type=\"radio\"\n            name={partner.partnerName}\n            checked={!partner.value}\n            disabled={partner.disabled}\n            onChange={() => onChange({ ...partner, partnerType })}\n          />\n          <span className={styles.radioLabel}>{I18n.t(I18nKey.enabled)}</span>\n        </label>\n        <label className={styles.input}>\n          <input\n            type=\"radio\"\n            name={partner.partnerName}\n            checked={partner.value}\n            disabled={partner.disabled}\n            onChange={() => onChange({ ...partner, partnerType })}\n          />\n          <span className={styles.radioLabel}>{I18n.t(I18nKey.disabled)}</span>\n        </label>\n      </form>\n      {renderText(selected, partner.partnerName, partner.value)}\n    </div>\n  </div>\n);\n\nOptOutSetting.propTypes = {\n  onChange: PropTypes.func.isRequired,\n  partnerType: PropTypes.string.isRequired,\n  selected: PropTypes.bool.isRequired,\n  partner: PropTypes.shape({\n    name: PropTypes.string,\n    disabled: PropTypes.bool,\n    optOutName: PropTypes.string.isRequired,\n    partnerName: PropTypes.string.isRequired,\n    profileImage: PropTypes.string.isRequired,\n    value: PropTypes.bool.isRequired\n  }).isRequired\n};\n\nexport default OptOutSetting;\n","// extracted by mini-css-extract-plugin\nexport default {\"sponsored-section\":\"PartnerIntegrationsList--sponsored-section--ZmlXh\",\"sponsoredSection\":\"PartnerIntegrationsList--sponsored-section--ZmlXh\",\"enhanced-header\":\"PartnerIntegrationsList--enhanced-header--G5PmK\",\"enhancedHeader\":\"PartnerIntegrationsList--enhanced-header--G5PmK\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport Analytics from 'utils/analytics';\n\nimport I18n from 'utils/I18n';\nimport { valueChanged } from '../../actions';\nimport OptOutSetting from '../OptOutSetting';\n\nimport styles from './index.scss';\n\nconst I18nPrefix = 'strava.settings.partner_integrations.';\nconst I18nKey = {\n  enhancedHeader: `${I18nPrefix}enhanced_header`,\n  sponsoredHeader: `${I18nPrefix}sponsored_header`,\n  yourHeader: `${I18nPrefix}your_header`\n};\n\nexport class PartnerIntegrationsList extends React.Component {\n  onChange = ({ optOutName, partnerName, value, partnerType }) => {\n    Analytics.trackV2({\n      action: 'click',\n      category: 'sponsor_opt_out',\n      page: 'all_sponsored_settings',\n      element: value ? 'enable' : 'disable',\n      properties: { partner: optOutName }\n    });\n\n    this.props.onValueChanged({\n      athleteId: this.props.athleteId,\n      optOutName,\n      partnerName,\n      partnerType,\n      value: !value\n    });\n  };\n\n  selected = (partnerName) => this.props.selected === partnerName;\n\n  hasSponsored() {\n    const { sponsored } = this.props;\n    return Object.keys(sponsored).length > 0;\n  }\n\n  hasEnhanced() {\n    const { enhanced } = this.props;\n    return Object.keys(enhanced).length > 0;\n  }\n\n  showEnhancedHeading() {\n    return this.hasSponsored() && this.hasEnhanced();\n  }\n\n  sponsoredMapping() {\n    const { sponsored } = this.props;\n    return Object.keys(sponsored).map((partner) => (\n      <OptOutSetting\n        key={sponsored[partner].partnerName}\n        partner={sponsored[partner]}\n        partnerType=\"sponsored\"\n        selected={this.selected(sponsored[partner].partnerName)}\n        onChange={this.onChange}\n      />\n    ));\n  }\n\n  enhancedMapping() {\n    const { enhanced } = this.props;\n    return Object.keys(enhanced).map((partner) => (\n      <OptOutSetting\n        key={enhanced[partner].partnerName}\n        partner={enhanced[partner]}\n        partnerType=\"enhanced\"\n        selected={this.selected(enhanced[partner].partnerName)}\n        onChange={this.onChange}\n      />\n    ));\n  }\n\n  sponsoredIntegrations() {\n    if (this.hasSponsored()) {\n      return (\n        <div className={styles.sponsoredSection}>\n          <h2>{I18n.t(I18nKey.sponsoredHeader)}</h2>\n          {this.sponsoredMapping()}\n        </div>\n      );\n    }\n    return null;\n  }\n\n  enhancedIntegrations() {\n    if (this.hasEnhanced()) {\n      if (this.showEnhancedHeading()) {\n        return (\n          <div className={styles.enhancedHeader}>\n            <h2>{I18n.t(I18nKey.yourHeader)}</h2>\n            {this.enhancedMapping()}\n          </div>\n        );\n      }\n      return <div>{this.enhancedMapping()}</div>;\n    }\n    return null;\n  }\n\n  render() {\n    return (\n      <div>\n        {this.sponsoredIntegrations()}\n        {this.enhancedIntegrations()}\n      </div>\n    );\n  }\n}\n\nPartnerIntegrationsList.propTypes = {\n  athleteId: PropTypes.number.isRequired,\n  onValueChanged: PropTypes.func.isRequired,\n  selected: PropTypes.string,\n  sponsored: PropTypes.shape({}).isRequired,\n  enhanced: PropTypes.shape({}).isRequired\n};\n\nexport default connect(\n  ({ athleteId, sponsored, enhanced, selected }) => ({\n    athleteId,\n    sponsored,\n    enhanced,\n    selected\n  }),\n  { onValueChanged: valueChanged }\n)(PartnerIntegrationsList);\n","import React from 'react';\nimport { Provider } from 'react-redux';\nimport { createStore, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\n\nimport reducer from './reducers';\n\nimport PartnerIntegrationsList from './components/PartnerIntegrationsList';\n\nclass PartnerIntegrations extends React.Component {\n  store = createStore(\n    reducer,\n    { ...this.props, selected: null, disabled: false },\n    applyMiddleware(thunk)\n  );\n\n  render() {\n    return (\n      <Provider store={this.store}>\n        <PartnerIntegrationsList />\n      </Provider>\n    );\n  }\n}\n\nexport default PartnerIntegrations;\n","// extracted by mini-css-extract-plugin\nexport default {\"slider\":\"Handle--slider--UPrMT\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ActionsVisibleDisabledNormalXsmall from '@strava/icons/ActionsVisibleDisabledNormalXsmall';\nimport styles from './styles.scss';\n\nconst Handle = ({ domain: [min, max], handle, getHandleProps }) => {\n  return (\n    <button\n      role=\"slider\"\n      type=\"button\"\n      aria-valuemin={min}\n      aria-valuemax={max}\n      aria-valuenow={handle.value}\n      className={styles.slider}\n      style={{\n        left: `${handle.percent}%`\n      }}\n      {...getHandleProps(handle.id)}\n    >\n      <div>\n        <ActionsVisibleDisabledNormalXsmall />\n      </div>\n    </button>\n  );\n};\n\nHandle.propTypes = {\n  domain: PropTypes.arrayOf(PropTypes.number).isRequired,\n  handle: PropTypes.shape({\n    id: PropTypes.string.isRequired,\n    value: PropTypes.number.isRequired,\n    percent: PropTypes.number.isRequired\n  }).isRequired,\n  getHandleProps: PropTypes.func.isRequired\n};\n\nexport default Handle;\n","export { default } from './Handle';\n","// extracted by mini-css-extract-plugin\nexport default {\"track\":\"Track--track--AsBZs\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.scss';\n\nconst Track = ({ source, target }) => (\n  <div\n    className={styles.track}\n    style={{\n      left: `${source.percent}%`,\n      width: `${target.percent - source.percent}%`\n    }}\n  />\n);\n\nTrack.propTypes = {\n  source: PropTypes.shape({\n    value: PropTypes.number.isRequired,\n    percent: PropTypes.number.isRequired\n  }).isRequired,\n  target: PropTypes.shape({\n    value: PropTypes.number.isRequired,\n    percent: PropTypes.number.isRequired\n  }).isRequired\n};\n\nexport default Track;\n","export { default } from './Track';\n","// extracted by mini-css-extract-plugin\nexport default {\"tick\":\"Tick--tick--dEOc0\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.scss';\n\nconst Tick = ({ tick }) => (\n  <div\n    className={styles.tick}\n    style={{\n      left: `${tick.percent}%`\n    }}\n  />\n);\n\nTick.propTypes = {\n  tick: PropTypes.shape({\n    percent: PropTypes.number.isRequired\n  }).isRequired\n};\n\nexport default Tick;\n","export { default } from './Tick';\n","// extracted by mini-css-extract-plugin\nexport default {\"slider\":\"StreamPrivacySlider--slider--PiWrd\",\"graphic-wrap\":\"StreamPrivacySlider--graphic-wrap--hrVjy\",\"graphicWrap\":\"StreamPrivacySlider--graphic-wrap--hrVjy\",\"rail\":\"StreamPrivacySlider--rail--sVYj7\",\"ticks\":\"StreamPrivacySlider--ticks--omFMM\",\"handle\":\"StreamPrivacySlider--handle--iegpj\",\"rail-hitarea\":\"StreamPrivacySlider--rail-hitarea--IwGrk\",\"railHitarea\":\"StreamPrivacySlider--rail-hitarea--IwGrk\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Slider, Rail, Handles, Tracks, Ticks } from 'react-compound-slider';\nimport { trackV2 } from 'utils/analytics';\n\nimport Handle from './Handle';\nimport Track from './Track';\nimport Tick from './Tick';\nimport styles from './styles.scss';\n\nconst StreamPrivacySlider = ({\n  defaultStreamPrivacy,\n  domain,\n  onChange,\n  numTicks\n}) => {\n  return (\n    <div className={styles.wrapper}>\n      <Slider\n        mode={1}\n        step={200}\n        domain={domain}\n        onSlideEnd={(values) => {\n          onChange(values[0]);\n          trackV2({\n            category: 'privacy_settings',\n            page: 'hide_any_start_end',\n            action: 'click',\n            element: 'slider',\n            properties: { distance: values[0] }\n          });\n        }}\n        values={[defaultStreamPrivacy.meters_value]}\n        className={styles.slider}\n      >\n        <div className={styles.graphicWrap}>\n          <div className={styles.rail} />\n        </div>\n\n        <Tracks right={false}>\n          {({ tracks }) => (\n            <div className={styles.graphicWrap}>\n              {tracks.map(({ id, source, target }) => (\n                <Track key={id} source={source} target={target} />\n              ))}\n            </div>\n          )}\n        </Tracks>\n\n        <Ticks count={numTicks}>\n          {({ ticks }) => (\n            <div className={`${styles.graphicWrap} ${styles.ticks}`}>\n              {ticks.map((tick) => (\n                <Tick key={tick.id} tick={tick} count={ticks.length} />\n              ))}\n            </div>\n          )}\n        </Ticks>\n\n        {/*\n          whe need to use Rail component here so that we can add getRailProps\n          which will add mouse interactions\n        */}\n        <Rail>\n          {({ getRailProps }) => (\n            <div className={styles.graphicWrap}>\n              <div className={styles.railHitarea} {...getRailProps()} />\n            </div>\n          )}\n        </Rail>\n\n        <Handles>\n          {({ handles, getHandleProps }) => (\n            <div className={`${styles.graphicWrap} ${styles.handle}`}>\n              {handles.map((handle) => (\n                <Handle\n                  key={handle.id}\n                  handle={handle}\n                  domain={domain}\n                  getHandleProps={getHandleProps}\n                />\n              ))}\n            </div>\n          )}\n        </Handles>\n      </Slider>\n    </div>\n  );\n};\n\nStreamPrivacySlider.propTypes = {\n  defaultStreamPrivacy: PropTypes.shape({\n    meters_value: PropTypes.number,\n    luggage_value: PropTypes.string\n  }).isRequired,\n  domain: PropTypes.arrayOf(PropTypes.number).isRequired,\n  onChange: PropTypes.func.isRequired,\n  numTicks: PropTypes.number.isRequired\n};\n\nexport default StreamPrivacySlider;\n","export { default } from './StreamPrivacySlider';\n","// extracted by mini-css-extract-plugin\nexport default {\"detail\":\"HideAnywhereApp--detail--83HQb\",\"slider-container\":\"HideAnywhereApp--slider-container--vkWnN\",\"sliderContainer\":\"HideAnywhereApp--slider-container--vkWnN\",\"distance-hidden-label\":\"HideAnywhereApp--distance-hidden-label--ovQ3N\",\"distanceHiddenLabel\":\"HideAnywhereApp--distance-hidden-label--ovQ3N\",\"slider-scale\":\"HideAnywhereApp--slider-scale--X2DmU\",\"sliderScale\":\"HideAnywhereApp--slider-scale--X2DmU\",\"segment-visibility\":\"HideAnywhereApp--segment-visibility--H+igK\",\"segmentVisibility\":\"HideAnywhereApp--segment-visibility--H+igK\"};","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport I18n from 'utils/I18n';\nimport createNetworkingClient from 'utils/networking-client';\nimport { trackV2 } from 'utils/analytics';\nimport ConfirmModal from '../../../../components/ConfirmModal/ConfirmModal';\n\nimport StreamPrivacySlider from './components/StreamPrivacySlider';\nimport styles from './styles.scss';\n\nfunction HideAnywhereApp({\n  defaultStreamPrivacy: streamPrivacyProp,\n  streamPrivacyOptions,\n  updateSettingsPath,\n  isAthleteUnder18\n}) {\n  const I18nPrefix = 'strava.settings.privacy.hide_anywhere.';\n  const distanceUnits =\n    I18n.measurementUnits() === 'metric' ? 'meters' : 'miles';\n  const [defaultStreamPrivacy, setDefaultStreamPrivacy] = useState(\n    streamPrivacyProp\n  );\n  const newStreamPrivacyRef = useRef();\n  const oldStreamPrivacyRef = useRef();\n\n  const sliderLabels = streamPrivacyOptions.filter((s, i) => i % 2 === 0);\n\n  const trackEvent = (action, element = null, properties = null) => {\n    trackV2({\n      category: 'privacy_settings',\n      page: 'hide_any_start_end',\n      action,\n      ...(element && { element }),\n      ...(properties && { properties })\n    });\n  };\n\n  useEffect(() => {\n    trackEvent('screen_enter');\n  }, []);\n\n  const [openModal, setOpenModal] = useState(false);\n\n  const applySettingUpdate = () => {\n    createNetworkingClient()\n      .put(updateSettingsPath, {\n        settings: {\n          default_stream_privacy: newStreamPrivacyRef.current.luggage_value\n        }\n      })\n      .catch(() => {\n        setDefaultStreamPrivacy(oldStreamPrivacyRef.current);\n      });\n  };\n\n  const handleSettingUpdate = (radius) => {\n    oldStreamPrivacyRef.current = { ...defaultStreamPrivacy };\n    newStreamPrivacyRef.current = streamPrivacyOptions.find(\n      (r) => r.meters_value === radius\n    );\n    setDefaultStreamPrivacy(newStreamPrivacyRef.current);\n\n    if (\n      isAthleteUnder18 &&\n      newStreamPrivacyRef.current.meters_value <\n        oldStreamPrivacyRef.current.meters_value\n    ) {\n      setOpenModal(true);\n    } else {\n      applySettingUpdate();\n    }\n  };\n\n  const closeModal = () => {\n    setDefaultStreamPrivacy(oldStreamPrivacyRef.current);\n    setOpenModal(false);\n  };\n\n  const confirmSettingUpdate = () => {\n    applySettingUpdate();\n    setOpenModal(false);\n  };\n\n  return (\n    <div>\n      <div className={styles.detail}>{I18n.t(`${I18nPrefix}detail_v2`)}</div>\n      <div className={styles.sliderContainer}>\n        <div className={styles.distanceHiddenLabel}>\n          {defaultStreamPrivacy.meters_value === 0\n            ? I18n.t(\n                `strava.settings.privacy.distance.no_${distanceUnits}_hidden`\n              )\n            : I18n.t_html(\n                `strava.settings.privacy.distance.${distanceUnits}_hidden`,\n                {\n                  distance: I18n.t(defaultStreamPrivacy.label)\n                }\n              )}\n        </div>\n        <ConfirmModal\n          isOpen={openModal}\n          title={I18n.t('strava.settings.privacy.visibility.change_visibility')}\n          body={I18n.t(`${I18nPrefix}detail_warning_under_18`)}\n          onConfirm={confirmSettingUpdate}\n          onDismiss={closeModal}\n        />\n        <StreamPrivacySlider\n          domain={[\n            0,\n            streamPrivacyOptions[streamPrivacyOptions.length - 1].meters_value\n          ]}\n          defaultStreamPrivacy={defaultStreamPrivacy}\n          onChange={handleSettingUpdate}\n          numTicks={streamPrivacyOptions.length}\n        />\n        <div className={styles.sliderScale}>\n          {sliderLabels.map((s) => (\n            <div key={s.meters_value}>{I18n.t_html(s.label)}</div>\n          ))}\n        </div>\n      </div>\n      <div className={styles.segmentVisibility}>\n        {I18n.t_html(\n          `${I18nPrefix}segment_visibility_html`,\n          {},\n          {\n            onLinkClick: () =>\n              trackEvent('click', 'learn_more', {\n                article_id: 115000173384\n              })\n          }\n        )}\n      </div>\n    </div>\n  );\n}\n\nHideAnywhereApp.propTypes = {\n  defaultStreamPrivacy: PropTypes.shape({\n    meters_value: PropTypes.number,\n    luggage_value: PropTypes.string,\n    label: PropTypes.string\n  }).isRequired,\n  streamPrivacyOptions: PropTypes.arrayOf(\n    PropTypes.shape({\n      meters_value: PropTypes.number,\n      luggage_value: PropTypes.string,\n      label: PropTypes.string\n    })\n  ).isRequired,\n  updateSettingsPath: PropTypes.string.isRequired,\n  isAthleteUnder18: PropTypes.bool.isRequired\n};\n\nexport default HideAnywhereApp;\n","export { default } from './HideAnywhereApp';\n","import createNetworkingClient from 'utils/networking-client';\nimport Analytics from 'utils/analytics';\n\nexport const types = {\n  FETCH_CHALLENGE_PROGRESS_REQUESTED: 'FETCH_CHALLENGE_PROGRESS_REQUESTED',\n  FETCH_CHALLENGE_PROGRESS_SUCCESS: 'FETCH_CHALLENGE_PROGRESS_SUCCESS',\n  JOIN_CHALLENGE_FAILURE: 'JOIN_CHALLENGE_FAILURE',\n  JOIN_CHALLENGE_REQUESTED: 'JOIN_CHALLENGE_REQUESTED',\n  JOIN_CHALLENGE_SUCCESS: 'JOIN_CHALLENGE_SUCCESS',\n  JOIN_CLUB_FAILURE: 'JOIN_CLUB_FAILURE',\n  JOIN_CLUB_REQUESTED: 'JOIN_CLUB_REQUESTED',\n  JOIN_CLUB_SUCCESS: 'JOIN_CLUB_SUCCESS',\n  LEAVE_CHALLENGE_FAILURE: 'LEAVE_CHALLENGE_FAILURE',\n  LEAVE_CHALLENGE_REQUESTED: 'LEAVE_CHALLENGE_REQUESTED',\n  LEAVE_CHALLENGE_SUCCESS: 'LEAVE_CHALLENGE_SUCCESS',\n  MODAL_OPEN: 'MODAL_OPEN',\n  MODAL_CLOSE: 'MODAL_CLOSE',\n  MODAL_CHANGE_DATE: 'MODAL_CHANGE_DATE',\n  DOB_UPDATE_REQUESTED: 'DOB_UPDATE_REQUESTED',\n  DOB_UPDATE_SUCCESS: 'DOB_UPDATE_SUCCESS',\n  DOB_UPDATE_FAILED: 'DOB_UPDATE_FAILED'\n};\n\nconst fetchChallengeProgressSuccess = (data) => ({\n  type: types.FETCH_CHALLENGE_PROGRESS_SUCCESS,\n  data\n});\n\nconst fetchChallengeProgress = (challengeId) => (dispatch) => {\n  dispatch({ type: types.FETCH_CHALLENGE_PROGRESS_REQUESTED });\n\n  const instance = createNetworkingClient();\n  return instance\n    .get(`/challenges/${challengeId}/progress`)\n    .then((response) => {\n      const { data } = response;\n      dispatch(fetchChallengeProgressSuccess(data));\n    })\n    .catch(() => window.location.reload());\n};\n\nconst joinChallengeFailure = () => ({\n  type: types.JOIN_CHALLENGE_FAILURE\n});\n\nconst joinChallengeSuccess = (data) => ({\n  type: types.JOIN_CHALLENGE_SUCCESS,\n  data\n});\n\nexport const joinChallenge = (challengeId) => (dispatch) => {\n  dispatch({ type: types.JOIN_CHALLENGE_REQUESTED });\n\n  Analytics.trackV2({\n    action: 'click',\n    element: 'join',\n    category: 'challenges',\n    page: 'challenge_details',\n    properties: { challenge_id: challengeId }\n  });\n\n  const redirectUrl = window.location;\n\n  const instance = createNetworkingClient();\n  return instance\n    .get(\n      `/challenges/${challengeId}/login_and_join?redirect_url=${redirectUrl}`\n    )\n    .then((response) => {\n      const { data } = response;\n      if (data.redirect && data.redirectUrl) {\n        window.location = data.redirectUrl;\n      } else {\n        dispatch(fetchChallengeProgress(challengeId));\n        dispatch(joinChallengeSuccess(data));\n      }\n    })\n    .catch(() => dispatch(joinChallengeFailure()));\n};\n\nconst leaveChallengeFailure = () => ({\n  type: types.LEAVE_CHALLENGE_FAILURE\n});\n\nconst leaveChallengeSuccess = (data) => ({\n  type: types.LEAVE_CHALLENGE_SUCCESS,\n  data\n});\n\nexport const leaveChallenge = (challengeId) => (dispatch) => {\n  dispatch({ type: types.LEAVE_CHALLENGE_REQUESTED });\n\n  Analytics.trackV2({\n    action: 'click',\n    element: 'leave',\n    category: 'challenges',\n    page: 'challenge_details',\n    properties: { challenge_id: challengeId }\n  });\n\n  const instance = createNetworkingClient();\n  return instance\n    .post(`/challenges/${challengeId}/leave`)\n    .then((response) => {\n      const { data } = response;\n      dispatch(leaveChallengeSuccess(data));\n    })\n    .catch(() => dispatch(leaveChallengeFailure()));\n};\n\nconst joinClubFailure = () => ({\n  type: types.JOIN_CLUB_FAILURE\n});\n\nconst joinClubSuccess = (data) => ({\n  type: types.JOIN_CLUB_SUCCESS,\n  data\n});\n\nexport const joinClub = (destUrl) => (dispatch) => {\n  dispatch({ type: types.JOIN_CLUB_REQUESTED });\n\n  const redirectUrl = window.location;\n\n  const instance = createNetworkingClient();\n  return instance\n    .get(`${destUrl}?redirect_url=${redirectUrl}`)\n    .then((response) => {\n      const { data } = response;\n      if (data.redirect && data.redirectUrl) {\n        window.location = data.redirectUrl;\n      } else {\n        dispatch(joinClubSuccess(data));\n      }\n    })\n    .catch(() => dispatch(joinClubFailure()));\n};\n\nexport const showAgeModal = (\n  gatingConditions,\n  joinChallengeFn,\n  dateSelected\n) => (dispatch) => {\n  dispatch({\n    type: types.MODAL_OPEN,\n    data: {\n      gatingConditions,\n      joinChallengeFn,\n      dateSelected\n    }\n  });\n};\n\nexport const handleModalClose = () => (dispatch) =>\n  dispatch({ type: types.MODAL_CLOSE });\n\nexport const handleDateSelectionChange = (date) => (dispatch) =>\n  dispatch({ type: types.MODAL_CHANGE_DATE, date });\n\nexport const handleDateUpdateInProgress = () => (dispatch) =>\n  dispatch({ type: types.DOB_UPDATE_REQUESTED });\n\nexport const handleDateUpdateSuccess = (date) => (dispatch) =>\n  dispatch({ type: types.DOB_UPDATE_SUCCESS, date });\n\nexport const handleDateUpdateFailure = () => (dispatch) =>\n  dispatch({ type: types.DOB_UPDATE_FAILED });\n\nexport default types;\n","import { types } from './actions';\n\nexport default function reducer(state = {}, action) {\n  const [numParticipants, ...remaining] = state.participantCount;\n\n  switch (action.type) {\n    case types.FETCH_CHALLENGE_PROGRESS_SUCCESS:\n      return {\n        ...state,\n        progress: { ...state.progress, data: action.data }\n      };\n    case types.JOIN_CHALLENGE_FAILURE:\n      return {\n        ...state,\n        challengeJoinRequested: false\n      };\n    case types.JOIN_CHALLENGE_REQUESTED:\n      return {\n        ...state,\n        challengeJoinRequested: true\n      };\n    case types.JOIN_CHALLENGE_SUCCESS:\n      return {\n        ...state,\n        joined: action.data.joined,\n        participantCount: [\n          { ...numParticipants, value: numParticipants.value + 1 },\n          ...remaining\n        ],\n        challengeJoinRequested: false\n      };\n    case types.LEAVE_CHALLENGE_FAILURE:\n      return {\n        ...state,\n        challengeLeaveRequested: false\n      };\n    case types.LEAVE_CHALLENGE_REQUESTED:\n      return {\n        ...state,\n        challengeLeaveRequested: true\n      };\n    case types.LEAVE_CHALLENGE_SUCCESS:\n      return {\n        ...state,\n        joined: false,\n        participantCount: [\n          { ...numParticipants, value: numParticipants.value - 1 },\n          ...remaining\n        ],\n        challengeLeaveRequested: false,\n        progress: { ...state.progress, data: {} }\n      };\n    case types.JOIN_CLUB_FAILURE:\n      return {\n        ...state,\n        clubJoinRequested: false\n      };\n    case types.JOIN_CLUB_REQUESTED:\n      return {\n        ...state,\n        clubJoinRequested: true\n      };\n    case types.JOIN_CLUB_SUCCESS:\n      return {\n        ...state,\n        clubJoinRequested: false,\n        club: {\n          ...state.club,\n          memberCount: action.data.memberCount,\n          isClubMember: action.data.isClubMember\n        }\n      };\n\n    case types.MODAL_OPEN:\n      return {\n        ...state,\n        gatingModal: {\n          gatingConditions: action.data.gatingConditions,\n          joinChallengeFn: action.data.joinChallengeFn,\n          ageGate: action.data.dateSelected,\n          requestInProgress: false\n        }\n      };\n\n    case types.MODAL_CLOSE:\n      return {\n        ...state,\n        gatingModal: null\n      };\n\n    case types.MODAL_CHANGE_DATE:\n      return {\n        ...state,\n        gatingModal: {\n          ...state.gatingModal,\n          ageGate: {\n            ...state.gatingModal.ageGate,\n            dateSelected: action.date\n          }\n        }\n      };\n\n    case types.DOB_UPDATE_REQUESTED:\n      return {\n        ...state,\n        gatingModal: {\n          ...state.gatingModal,\n          requestInProgress: true\n        }\n      };\n\n    case types.DOB_UPDATE_FAILED:\n      return {\n        ...state,\n        gatingModal: {\n          ...state.gatingModal,\n          requestInProgress: false\n        }\n      };\n\n    case types.DOB_UPDATE_SUCCESS:\n      if (action.date) {\n        return {\n          ...state,\n          currentAthlete: {\n            ...state.currentAthlete,\n            dateOfBirth: [\n              action.date.getFullYear(),\n              action.date.getMonth() + 1,\n              action.date.getDate()\n            ].join('-')\n          },\n          gatingModal: null\n        };\n      }\n      return state;\n\n    default:\n      return state;\n  }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Achievements--container--6477X\",\"header\":\"Achievements--header--UWjkC\",\"headline-achievement\":\"Achievements--headline-achievement--SGkrN\",\"headlineAchievement\":\"Achievements--headline-achievement--SGkrN\",\"other-achievements\":\"Achievements--other-achievements--LoxEI\",\"otherAchievements\":\"Achievements--other-achievements--LoxEI\",\"achievements\":\"Achievements--achievements--7z0F4\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'strava.challenges.challenge_detail';\n\nconst Achievements = ({\n  className = '',\n  headlineAchievement,\n  otherAchievements\n}) => (\n  <div className={`${className} ${styles.container}`}>\n    <h2 className={`text-headline ${styles.header}`}>\n      {I18n.t(`${I18nPrefix}.achievements_earned`)}\n    </h2>\n    <div className={styles.headlineAchievement}>\n      <img src={headlineAchievement.url} alt={headlineAchievement.title} />\n    </div>\n    {otherAchievements.length > 0 && (\n      <div className={styles.otherAchievements}>\n        <div className={styles.achievements}>\n          {otherAchievements.map((achievement) => (\n            <img\n              key={achievement.title}\n              src={achievement.url}\n              alt={achievement.title}\n            />\n          ))}\n        </div>\n      </div>\n    )}\n  </div>\n);\n\nAchievements.propTypes = {\n  className: PropTypes.string,\n  headlineAchievement: PropTypes.shape({\n    url: PropTypes.string.isRequired,\n    title: PropTypes.string.isRequired\n  }).isRequired,\n  otherAchievements: PropTypes.arrayOf(\n    PropTypes.shape({\n      url: PropTypes.string.isRequired,\n      title: PropTypes.string.isRequired\n    })\n  ).isRequired\n};\n\nexport default Achievements;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Club--container--BCE7t\",\"club\":\"Club--club--ka7W2\",\"name\":\"Club--name--Duyag\",\"logo\":\"Club--logo--hm-h1\",\"info\":\"Club--info--ZMm2O\",\"member-count\":\"Club--member-count--MTgmQ\",\"memberCount\":\"Club--member-count--MTgmQ\",\"button\":\"Club--button--WSW5O\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Button } from '@strava/ui/Button';\nimport { Spinner } from '@strava/ui/Spinner';\nimport { Avatar } from '@strava/ui/Avatar';\n\nimport Cldr from 'utils/Cldr';\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\nimport { joinClub } from '../../actions';\n\nexport const I18nPrefix = 'strava.challenges.challenge_detail.club';\n\nexport const memberCountString = (count) => {\n  const localeCount = Cldr.formatDecimal(count);\n  const suffix = count > 1 ? 'many' : 'one';\n  return I18n.t(`${I18nPrefix}.athletes.${suffix}`, { number: localeCount });\n};\n\nexport class Club extends React.Component {\n  onJoinClub = () => this.props.onJoinClub(this.props.club.joinUrl);\n\n  joinButton = (isClubMember, clubJoinRequested) => (\n    <Button\n      variant=\"primaryOutline\"\n      disabled={isClubMember || clubJoinRequested}\n      className={`btn-sm btn-block text-footnote ${styles.button}`}\n      onClick={this.onJoinClub}\n    >\n      {clubJoinRequested ? (\n        <span>\n          <Spinner />\n        </span>\n      ) : (\n        I18n.t(`${I18nPrefix}.${isClubMember ? 'joined' : 'join'}`)\n      )}\n    </Button>\n  );\n\n  render() {\n    const { clubJoinRequested = false, club } = this.props;\n    const {\n      name,\n      sportType,\n      isClubMember,\n      clubLogoUrl,\n      memberCount,\n      clubUrl\n    } = club;\n\n    return (\n      <div className={styles.container}>\n        <Avatar\n          name={name}\n          type=\"club\"\n          src={clubLogoUrl}\n          className={styles.logo}\n          href={clubUrl}\n        />\n        <p className={`text-caption3 ${styles.organizing}`}>\n          {I18n.t(`${I18nPrefix}.organizing_club`)}\n        </p>\n        <h3 className={`text-title3 ${styles.name}`}>\n          <a href={clubUrl}>{name}</a>\n        </h3>\n        <div className={styles.info}>\n          <span className=\"app-icon-wrapper\">\n            <span className={`app-icon icon-dark icon-sm icon-${sportType}`} />\n          </span>\n          <span className={`text-footnote ${styles.memberCount}`}>\n            {memberCountString(memberCount)}\n          </span>\n        </div>\n        {this.joinButton(isClubMember, clubJoinRequested)}\n      </div>\n    );\n  }\n}\n\nClub.propTypes = {\n  onJoinClub: PropTypes.func.isRequired,\n  clubJoinRequested: PropTypes.bool,\n  club: PropTypes.shape({\n    name: PropTypes.string.isRequired,\n    sportType: PropTypes.string.isRequired,\n    isClubMember: PropTypes.bool.isRequired,\n    clubLogoUrl: PropTypes.string.isRequired,\n    memberCount: PropTypes.number.isRequired,\n    clubUrl: PropTypes.string.isRequired,\n    joinUrl: PropTypes.string.isRequired\n  }).isRequired\n};\n\nexport default connect(\n  ({ club, clubJoinRequested }) => ({\n    clubJoinRequested,\n    club: {\n      name: club.name,\n      sportType: club.sportType,\n      isClubMember: club.isClubMember,\n      clubLogoUrl: club.clubLogoUrl,\n      memberCount: club.memberCount,\n      clubUrl: club.clubUrl,\n      joinUrl: club.joinUrl\n    }\n  }),\n  { onJoinClub: joinClub }\n)(Club);\n","// extracted by mini-css-extract-plugin\nexport default {\"hero\":\"Header--hero--6zFle\",\"hero-group\":\"Header--hero-group--g1I0C\",\"heroGroup\":\"Header--hero-group--g1I0C\",\"challenge-logo\":\"Header--challenge-logo--9DQa6\",\"challengeLogo\":\"Header--challenge-logo--9DQa6\",\"text\":\"Header--text--eO0Wy\",\"title\":\"Header--title--bnRbH\",\"subtitle\":\"Header--subtitle--OLAlJ\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport MediaQuery, { breakpoints } from 'utils/media-query';\n\nimport styles from './styles.scss';\n\nconst Header = ({\n  className  = '',\n  coverImageUrl,\n  name,\n  subtitle,\n  challengeLogoUrl,\n  coverTitleText,\n  logoTitleText\n}) => (\n  <div className={className}>\n    <div\n      className={styles.hero}\n      style={{ backgroundImage: `url(${coverImageUrl})` }}\n      role=\"img\"\n      aria-label={coverTitleText}\n      title={coverTitleText}\n    />\n    <div className={styles.heroGroup}>\n      <img\n        className={styles.challengeLogo}\n        src={challengeLogoUrl}\n        alt={logoTitleText}\n        title={logoTitleText}\n      />\n\n      {/* Bigger screens - tablets & desktop */}\n      <MediaQuery minWidth={breakpoints.screenXs}>\n        <h1 className={`text-display3 ${styles.title}`}>{name}</h1>\n      </MediaQuery>\n\n      {/* Smaller screens - mobile */}\n      <MediaQuery maxWidth={breakpoints.screenXs}>\n        <h1 className={`text-title2 ${styles.title}`}>{name}</h1>\n      </MediaQuery>\n    </div>\n\n    {/* Bigger screens - tablets & desktop */}\n    <MediaQuery minWidth={breakpoints.screenXs}>\n      <h3 className={`text-title3 ${styles.subtitle}`}>{subtitle}</h3>\n    </MediaQuery>\n\n    {/* Smaller screens - mobile */}\n    <MediaQuery maxWidth={breakpoints.screenXs}>\n      <h3 className={`text-subhead ${styles.subtitle}`}>{subtitle}</h3>\n    </MediaQuery>\n  </div>\n);\n\nHeader.propTypes = {\n  className: PropTypes.string,\n  coverImageUrl: PropTypes.string.isRequired,\n  challengeLogoUrl: PropTypes.string.isRequired,\n  name: PropTypes.string.isRequired,\n  subtitle: PropTypes.string.isRequired,\n  coverTitleText: PropTypes.string.isRequired,\n  logoTitleText: PropTypes.string.isRequired\n};\n\nexport default Header;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"CollapsibleTitleWithCaret--container--9wPpr\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.scss';\n\nconst CollapsibleTitleWithCaret = ({ title, arrowStyle }) => (\n  <div className={styles.container}>\n    <h2 className=\"text-headline mb-0\">{title}</h2>\n    <span className=\"app-icon-wrapper\">\n      <span className={`app-icon ${arrowStyle} icon-dark icon-sm`} />\n    </span>\n  </div>\n);\n\nCollapsibleTitleWithCaret.propTypes = {\n  title: PropTypes.string.isRequired,\n  arrowStyle: PropTypes.string.isRequired\n};\n\nexport default CollapsibleTitleWithCaret;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"CreatePost--container--TnszW\",\"form-layout\":\"CreatePost--form-layout--qQuRP\",\"formLayout\":\"CreatePost--form-layout--qQuRP\",\"input-wrapper\":\"CreatePost--input-wrapper--ZR739\",\"inputWrapper\":\"CreatePost--input-wrapper--ZR739\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport TextareaAutosize from 'react-textarea-autosize';\nimport { Button } from '@strava/ui/Button';\nimport { Avatar } from '@strava/ui/Avatar';\n\nimport createNetworkingClient from 'utils/networking-client';\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'components.discussions.posts';\n\nclass CreatePost extends React.Component {\n  state = {\n    value: '',\n    isSubmitting: false\n  };\n\n  handleChange = (event) => {\n    this.setState({ value: event.target.value });\n  };\n\n  submitPost = () => {\n    const { value } = this.state;\n    const { discussionPath } = this.props;\n\n    const instance = createNetworkingClient();\n\n    this.setState({ isSubmitting: true });\n\n    // The only validation we need for discussions is that there is text\n    // Might be overkill to need this, though\n    if (!value.trim()) {\n      this.onSubmitFail();\n      return;\n    }\n\n    instance\n      .post(\n        discussionPath,\n        { text: value },\n        { headers: { Accept: 'text/javascript' } }\n      )\n      .then((response) => {\n        if (response && response.status === 200) {\n          this.onSubmitSuccess(response.data);\n        } else {\n          this.onSubmitFail();\n        }\n      })\n      .catch(() => {\n        this.onSubmitFail();\n      });\n  };\n\n  onSubmitSuccess = (data) => {\n    const { onCreateSuccess } = this.props;\n\n    this.setState({ value: '', isSubmitting: false });\n    onCreateSuccess(data);\n  };\n\n  onSubmitFail = () => {\n    this.setState({ isSubmitting: false });\n    throw new Error('Your post submission failed. Please try again');\n  };\n\n  render() {\n    const { value, isSubmitting } = this.state;\n    const { name, avatarSrc } = this.props;\n\n    return (\n      <div className={styles.container}>\n        <div className={styles.formLayout}>\n          <div className={styles.avatar}>\n            <Avatar name={name} type=\"athlete\" src={avatarSrc} />\n          </div>\n          <div className={styles.inputWrapper}>\n            <label htmlFor=\"create-post\" className=\"text-caption2\">\n              {I18n.t(`${I18nPrefix}.create_a_post`)}\n            </label>\n            <TextareaAutosize\n              id=\"create-post\"\n              className={styles.input}\n              value={value}\n              onChange={this.handleChange}\n            />\n          </div>\n        </div>\n        <Button\n          disabled={isSubmitting || !value.trim()}\n          className={`btn btn-sm ${styles.submit}`}\n          onClick={this.submitPost}\n        >\n          {I18n.t(`${I18nPrefix}.post`)}\n        </Button>\n      </div>\n    );\n  }\n}\n\nCreatePost.propTypes = {\n  avatarSrc: PropTypes.string.isRequired,\n  name: PropTypes.string.isRequired,\n  onCreateSuccess: PropTypes.func.isRequired,\n  discussionPath: PropTypes.string.isRequired\n};\n\nexport default CreatePost;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Comment--container--JGlgb\",\"delete\":\"Comment--delete--0q3fd\",\"report\":\"Comment--report--BR7C4\",\"quarantine\":\"Comment--quarantine--Rv1HB\",\"avatar-wrapper\":\"Comment--avatar-wrapper--3uwwS\",\"avatarWrapper\":\"Comment--avatar-wrapper--3uwwS\",\"body-text\":\"Comment--body-text--h-mWP\",\"bodyText\":\"Comment--body-text--h-mWP\",\"header\":\"Comment--header--8HiT2\",\"author-name\":\"Comment--author-name--EHv8e\",\"authorName\":\"Comment--author-name--EHv8e\",\"hoverable\":\"Comment--hoverable--CXLm5\",\"report-link\":\"Comment--report-link--USFhW\",\"reportLink\":\"Comment--report-link--USFhW\",\"quarantine-link\":\"Comment--quarantine-link--EIFwu\",\"quarantineLink\":\"Comment--quarantine-link--EIFwu\",\"delete-button\":\"Comment--delete-button--XmY1x\",\"deleteButton\":\"Comment--delete-button--XmY1x\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\n\nimport Cldr from 'utils/Cldr';\nimport I18n from 'utils/I18n';\nimport { trackV2 } from 'utils/analytics';\n\nimport styles from './styles.scss';\n\nexport const I18nPrefix = 'components.comments';\n\nconst Comment = ({\n  id,\n  avatar,\n  authorId,\n  authorName,\n  timestamp,\n  deletable,\n  quarantinable = false,\n  reportable,\n  bodyText,\n  className = '',\n  deleteComment,\n  parentId\n}) => {\n  const logReportComment = (e) => {\n    e.preventDefault();\n\n    trackV2({\n      category: 'challenges',\n      page: 'comment',\n      action: 'click',\n      element: 'report',\n      properties: {\n        comment_id: id,\n        post_id: parentId\n      }\n    });\n\n    window.location = `/comments/${id}/feedback`;\n  };\n\n  return (\n    <div className={`${className} ${styles.container}`} data-testid=\"comment\">\n      <div className={styles.avatarWrapper}>{avatar}</div>\n      <div className={styles.center}>\n        <div className={styles.header}>\n          <div className=\"text-footnote mt-0 mb-0\">\n            <a href={`/athletes/${authorId}`} className={styles.authorName}>\n              {authorName}\n            </a>\n          </div>\n        </div>\n        <div className={styles.body}>\n          <div className={`text-caption3 mb-0 ${styles.bodyText}`}>\n            {bodyText}\n          </div>\n        </div>\n      </div>\n      <div className={styles.hoverable}>\n        {reportable && (\n          <div className={`text-caption2 ${styles.report}`}>\n            <a\n              className={`text-caption2 ${styles.reportLink}`}\n              href={`/comments/${id}/feedback`}\n              onClick={logReportComment}\n            >\n              {I18n.t(`${I18nPrefix}.report`)}\n            </a>\n          </div>\n        )}\n        {quarantinable && (\n          <div className={`text-caption2 ${styles.quarantine}`}>\n            <a\n              className={`text-caption2 ${styles.quarantineLink}`}\n              href={`/admin/quarantine/comment_form?comment_id=${id}`}\n            >\n              {I18n.t(`${I18nPrefix}.soft_delete`)}\n            </a>\n          </div>\n        )}\n        {deletable && (\n          <div className={`text-caption2 ${styles.delete}`}>\n            <Button\n              type=\"button\"\n              variant=\"text\"\n              className={`text-caption2 ${styles.deleteButton}`}\n              onClick={() => deleteComment(id, parentId)}\n            >\n              {I18n.t(`${I18nPrefix}.delete`)}\n            </Button>\n          </div>\n        )}\n        <div className={`text-caption2 ${styles.timestamp}`}>\n          {Cldr?.formatTimespan?.(timestamp)}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nComment.propTypes = {\n  id: PropTypes.number.isRequired,\n  avatar: PropTypes.element.isRequired,\n  authorId: PropTypes.number.isRequired,\n  authorName: PropTypes.string.isRequired,\n  timestamp: PropTypes.number.isRequired,\n  deletable: PropTypes.bool.isRequired,\n  quarantinable: PropTypes.bool,\n  reportable: PropTypes.bool.isRequired,\n  bodyText: PropTypes.string.isRequired,\n  className: PropTypes.string,\n  deleteComment: PropTypes.func.isRequired,\n  parentId: PropTypes.number.isRequired\n};\n\nexport default Comment;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"CreateComment--container--cE0tC\",\"show-button\":\"CreateComment--show-button--OP9-h\",\"showButton\":\"CreateComment--show-button--OP9-h\",\"form-layout\":\"CreateComment--form-layout--ISdUG\",\"formLayout\":\"CreateComment--form-layout--ISdUG\",\"input-wrapper\":\"CreateComment--input-wrapper--3yOTt\",\"inputWrapper\":\"CreateComment--input-wrapper--3yOTt\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport TextareaAutosize from 'react-textarea-autosize';\nimport { Button } from '@strava/ui/Button';\n\nimport createNetworkingClient from 'utils/networking-client';\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'components.comments';\n\nclass CreateComment extends React.Component {\n  state = {\n    value: '',\n    isSubmitting: false,\n    focused: false\n  };\n\n  toggleFocus = () => {\n    this.setState((prevState) => ({ focused: !prevState.focused }));\n  };\n\n  handleChange = (event) => {\n    this.setState({ value: event.target.value });\n  };\n\n  submitComment = () => {\n    const { value } = this.state;\n    const { parentId } = this.props;\n\n    const instance = createNetworkingClient();\n\n    const commentPath = `/posts/${parentId}/comments`;\n\n    this.setState({ isSubmitting: true });\n\n    // The only validation we need for discussions is that there is text\n    // Might be overkill to need this, though\n    if (!value.trim()) {\n      this.onSubmitFail();\n      return;\n    }\n\n    instance\n      .post(\n        commentPath,\n        { text: value },\n        { headers: { Accept: 'text/javascript' } }\n      )\n      .then((response) => {\n        if (response && response.status === 200) {\n          this.onSubmitSuccess(response.data);\n        } else {\n          this.onSubmitFail();\n        }\n      })\n      .catch(() => {\n        this.onSubmitFail();\n      });\n  };\n\n  onSubmitSuccess = (data) => {\n    const { onCreateSuccess } = this.props;\n\n    this.setState({ value: '', isSubmitting: false });\n    onCreateSuccess(data);\n  };\n\n  onSubmitFail = () => {\n    this.setState({ isSubmitting: false });\n    throw new Error('Your comment submission failed. Please try again');\n  };\n\n  render() {\n    const { value, isSubmitting, focused } = this.state;\n\n    return (\n      <div className={styles.container}>\n        <div className={styles.formLayout}>\n          <div className={styles.inputWrapper}>\n            <TextareaAutosize\n              id=\"create-post\"\n              className={styles.input}\n              placeholder={I18n.t(`${I18nPrefix}.create_a_comment`)}\n              value={value}\n              onChange={this.handleChange}\n              onFocus={this.toggleFocus}\n              onBlur={this.toggleFocus}\n            />\n          </div>\n        </div>\n        <Button\n          disabled={isSubmitting || !value.trim()}\n          className={`btn btn-sm ${(value.trim() || focused) &&\n            styles.showButton}`}\n          onClick={this.submitComment}\n        >\n          {I18n.t(`${I18nPrefix}.reply`)}\n        </Button>\n      </div>\n    );\n  }\n}\n\nCreateComment.propTypes = {\n  onCreateSuccess: PropTypes.func.isRequired,\n  parentId: PropTypes.number.isRequired\n};\n\nexport default CreateComment;\n","// extracted by mini-css-extract-plugin\nexport default {\"button-wrapper\":\"Comments--button-wrapper--B7NQ3\",\"buttonWrapper\":\"Comments--button-wrapper--B7NQ3\",\"comment\":\"Comments--comment--Tr4TI\",\"show-comments\":\"Comments--show-comments--G-7o5\",\"showComments\":\"Comments--show-comments--G-7o5\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\nimport { Avatar } from '@strava/ui/Avatar';\n\nimport createNetworkingClient from 'utils/networking-client';\nimport { trackV2 } from 'utils/analytics';\nimport I18n from 'utils/I18n';\n\nimport Comment from '../Comment';\nimport CreateComment from '../CreateComment';\n\nimport styles from './styles.scss';\n\nexport const I18nPrefix = 'components.comments';\n\nclass Comments extends React.Component {\n  state = {\n    expanded: false,\n    comments: this.props.comments || []\n  };\n\n  deleteComment = (commentId, parentId) => {\n    const instance = createNetworkingClient();\n    const destUrl = `/posts/${this.props.parentId}/comments/${commentId}`;\n\n    trackV2({\n      category: 'challenges',\n      page: 'comment',\n      action: 'click',\n      element: 'delete',\n      properties: {\n        comment_id: commentId,\n        post_id: parentId\n      }\n    });\n\n    // eslint-disable-next-line no-restricted-globals, no-alert\n    if (window.confirm(I18n.t('strava.feed.comment_box_view.confirm_delete'))) {\n      trackV2({\n        category: 'challenges',\n        page: 'comment',\n        action: 'click',\n        element: 'confirm_delete',\n        properties: {\n          comment_id: commentId,\n          post_id: parentId\n        }\n      });\n\n      instance\n        .delete(destUrl)\n        .then((response) => {\n          if (response && response.status === 200) {\n            this.onSuccess(response.data);\n          } else {\n            this.onFail();\n          }\n        })\n        .catch(() => this.onFail());\n    }\n  };\n\n  onFail = () => {\n    throw new Error('Something went wrong deleting your comment');\n  };\n\n  onSuccess = (data) => {\n    const { comments } = this.state;\n    this.setState({\n      comments: comments.filter((item) => item.id !== parseInt(data.id, 10))\n    });\n  };\n\n  onCreateSuccess = (createdComment) => {\n    this.setState((prevState) => ({\n      comments: [...prevState.comments, createdComment]\n    }));\n  };\n\n  toggleExpanded = () =>\n    this.setState((prevState) => ({ expanded: !prevState.expanded }));\n\n  showComments = () => {\n    const { expanded, comments } = this.state;\n    const { commentsToShow = 2, parentId } = this.props;\n    const startIndex = expanded ? 0 : comments.length - commentsToShow;\n\n    return comments\n      .slice(startIndex, comments.length)\n      .map((comment) => (\n        <Comment\n          key={comment.id}\n          id={comment.id}\n          avatar={\n            <Avatar\n              href={`/athletes/${comment.author.id}`}\n              name={comment.author.name}\n              src={comment.author.avatar}\n              size=\"xsmall\"\n              type=\"athlete\"\n            />\n          }\n          authorId={comment.author.id}\n          authorName={comment.author.name}\n          timestamp={comment.ts}\n          deletable={comment.deletable}\n          quarantinable={comment.quarantinable}\n          reportable={comment.reportable}\n          bodyText={comment.text}\n          className={styles.comment}\n          deleteComment={this.deleteComment}\n          parentId={parentId}\n        />\n      ));\n  };\n\n  render() {\n    const { comments, expanded } = this.state;\n    const {\n      className,\n      commentsToShow = 2,\n      currentAthlete,\n      parentId\n    } = this.props;\n\n    return (\n      <div className={`${className} ${styles.container}`}>\n        {comments.length > commentsToShow && (\n          <div className={styles.buttonWrapper}>\n            <Button\n              type=\"button\"\n              variant=\"default\"\n              className={`btn btn-xs btn-block ${styles.showComments}`}\n              onClick={this.toggleExpanded}\n            >\n              {I18n.t(`${I18nPrefix}.${expanded ? 'show_fewer' : 'show_more'}`)}\n            </Button>\n          </div>\n        )}\n        {this.showComments()}\n        {currentAthlete && (\n          <CreateComment\n            parentId={parentId}\n            onCreateSuccess={this.onCreateSuccess}\n          />\n        )}\n      </div>\n    );\n  }\n}\n\nComments.propTypes = {\n  comments: PropTypes.arrayOf(\n    PropTypes.shape({\n      author: PropTypes.shape({\n        url: PropTypes.string,\n        name: PropTypes.string,\n        avatar: PropTypes.string\n      }),\n      ts: PropTypes.number,\n      deletable: PropTypes.bool,\n      quarantinable: PropTypes.bool,\n      reportable: PropTypes.bool,\n      text: PropTypes.string,\n      id: PropTypes.number\n    })\n  ),\n  parentId: PropTypes.number.isRequired,\n  className: PropTypes.string,\n  commentsToShow: PropTypes.number,\n  currentAthlete: PropTypes.shape({})\n};\n\nexport default Comments;\n","// extracted by mini-css-extract-plugin\nexport default {\"dropdown-list\":\"ActionsDropdown--dropdown-list--sVB7T\",\"dropdownList\":\"ActionsDropdown--dropdown-list--sVB7T\",\"dropdown-item\":\"ActionsDropdown--dropdown-item--sP3vR\",\"dropdownItem\":\"ActionsDropdown--dropdown-item--sP3vR\",\"more-icon\":\"ActionsDropdown--more-icon--7I3zP\",\"moreIcon\":\"ActionsDropdown--more-icon--7I3zP\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.scss';\n\nclass ActionsDropdown extends React.Component {\n  state = {\n    expanded: false,\n    actions: this.props.actions\n  };\n\n  toggleMenu = () => {\n    this.setState((prev) => ({\n      expanded: !prev.expanded\n    }));\n  };\n\n  render() {\n    return (\n      <div className={styles.dropdownMenu}>\n        <div\n          role=\"button\"\n          aria-label=\"Actions\"\n          tabIndex=\"0\"\n          className={styles.moreIcon}\n          onClick={() => this.toggleMenu()}\n          onKeyDown={() => this.toggleMenu()}\n        />\n        {this.state.expanded && (\n          <ul className={styles.dropdownList}>\n            {this.state.actions.map((action) => (\n              <li key={action.text}>\n                <button\n                  className={styles.dropdownItem}\n                  onClick={() => action.onClick()}\n                >\n                  {action.text}\n                </button>\n              </li>\n            ))}\n          </ul>\n        )}\n      </div>\n    );\n  }\n}\n\nActionsDropdown.propTypes = {\n  actions: PropTypes.arrayOf(PropTypes.shape({})).isRequired\n};\n\nexport default ActionsDropdown;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Post--container--TMD7o\",\"delete\":\"Post--delete--bjh+W\",\"avatar-wrapper\":\"Post--avatar-wrapper--zGd69\",\"avatarWrapper\":\"Post--avatar-wrapper--zGd69\",\"header\":\"Post--header--8DQuo\",\"author-name\":\"Post--author-name--6nfjJ\",\"authorName\":\"Post--author-name--6nfjJ\",\"actions\":\"Post--actions--rk9BP\",\"body\":\"Post--body--lfsoe\",\"comments\":\"Post--comments--3a+Lb\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport I18n from 'utils/I18n';\nimport Cldr from 'utils/Cldr';\n\nimport Comments from '../Comments';\nimport ActionsDropdown from '../ActionsDropdown';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'components.comments.';\nconst I18nKey = {\n  report: `${I18nPrefix}report`,\n  delete: `${I18nPrefix}delete`\n};\n\nconst Post = ({\n  id,\n  avatar,\n  authorId,\n  authorName,\n  timestamp,\n  deletable,\n  bodyText,\n  comments = [],\n  deletePost,\n  reportPost,\n  currentAthlete\n}) => {\n  const getAction = () => {\n    if (deletable) {\n      return { text: I18n.t(I18nKey.delete), onClick: () => deletePost(id) };\n    }\n    return { text: I18n.t(I18nKey.report), onClick: () => reportPost(id) };\n  };\n  return (\n    <div className={styles.container}>\n      <div className={styles.avatarWrapper}>{avatar}</div>\n      <div className={styles.header}>\n        <div className=\"text-subhead mt-0 mb-0\">\n          <a href={`/athletes/${authorId}`} className={styles.authorName}>\n            {authorName}\n          </a>\n        </div>\n        <div className=\"text-caption1 mt-0 mb-0\">\n          {Cldr?.formatTimespan(timestamp)}\n        </div>\n      </div>\n\n      {Object.keys(getAction()).length !== 0 && (\n        <ActionsDropdown className={styles.actions} actions={[getAction()]} />\n      )}\n      <div className={styles.body}>\n        <p className=\"text-caption1 mb-0\">{bodyText}</p>\n      </div>\n      {(comments.length > 0 || currentAthlete) && (\n        <Comments\n          parentId={id}\n          comments={comments}\n          className={styles.comments}\n          currentAthlete={currentAthlete}\n        />\n      )}\n    </div>\n  );\n};\n\nPost.propTypes = {\n  id: PropTypes.number.isRequired,\n  avatar: PropTypes.element.isRequired,\n  authorId: PropTypes.number.isRequired,\n  authorName: PropTypes.string.isRequired,\n  timestamp: PropTypes.number.isRequired,\n  deletable: PropTypes.bool.isRequired,\n  bodyText: PropTypes.string.isRequired,\n  comments: PropTypes.arrayOf(PropTypes.shape({})),\n  deletePost: PropTypes.func.isRequired,\n  reportPost: PropTypes.func.isRequired,\n  currentAthlete: PropTypes.shape({})\n};\n\nexport default Post;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Discussions--container--LirNp\",\"button-wrapper\":\"Discussions--button-wrapper--48o+i\",\"buttonWrapper\":\"Discussions--button-wrapper--48o+i\",\"discussion-list\":\"Discussions--discussion-list--5rl5S\",\"discussionList\":\"Discussions--discussion-list--5rl5S\",\"indent\":\"Discussions--indent--nPQWw\",\"empty-state\":\"Discussions--empty-state--rf4lV\",\"emptyState\":\"Discussions--empty-state--rf4lV\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\nimport { Spinner } from '@strava/ui/Spinner';\nimport { Avatar } from '@strava/ui/Avatar';\n\nimport createNetworkingClient from 'utils/networking-client';\nimport I18n from 'utils/I18n';\n\nimport CreatePost from './components/CreatePost';\nimport Post from './components/Post';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'components.discussions';\n\nclass Discussion extends React.Component {\n  state = {\n    isLoading: true,\n    posts: [],\n    totalPosts: null,\n    page: null,\n    discussionPath: this.props.discussionPath,\n    error: false,\n    currentAthlete: this.props.currentAthlete\n  };\n\n  componentDidMount() {\n    this.fetchData();\n  }\n\n  fetchData = (params = {}) => {\n    const { discussionPath } = this.state;\n    const instance = createNetworkingClient();\n    this.setState({ isLoading: true });\n\n    instance\n      .get(discussionPath, {\n        params,\n        headers: { Accept: 'text/javascript' }\n      })\n      .then((response) => {\n        if (response && response.status === 200) {\n          this.onFetchSuccess(response.data);\n        } else {\n          this.onFetchFail();\n        }\n      })\n      .catch(() => this.onFetchFail());\n  };\n\n  onFetchFail = () => {\n    this.setState({ isLoading: false, error: true });\n  };\n\n  onFetchSuccess = (data) => {\n    this.setState((state) => ({\n      isLoading: false,\n      posts: [...state.posts, ...data.posts],\n      totalPosts: data.total_posts,\n      page: data.page\n    }));\n  };\n\n  onCreateSuccess = (createdPost) => {\n    this.setState((prevState) => ({\n      posts: [createdPost, ...prevState.posts],\n      totalPosts: prevState.totalPosts + 1\n    }));\n  };\n\n  deletePost = (postId) => {\n    const { discussionPath } = this.state;\n    const instance = createNetworkingClient();\n\n    instance\n      .delete(`${discussionPath}/${postId}`)\n      .then((response) => {\n        if (response && response.status === 200) {\n          this.onDeleteSuccess(response.data);\n        } else {\n          this.onDeleteFail();\n        }\n      })\n      .catch(() => this.onDeleteFail());\n  };\n\n  onDeleteFail = () => {\n    throw new Error('Something went wrong deleting your post');\n  };\n\n  onDeleteSuccess = (data) => {\n    const { posts, totalPosts } = this.state;\n    this.setState({\n      posts: posts.filter((item) => item.id !== parseInt(data.id, 10)),\n      totalPosts: totalPosts - 1\n    });\n  };\n\n  reportPost = (postId) => {\n    window.location = `/posts/${postId}/feedback`;\n  };\n\n  onSeeMore = () => {\n    const { page } = this.state;\n    this.fetchData({ page: page + 1 });\n  };\n\n  renderButtonOrSpinner = () => {\n    const { isLoading, posts, totalPosts, error } = this.state;\n\n    if (isLoading) {\n      return (\n        <div className={`mt-xl ${styles.buttonWrapper}`}>\n          <Spinner />\n        </div>\n      );\n    }\n    if (posts.length < totalPosts && !isLoading) {\n      return (\n        <div className={`mt-xl ${styles.buttonWrapper}`}>\n          <Button className=\"btn btn-default btn-sm\" onClick={this.onSeeMore}>\n            {I18n.t(`${I18nPrefix}.${error ? 'retry' : 'see_more'}`)}\n          </Button>\n        </div>\n      );\n    }\n    return null;\n  };\n\n  renderPosts = () => {\n    const { posts, currentAthlete } = this.state;\n\n    return posts.map((post) => (\n      <Post\n        key={post.id}\n        id={post.id}\n        avatar={\n          <Avatar\n            href={`/athletes/${post.author.id}`}\n            name={post.author.name}\n            src={post.author.avatar}\n            size=\"small\"\n            type=\"athlete\"\n          />\n        }\n        authorId={post.author.id}\n        authorName={post.author.name}\n        timestamp={post.ts}\n        deletable={post.deletable}\n        bodyText={post.text}\n        className={styles.post}\n        comments={post.comments}\n        deletePost={this.deletePost}\n        reportPost={this.reportPost}\n        currentAthlete={currentAthlete}\n      />\n    ));\n  };\n\n  render() {\n    const { posts, currentAthlete, discussionPath, isLoading } = this.state;\n\n    return (\n      <div className={styles.container}>\n        {currentAthlete && (\n          <CreatePost\n            {...currentAthlete}\n            discussionPath={discussionPath}\n            onCreateSuccess={this.onCreateSuccess}\n          />\n        )}\n        <div\n          className={`${styles.discussionList} ${currentAthlete &&\n            styles.indent}`}\n        >\n          {posts.length === 0 && !isLoading ? (\n            <div className={`text-title3 ${styles.emptyState}`}>\n              {I18n.t(`${I18nPrefix}.empty_state`)}\n            </div>\n          ) : (\n            this.renderPosts()\n          )}\n        </div>\n        {this.renderButtonOrSpinner()}\n      </div>\n    );\n  }\n}\n\nDiscussion.propTypes = {\n  currentAthlete: PropTypes.shape({}),\n  discussionPath: PropTypes.string.isRequired\n};\n\nexport default Discussion;\n","// extracted by mini-css-extract-plugin\nexport default {\"line\":\"CollapsibleSection--line--Gjb6T\",\"subsection\":\"CollapsibleSection--subsection--S7K8c\",\"dark\":\"CollapsibleSection--dark--RJ5au\",\"light\":\"CollapsibleSection--light--srjAr\",\"subsection-container\":\"CollapsibleSection--subsection-container--xemH+\",\"subsectionContainer\":\"CollapsibleSection--subsection-container--xemH+\",\"section-image\":\"CollapsibleSection--section-image--+3bOl\",\"sectionImage\":\"CollapsibleSection--section-image--+3bOl\"};","import { useEffect, useState, useRef } from 'react';\nimport I18n from 'utils/I18n';\nimport createNetworkingClient from 'utils/networking-client';\n\nimport { isEqual } from 'lodash-es';\n\nexport const STATUS = {\n  idle: 'idle',\n  pending: 'pending',\n  resolved: 'resolved',\n  rejected: 'rejected',\n  restricted: 'restricted'\n};\n\nexport const CATEGORIES = {\n  gender: 'gender', // Overall tab has gender filters - overall, men, and women\n  following: 'following',\n  club: 'club',\n  country: 'country',\n  age: 'age',\n  weight: 'weight'\n};\n\nexport const PREMIUM_CATEGORIES = ['age', 'weight'];\n\nconst I18N_PREFIX = 'strava.challenges.challenge_detail.leaderboard';\nconst noResultsMsg = () => I18n.t(`${I18N_PREFIX}.no_results_found`);\n\nconst unprocessableClubMsg = () => I18n.t(`${I18N_PREFIX}.unprocessable_club`);\nconst errorState = () => {\n  return {\n    data: { entries: [], viewingAthletePublicEntry: null },\n    status: STATUS.rejected,\n    message: I18n.t(`${I18N_PREFIX}.error_message`)\n  };\n};\n\nfunction useDeepCompareMemoize(value) {\n  const prev = useRef();\n  const id = useRef(0);\n  if (!isEqual(value, prev.current)) {\n    id.current += 1;\n    prev.current = value;\n  }\n  return id.current;\n}\n\nconst useFetchLeaderboardData = ({\n  weightMeasurementUnit,\n  challengeId,\n  joined,\n  subscribed,\n  params\n}) => {\n  const [state, setState] = useState({\n    status: STATUS.idle,\n    data: {\n      entries: [],\n      viewingAthletePublicEntry: null\n    },\n    message: null\n  });\n\n  const buildParams = ({\n    before,\n    after,\n    category,\n    sub_category: subCategory,\n    limit\n  }) => {\n    let paramCategory = category;\n    if (category === 'weight') {\n      paramCategory =\n        weightMeasurementUnit === 'kg' ? 'metric_weight' : 'imperial_weight';\n    }\n    const base = {\n      category: paramCategory,\n      sub_category: subCategory,\n      limit\n    };\n\n    if (after) {\n      return {\n        ...base,\n        after_athlete_id: after.athlete_id,\n        after_rank: after.rank,\n        after_value: after.value\n      };\n    }\n    if (before) {\n      return {\n        ...base,\n        before_athlete_id: before.athlete_id,\n        before_rank: before.rank,\n        before_value: before.value\n      };\n    }\n    return base;\n  };\n\n  useEffect(() => {\n    if (!subscribed && PREMIUM_CATEGORIES.includes(params.category)) {\n      setState({\n        data: { entries: [], viewingAthletePublicEntry: null },\n        status: STATUS.restricted,\n        message: I18n.t(`${I18N_PREFIX}.subscribe_weight_and_age`)\n      });\n    } else if (\n      params.category === CATEGORIES.club &&\n      params.sub_category == null\n    ) {\n      // club subcategory not available, athlete is not in any clubs\n      const noClubsState = {\n        data: { entries: [], viewingAthletePublicEntry: null },\n        status: STATUS.resolved,\n        message: noResultsMsg()\n      };\n      setState(noClubsState);\n    } else {\n      setState({\n        status: STATUS.pending,\n        data: state.data\n      });\n      const url = `/frontend/challenges/${challengeId}/leaderboard`;\n      createNetworkingClient()\n        .get(url, { params: buildParams(params) })\n        .then((response) => {\n          if (response && response.status === 200) {\n            const { showLeaderboard } = response.data;\n            // all responses with leaderboards\n            if (showLeaderboard) {\n              const successState = {\n                data: response.data,\n                status: STATUS.resolved,\n                message:\n                  response.data.entries.length === 0 ? noResultsMsg() : null\n              };\n              setState(successState);\n            }\n            // large clubs that do not have leaderboards\n            else if (!showLeaderboard && params.category === CATEGORIES.club) {\n              const unprocessableClubState = {\n                data: {\n                  ...response.data,\n                  entries: [],\n                  viewingAthletePublicEntry: null\n                },\n                status: STATUS.resolved,\n                message: unprocessableClubMsg()\n              };\n              setState(unprocessableClubState);\n            } else {\n              // fallback for all other requests that do not have leaderboards\n              setState(errorState());\n            }\n          } else {\n            // Response status codes other than 200\n            setState(errorState());\n          }\n        })\n        .catch(() => {\n          setState(errorState());\n        });\n    }\n  }, [challengeId, joined, useDeepCompareMemoize(params)]);\n\n  return state;\n};\n\nexport default useFetchLeaderboardData;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"CurrentPlace--container--2iZvO\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Cldr from 'utils/Cldr';\nimport styles from './styles.scss';\n\nconst CurrentPlace = ({ currentPlaceLabel, viewingAthleteRank, size }) => (\n  <div\n    data-testid=\"current_place\"\n    className={`text-subhead ${styles.container}`}\n  >\n    {`${currentPlaceLabel}: ${\n      viewingAthleteRank ? Cldr.formatDecimal(viewingAthleteRank) : '--'\n    } / ${size ? Cldr.formatDecimal(size) : '--'}`}\n  </div>\n);\n\nCurrentPlace.propTypes = {\n  viewingAthleteRank: PropTypes.number,\n  size: PropTypes.number,\n  currentPlaceLabel: PropTypes.string.isRequired\n};\n\nexport default CurrentPlace;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"CategoryTabs--container--KjQZu\",\"tabs\":\"CategoryTabs--tabs--ePwKS\",\"tab-label\":\"CategoryTabs--tab-label--iOPNQ\",\"tabLabel\":\"CategoryTabs--tab-label--iOPNQ\",\"sub-category-filter\":\"CategoryTabs--sub-category-filter--iiVdI\",\"subCategoryFilter\":\"CategoryTabs--sub-category-filter--iiVdI\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Tabs, TabList, Tab } from '@strava/ui/Tabs';\nimport { DropdownSelect } from '@strava/ui/DropdownSelect';\nimport BadgesMulticolorSummitXsmall from '@strava/icons/BadgesMulticolorSummitXsmall';\nimport styles from './styles.scss';\n\nconst CategoryTabs = ({\n  currentCategory,\n  currentSubcategory,\n  categories = { empty: { title: 'warning - no categories specified' } },\n  onTabChangeCallback = () => {},\n  onFilterChangeCallback = () => {}\n}) => {\n  const currentCategoryProps = categories[currentCategory];\n\n  const currentCategoryHasFilters =\n    currentSubcategory &&\n    currentCategoryProps &&\n    currentCategoryProps.subCategories;\n\n  let filterOptions;\n  if (currentCategoryHasFilters) {\n    const { subCategories } = currentCategoryProps;\n    filterOptions = Object.keys(subCategories).map((key) => ({\n      value: key,\n      label: subCategories[key]\n    }));\n  }\n\n  return (\n    <Tabs onChange={onTabChangeCallback}>\n      <div className={styles.container}>\n        <div className={styles.tabs}>\n          <TabList>\n            {Object.keys(categories).map((tabKey) => (\n              <Tab key={tabKey} className=\"text-caption1\">\n                <div className={styles.tabLabel}>\n                  {categories[tabKey].premium && (\n                    <div className={styles.badge} data-testid=\"premium\">\n                      <BadgesMulticolorSummitXsmall />\n                    </div>\n                  )}\n                  <div data-testid=\"tab\">{categories[tabKey].title}</div>\n                </div>\n              </Tab>\n            ))}\n          </TabList>\n        </div>\n        <div\n          className={styles.subCategoryFilter}\n          data-testid=\"filter-container\"\n        >\n          {currentCategoryHasFilters && (\n            <DropdownSelect\n              options={filterOptions}\n              onChange={(option) => onFilterChangeCallback(option.value)}\n              value={\n                filterOptions.filter((o) => o.value === currentSubcategory)[0]\n              }\n              ariaLabel=\"filter\"\n            />\n          )}\n        </div>\n      </div>\n    </Tabs>\n  );\n};\n\nCategoryTabs.propTypes = {\n  categories: PropTypes.shape({}),\n  onFilterChangeCallback: PropTypes.func,\n  onTabChangeCallback: PropTypes.func,\n  currentCategory: PropTypes.string,\n  currentSubcategory: PropTypes.string\n};\n\nexport default CategoryTabs;\n","// extracted by mini-css-extract-plugin\nexport default {\"error\":\"LeaderboardsTable--error--RqMLb\",\"message-row\":\"LeaderboardsTable--message-row--MjbSX\",\"messageRow\":\"LeaderboardsTable--message-row--MjbSX\",\"paywall-banner\":\"LeaderboardsTable--paywall-banner--+ZfDR\",\"paywallBanner\":\"LeaderboardsTable--paywall-banner--+ZfDR\",\"image\":\"LeaderboardsTable--image--Ks6vg\",\"message\":\"LeaderboardsTable--message--UtBcn\",\"sub-title\":\"LeaderboardsTable--sub-title--RcY4O\",\"subTitle\":\"LeaderboardsTable--sub-title--RcY4O\",\"call-to-action\":\"LeaderboardsTable--call-to-action--5y+0M\",\"callToAction\":\"LeaderboardsTable--call-to-action--5y+0M\",\"table-container\":\"LeaderboardsTable--table-container--JxwWf\",\"tableContainer\":\"LeaderboardsTable--table-container--JxwWf\",\"leaderboard-entry\":\"LeaderboardsTable--leaderboard-entry--ydqYD\",\"leaderboardEntry\":\"LeaderboardsTable--leaderboard-entry--ydqYD\",\"overall-rank\":\"LeaderboardsTable--overall-rank--uXO4u\",\"overallRank\":\"LeaderboardsTable--overall-rank--uXO4u\",\"distance\":\"LeaderboardsTable--distance--LT5ge\",\"dimension\":\"LeaderboardsTable--dimension--MaD7n\",\"progress\":\"LeaderboardsTable--progress--gDVxf\",\"name\":\"LeaderboardsTable--name--wDPtH\",\"activity-count\":\"LeaderboardsTable--activity-count--r+ITw\",\"activityCount\":\"LeaderboardsTable--activity-count--r+ITw\",\"filtered-entry-place\":\"LeaderboardsTable--filtered-entry-place--2h3zG\",\"filteredEntryPlace\":\"LeaderboardsTable--filtered-entry-place--2h3zG\",\"spinner\":\"LeaderboardsTable--spinner--dhvSA\",\"pagination\":\"LeaderboardsTable--pagination--7BOiw\",\"pagination-label\":\"LeaderboardsTable--pagination-label--QEHTK\",\"paginationLabel\":\"LeaderboardsTable--pagination-label--QEHTK\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ButtonGroup } from '@strava/ui/ButtonGroup';\nimport { Button, LinkButton } from '@strava/ui/Button';\nimport { Spinner } from '@strava/ui/Spinner';\nimport ActionsArrowLeftNormalXsmall from '@strava/icons/ActionsArrowLeftNormalXsmall';\nimport ActionsArrowRightNormalXsmall from '@strava/icons/ActionsArrowRightNormalXsmall';\nimport I18n from 'utils/I18n';\nimport styles from './styles.scss';\nimport { STATUS } from '../useFetchLeaderboardData';\n\nconst thead = (columnHeaders) => (\n  <thead>\n    <tr>\n      {columnHeaders.map((columnHeader) => (\n        <th\n          data-testid=\"column_header\"\n          className={`text-caption2 text-heavy ${\n            styles[columnHeader.styleName]\n          }`}\n          key={columnHeader.id}\n        >\n          {columnHeader.label}\n        </th>\n      ))}\n    </tr>\n  </thead>\n);\n\nconst messageRow = (numColumns, message, isError) => (\n  <tr>\n    <td colSpan={numColumns}>\n      <p\n        className={`text-caption1 ${styles.messageRow} ${\n          isError ? styles.error : ''\n        }`}\n        data-testid=\"message_row\"\n      >\n        {message}\n      </p>\n    </td>\n  </tr>\n);\n\nconst paywallMessage = (numColumns, message, onSubscribeCallback) => (\n  <tr data-testid=\"paywall_row\">\n    <td colSpan={numColumns}>\n      <div className={styles.paywallBanner}>\n        <div className={styles.image} />\n        <div className={styles.message}>\n          <h2 className=\"text-headline mb-0\">\n            {I18n.t(\n              'strava.challenges.challenge_detail.leaderboard.premium_leaderboards'\n            )}\n          </h2>\n          <div className={`text-caption1 ${styles.subTitle}`}>{message}</div>\n          <div className={styles.callToAction}>\n            <LinkButton\n              href=\"/subscribe\"\n              variant=\"primaryOutline\"\n              onClick={onSubscribeCallback}\n            >\n              {I18n.t(\n                'strava.challenges.challenge_detail.leaderboard.subscribe'\n              )}\n            </LinkButton>\n          </div>\n        </div>\n      </div>\n    </td>\n  </tr>\n);\n\nconst tbody = (\n  resultRows,\n  columnHeaders,\n  status,\n  message,\n  onSubscribeCallback\n) => {\n  const numColumns = columnHeaders.length;\n  // Successful response with result rows\n  if (status === STATUS.resolved && resultRows.length !== 0) {\n    return resultRows.map((row) => (\n      <tr\n        data-testid=\"result_row\"\n        className={`text-caption1 ${styles.leaderboardEntry} ${\n          row.highlight ? 'text-bold' : ''\n        }`}\n        key={row.id}\n      >\n        {row.value.map((col) => (\n          <td data-testid=\"result_column\" key={`${row.id}-${col.id}`}>\n            {col.value}\n          </td>\n        ))}\n      </tr>\n    ));\n  }\n  // Successful response with no result rows\n  if (\n    [STATUS.resolved, STATUS.idle].includes(status) &&\n    resultRows.length === 0\n  ) {\n    return messageRow(numColumns, message, false);\n  }\n  // Failed request\n  if (status === STATUS.rejected) {\n    return messageRow(numColumns, message, true);\n  }\n\n  // Restricted for unsubscribers\n  if (status === STATUS.restricted) {\n    return paywallMessage(numColumns, message, onSubscribeCallback);\n  }\n\n  // Loading...\n  return (\n    <tr>\n      <td colSpan={numColumns}>\n        <div className={styles.spinner} data-testid=\"spinner\">\n          <Spinner />\n        </div>\n      </td>\n    </tr>\n  );\n};\n\nconst tfoot = (\n  resultRows,\n  status,\n  columnHeaders,\n  isFirstPage,\n  isLastPage,\n  onNextPageCallback,\n  onPrevPageCallback,\n  paginationLabel\n) => {\n  if (\n    [STATUS.resolved, STATUS.idle].includes(status) &&\n    resultRows.length !== 0\n  ) {\n    return (\n      <tfoot>\n        <tr>\n          <td colSpan={columnHeaders.length}>\n            <div className={`text-caption1 ${styles.pagination}`}>\n              {paginationLabel && (\n                <div\n                  className={styles.paginationLabel}\n                  data-testid=\"pagination-label\"\n                >\n                  {paginationLabel}\n                </div>\n              )}\n              <ButtonGroup>\n                <Button\n                  role=\"button\"\n                  variant=\"default\"\n                  onClick={onPrevPageCallback}\n                  data-testid=\"prev_btn\"\n                  disabled={isFirstPage}\n                >\n                  <ActionsArrowLeftNormalXsmall />\n                </Button>\n                <Button\n                  role=\"button\"\n                  disabled={isLastPage}\n                  onClick={onNextPageCallback}\n                  data-testid=\"next_btn\"\n                >\n                  <ActionsArrowRightNormalXsmall />\n                </Button>\n              </ButtonGroup>\n            </div>\n          </td>\n        </tr>\n      </tfoot>\n    );\n  }\n  return null;\n};\n\nconst LeaderboardsTable = ({\n  resultRows = [],\n  status = STATUS.idle,\n  columnHeaders = [],\n  onNextPageCallback = () => {},\n  onPrevPageCallback = () => {},\n  onSubscribeCallback = () => {},\n  isFirstPage = false,\n  isLastPage = false,\n  message = '',\n  paginationLabel,\n  className\n}) => (\n  <div className={`${styles.tableContainer} ${className}`}>\n    <table>\n      {thead(columnHeaders)}\n      <tbody>\n        {tbody(resultRows, columnHeaders, status, message, onSubscribeCallback)}\n      </tbody>\n      {tfoot(\n        resultRows,\n        status,\n        columnHeaders,\n        isFirstPage,\n        isLastPage,\n        onNextPageCallback,\n        onPrevPageCallback,\n        paginationLabel\n      )}\n    </table>\n  </div>\n);\n\nLeaderboardsTable.propTypes = {\n  columnHeaders: PropTypes.arrayOf(\n    PropTypes.shape({\n      style: PropTypes.string,\n      label: PropTypes.string,\n      styleName: PropTypes.string\n    })\n  ),\n  resultRows: PropTypes.arrayOf(\n    PropTypes.shape({\n      id: PropTypes.number,\n      value: PropTypes.arrayOf(\n        PropTypes.shape({ id: PropTypes.number, value: PropTypes.any })\n      )\n    })\n  ),\n  onNextPageCallback: PropTypes.func,\n  onPrevPageCallback: PropTypes.func,\n  onSubscribeCallback: PropTypes.func,\n  status: PropTypes.oneOf(Object.keys(STATUS)),\n  isLastPage: PropTypes.bool,\n  isFirstPage: PropTypes.bool,\n  message: PropTypes.string,\n  paginationLabel: PropTypes.string,\n  className: PropTypes.string\n};\n\nexport default LeaderboardsTable;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Leaderboard--container--PJWVx\",\"progress\":\"Leaderboard--progress--Bq2yF\",\"bar\":\"Leaderboard--bar--inhxs\",\"percent\":\"Leaderboard--percent--6RliV\",\"avatar-and-name-container\":\"Leaderboard--avatar-and-name-container--PqA52\",\"avatarAndNameContainer\":\"Leaderboard--avatar-and-name-container--PqA52\",\"avatar\":\"Leaderboard--avatar--xrmSr\",\"details\":\"Leaderboard--details--iggfk\",\"name\":\"Leaderboard--name--nNWT5\",\"location\":\"Leaderboard--location--qCpmz\",\"privacy-section\":\"Leaderboard--privacy-section--PTdz2\",\"privacySection\":\"Leaderboard--privacy-section--PTdz2\",\"copy\":\"Leaderboard--copy--OJoTc\"};","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport I18n from 'utils/I18n';\nimport { Avatar } from '@strava/ui/Avatar';\nimport { trackV2 } from 'utils/analytics';\nimport Cldr from 'utils/Cldr';\nimport { countries, lookup } from 'country-data';\nimport ActionsLockClosedNormalSmall from '@strava/icons/ActionsLockClosedNormalSmall';\nimport useFetchLeaderboardData, {\n  STATUS,\n  CATEGORIES,\n  PREMIUM_CATEGORIES\n} from './useFetchLeaderboardData';\nimport CurrentPlace from './CurrentPlace';\nimport CategoryTabs from './CategoryTabs';\nimport LeaderboardsTable from './LeaderboardsTable';\nimport ProgressBar from '../ProgressBar';\n\nimport styles from './styles.scss';\n\nconst I18N_PREFIX = 'strava.challenges.challenge_detail.leaderboard';\n\n// Overall tab - subcategory filters\nconst GENDER_SUB_CATEGORIES = {\n  overall: 'overall',\n  men: 'men',\n  women: 'women'\n};\n\n// Age Group - subcategory filters\nconst AGE_SUB_CATEGORIES = {\n  bucket_0_19: '0_19',\n  bucket_20_24: '20_24',\n  bucket_25_34: '25_34',\n  bucket_35_44: '35_44',\n  bucket_45_54: '45_54',\n  bucket_55_64: '55_64',\n  bucket_65_69: '65_69',\n  bucket_70_74: '70_74',\n  bucket_75_plus: '75_plus'\n};\n\nconst COUNTRY_SUB_CATEGORIES = countries.all\n  .filter((c) => c.alpha3 !== '' && c.status === 'assigned')\n  .map((c) => ({\n    name: c.name,\n    code: c.alpha3\n  }))\n  .sort((c1, c2) => {\n    return c1.name.localeCompare(c2.name);\n  });\n\nconst DEFAULT_PAGE_LIMIT = 20;\n\nconst Leaderboard = ({ currentAthlete, challengeId, limit = DEFAULT_PAGE_LIMIT, joined = false }) => {\n  const [params, setParams] = useState({\n    category: CATEGORIES.gender,\n    sub_category: GENDER_SUB_CATEGORIES.overall,\n    limit\n  });\n\n  const weightMeasurementUnit =\n    (currentAthlete && currentAthlete.weight_measurement_unit) || 'lbs';\n\n  const { data, status, message } = useFetchLeaderboardData({\n    challengeId,\n    joined,\n    params,\n    weightMeasurementUnit,\n    subscribed: (currentAthlete && currentAthlete.subscribed) || false\n  });\n  const {\n    entries,\n    viewingAthletePublicEntry,\n    activityType,\n    size,\n    dimension,\n    showActivityCount,\n    challengeType,\n    isTeamChallenge\n  } = data;\n\n  const weightCategories = () => {\n    if (weightMeasurementUnit === 'kg') {\n      return [\n        '0_54_kg',\n        '55_64_kg',\n        '65_74_kg',\n        '75_84_kg',\n        '85_94_kg',\n        '95_104_kg',\n        '105_114_kg',\n        '115_plus_kg'\n      ];\n    }\n    return [\n      '0_124_lb',\n      '125_149_lb',\n      '150_164_lb',\n      '165_179_lb',\n      '180_199_lb',\n      '200_224_lb',\n      '225_249_lb',\n      '250_plus_lb'\n    ];\n  };\n\n  const defaultClub = currentAthlete && Object.keys(currentAthlete.clubs)[0];\n\n  const trackAnalytics = (elementData, category, subCategory) => {\n    trackV2({\n      page: 'challenge_details',\n      category: 'challenges',\n      ...elementData,\n      properties: {\n        viewing_athlete_id: currentAthlete ? currentAthlete.id : null,\n        challenge_id: challengeId,\n        leaderboard_category_type: category,\n        leaderboard_subcategory_type: subCategory\n      }\n    });\n  };\n\n  useEffect(() => {\n    trackAnalytics(\n      {\n        element: 'challenge_leaderboards',\n        action: 'screen_enter'\n      },\n      params.category,\n      params.sub_category\n    );\n  }, []);\n\n  const currentAthleteCountryISO = () => {\n    const country = lookup.countries({ name: currentAthlete.country })[0];\n    return country ? country.alpha3 : 'USA';\n  };\n\n  const activityCountLabel = () => {\n    if (activityType === 'run') return I18n.t(`${I18N_PREFIX}.columns.runs`);\n    if (activityType === 'ride') return I18n.t(`${I18N_PREFIX}.columns.rides`);\n    return I18n.t(`${I18N_PREFIX}.columns.activities`);\n  };\n\n  const dimensionLabel = () => {\n    if (dimension === 'elevation_gain' || dimension === 'elevation_loss')\n      return I18n.t(`${I18N_PREFIX}.columns.elevation`);\n    if (dimension === 'elapsed_time' || dimension === 'moving_time')\n      return I18n.t(`${I18N_PREFIX}.columns.time`);\n    if (dimension === 'distance')\n      return I18n.t(`${I18N_PREFIX}.columns.distance`);\n    if (dimension === 'avg_pace_min_distance')\n      return I18n.t(`${I18N_PREFIX}.columns.pace`);\n    return '';\n  };\n\n  // Overall filter is technically not a filter since that is a superset of\n  // all the entries. The other filters are a subset.\n  const hasFilteredEntrySubset = () => {\n    return !(\n      params.category === CATEGORIES.gender &&\n      params.sub_category === GENDER_SUB_CATEGORIES.overall\n    );\n  };\n\n  const showDistanceColumn = dimension === 'avg_pace_min_distance';\n\n  const showProgressColumn =\n    challengeType !== 'BestActivityChallenge' &&\n    challengeType !== 'MultiSegmentChallenge' &&\n    !isTeamChallenge;\n\n  const columnHeaders = () => {\n    const headers = [\n      {\n        id: 1,\n        label: I18n.t(`${I18N_PREFIX}.columns.overall`),\n        styleName: 'overallRank'\n      },\n      {\n        id: 2,\n        label: I18n.t(`${I18N_PREFIX}.columns.name`),\n        styleName: 'name'\n      },\n      { id: 4, label: dimensionLabel(), styleName: 'dimension' }\n    ];\n    if (showProgressColumn) {\n      headers.push({\n        id: 5,\n        label: I18n.t(`${I18N_PREFIX}.columns.progress`),\n        styleName: 'progress'\n      });\n    }\n\n    if (hasFilteredEntrySubset()) {\n      headers.splice(1, 0, {\n        id: 6,\n        label: I18n.t(`${I18N_PREFIX}.columns.place`),\n        styleName: 'filteredEntryPlace'\n      });\n      // Readjust name column\n      headers[2].style = styles.nameShort;\n    }\n    // hide/show activity count column\n    if (showActivityCount) {\n      headers.splice(hasFilteredEntrySubset() ? 3 : 2, 0, {\n        id: 3,\n        label: activityCountLabel(),\n        styleName: 'activityCount'\n      });\n    }\n    // hide/show extra distance column\n    if (showDistanceColumn) {\n      headers.splice(hasFilteredEntrySubset() ? 3 : 2, 0, {\n        id: 7,\n        label: I18n.t(`${I18N_PREFIX}.columns.distance`),\n        styleName: 'distance'\n      });\n    }\n\n    return headers;\n  };\n\n  const progressBar = (progressPercentage, progressFraction) => {\n    return (\n      <div className={styles.progress}>\n        <ProgressBar\n          className={styles.bar}\n          progressBarFraction={progressFraction > 1 ? 1 : progressFraction || 0}\n        />\n        <div className={styles.percent}>{progressPercentage}</div>\n      </div>\n    );\n  };\n\n  const avatarColumn = (athlete) => (\n    <div className={styles.avatarAndNameContainer}>\n      <div className={styles.avatar}>\n        <Avatar\n          badge={\n            athlete.memberType === 'premium' ? 'subscriber' : athlete.memberType\n          }\n          size=\"small\"\n          src={athlete.profile}\n          type=\"athlete\"\n          name={athlete.name}\n          href={`/athletes/${athlete.id}`}\n        />\n      </div>\n      <div className={styles.details}>\n        <div className={styles.name}>\n          <a href={`/athletes/${athlete.id}`}>{athlete.name}</a>\n        </div>\n        <div className={styles.location}>{athlete.location}</div>\n      </div>\n    </div>\n  );\n\n  const dimensionValueColumn = (entry) => {\n    if (entry.activityLink) {\n      return <a href={entry.activityLink}>{entry.dimensionValue}</a>;\n    }\n\n    return entry.dimensionValue;\n  };\n\n  const isViewingAthleteEntry = (entryAthleteId) =>\n    currentAthlete && entryAthleteId === currentAthlete.id;\n\n  const extractColumnValuesForEntry = (entry) => {\n    const displayRowColumns = [\n      {\n        id: 1,\n        value: (entry && Cldr.formatDecimal(entry.overallRank)) || '...'\n      },\n      { id: 2, value: (entry && avatarColumn(entry.athlete)) || '...' },\n      { id: 4, value: (entry && dimensionValueColumn(entry)) || '...' }\n    ];\n    if (showProgressColumn) {\n      displayRowColumns.push({\n        id: 5,\n        value:\n          (entry &&\n            progressBar(entry.progressPercentage, entry.progressFraction)) ||\n          '...'\n      });\n    }\n    if (hasFilteredEntrySubset()) {\n      displayRowColumns.splice(1, 0, {\n        id: 6,\n        value: (entry && Cldr.formatDecimal(entry.place)) || '--'\n      });\n    }\n    // hide/show activity count column\n    if (showActivityCount) {\n      displayRowColumns.splice(hasFilteredEntrySubset() ? 3 : 2, 0, {\n        id: 3,\n        value: (entry && Cldr.formatDecimal(entry.activityCount)) || '...'\n      });\n    }\n    // hide/show distance column\n    if (showDistanceColumn) {\n      displayRowColumns.splice(hasFilteredEntrySubset() ? 3 : 2, 0, {\n        id: 7,\n        value: (entry && entry.formattedDistance) || '--'\n      });\n    }\n    return displayRowColumns;\n  };\n\n  const rowsWithDisplayValuesOnly = () => {\n    const displayRows = [];\n    let viewingAthleteIsOnPage = false;\n    entries.forEach((entry, index) => {\n      const isViewingAthlete = isViewingAthleteEntry(entry.athlete.id);\n      if (isViewingAthlete) {\n        viewingAthleteIsOnPage = true;\n      }\n      const row = {\n        id: index,\n        highlight: isViewingAthlete\n      };\n      row.value = extractColumnValuesForEntry(entry);\n      displayRows.push(row);\n    });\n    // Build contextual position row for viewing athlete if:\n    // 1. Viewing athlete public entry is present - athlete is participating in challenge\n    // 2. Viewing athlete entry does not fall into current page ranking range\n    // 3. Page has result rows\n    // 4. Viewing athlete entry is on a later page (one of the next-pages)\n    if (\n      viewingAthletePublicEntry &&\n      !viewingAthleteIsOnPage &&\n      entries.length > 0 &&\n      entries.slice(-1)[0].place < viewingAthletePublicEntry.place\n    ) {\n      // dummy row\n      displayRows.push({\n        id: entries.length + 1,\n        highlight: false,\n        value: extractColumnValuesForEntry()\n      });\n      displayRows.push({\n        id: entries.length + 2,\n        highlight: true,\n        value: extractColumnValuesForEntry(viewingAthletePublicEntry)\n      });\n    }\n    return displayRows;\n  };\n\n  // Builds leaderboard categories and their respective sub-category filter labels\n  // This dictionary is used to populate leaderboard tabs and the values in the filter\n  // dropdown for that particular category.\n  // eg.\n  //   { gender: {\n  //     title:\"Overall\",\n  //     subCategories:{male: \"Male\", female: \"Female\", overall: \"Overall\" ...}\n  //   } }\n  const categories = () => {\n    const categoriesMap = {};\n    // logged out athletes should only see overall tab\n    if (currentAthlete) {\n      Object.keys(CATEGORIES).forEach((category) => {\n        categoriesMap[category] = {\n          title: I18n.t(`${I18N_PREFIX}.categories.${category}`),\n          premium: PREMIUM_CATEGORIES.includes(category)\n        };\n      });\n    } else {\n      categoriesMap[CATEGORIES.gender] = {\n        title: I18n.t(`${I18N_PREFIX}.categories.gender`),\n        premium: PREMIUM_CATEGORIES.includes(CATEGORIES.gender)\n      };\n    }\n    // populate categories with their respective sub_categories\n    Object.keys(categoriesMap).forEach((category) => {\n      const subCategoryMap = {};\n\n      switch (category) {\n        // Overall tab - subcategoy\n        case CATEGORIES.gender:\n          Object.keys(GENDER_SUB_CATEGORIES).forEach((subCategory) => {\n            subCategoryMap[subCategory] = I18n.t(\n              `${I18N_PREFIX}.sub_categories.gender.${subCategory}`\n            );\n          });\n          break;\n        // Age tab - subcategory filter options\n        case CATEGORIES.age:\n          Object.values(AGE_SUB_CATEGORIES).forEach((subCategory) => {\n            subCategoryMap[subCategory] = I18n.t(\n              `${I18N_PREFIX}.sub_categories.age.${subCategory}`\n            );\n          });\n          break;\n        // Country tab - subcategory filter options\n        case CATEGORIES.country:\n          COUNTRY_SUB_CATEGORIES.forEach((f) => {\n            subCategoryMap[f.code] = f.name;\n          });\n          break;\n        // Clubs tab\n        case CATEGORIES.club:\n          Object.keys(currentAthlete.clubs).forEach((clubId) => {\n            subCategoryMap[clubId] = currentAthlete.clubs[clubId];\n          });\n          break;\n        // Weight tab\n        case CATEGORIES.weight:\n          weightCategories().forEach((weightCategory) => {\n            subCategoryMap[weightCategory] = I18n.t(\n              `${I18N_PREFIX}.sub_categories.weight.${weightCategory}`\n            );\n          });\n          break;\n        default:\n      }\n      categoriesMap[category].subCategories = subCategoryMap;\n    });\n    return categoriesMap;\n  };\n\n  const handleSubscribeClick = (e) => {\n    e.preventDefault();\n    trackAnalytics(\n      {\n        element: 'subscribe_btn',\n        action: 'click'\n      },\n      params.category,\n      params.sub_category\n    );\n\n    window.location = e.target.href;\n  };\n\n  const onNextClick = () => {\n    const row = entries.slice(-1)[0];\n    setParams((prevParams) => {\n      // Remove before from params (can only navigate in one direction)\n      const { before, ...rest } = prevParams;\n      return {\n        ...rest,\n        after: {\n          rank: row.place,\n          value: row.value,\n          athlete_id: row.athlete.id\n        }\n      };\n    });\n    trackAnalytics(\n      {\n        element: 'pagination_next_btn',\n        action: 'click'\n      },\n      params.category,\n      params.sub_category\n    );\n  };\n\n  const onPrevClick = () => {\n    const row = entries[0];\n    setParams((prevParams) => {\n      // Remove after from params (can only navigate in one direction)\n      const { after, ...rest } = prevParams;\n      return {\n        ...rest,\n        before: {\n          rank: row.place,\n          value: row.value,\n          athlete_id: row.athlete.id\n        }\n      };\n    });\n    trackAnalytics(\n      {\n        element: 'pagination_prev_btn',\n        action: 'click'\n      },\n      params.category,\n      params.sub_category\n    );\n  };\n\n  // Leaderboard tabs [ Overall, I'm Following, Clubs, Country etc... ]\n  const onTabChange = (i) => {\n    // Reset pagination progress and current filter when tab is changed\n    const { before, after, sub_category: _, ...rest } = params;\n    const newParams = { ...rest };\n    switch (i) {\n      case 0:\n        newParams.category = CATEGORIES.gender;\n        newParams.sub_category = GENDER_SUB_CATEGORIES.overall;\n        break;\n      case 1:\n        // Following tab (has no filters)\n        newParams.category = CATEGORIES.following;\n        break;\n      case 2:\n        newParams.category = CATEGORIES.club;\n        if (defaultClub) {\n          newParams.sub_category = defaultClub;\n        }\n        break;\n      case 3:\n        newParams.category = CATEGORIES.country;\n        newParams.sub_category = currentAthleteCountryISO();\n        break;\n      case 4:\n        newParams.category = CATEGORIES.age;\n        newParams.sub_category = currentAthlete.ageGroup;\n        break;\n      case 5:\n        newParams.category = CATEGORIES.weight;\n        newParams.sub_category = currentAthlete.weight_group.concat(\n          weightMeasurementUnit === 'kg' ? '_kg' : '_lb'\n        );\n        break;\n      default:\n    }\n\n    setParams(newParams);\n    trackAnalytics(\n      {\n        element: 'category_tab',\n        action: 'click'\n      },\n      newParams.category,\n      newParams.sub_category\n    );\n  };\n\n  const onFilterChange = (subCategory) => {\n    // Reset pagination progress when filter is changed\n    const { before, after, ...rest } = params;\n    setParams({\n      ...rest,\n      sub_category: subCategory\n    });\n    trackAnalytics(\n      { element: 'leaderboard_filter', action: 'click' },\n      params.category,\n      subCategory\n    );\n  };\n\n  const tableColumnHeaders = columnHeaders();\n\n  const buildPaginationLabel = () => {\n    if (status === STATUS.resolved && entries.length > 0) {\n      return I18n.t(`${I18N_PREFIX}.pagination_label`, {\n        topRowRank: Cldr.formatDecimal(entries[0].place) || '--',\n        bottomRowRank: Cldr.formatDecimal(entries.slice(-1)[0].place) || '--',\n        leaderboardSize: Cldr.formatDecimal(size) || '--'\n      });\n    }\n    return `--`;\n  };\n\n  const leaderboardData = {\n    currentCategory: params.category,\n    currentSubcategory: params.sub_category,\n    viewingAthleteRank:\n      viewingAthletePublicEntry && viewingAthletePublicEntry.place,\n    categories: categories(),\n    columnHeaders: tableColumnHeaders,\n    size,\n    currentPlaceLabel: I18n.t(`${I18N_PREFIX}.current_place`),\n    status,\n    limit: params.limit,\n    message,\n    resultRows: rowsWithDisplayValuesOnly(),\n    isLastPage: entries.length > 0 && entries.slice(-1)[0].place === size,\n    isFirstPage: entries.length > 0 && entries[0].place === 1,\n    paginationLabel: buildPaginationLabel()\n  };\n\n  return (\n    <div className={styles.container}>\n      {!isTeamChallenge && <CurrentPlace {...leaderboardData} />}\n      <div className={styles.privacySection}>\n        <ActionsLockClosedNormalSmall />\n        <div className={`text-caption2 ${styles.copy}`}>\n          {I18n.t(\n            `${I18N_PREFIX}.${\n              isTeamChallenge ? 'team_privacy_v2' : 'privacy_v3'\n            }`\n          )}\n        </div>\n      </div>\n      <CategoryTabs\n        {...leaderboardData}\n        onTabChangeCallback={onTabChange}\n        onFilterChangeCallback={onFilterChange}\n      />\n      <LeaderboardsTable\n        {...leaderboardData}\n        onNextPageCallback={onNextClick}\n        onPrevPageCallback={onPrevClick}\n        onSubscribeCallback={handleSubscribeClick}\n      />\n    </div>\n  );\n};\n\nLeaderboard.propTypes = {\n  currentAthlete: PropTypes.shape({\n    id: PropTypes.number,\n    ageGroup: PropTypes.string,\n    country: PropTypes.string,\n    clubs: PropTypes.shape({}),\n    weight_measurement_unit: PropTypes.string,\n    weight_group: PropTypes.string,\n    subscribed: PropTypes.bool\n  }),\n  challengeId: PropTypes.number.isRequired,\n  limit: PropTypes.number,\n  joined: PropTypes.bool\n};\n\nexport default Leaderboard;\nexport { I18N_PREFIX };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Collapsible from 'react-collapsible';\n\nimport CollapsibleTitleWithCaret from 'components/CollapsibleTitleWithCaret';\nimport Discussion from 'components/Discussions';\nimport { connect } from 'react-redux';\nimport QualifyingActivities from '../QualifyingActivities';\nimport styles from './styles.scss';\n\nimport Leaderboard from '../Leaderboard';\n\nconst CollapsibleSection = ({\n  challengeId,\n  sections,\n  currentAthlete = null,\n  joined = false\n}) => {\n  const createMarkup = (html) => ({ __html: html });\n\n  const buildSections = () =>\n    sections.map((section) => (\n      <div key={section.title}>\n        <Collapsible\n          open={section.openOnLoad}\n          transitionTime={250}\n          trigger={\n            <CollapsibleTitleWithCaret\n              title={section.title}\n              arrowStyle=\"icon-caret-up\"\n            />\n          }\n          triggerWhenOpen={\n            <CollapsibleTitleWithCaret\n              title={section.title}\n              arrowStyle=\"icon-caret-down\"\n            />\n          }\n        >\n          <div className={styles.subsectionContainer}>\n            {section.content.map((content) => (\n              <div key={content.key} className={styles.subsection}>\n                {content.heading && (\n                  <div\n                    className={`text-subhead ${styles.dark}`}\n                    id={\n                      content.qualifyingActivities\n                        ? 'qualifying-activities'\n                        : ''\n                    }\n                  >\n                    {content.heading}\n                  </div>\n                )}\n\n                {/* HTML is being (dangerously) rendered because this description is\n              added by an admin from a dashboard on admin.strava.com */}\n                {content.text && (\n                  <div\n                    className={`text-subhead ${styles.light}`}\n                    // eslint-disable-next-line react/no-danger\n                    dangerouslySetInnerHTML={createMarkup(content.text)}\n                  />\n                )}\n\n                {content.imageUrl && (\n                  <img\n                    className={styles.sectionImage}\n                    src={content.imageUrl}\n                    alt={content.imageTitle || ''}\n                    title={content.imageTitle || ''}\n                  />\n                )}\n\n                {/* Leaderboard */}\n                {content.key === 'leaderboard' && (\n                  <Leaderboard\n                    currentAthlete={currentAthlete}\n                    challengeId={challengeId}\n                    joined={joined}\n                  />\n                )}\n\n                {/* Qualifying activities */}\n                {content.qualifyingActivities && (\n                  <QualifyingActivities\n                    activities={content.qualifyingActivities}\n                    id=\"challenge_detail_page_qualifying_activities\"\n                  />\n                )}\n\n                {/* Discussions */}\n                {content.key === 'discussions' && (\n                  <Discussion\n                    discussionPath={content.discussionPath}\n                    currentAthlete={currentAthlete}\n                  />\n                )}\n              </div>\n            ))}\n          </div>\n        </Collapsible>\n        <hr className={styles.line} />\n      </div>\n    ));\n\n  return (\n    <div data-testid=\"collapsible-sections\">\n      {sections.length > 0 && buildSections(sections)}\n    </div>\n  );\n};\n\nCollapsibleSection.propTypes = {\n  challengeId: PropTypes.number.isRequired,\n  sections: PropTypes.arrayOf(\n    PropTypes.shape({\n      title: PropTypes.string.isRequired,\n      content: PropTypes.arrayOf(\n        PropTypes.shape({\n          key: PropTypes.string.isRequired,\n          heading: PropTypes.string,\n          text: PropTypes.string,\n          imageUrl: PropTypes.string,\n          imageTitle: PropTypes.string,\n          qualifyingActivities: PropTypes.arrayOf(PropTypes.shape({}))\n        })\n      ).isRequired,\n      openOnLoad: PropTypes.bool.isRequired\n    })\n  ).isRequired,\n  currentAthlete: PropTypes.shape({}),\n  joined: PropTypes.bool\n};\n\nexport default connect((state) => ({\n  joined: state.joined\n}))(CollapsibleSection);\n\nexport { CollapsibleSection };\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Facepile--container--2nJHN\",\"avatar-list\":\"Facepile--avatar-list--4j4R0\",\"avatarList\":\"Facepile--avatar-list--4j4R0\",\"avatar\":\"Facepile--avatar--1V7OV\",\"avatar-img\":\"Facepile--avatar-img--rr1lE\",\"avatarImg\":\"Facepile--avatar-img--rr1lE\",\"message\":\"Facepile--message--WDyJB\",\"xsmall\":\"Facepile--xsmall--5nxJ7\",\"small\":\"Facepile--small--BEBrE\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Avatar } from '@strava/ui/Avatar';\n\nimport styles from './styles.scss';\n\nconst messageTextStyleClass = (size) => {\n  return size === 'small' ? `text-subhead` : `text-caption1`;\n};\n\nconst Facepile = ({ athletes, message, size, className = '', ...props }) => (\n  <div className={`${styles.container} ${className}`} {...props}>\n    <ol className={styles.avatarList}>\n      {athletes.map((athlete) => (\n        <li className={styles.avatar} key={athlete.id}>\n          <Avatar\n            name={athlete.displayName}\n            type=\"athlete\"\n            size={size}\n            className={`${styles.avatarImg}`}\n            src={athlete.profileImg}\n          />\n        </li>\n      ))}\n    </ol>\n    {message && (\n      <div className={`${messageTextStyleClass(size)} ${styles.message}`}>\n        {message}\n      </div>\n    )}\n  </div>\n);\n\nFacepile.propTypes = {\n  athletes: PropTypes.arrayOf(\n    PropTypes.shape({\n      id: PropTypes.number.isRequired,\n      displayName: PropTypes.string.isRequired,\n      profileImg: PropTypes.string.isRequired\n    })\n  ).isRequired,\n  message: PropTypes.string,\n  size: PropTypes.oneOf(['xsmall', 'small']),\n  className: PropTypes.string\n};\n\nexport default Facepile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Tabs as ReactTabs } from 'react-tabs';\n\nconst Tabs = ({ children, className = '', defaultIndex = 0, ...props }) => (\n  <ReactTabs className={className} defaultIndex={defaultIndex} {...props}>\n    {children}\n  </ReactTabs>\n);\n\nTabs.tabsRole = 'Tabs';\n\nTabs.propTypes = {\n  className: PropTypes.string,\n  defaultIndex: PropTypes.number,\n  children: PropTypes.arrayOf(PropTypes.element).isRequired\n};\n\nexport default Tabs;\n","// extracted by mini-css-extract-plugin\nexport default {\"tab-list\":\"TabList--tab-list--39knt\",\"tabList\":\"TabList--tab-list--39knt\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { TabList as ReactTabList } from 'react-tabs';\n\nimport styles from './styles.scss';\n\nconst TabList = ({ children, className = '', ...props }) => (\n  <ReactTabList className={`${styles.tabList} ${className}`} {...props}>\n    {children}\n  </ReactTabList>\n);\n\nTabList.tabsRole = 'TabList';\n\nTabList.propTypes = {\n  className: PropTypes.string,\n  children: PropTypes.node.isRequired\n};\n\nexport default TabList;\n","// extracted by mini-css-extract-plugin\nexport default {\"tab\":\"Tab--tab--oamEu\",\"selected\":\"Tab--selected--Bb4GU\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Tab as ReactTab } from 'react-tabs';\n\nimport styles from './styles.scss';\n\nconst Tab = ({ children, className = '', selectedClassName = '', ...props }) => (\n  <ReactTab\n    className={`${styles.tab} ${className}`}\n    selectedClassName={`${styles.selected} ${selectedClassName}`}\n    {...props}\n  >\n    {children}\n  </ReactTab>\n);\n\nTab.tabsRole = 'Tab';\n\nTab.propTypes = {\n  className: PropTypes.string,\n  selectedClassName: PropTypes.string,\n  children: PropTypes.node.isRequired\n};\n\nexport default Tab;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { TabPanel as ReactTabPanel } from 'react-tabs';\n\nconst TabPanel = ({ children, className = '', selected  = false, ...props }) => (\n  <ReactTabPanel\n    className={selected ? className : ''}\n    selected={selected}\n    {...props}\n  >\n    {children}\n  </ReactTabPanel>\n);\n\nTabPanel.tabsRole = 'TabPanel';\n\nTabPanel.propTypes = {\n  selected: PropTypes.bool,\n  className: PropTypes.string,\n  children: PropTypes.node.isRequired\n};\n\nexport default TabPanel;\n","export { default as Tabs } from './Tabs';\nexport { default as TabList } from './TabList';\nexport { default as Tab } from './Tab';\nexport { default as TabPanel } from './TabPanel';\n","// extracted by mini-css-extract-plugin\nexport default {\"modal-dialog\":\"FriendsList--modal-dialog--FU+d6\",\"modalDialog\":\"FriendsList--modal-dialog--FU+d6\",\"modal-content\":\"FriendsList--modal-content--IBsDM\",\"modalContent\":\"FriendsList--modal-content--IBsDM\",\"close-button\":\"FriendsList--close-button--7otO2\",\"closeButton\":\"FriendsList--close-button--7otO2\",\"modal-header\":\"FriendsList--modal-header--ToyG-\",\"modalHeader\":\"FriendsList--modal-header--ToyG-\",\"challenge-logo\":\"FriendsList--challenge-logo--2HQTx\",\"challengeLogo\":\"FriendsList--challenge-logo--2HQTx\",\"challenge-name\":\"FriendsList--challenge-name--ZFotm\",\"challengeName\":\"FriendsList--challenge-name--ZFotm\",\"tab-list\":\"FriendsList--tab-list--ZfSqo\",\"tabList\":\"FriendsList--tab-list--ZfSqo\",\"active-tab\":\"FriendsList--active-tab--BHC7x\",\"activeTab\":\"FriendsList--active-tab--BHC7x\",\"spinner\":\"FriendsList--spinner--Fa9v0\",\"friend\":\"FriendsList--friend--Cfz+W\",\"friend-text\":\"FriendsList--friend-text--dgbeL\",\"friendText\":\"FriendsList--friend-text--dgbeL\",\"tab-panel\":\"FriendsList--tab-panel--0eyUV\",\"tabPanel\":\"FriendsList--tab-panel--0eyUV\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Spinner } from '@strava/ui/Spinner';\nimport { Avatar } from '@strava/ui/Avatar';\n\nimport MediaQuery, { breakpoints } from 'utils/media-query';\n\nimport Modal from 'components/shared/Modal';\nimport { Tabs, TabList, Tab, TabPanel } from 'components/shared/tabs';\n\nimport styles from './styles.scss';\n\nconst renderFriends = (friends) =>\n  friends.map((friend) => (\n    <li key={friend.name} className={styles.friend}>\n      <Avatar\n        href={friend.athletePath}\n        size=\"small\"\n        name={friend.name}\n        src={friend.avatarSrc}\n        type=\"athlete\"\n      />\n      <div className={styles.friendText}>\n        <a href={friend.athletePath}>{friend.name}</a>\n        <div>{friend.location}</div>\n      </div>\n    </li>\n  ));\n\nconst FriendsList = ({\n  modalIsOpen,\n  friendsRequested,\n  friends,\n  closeModal,\n  onModalOpen,\n  challengeLogo,\n  challengeName\n}) => (\n  <Modal\n    isOpen={modalIsOpen}\n    onRequestClose={closeModal}\n    onAfterOpen={onModalOpen}\n    dialogClassName={styles.modalDialog}\n  >\n    <div className={styles.modalContent}>\n      <button\n        className={`btn btn-unstyled ${styles.closeButton}`}\n        onClick={closeModal}\n      >\n        <div className=\"app-icon icon-close icon-sm\" />\n      </button>\n      <div className={styles.modalHeader}>\n        <img\n          src={challengeLogo}\n          alt={challengeName}\n          className={styles.challengeLogo}\n        />\n        {/* Bigger screens - tablets & desktop */}\n        <MediaQuery minWidth={breakpoints.screenXs}>\n          <h3 className={`text-title3 ${styles.challengeName}`}>\n            {challengeName}\n          </h3>\n        </MediaQuery>\n\n        {/* Smaller screens - mobile */}\n        <MediaQuery maxWidth={breakpoints.screenXs}>\n          <h3 className={`text-headline ${styles.challengeName}`}>\n            {challengeName}\n          </h3>\n        </MediaQuery>\n      </div>\n      <div>\n        <Tabs>\n          <TabList className={styles.tabList}>\n            <Tab className={styles.activeTab}>{`Friends ${\n              friends ? `(${friends.length})` : ''\n            }`}</Tab>\n          </TabList>\n          <TabPanel className={styles.tabPanel}>\n            <ul>\n              {friendsRequested ? (\n                <li className={styles.spinner}>\n                  <Spinner />\n                </li>\n              ) : (\n                friends && renderFriends(friends)\n              )}\n            </ul>\n          </TabPanel>\n        </Tabs>\n      </div>\n    </div>\n  </Modal>\n);\n\nFriendsList.propTypes = {\n  modalIsOpen: PropTypes.bool.isRequired,\n  friendsRequested: PropTypes.bool.isRequired,\n  friends: PropTypes.arrayOf(\n    PropTypes.shape({\n      name: PropTypes.string,\n      avatarSrc: PropTypes.string,\n      athletePath: PropTypes.string,\n      location: PropTypes.string\n    })\n  ),\n  closeModal: PropTypes.func.isRequired,\n  onModalOpen: PropTypes.func.isRequired,\n  challengeLogo: PropTypes.string.isRequired,\n  challengeName: PropTypes.string.isRequired\n};\n\nexport default FriendsList;\n","// extracted by mini-css-extract-plugin\nexport default {\"facepile-wrapper\":\"Followers--facepile-wrapper--usVMO\",\"facepileWrapper\":\"Followers--facepile-wrapper--usVMO\",\"facepile\":\"Followers--facepile--AgKJn\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport createNetworkingClient from 'utils/networking-client';\nimport I18n from 'utils/I18n';\n\nimport Facepile from 'components/shared/Facepile';\n\nimport FriendsList from '../FriendsList';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'strava.challenges.challenge_detail';\n\nclass Followers extends React.Component {\n  state = {\n    modalIsOpen: false,\n    friendsRequested: false,\n    friends: null\n  };\n\n  onModalOpen = () => {\n    const { challengeId } = this.props;\n    const { friends } = this.state;\n\n    if (!friends) {\n      this.setState({ friendsRequested: true });\n      const instance = createNetworkingClient();\n\n      instance\n        .get(`/challenges/${challengeId}/friends`)\n        .then((response) => {\n          if (response && response.status === 200) {\n            this.onSuccess(response.data);\n          } else {\n            this.onFail();\n          }\n        })\n        .catch(() => {\n          this.onFail();\n        });\n    }\n  };\n\n  onSuccess = (data) => {\n    this.setState({ friendsRequested: false, friends: data });\n  };\n\n  onFail = () => {\n    this.setState({ friendsRequested: false });\n    throw new Error('Something went wrong...');\n  };\n\n  openModal = () => {\n    this.setState({ modalIsOpen: true });\n  };\n\n  closeModal = () => {\n    this.setState({ modalIsOpen: false });\n  };\n\n  render() {\n    const { modalIsOpen, friendsRequested, friends } = this.state;\n    const {\n      followersCount,\n      followers,\n      challengeLogo,\n      challengeName,\n      size = 'small',\n      className\n    } = this.props;\n\n    return (\n      <div>\n        <div className={styles.facepileWrapper}>\n          <Facepile\n            athletes={followers}\n            message={I18n.t(`${I18nPrefix}.joined_followers`, {\n              count: followersCount\n            })}\n            size={size}\n            onClick={this.openModal}\n            className={`${styles.facepile} ${className}`}\n          />\n        </div>\n        <FriendsList\n          challengeLogo={challengeLogo}\n          challengeName={challengeName}\n          modalIsOpen={modalIsOpen}\n          friendsRequested={friendsRequested}\n          friends={friends}\n          closeModal={this.closeModal}\n          onModalOpen={this.onModalOpen}\n        />\n      </div>\n    );\n  }\n}\n\nFollowers.propTypes = {\n  challengeId: PropTypes.number.isRequired,\n  challengeLogo: PropTypes.string.isRequired,\n  challengeName: PropTypes.string.isRequired,\n  followersCount: PropTypes.number.isRequired,\n  followers: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n  size: PropTypes.string,\n  className: PropTypes.string\n};\n\nexport default Followers;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport ProgressBar from '../../../shared/components/ProgressBar';\nimport StreaksCalendar from '../../../shared/components/StreaksCalendar';\n\nexport const Progress = ({ streaksCalendar, data }) => {\n  if (!Object.keys(data).length) {\n    return null;\n  }\n\n  return (\n    <div className=\"mb-xl\">\n      {streaksCalendar ? (\n        <StreaksCalendar {...data} />\n      ) : (\n        <ProgressBar {...data} />\n      )}\n    </div>\n  );\n};\n\nProgress.propTypes = {\n  streaksCalendar: PropTypes.bool.isRequired,\n  data: PropTypes.shape({}).isRequired\n};\n\nexport default connect(({ progress }) => ({\n  data: progress.data,\n  streaksCalendar: progress.streaksCalendar\n}))(Progress);\n","export function validateEmail(email) {\n  return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(\n    email\n  );\n}\n\nexport default { validateEmail };\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"EmailInput--container--vek-4\",\"error\":\"EmailInput--error--xUGR-\"};","import React, { Component } from 'react';\nimport CreatableSelect from 'react-select/creatable';\nimport PropTypes from 'prop-types';\n\nimport { validateEmail } from 'utils/validators';\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'strava.challenges.challenge_detail';\n\nconst createOption = (label) => {\n  const email = label.trim().replace(',', '');\n\n  return { label: email, value: email };\n};\n\nconst customStyles = {\n  container: (provided) => ({\n    ...provided,\n    width: '100%',\n    flex: 1,\n    minHeight: 40\n  }),\n  control: (provided) => ({\n    ...provided,\n    border: 'solid 1px #ccccd0',\n    boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.11)',\n    borderRadius: 2,\n    minHeight: 40\n  }),\n  menu: (provided) => ({\n    ...provided,\n    marginTop: 0,\n    borderRadius: '0 0 2px 2px',\n    border: 'solid 1px #ccccd0',\n    borderTop: 'none',\n    boxShadow: '0px 1px 3px 2px rgba(0,0,0,.1)'\n  }),\n  multiValue: (provided) => ({\n    ...provided,\n    backgroundColor: '#F0F0F5'\n  }),\n  multiValueRemove: (provided) => ({\n    ...provided,\n    borderTopLeftRadius: 0,\n    borderBottomLeftRadius: 0,\n    color: 'inherit',\n    ':hover': {\n      backgroundColor: '#6D6D78',\n      color: '#fff'\n    }\n  })\n};\n\nclass EmailInput extends Component {\n  state = {\n    inputValue: '',\n    invalidInput: false,\n    value: []\n  };\n\n  handleChange = (value) => {\n    const { handleAddressesChange } = this.props;\n\n    this.setState({ value });\n    handleAddressesChange(value);\n  };\n\n  handleInputChange = (inputValue) => {\n    this.setState({ inputValue });\n  };\n\n  validateInput = () => {\n    const { inputValue } = this.state;\n\n    return validateEmail(inputValue);\n  };\n\n  updateValue = () => {\n    const { inputValue, value } = this.state;\n    const { handleAddressesChange } = this.props;\n    let newValue;\n\n    if (!this.validateInput(inputValue)) {\n      this.setState({ inputValue: '', invalidInput: true });\n      return;\n    }\n    if (!value) {\n      newValue = [createOption(inputValue)];\n    } else {\n      newValue = [...value, createOption(inputValue)];\n    }\n    this.setState({\n      inputValue: '',\n      value: newValue,\n      invalidInput: false\n    });\n    handleAddressesChange(newValue);\n  };\n\n  handleKeyDown = (event) => {\n    const { inputValue, value } = this.state;\n\n    if (!inputValue) return;\n    if (value && value.length >= 4) return;\n    // eslint-disable-next-line default-case\n    switch (event.key) {\n      case 'Enter':\n      case ',':\n      case ' ':\n        this.updateValue();\n        event.preventDefault();\n    }\n  };\n\n  handleBlur = () => {\n    const { inputValue } = this.state;\n\n    if (!inputValue) return;\n    this.updateValue();\n  };\n\n  render() {\n    const { inputValue, value, invalidInput } = this.state;\n    return (\n      <div className={styles.container}>\n        <CreatableSelect\n          components={{ DropdownIndicator: null }}\n          inputValue={inputValue}\n          delimiter=\",\"\n          isClearable={true}\n          isMulti={true}\n          menuIsOpen={false}\n          onChange={this.handleChange}\n          onInputChange={this.handleInputChange}\n          onKeyDown={this.handleKeyDown}\n          onBlur={this.handleBlur}\n          placeholder={I18n.t(`${I18nPrefix}.enter_emails`)}\n          value={value}\n          styles={customStyles}\n        />\n        {invalidInput && (\n          <div className={styles.error}>\n            {I18n.t(`${I18nPrefix}.invalid_email`)}\n          </div>\n        )}\n      </div>\n    );\n  }\n}\n\nEmailInput.propTypes = {\n  handleAddressesChange: PropTypes.func.isRequired\n};\n\nexport default EmailInput;\n","// extracted by mini-css-extract-plugin\nexport default {\"above-input\":\"Email--above-input--alcu4\",\"aboveInput\":\"Email--above-input--alcu4\",\"select-input\":\"Email--select-input--4YL59\",\"selectInput\":\"Email--select-input--4YL59\",\"submit-button\":\"Email--submit-button--BxtP2\",\"submitButton\":\"Email--submit-button--BxtP2\",\"spinner\":\"Email--spinner--kaQzG\",\"message\":\"Email--message--h1tDs\",\"error\":\"Email--error--Ao1b7\",\"success\":\"Email--success--UDj1l\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\nimport { Spinner } from '@strava/ui/Spinner';\n\nimport createNetworkingClient from 'utils/networking-client';\nimport I18n from 'utils/I18n';\n\nimport EmailInput from '../EmailInput';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'strava.challenges.challenge_detail';\n\nclass Email extends React.Component {\n  state = {\n    submitRequested: false,\n    submitSucceeded: false,\n    errorMessage: '',\n    successMessage: '',\n    addresses: []\n  };\n\n  handleAddressesChange = (addresses) => {\n    if (!addresses) {\n      this.setState({ addresses: [] });\n      return;\n    }\n    const emails = addresses.map((address) => address.value);\n    this.setState({ addresses: emails });\n  };\n\n  handleSubmit = () => {\n    const { addresses } = this.state;\n    const { challengeId, challengeName, currentAthlete } = this.props;\n\n    this.setState({ submitRequested: true });\n\n    const message = I18n.t(`${I18nPrefix}.invite_message`, {\n      athleteName: currentAthlete.name,\n      challengeName\n    });\n\n    const instance = createNetworkingClient();\n\n    instance\n      .post(`/challenges/${challengeId}/share/send_email`, {\n        emails: addresses,\n        message\n      })\n      .then((response) => {\n        if (response && response.status === 200) {\n          this.onSubmitSuccess(response.data);\n        } else {\n          this.onSubmitFail();\n        }\n      })\n      .catch(() => {\n        this.onSubmitFail();\n      });\n  };\n\n  onSubmitSuccess = () => {\n    this.setState({\n      submitRequested: false,\n      submitSucceeded: true,\n      errorMessage: '',\n      successMessage: I18n.t(`${I18nPrefix}.success_message`)\n    });\n\n    setTimeout(() => {\n      const { closeModal } = this.props;\n      closeModal();\n    }, 2000);\n  };\n\n  onSubmitFail = () => {\n    this.setState({\n      submitRequested: false,\n      errorMessage: I18n.t(`${I18nPrefix}.error_message`)\n    });\n  };\n\n  renderMessage = () => {\n    const { errorMessage, successMessage } = this.state;\n\n    if (errorMessage) {\n      return (\n        <h2 className={`${styles.message} ${styles.error}`}>{errorMessage}</h2>\n      );\n    }\n\n    if (successMessage) {\n      return (\n        <h2 className={`${styles.message} ${styles.success}`}>\n          {successMessage}\n        </h2>\n      );\n    }\n\n    return null;\n  };\n\n  render() {\n    const { addresses, submitRequested, submitSucceeded } = this.state;\n    const { challengeName, currentAthlete } = this.props;\n\n    return (\n      <>\n        {this.renderMessage()}\n        {submitRequested ? (\n          <div className={styles.spinner}>\n            <Spinner />\n          </div>\n        ) : (\n          !submitSucceeded && (\n            <div>\n              <div className={styles.aboveInput}>\n                {I18n.t(`${I18nPrefix}.to`)}\n                <span className={`text-caption2 ${styles.limit}`}>\n                  {I18n.t(`${I18nPrefix}.limit`)}\n                </span>\n              </div>\n              <div className={styles.selectInput}>\n                <EmailInput\n                  handleAddressesChange={this.handleAddressesChange}\n                />\n              </div>\n              <div>\n                <div>{I18n.t(`${I18nPrefix}.message`)}</div>\n                <div className=\"text-callout\">\n                  {I18n.t(`${I18nPrefix}.invite_message`, {\n                    athleteName: currentAthlete.name,\n                    challengeName\n                  })}\n                </div>\n              </div>\n              <Button\n                key=\"invite\"\n                variant=\"primary\"\n                disabled={addresses.length === 0 || submitRequested}\n                onClick={this.handleSubmit}\n                className={`btn btn-sm ${styles.submitButton}`}\n              >\n                {I18n.t(`${I18nPrefix}.invite`)}\n              </Button>\n            </div>\n          )\n        )}\n      </>\n    );\n  }\n}\n\nEmail.propTypes = {\n  closeModal: PropTypes.func.isRequired,\n  challengeId: PropTypes.number.isRequired,\n  currentAthlete: PropTypes.shape({\n    name: PropTypes.string.isRequired\n  }).isRequired,\n  challengeName: PropTypes.string.isRequired\n};\n\nexport default Email;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Select--container--Krxee\",\"avatar\":\"Select--avatar--YN9aw\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Select from 'react-select';\nimport { Avatar } from '@strava/ui/Avatar';\n\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'strava.challenges.challenge_detail';\n\nconst FriendOption = ({ name, picture }) => (\n  <div className={styles.container}>\n    <Avatar\n      name={name}\n      type=\"athlete\"\n      size=\"xsmall\"\n      src={picture}\n      className={styles.avatar}\n    />\n    <span className={styles.name}>{name}</span>\n  </div>\n);\n\nFriendOption.propTypes = {\n  name: PropTypes.string.isRequired,\n  picture: PropTypes.string.isRequired\n};\n\nexport const FriendSelect = ({ options = [], handleChange }) => {\n  const customStyles = {\n    container: (provided) => ({\n      ...provided,\n      flex: 1,\n      minHeight: 40\n    }),\n    control: (provided) => ({\n      ...provided,\n      border: 'solid 1px #ccccd0',\n      boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.11)',\n      borderRadius: 2,\n      minHeight: 40\n    }),\n    menu: (provided) => ({\n      ...provided,\n      marginTop: 0,\n      borderRadius: '0 0 2px 2px',\n      border: 'solid 1px #ccccd0',\n      borderTop: 'none',\n      boxShadow: '0px 1px 3px 2px rgba(0,0,0,.1)'\n    }),\n    multiValue: (provided) => ({\n      ...provided,\n      backgroundColor: '#F0F0F5'\n    }),\n    multiValueRemove: (provided) => ({\n      ...provided,\n      borderTopLeftRadius: 0,\n      borderBottomLeftRadius: 0,\n      color: 'inherit',\n      ':hover': {\n        backgroundColor: '#6D6D78',\n        color: '#fff'\n      }\n    })\n  };\n\n  return (\n    <Select\n      options={options}\n      delimiter=\",\"\n      isMulti={true}\n      isSearchable={true}\n      autoFocus={true}\n      isClearable={false}\n      onChange={handleChange}\n      placeholder={I18n.t(`${I18nPrefix}.enter_friends`)}\n      styles={customStyles}\n      formatOptionLabel={FriendOption}\n      getOptionLabel={(option) => option.name}\n      getOptionValue={(option) => option.id}\n      components={{ DropdownIndicator: null }}\n      noOptionsMessage={() => I18n.t(`${I18nPrefix}.no_options_available`)}\n    />\n  );\n};\n\nFriendSelect.propTypes = {\n  options: PropTypes.arrayOf(\n    PropTypes.shape({\n      id: PropTypes.number,\n      name: PropTypes.string,\n      picture: PropTypes.string\n    })\n  ),\n  handleChange: PropTypes.func.isRequired\n};\n\nexport default FriendSelect;\n","// extracted by mini-css-extract-plugin\nexport default {\"select-input\":\"StravaInvite--select-input--BZIVG\",\"selectInput\":\"StravaInvite--select-input--BZIVG\",\"submit-button\":\"StravaInvite--submit-button--vMQ1B\",\"submitButton\":\"StravaInvite--submit-button--vMQ1B\",\"spinner\":\"StravaInvite--spinner--J8c0T\",\"message\":\"StravaInvite--message--e7yPR\",\"error\":\"StravaInvite--error--QAWdn\",\"success\":\"StravaInvite--success--yVsVn\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\nimport { Spinner } from '@strava/ui/Spinner';\n\nimport createNetworkingClient from 'utils/networking-client';\nimport I18n from 'utils/I18n';\n\nimport Select from '../Select';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'strava.challenges.challenge_detail';\n\nclass StravaInvite extends React.Component {\n  state = {\n    submitRequested: false,\n    submitSucceeded: false,\n    errorMessage: '',\n    successMessage: '',\n    inviteValue: ''\n  };\n\n  handleChange = (selectedAthletesArr) => {\n    if (!selectedAthletesArr) {\n      this.setState({ inviteValue: '' });\n      return;\n    }\n    const ids = selectedAthletesArr.map((athlete) => athlete.id);\n\n    this.setState({ inviteValue: ids.join(',') });\n  };\n\n  handleSubmit = () => {\n    const { inviteValue } = this.state;\n    const { challengeId } = this.props;\n\n    this.setState({ submitRequested: true });\n\n    const instance = createNetworkingClient();\n\n    instance\n      .put(`/challenges/${challengeId}/invite`, { athlete_ids: inviteValue })\n      .then((response) => {\n        if (response && response.status === 200) {\n          this.onSubmitSuccess(response.data);\n        } else {\n          this.onSubmitFail();\n        }\n      })\n      .catch(() => {\n        this.onSubmitFail();\n      });\n  };\n\n  onSubmitSuccess = () => {\n    this.setState({\n      submitRequested: false,\n      submitSucceeded: true,\n      errorMessage: '',\n      successMessage: I18n.t(`${I18nPrefix}.success_message`)\n    });\n\n    setTimeout(() => {\n      const { closeModal } = this.props;\n      closeModal();\n    }, 2000);\n  };\n\n  onSubmitFail = () => {\n    this.setState({\n      submitRequested: false,\n      errorMessage: I18n.t(`${I18nPrefix}.error_message`)\n    });\n  };\n\n  renderMessage = () => {\n    const { errorMessage, successMessage } = this.state;\n\n    if (errorMessage) {\n      return (\n        <h2 className={`${styles.message} ${styles.error}`}>{errorMessage}</h2>\n      );\n    }\n\n    if (successMessage) {\n      return (\n        <h2 className={`${styles.message} ${styles.success}`}>\n          {successMessage}\n        </h2>\n      );\n    }\n\n    return null;\n  };\n\n  render() {\n    const { inviteValue, submitRequested, submitSucceeded } = this.state;\n    const { friends = [], challengeName, currentAthlete } = this.props;\n\n    return (\n      <>\n        {this.renderMessage()}\n        {submitRequested ? (\n          <div className={styles.spinner}>\n            <Spinner />\n          </div>\n        ) : (\n          !submitSucceeded && (\n            <div>\n              {I18n.t(`${I18nPrefix}.to`)}\n              <div className={styles.selectInput}>\n                <Select options={friends} handleChange={this.handleChange} />\n              </div>\n              <div>\n                <div>{I18n.t(`${I18nPrefix}.message`)}</div>\n                <div className=\"text-callout\">\n                  {I18n.t(`${I18nPrefix}.invite_message`, {\n                    athleteName: currentAthlete.name,\n                    challengeName\n                  })}\n                </div>\n              </div>\n              <Button\n                key=\"invite\"\n                variant=\"primary\"\n                disabled={!inviteValue.trim() || submitRequested}\n                onClick={this.handleSubmit}\n                className={`btn btn-sm ${styles.submitButton}`}\n              >\n                {I18n.t(`${I18nPrefix}.invite`)}\n              </Button>\n            </div>\n          )\n        )}\n      </>\n    );\n  }\n}\n\nStravaInvite.propTypes = {\n  friends: PropTypes.arrayOf(PropTypes.shape({})),\n  closeModal: PropTypes.func.isRequired,\n  challengeId: PropTypes.number.isRequired,\n  currentAthlete: PropTypes.shape({\n    name: PropTypes.string.isRequired\n  }).isRequired,\n  challengeName: PropTypes.string.isRequired\n};\n\nexport default StravaInvite;\n","// extracted by mini-css-extract-plugin\nexport default {\"modal-dialog\":\"ShareModal--modal-dialog--8JAWC\",\"modalDialog\":\"ShareModal--modal-dialog--8JAWC\",\"modal-content\":\"ShareModal--modal-content--V2xaI\",\"modalContent\":\"ShareModal--modal-content--V2xaI\",\"close-button\":\"ShareModal--close-button--TAWIV\",\"closeButton\":\"ShareModal--close-button--TAWIV\",\"modal-header\":\"ShareModal--modal-header--3+7-d\",\"modalHeader\":\"ShareModal--modal-header--3+7-d\",\"challenge-logo\":\"ShareModal--challenge-logo--Q-rKd\",\"challengeLogo\":\"ShareModal--challenge-logo--Q-rKd\",\"challenge-name\":\"ShareModal--challenge-name--P3NuL\",\"challengeName\":\"ShareModal--challenge-name--P3NuL\",\"tab-list\":\"ShareModal--tab-list--Eisfl\",\"tabList\":\"ShareModal--tab-list--Eisfl\",\"active-tab\":\"ShareModal--active-tab--LErXu\",\"activeTab\":\"ShareModal--active-tab--LErXu\",\"tab\":\"ShareModal--tab--nreZU\",\"tab-panel\":\"ShareModal--tab-panel--0MYBk\",\"tabPanel\":\"ShareModal--tab-panel--0MYBk\",\"spinner\":\"ShareModal--spinner--avKPB\",\"message\":\"ShareModal--message--UUh9y\",\"error\":\"ShareModal--error--LVpz-\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Spinner } from '@strava/ui/Spinner';\n\nimport createNetworkingClient from 'utils/networking-client';\nimport I18n from 'utils/I18n';\nimport MediaQuery, { breakpoints } from 'utils/media-query';\n\nimport Modal from 'components/shared/Modal';\nimport { Tabs, TabList, Tab, TabPanel } from 'components/shared/tabs';\n\nimport Email from '../Email';\nimport StravaInvite from '../StravaInvite';\n\nimport styles from './styles.scss';\n\nexport const I18nPrefix = 'strava.challenges.challenge_detail';\n\nclass ShareModal extends React.Component {\n  state = {\n    friends: [],\n    friendsRequested: false,\n    errorMessage: ''\n  };\n\n  onClose = () => {\n    const { closeModal } = this.props;\n\n    this.setState({\n      friendsRequested: false,\n      errorMessage: ''\n    });\n\n    closeModal();\n  };\n\n  fetchAthletes = () => {\n    const { friends } = this.state;\n\n    if (!friends || friends.length < 1) {\n      this.setState({ friendsRequested: true });\n      const instance = createNetworkingClient();\n\n      instance\n        .get('/share/autocomplete_athlete_data')\n        .then((response) => {\n          if (response && response.status === 200) {\n            this.fetchAthletesSuccess(response.data);\n          } else {\n            this.fetchAthletesFail();\n          }\n        })\n        .catch(() => {\n          this.fetchAthletesFail();\n        });\n    }\n  };\n\n  fetchAthletesSuccess = (data) => {\n    this.setState({ friendsRequested: false, friends: data, errorMessage: '' });\n  };\n\n  fetchAthletesFail = () => {\n    this.setState({\n      friendsRequested: false,\n      errorMessage: I18n.t(`${I18nPrefix}.error_message`)\n    });\n  };\n\n  renderMessage = () => {\n    const { errorMessage } = this.state;\n\n    return errorMessage ? (\n      <h2 className={`${styles.message} ${styles.error}`}>{errorMessage}</h2>\n    ) : null;\n  };\n\n  render() {\n    const { friends, friendsRequested } = this.state;\n\n    const {\n      modalIsOpen,\n      challengeId,\n      challengeLogoUrl,\n      challengeName,\n      currentAthlete\n    } = this.props;\n\n    return (\n      <Modal\n        isOpen={modalIsOpen}\n        onRequestClose={this.onClose}\n        onAfterOpen={this.fetchAthletes}\n        dialogClassName={styles.modalDialog}\n      >\n        <div className={styles.modalContent}>\n          <button\n            className={`btn btn-unstyled ${styles.closeButton}`}\n            onClick={this.onClose}\n          >\n            <div className=\"app-icon icon-close icon-sm\" />\n          </button>\n          <div className={styles.modalHeader}>\n            <img\n              src={challengeLogoUrl}\n              alt={challengeName}\n              className={styles.challengeLogo}\n            />\n            {/* Bigger screens - tablets & desktop */}\n            <MediaQuery minWidth={breakpoints.screenXs}>\n              <h3 className={`text-title3 ${styles.challengeName}`}>\n                {challengeName}\n              </h3>\n            </MediaQuery>\n\n            {/* Smaller screens - mobile */}\n            <MediaQuery maxWidth={breakpoints.screenXs}>\n              <h3 className={`text-headline ${styles.challengeName}`}>\n                {challengeName}\n              </h3>\n            </MediaQuery>\n          </div>\n          <div>\n            <Tabs>\n              <TabList className={styles.tabList}>\n                <Tab\n                  className={styles.tab}\n                  selectedClassName={styles.activeTab}\n                >\n                  <span className=\"app-icon-wrapper\">\n                    <span\n                      className=\"app-icon icon-strava icon-lg icon-dark\"\n                      title=\"strava\"\n                    >\n                      Strava\n                    </span>\n                  </span>\n                  <MediaQuery minWidth={breakpoints.screenXs}>\n                    {I18n.t(`${I18nPrefix}.invite_strava_friends`)}\n                  </MediaQuery>\n                </Tab>\n              </TabList>\n              <TabPanel className={styles.tabPanel}>\n                {this.renderMessage()}\n                {friendsRequested ? (\n                  <div className={styles.spinner}>\n                    <Spinner />\n                  </div>\n                ) : (\n                  <StravaInvite\n                    closeModal={this.onClose}\n                    currentAthlete={currentAthlete}\n                    challengeName={challengeName}\n                    challengeId={challengeId}\n                    friends={friends}\n                  />\n                )}\n              </TabPanel>\n              <TabPanel className={styles.tabPanel}>\n                <Email\n                  closeModal={this.onClose}\n                  currentAthlete={currentAthlete}\n                  challengeName={challengeName}\n                  challengeId={challengeId}\n                />\n              </TabPanel>\n            </Tabs>\n          </div>\n        </div>\n      </Modal>\n    );\n  }\n}\n\nShareModal.propTypes = {\n  modalIsOpen: PropTypes.bool.isRequired,\n  closeModal: PropTypes.func.isRequired,\n  challengeId: PropTypes.number.isRequired,\n  challengeLogoUrl: PropTypes.string.isRequired,\n  currentAthlete: PropTypes.shape({\n    name: PropTypes.string.isRequired\n  }).isRequired,\n  challengeName: PropTypes.string.isRequired\n};\n\nexport default ShareModal;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"InviteFriends--container--W9+05\",\"button\":\"InviteFriends--button--6-0Iv\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\n\nimport I18n from 'utils/I18n';\n\nimport ShareModal from './components/ShareModal';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'strava.challenges.challenge_detail';\n\nclass InviteFriends extends React.Component {\n  state = { modalIsOpen: false };\n\n  openModal = () => {\n    this.setState({ modalIsOpen: true });\n  };\n\n  closeModal = () => {\n    this.setState({\n      modalIsOpen: false\n    });\n  };\n\n  render() {\n    const { modalIsOpen } = this.state;\n    const {\n      outline = false,\n      challengeLogoUrl,\n      challengeName,\n      currentAthlete,\n      challengeId\n    } = this.props;\n\n    return (\n      <div className={styles.container}>\n        <Button\n          variant={outline ? 'primaryOutline' : 'primary'}\n          className={`btn-sm btn-block text-footnote ${styles.button}`}\n          onClick={this.openModal}\n        >\n          {I18n.t(`${I18nPrefix}.invite_friends`)}\n        </Button>\n        <ShareModal\n          modalIsOpen={modalIsOpen}\n          closeModal={this.closeModal}\n          challengeId={challengeId}\n          challengeLogoUrl={challengeLogoUrl}\n          challengeName={challengeName}\n          currentAthlete={currentAthlete}\n        />\n      </div>\n    );\n  }\n}\n\nInviteFriends.propTypes = {\n  challengeId: PropTypes.number.isRequired,\n  challengeLogoUrl: PropTypes.string.isRequired,\n  currentAthlete: PropTypes.shape({\n    name: PropTypes.string.isRequired\n  }).isRequired,\n  challengeName: PropTypes.string.isRequired,\n  outline: PropTypes.bool\n};\n\nexport default InviteFriends;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"ChallengeJoinButton--container--YOfHh\",\"button\":\"ChallengeJoinButton--button--Q7s71\"};","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 { dateYearsAgo } from 'utils/generalUtils';\n\nconst GatingHelper = {};\n\nGatingHelper.dateFromString = (str) => new Date(str);\nGatingHelper.dateYearsAgo = (years) => {\n  const d = new Date(new Date().toDateString());\n  d.setFullYear(d.getFullYear() - years);\n  return d;\n};\n\nGatingHelper.shouldShowAgeGateModal = (\n  loggedIn,\n  joined,\n  dateOfBirth,\n  gatingConditions\n) => {\n  if (joined) {\n    return false;\n  }\n\n  if (!loggedIn) {\n    return false;\n  }\n\n  const minimumAge = gatingConditions && gatingConditions.minimumAge;\n  if (!minimumAge) {\n    // no gating conditions\n    return false;\n  }\n\n  const dob = dateOfBirth && GatingHelper.dateFromString(dateOfBirth);\n\n  if (dob && dob <= dateYearsAgo(minimumAge)) {\n    // old enough to join\n    return false;\n  }\n\n  return true;\n};\n\nexport default GatingHelper;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Button } from '@strava/ui/Button';\n\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\nimport { joinChallenge, leaveChallenge, showAgeModal } from '../../../actions';\nimport GatingHelper from '../../../../shared/helpers/gating_helper';\n\nexport const I18nPrefix = 'strava.challenges.challenge_detail';\n\nexport class ChallengeJoinButton extends React.Component {\n  state = {\n    keepHovered: false\n  };\n\n  onJoinChallenge = () => {\n    return GatingHelper.shouldShowAgeGateModal(\n      this.props.loggedIn,\n      this.props.joined,\n      this.props.currentAthlete && this.props.currentAthlete.dateOfBirth,\n      this.props.gatingConditions\n    )\n      ? this.props.showAgeModal(\n          this.props.gatingConditions,\n          () => this.props.onJoinChallenge(this.props.challengeId),\n          new Date('1970-1-1')\n        )\n      : this.props.onJoinChallenge(this.props.challengeId);\n  };\n\n  onLeaveChallenge = () => this.props.onLeaveChallenge(this.props.challengeId);\n\n  onHoverToggle = () =>\n    this.setState((prevState) => ({\n      keepHovered: !prevState.keepHovered\n    }));\n\n  joinButton = (externalJoinUrl) => (\n    <>\n      {externalJoinUrl ? (\n        <a\n          className={`btn btn-primary btn-sm btn-block text-footnote ${styles.button}`}\n          href={externalJoinUrl}\n        >\n          {I18n.t(`${I18nPrefix}.register`)}\n        </a>\n      ) : (\n        <Button\n          disabled={this.props.challengeJoinRequested}\n          variant=\"primary\"\n          className={`btn-sm btn-block text-footnote ${styles.button}`}\n          onClick={this.onJoinChallenge}\n          data-cy=\"challenge_join_button\"\n        >\n          {I18n.t(`${I18nPrefix}.join_challenge`)}\n        </Button>\n      )}\n    </>\n  );\n\n  leaveButton = () => (\n    <>\n      {this.state.keepHovered || this.props.challengeLeaveRequested ? (\n        <Button\n          disabled={this.props.challengeLeaveRequested}\n          variant=\"primary\"\n          className={` btn-sm btn-block text-footnote ${styles.button}`}\n          onMouseLeave={this.onHoverToggle}\n          onClick={this.onLeaveChallenge}\n          data-cy=\"leave_challenge_button\"\n        >\n          {I18n.t(`${I18nPrefix}.leave_challenge`)}\n        </Button>\n      ) : (\n        <Button\n          variant=\"primaryOutline\"\n          className={`btn-sm btn-block text-footnote ${styles.button}`}\n          onMouseEnter={this.onHoverToggle}\n          data-cy=\"challenge_joined_button\"\n        >\n          {I18n.t(`${I18nPrefix}.challenge_joined`)}\n        </Button>\n      )}\n    </>\n  );\n\n  render() {\n    const { joined, externalJoinUrl } = this.props;\n\n    return (\n      <div className={styles.container}>\n        {joined ? this.leaveButton() : this.joinButton(externalJoinUrl)}\n      </div>\n    );\n  }\n}\n\nChallengeJoinButton.propTypes = {\n  onJoinChallenge: PropTypes.func.isRequired,\n  onLeaveChallenge: PropTypes.func.isRequired,\n  showAgeModal: PropTypes.func.isRequired,\n  challengeJoinRequested: PropTypes.bool,\n  challengeLeaveRequested: PropTypes.bool,\n  challengeId: PropTypes.number.isRequired,\n  joined: PropTypes.bool.isRequired,\n  externalJoinUrl: PropTypes.string,\n  gatingConditions: PropTypes.shape({\n    minimumAge: PropTypes.number\n  }),\n  currentAthlete: PropTypes.shape({\n    dateOfBirth: PropTypes.string\n  }),\n  loggedIn: PropTypes.bool\n};\n\nexport default connect(\n  (state) => ({\n    challengeJoinRequested: state.challengeJoinRequested,\n    challengeLeaveRequested: state.challengeLeaveRequested,\n    challengeId: state.challengeId,\n    joined: state.joined,\n    externalJoinUrl: state.externalJoinUrl\n  }),\n  {\n    onJoinChallenge: joinChallenge,\n    onLeaveChallenge: leaveChallenge,\n    showAgeModal\n  }\n)(ChallengeJoinButton);\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"DataGrid--title--fUzww\",\"row\":\"DataGrid--row--kqDUg\",\"grid-item\":\"DataGrid--grid-item--yTJOI\",\"gridItem\":\"DataGrid--grid-item--yTJOI\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Stats } from '@strava/ui/Stats';\nimport { Stat } from '@strava/ui/Stat';\n\nimport Cldr from 'utils/Cldr';\n\nimport styles from './styles.scss';\n\nconst DataGrid = ({ dataGrid, containerClass }) => {\n  const formatValue = (value) =>\n    typeof value === 'number' ? Cldr.formatDecimal(value) : value;\n\n  const addStat = (row) => (\n    <Stat\n      key={row.title}\n      value={formatValue(row.value)}\n      label={row.title}\n      wrapperClassName={`text-caption2 ${styles.gridItem}`}\n      labelClassName={styles.title}\n      valueClassName=\"text-body\"\n    />\n  );\n\n  return (\n    <Stats listClassName={`${containerClass} ${styles.row}`}>\n      {dataGrid.map((row) => addStat(row))}\n    </Stats>\n  );\n};\n\nDataGrid.propTypes = {\n  dataGrid: PropTypes.arrayOf(\n    PropTypes.shape({\n      title: PropTypes.string.isRequired,\n      value: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n        .isRequired\n    })\n  ).isRequired,\n  containerClass: PropTypes.string\n};\n\nexport default DataGrid;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"TopSidebar--container--Gi3+p\",\"header\":\"TopSidebar--header--OJiba\",\"button-group\":\"TopSidebar--button-group--3ackY\",\"buttonGroup\":\"TopSidebar--button-group--3ackY\",\"button\":\"TopSidebar--button--QWzb7\",\"data-grid\":\"TopSidebar--data-grid--S3OoB\",\"dataGrid\":\"TopSidebar--data-grid--S3OoB\",\"stats-row\":\"TopSidebar--stats-row--V3Q8S\",\"statsRow\":\"TopSidebar--stats-row--V3Q8S\"};","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  enUS: 'en-US',\n  frFR: 'fr-FR',\n  deDE: 'de-DE',\n  esES: 'es-ES',\n  ptBR: 'pt-BR',\n  ruRU: 'ru-RU',\n  itIT: 'it-IT',\n  jaJP: 'ja-JP',\n  es419: 'es-419',\n  nlNL: 'nl-NL',\n  zhTW: 'zh-TW',\n  ptPT: 'pt-PT',\n  zhCN: 'zh-CN'\n});\n\nexport default {\n  YOUNGEST_AGE_ON_PLATFORM,\n  YOUNGEST_AGE_FOR_HEALTH_AND_PROMO,\n  GENDER,\n  LOCALE\n};\n","import createNetworkingClient from 'utils/networking-client';\nimport Analytics from 'utils/analytics';\n\nconst Helper = {};\n\nHelper.pageStates = {\n  FILTERED_STATE: 'filtered',\n  UNFILTERED_STATE: 'unfiltered'\n};\nHelper.destinationUrl = `/challenges`;\n\nlet networkClientInstance = null;\nHelper.instance = () => {\n  if (!networkClientInstance) {\n    networkClientInstance = createNetworkingClient({ timeout: 15000 });\n  }\n  return networkClientInstance;\n};\n\nHelper.reducer = {};\nHelper.events = {};\n\nHelper.reducer.actions = {\n  CHALLENGE_JOINED_STATUS_CHANGE: 'CHALLENGE_JOIN_STATUS_CHANGE',\n  DOB_UPDATE_FAILED: 'DOB_UPDATE_FAILED',\n  DOB_UPDATE_REQUESTED: 'DOB_UPDATE_REQUESTED',\n  DOB_UPDATE_SUCCESS: 'DOB_UPDATE_SUCCESS',\n  FILTER_ADDED: 'FILTER_ADDED',\n  FILTER_REMOVED: 'FILTER_REMOVED',\n  FILTER_REMOVE_ALL: 'FILTER_REMOVE_ALL',\n  FILTERED_REQUEST_SUCCEEDED: 'FILTERED_REQUEST_SUCCEEDED',\n  FILTERED_REQUEST_FAILED: 'FILTERED_REQUEST_FAILED',\n  MODAL_CHANGE_DATE: 'MODAL_CHANGE_DATE',\n  MODAL_CLOSE: 'MODAL_CLOSE',\n  MODAL_OPEN: 'MODAL_OPEN',\n  UNFILTERED_REQUEST_SUCCEEDED: 'UNFILTERED_REQUEST_SUCCEEDED',\n  UNFILTERED_REQUEST_FAILED: 'UNFILTERED_REQUEST_SUCCEEDED'\n};\n\nHelper.reducer.reduce = (state, action) => {\n  const data = { ...state };\n\n  if (action.name === Helper.reducer.actions.CHALLENGE_JOINED_STATUS_CHANGE) {\n    data.challengesJoinStatus[action.challengeId] = action.joinedStatus;\n    data.gatingModal = null;\n  }\n\n  if (action.name === Helper.reducer.actions.DOB_UPDATE_FAILED) {\n    data.gatingModal = {\n      ...data.gatingModal,\n      requestInProgress: false\n    };\n  }\n\n  if (action.name === Helper.reducer.actions.DOB_UPDATE_REQUESTED) {\n    data.gatingModal = {\n      ...data.gatingModal,\n      requestInProgress: true\n    };\n  }\n\n  if (action.name === Helper.reducer.actions.DOB_UPDATE_SUCCESS) {\n    const { date } = action;\n    const dateOfBirth = [\n      date.getFullYear(),\n      date.getMonth() + 1,\n      date.getDate()\n    ].join('-');\n\n    data.currentAthlete = { ...data.currentAthlete, dateOfBirth };\n    data.gatingModal = {\n      ...data.gatingModal,\n      requestInProgress: false\n    };\n  }\n\n  if (action.name === Helper.reducer.actions.FILTER_ADDED) {\n    if (!data.selectedFilters.includes(action.identifier)) {\n      data.selectedFilters = [...data.selectedFilters, ...[action.identifier]];\n      Helper.events.trackFilterChanged(\n        'selection',\n        data.selectedFilters.map((filter) => filter)\n      );\n    }\n  }\n\n  if (action.name === Helper.reducer.actions.FILTER_REMOVED) {\n    if (data.selectedFilters.includes(action.identifier)) {\n      data.selectedFilters = data.selectedFilters.filter(\n        (filterName) => filterName !== action.identifier\n      );\n    }\n\n    if (!data.selectedFilters.length) {\n      data.pageState = Helper.pageStates.UNFILTERED_STATE;\n    }\n\n    Helper.events.trackFilterChanged(\n      'deselection',\n      data.selectedFilters.map((filter) => filter)\n    );\n  }\n\n  if (action.name === Helper.reducer.actions.FILTER_REMOVE_ALL) {\n    data.selectedFilters = [];\n    data.pageState = Helper.pageStates.UNFILTERED_STATE;\n    Helper.events.trackFilterChanged('clear_all', []);\n  }\n\n  if (action.name === Helper.reducer.actions.FILTERED_REQUEST_SUCCEEDED) {\n    data.filteredChallenges = action.data.challenges;\n    data.availableFilters = action.data.filters;\n    data.pageState =\n      data.selectedFilters.length > 0\n        ? Helper.pageStates.FILTERED_STATE\n        : Helper.pageStates.UNFILTERED_STATE;\n  }\n\n  if (action.name === Helper.reducer.actions.MODAL_CHANGE_DATE) {\n    data.gatingModal = {\n      ...data.gatingModal,\n      ageGate: {\n        ...(data.gatingModal && data.gatingModal.ageGate),\n        dateSelected: action.date\n      }\n    };\n  }\n\n  if (action.name === Helper.reducer.actions.MODAL_CLOSE) {\n    data.gatingModal = null;\n  }\n\n  if (action.name === Helper.reducer.actions.MODAL_OPEN) {\n    const { gatingConditions, joinChallengeFn, dateSelected } = action;\n    data.gatingModal = {\n      gatingConditions,\n      joinChallengeFn,\n      ageGate: { dateSelected },\n      requestInProgress: false\n    };\n  }\n\n  if (action.name === Helper.reducer.actions.UNFILTERED_REQUEST_SUCCEEDED) {\n    data.availableFilters = action.data.filters;\n    data.pageState = Helper.pageStates.UNFILTERED_STATE;\n  }\n\n  if (action.name === Helper.reducer.actions.FILTERED_REQUEST_FAILED) {\n    data.filteredChallenges = [];\n    data.pageState = Helper.pageStates.UNFILTERED_STATE;\n  }\n  return data;\n};\n\nHelper.reducer.initialState = (promotedChallenge, gallerySections, filters) => {\n  const hash = {\n    challengesJoinStatus: {}, // responsible for flipping join button states\n    currentAthlete: null, // holds changes that have been made to currentAthlete\n    gatingModal: null, // optional object that describes the (age) gating modal\n    selectedFilters: [], // controls which filters are selected\n    availableFilters: filters, // controls which filters are visible\n    pageState: Helper.pageStates.UNFILTERED_STATE, // controls which state of the page to show\n    filteredChallenges: [] // Challenges that are displayed when a filter is active\n  };\n\n  hash.challengesJoinStatus[promotedChallenge.id] = promotedChallenge.joined;\n  Object.keys(gallerySections).forEach((key) => {\n    gallerySections[key].challenges.forEach((challenge) => {\n      hash.challengesJoinStatus[challenge.id] = challenge.joined;\n    });\n  });\n  return hash;\n};\n\nHelper.requestFilteredChallenges = (selectedFilters, dispatch) => {\n  return Helper.instance()\n    .get(Helper.destinationUrl, {\n      params: {\n        json: true,\n        filters: selectedFilters\n      }\n    })\n    .then((response) => {\n      dispatch({\n        name:\n          selectedFilters.length > 0\n            ? Helper.reducer.actions.FILTERED_REQUEST_SUCCEEDED\n            : Helper.reducer.actions.UNFILTERED_REQUEST_SUCCEEDED,\n        data: response.data\n      });\n    })\n    .catch(() =>\n      dispatch({\n        name:\n          selectedFilters.length > 0\n            ? Helper.reducer.actions.FILTERED_REQUEST_FAILED\n            : Helper.reducer.actions.UNFILTERED_REQUEST_FAILED\n      })\n    );\n};\n\nHelper.joinChallenge = ({\n  externalJoinUrl,\n  challengeId,\n  joined,\n  locale,\n  loggedIn,\n  dispatch\n}) => {\n  if (externalJoinUrl) {\n    window.location = externalJoinUrl;\n    return true;\n  }\n  if (loggedIn) {\n    return createNetworkingClient()\n      .post(\n        joined\n          ? `/challenges/${challengeId}/leave`\n          : `/challenges/${challengeId}/join`\n      )\n      .then((response) => {\n        if (response && (response.status === 204 || response.status === 200)) {\n          dispatch({\n            name: Helper.reducer.actions.CHALLENGE_JOINED_STATUS_CHANGE,\n            challengeId,\n            joinedStatus: !joined\n          });\n        } else {\n          window.location = `/errors/500?hl=${locale}`;\n        }\n      });\n  }\n  return Helper.instance()\n    .get(\n      `/challenges/${challengeId}/login_and_join?redirect_url=${window.location}`\n    )\n    .then((response) => {\n      const { data } = response;\n      if (data.redirect && data.redirectUrl) {\n        window.location = data.redirectUrl;\n      } else {\n        window.location = `/errors/500?hl=${locale}`;\n      }\n    });\n};\n\nHelper.events.trackChallengeClick = (id, element) => {\n  Analytics.trackV2({\n    action: 'click',\n    element,\n    category: 'challenges',\n    page: 'challenge_gallery',\n    properties: { challenge_id: id }\n  });\n};\n\nHelper.events.trackFilterChanged = (actionType, selectedFilters) => {\n  Analytics.trackV2({\n    action: 'click',\n    element: 'filter',\n    category: 'challenges',\n    page: 'challenge_gallery',\n    properties: { select_type: actionType, filter: selectedFilters }\n  });\n};\nexport default Helper;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"DropdownDatePicker--container--Gsl3M\",\"day\":\"DropdownDatePicker--day--SMWsK\",\"year\":\"DropdownDatePicker--year--imWte\",\"month\":\"DropdownDatePicker--month--PYgYy\",\"error\":\"DropdownDatePicker--error--93oPI\"};","import React, { useEffect, useRef } from 'react';\nimport ReactSelect from 'react-select';\nimport PropTypes, { number, string } from 'prop-types';\nimport { isMobile } from 'utils/generalUtils';\n\nimport { color } from '@strava/ui-tokens/js';\n\nconst StravaDropdownSelect = ({\n  name,\n  isFocused = false,\n  hasError = false,\n  value,\n  options,\n  ariaLabel,\n  className,\n  disabled = false,\n  onChange = () => {},\n  placeholder,\n  styles = {},\n  ...props\n}) => {\n  const ref = useRef(null);\n\n  useEffect(() => {\n    if (ref.current && isFocused) {\n      ref.current.focus();\n    }\n  }, [isFocused]);\n\n  const controlColor = (provided) =>\n    hasError ? color.colorExtendedRedR2 : provided.borderColor;\n\n  const controlBoxShadow = (provided, state) => {\n    if (hasError) {\n      return '';\n    }\n    if (state.isFocused) {\n      return `0 0 0 1px #${color.colorExtendedNeutralN2}`;\n    }\n    return provided.boxShadow;\n  };\n\n  const customStyles = (() => {\n    return {\n      indicatorSeparator: (provided) => ({\n        ...provided,\n        display: 'none'\n      }),\n      dropdownIndicator: (provided) => ({\n        ...provided,\n        padding: '2px'\n      }),\n      valueContainer: (provided) => ({\n        ...provided,\n        padding: '5px',\n        height: '50px',\n        fontSize: '17px',\n        color: controlColor(provided)\n      }),\n      control: (provided, state) => ({\n        ...provided,\n        borderColor: controlColor(provided),\n        boxShadow: controlBoxShadow(provided, state)\n      }),\n      ...styles\n    };\n  })();\n\n  const theme = (provided) => ({\n    ...provided,\n    colors: {\n      ...provided.colors,\n      primary25: color.colorExtendedNeutralN5,\n      primary: color.colorExtendedNeutralN2,\n      danger: color.colorExtendedRedR2\n    }\n  });\n\n  return (\n    <ReactSelect\n      classNamePrefix=\"react-select\"\n      ref={ref}\n      className={className}\n      options={options}\n      value={value}\n      onChange={onChange}\n      placeholder={placeholder}\n      styles={customStyles}\n      ariaLabel={ariaLabel}\n      data-cy={name}\n      name={name}\n      isDisabled={disabled}\n      isSearchable={!isMobile()}\n      theme={theme}\n      {...props}\n    />\n  );\n};\n\nconst optionProps = PropTypes.shape({\n  label: PropTypes.string,\n  value: PropTypes.oneOfType([number, string])\n});\n\nStravaDropdownSelect.propTypes = {\n  name: PropTypes.string.isRequired,\n  isFocused: PropTypes.bool,\n  hasError: PropTypes.bool,\n  value: optionProps,\n  disabled: PropTypes.bool,\n  ariaLabel: PropTypes.string.isRequired,\n  className: PropTypes.string,\n  options: PropTypes.arrayOf(optionProps).isRequired,\n  onChange: PropTypes.func,\n  placeholder: PropTypes.string,\n  styles: PropTypes.shape({})\n};\n\nexport default StravaDropdownSelect;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport I18n from 'utils/I18n';\nimport { isMobile, dateYearsAgo } from 'utils/generalUtils';\nimport { YOUNGEST_AGE_ON_PLATFORM } from 'constants/appConstants';\nimport { isNil } from 'lodash-es';\nimport styles from './styles.scss';\nimport StravaDropdownSelect from '../StravaDropdownSelect/StravaDropdownSelect';\n\nconst MIN_YEARS_BEFORE_TODAY = 125;\n\nconst I18N_MONTHS = (() => {\n  const prefix = 'templates.settings.months.';\n  return [\n    'jan',\n    'feb',\n    'mar',\n    'apr',\n    'may',\n    'jun',\n    'jul',\n    'aug',\n    'sep',\n    'oct',\n    'nov',\n    'dec'\n  ].map((m) => prefix + m);\n})();\n\nconst DropdownDatePicker = ({\n  className,\n  dateMax,\n  dateSelected,\n  dateChangeCallback,\n  erroredControls = [],\n  required = false,\n  disabled = false,\n  locale = window.navigator.userLanguage || window.navigator.language,\n  focusTarget,\n  enableDefaultFocus = false\n}) => {\n  // IMPORTANT - using defaultProps does not reflect the mocked global system date\n  // that unit tests need for this component uses.\n  // ie. new Date() initiated using defaultProps is always the current date while\n  // new Date() in the mounted react would be the mocked date.\n  //\n  // Setting a custom date during tests if very important for this component since\n  // we need to be able to test specific scenarios at any time. Because of this need,\n  // maxDate default is being handled inside the mounted component.\n  // Also, reactjs seems to be on the path to deprecate defaultProps - https://github.com/jsx-eslint/eslint-plugin-react/issues/2396\n  // so this approach aligns more with how the future of reactjs will look like.\n  const correctedDateMax = isNil(dateMax)\n    ? dateYearsAgo(YOUNGEST_AGE_ON_PLATFORM)\n    : dateMax;\n\n  const [day, setDay] = useState(dateSelected ? dateSelected.getDate() : null);\n  const [month, setMonth] = useState(\n    dateSelected ? dateSelected.getMonth() + 1 : null\n  ); // UI January => numeric value 1\n  const [year, setYear] = useState(\n    dateSelected ? dateSelected.getFullYear() : null\n  );\n\n  const yearMax = correctedDateMax.getFullYear();\n  const monthMax = correctedDateMax.getMonth() + 1; // UI January => numeric value is 1\n\n  // DD\n  const daySelectDefault = I18n.t(\n    'templates.settings.birthday_select_defaults.day'\n  );\n  // MM or MONTH\n  const monthSelectDefault = isMobile()\n    ? I18n.t('templates.settings.birthday_select_defaults.month')\n    : I18n.t('templates.settings.birthday_select_defaults.month_full');\n  // YYYY\n  const yearSelectDefault = I18n.t(\n    'templates.settings.birthday_select_defaults.year'\n  );\n\n  /**\n   *  Helper function\n   *  given, min =5, max =7 returns array [5,6,7]\n   */\n  const intArray = (min, max) =>\n    Array.from({ length: max - min + 1 }, (_, i) => i + min);\n\n  /**\n   * Number in days in a given month for a specific year.\n   */\n  const numDaysInMonth = (y, m) => new Date(y, m, 0).getDate();\n\n  const blankOption = { label: '', value: '' };\n\n  /**\n   * Day options that an athlete can choose from the day dropdown\n   */\n  const dayOptions = (() => {\n    const options = required ? [] : [blankOption];\n    intArray(\n      1,\n      year === yearMax && month === monthMax\n        ? correctedDateMax.getDate()\n        : numDaysInMonth(year, month)\n    ).forEach((d) => {\n      options.push({ label: d.toString(), value: d });\n    });\n    return options;\n  })();\n\n  /**\n   * Localized Month options that an athlete can choose from the month dropdown\n   *\n   * Note: January => 1 and December => 12, Unlike JS Date where January => 0\n   */\n  const monthOptions = (() => {\n    const options = required ? [] : [blankOption];\n    intArray(1, year === yearMax ? monthMax : 12).forEach((m) => {\n      const label = isMobile() ? m.toString() : I18n.t(I18N_MONTHS[m - 1]);\n      options.push({ label, value: m });\n    });\n    return options;\n  })();\n\n  /**\n   * Year options that an athlete can choose from the year dropdown\n   */\n  const yearOptions = (() => {\n    const options = required ? [] : [blankOption];\n    intArray(\n      correctedDateMax.getFullYear() - MIN_YEARS_BEFORE_TODAY,\n      correctedDateMax.getFullYear()\n    )\n      .reverse() // descending order - current year first\n      .forEach((y) => {\n        options.push({ label: y.toString(), value: y });\n      });\n    return options;\n  })();\n\n  const handleYearChange = (option) => {\n    const newYear = option.value;\n    setYear(newYear);\n    let newDay = day;\n    let newMonth = month;\n    if (day > numDaysInMonth(newYear, month)) {\n      newDay = null;\n      setDay(newDay); // clear out the selected day\n    }\n    if (newYear === yearMax && month > monthMax) {\n      newMonth = null;\n      setMonth(newMonth); // clear out the month field (this avoids dates that are before the dateMax from being entered)\n    }\n    dateChangeCallback({ month: newMonth, day: newDay, year: newYear });\n  };\n\n  const handleMonthChange = (option) => {\n    const newMonth = option.value;\n    setMonth(newMonth);\n    let newDay = day;\n    if (day > numDaysInMonth(year, newMonth)) {\n      newDay = null;\n      setDay(newDay); // clear out the selected day\n    }\n    dateChangeCallback({ month: newMonth, day: newDay, year });\n  };\n\n  const handleDayChange = (option) => {\n    const newDay = option.value;\n    setDay(newDay);\n    dateChangeCallback({ month, day: newDay, year });\n  };\n\n  /**\n   * The date control that gains focus\n   */\n  const defaultFocus = (() => {\n    if (enableDefaultFocus) {\n      switch (locale) {\n        case 'en-US':\n          return 'month';\n        case 'ko-KR':\n        case 'ja-JP':\n          return 'year';\n        default:\n          return 'day';\n      }\n    }\n    return null;\n  })();\n\n  const monthSelector = (\n    <StravaDropdownSelect\n      disabled={disabled}\n      key=\"month\"\n      name=\"month\"\n      className={styles.month}\n      options={monthOptions}\n      value={monthOptions.find((o) => o.value === month)}\n      onChange={handleMonthChange}\n      placeholder={monthSelectDefault}\n      ariaLabel={monthSelectDefault}\n      data-cy=\"month\"\n      hasError={erroredControls.includes('month')}\n      isFocused={[focusTarget, defaultFocus].includes('month')}\n    />\n  );\n\n  const daySelector = (\n    <StravaDropdownSelect\n      disabled={disabled}\n      key=\"day\"\n      name=\"day\"\n      className={styles.day}\n      options={dayOptions}\n      value={dayOptions.find((o) => o.value === day)}\n      onChange={handleDayChange}\n      placeholder={daySelectDefault}\n      ariaLabel={daySelectDefault}\n      hasError={erroredControls.includes('day')}\n      isFocused={[focusTarget, defaultFocus].includes('day')}\n    />\n  );\n\n  const yearSelector = (\n    <StravaDropdownSelect\n      disabled={disabled}\n      key=\"year\"\n      name=\"year\"\n      className={styles.year}\n      options={yearOptions}\n      value={yearOptions.find((o) => o.value === year)}\n      onChange={handleYearChange}\n      placeholder={yearSelectDefault}\n      ariaLabel={yearSelectDefault}\n      hasError={erroredControls.includes('year')}\n      isFocused={[focusTarget, defaultFocus].includes('year')}\n    />\n  );\n\n  /**\n   * Determines date layout based on the language\n   */\n  const buildSelectors = () => {\n    switch (locale) {\n      case 'en-US':\n        return [monthSelector, daySelector, yearSelector];\n      case 'ko-KR':\n      case 'ja-JP':\n        return [yearSelector, monthSelector, daySelector];\n      default:\n        return [daySelector, monthSelector, yearSelector];\n    }\n  };\n\n  const classNames = [styles.container];\n  if (className) {\n    classNames.push(className);\n  }\n  return (\n    <div className={classNames.join(' ')} data-testid=\"date-picker-container\">\n      {buildSelectors()}\n    </div>\n  );\n};\n\nDropdownDatePicker.propTypes = {\n  className: PropTypes.string,\n  dateMax: PropTypes.instanceOf(Date),\n  dateSelected: PropTypes.instanceOf(Date),\n  dateChangeCallback: PropTypes.func.isRequired,\n  erroredControls: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year'])),\n  locale: PropTypes.string,\n  required: PropTypes.bool,\n  disabled: PropTypes.bool,\n  focusTarget: PropTypes.string,\n  enableDefaultFocus: PropTypes.bool\n};\n\nexport default DropdownDatePicker;\n","export { default } from './DropdownDatePicker';\n","// extracted by mini-css-extract-plugin\nexport default {\"modal\":\"AgeGateModal--modal--1Ti1K\",\"body\":\"AgeGateModal--body--qvB-5\",\"prompt-text\":\"AgeGateModal--prompt-text--c0JTN\",\"promptText\":\"AgeGateModal--prompt-text--c0JTN\",\"controls\":\"AgeGateModal--controls--VXwRS\",\"datepicker\":\"AgeGateModal--datepicker--3vk2o\",\"btn-modal-verify\":\"AgeGateModal--btn-modal-verify--BspCU\",\"btnModalVerify\":\"AgeGateModal--btn-modal-verify--BspCU\",\"btn-modal-dismiss\":\"AgeGateModal--btn-modal-dismiss--+UTrC\",\"btnModalDismiss\":\"AgeGateModal--btn-modal-dismiss--+UTrC\",\"denied-text\":\"AgeGateModal--denied-text--t3QME\",\"deniedText\":\"AgeGateModal--denied-text--t3QME\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Markup } from 'interweave';\n\nimport { Modal, ModalTitle, ModalBody, ModalActions } from '@strava/ui/Modal';\nimport { Button } from '@strava/ui/Button';\n\nimport I18n from 'utils/I18n';\n\nimport { YOUNGEST_AGE_ON_PLATFORM } from 'constants/appConstants';\nimport { dateYearsAgo } from 'utils/generalUtils';\nimport Helper from '../../../Show/components/ChallengeGalleryJoinButton/helper';\nimport GatingHelper from '../../helpers/gating_helper';\nimport DropdownDatePicker from '../../../../../components/shared/DropdownDatePicker';\n\nimport styles from './styles.scss';\n\nconst I18nPromptHeading = 'strava.challenges.age_gate.prompt.heading';\nconst I18nPromptText = 'strava.challenges.age_gate.prompt.text_html';\nconst I18nPromptCTA = 'strava.challenges.age_gate.prompt.cta';\nconst I18nPromptDismiss = 'strava.challenges.age_gate.prompt.dismiss';\nconst I18nPromptFooter = 'strava.challenges.age_gate.prompt.footer';\nconst I18nDeniedHeading = 'strava.challenges.age_gate.denied.heading';\nconst I18nDeniedText = 'strava.challenges.age_gate.denied.text';\nconst I18nDeniedDismiss = 'strava.challenges.age_gate.denied.dismiss';\n\nconst AgeGateModal = ({\n  handleModalClose,\n  handleDateSelectionChange,\n  handleDateUpdateInProgress,\n  handleDateUpdateSuccess,\n  handleDateUpdateFailure,\n  gatingModal,\n  currentAthlete,\n  locale\n}) => {\n  if (!gatingModal || !currentAthlete) {\n    return null;\n  }\n\n  const {\n    gatingConditions,\n    ageGate,\n    joinChallengeFn,\n    requestInProgress\n  } = gatingModal;\n\n  const { dateOfBirth } = currentAthlete;\n  const { minimumAge } = gatingConditions;\n\n  if (!minimumAge) {\n    return null;\n  }\n  if (\n    dateOfBirth &&\n    GatingHelper.dateFromString(dateOfBirth) > dateYearsAgo(minimumAge)\n  ) {\n    return (\n      <Modal\n        className={styles.modal}\n        isOpen={true}\n        onDismiss={handleModalClose}\n        aria-labelledby=\"age-gate-modal-title\"\n      >\n        <ModalTitle id=\"age-gate-modal-title\">\n          {I18n.t(I18nDeniedHeading, gatingConditions)}\n        </ModalTitle>\n        <ModalBody className={styles.deniedText}>\n          {I18n.t(I18nDeniedText, gatingConditions)}\n        </ModalBody>\n        <ModalActions className={styles.controls}>\n          <Button\n            name=\"cancel\"\n            variant=\"primary\"\n            type=\"button\"\n            disabled={requestInProgress}\n            onClick={handleModalClose}\n          >\n            {I18n.t(I18nDeniedDismiss)}\n          </Button>\n        </ModalActions>\n      </Modal>\n    );\n  }\n\n  const handleVerify = () => {\n    const { dateSelected } = ageGate;\n    const { id } = currentAthlete;\n\n    const url = `/athletes/${id}`;\n    const payload = {\n      athlete: {\n        'dateofbirth(1i)': dateSelected.getFullYear(),\n        'dateofbirth(2i)': dateSelected.getMonth() + 1,\n        'dateofbirth(3i)': dateSelected.getDate()\n      }\n    };\n\n    handleDateUpdateInProgress();\n\n    return Helper.instance()\n      .put(url, payload, { headers: { Accept: 'text/javascript' } })\n      .then(() => {\n        handleDateUpdateSuccess(dateSelected);\n        if (\n          dateSelected > GatingHelper.dateYearsAgo(gatingConditions.minimumAge)\n        ) {\n          return;\n        }\n        joinChallengeFn();\n      })\n      .catch(() => handleDateUpdateFailure());\n  };\n\n  const dateSelected = ageGate && ageGate.dateSelected;\n  const dateMax = dateYearsAgo(YOUNGEST_AGE_ON_PLATFORM);\n\n  return (\n    <Modal\n      className={styles.modal}\n      isOpen={true}\n      onDismiss={handleModalClose}\n      aria-labelledby=\"age-gate-modal-title\"\n    >\n      <ModalTitle id=\"age-gate-modal-title\">\n        {I18n.t(I18nPromptHeading, gatingConditions)}\n      </ModalTitle>\n      <ModalBody className={styles.body}>\n        <p className={styles.promptText}>\n          <Markup tagName=\"span\" content={I18n.t(I18nPromptText)} />\n        </p>\n\n        <div className={styles.controls}>\n          <DropdownDatePicker\n            className={styles.datepicker}\n            disabled={requestInProgress}\n            dateSelected={dateSelected}\n            dateChangeCallback={(obj) => {\n              const { month, day, year } = obj;\n              let date;\n              if (!month || !day || !year) {\n                // Force the athlete DOB to be the minimum required date if a date less than the strava minimum age requirement was entered\n                // There is an opportunity to handle this differently here:\n                // possible alternatives - show an error message?, make drop-downs not required which would allow them\n                // to be cleared in this scenario and we can show error state on them (red border) ...\n                // This comment was added on update that changed the date-picker component used without modifying\n                // current existing business logic.\n                date = dateMax;\n              } else {\n                date = new Date(year, month - 1, day); // UI Jan => 1\n              }\n              handleDateSelectionChange(date);\n            }}\n            locale={locale}\n            required={true}\n            isSearchable={true}\n            showFullMonth={true}\n          />\n          <Button\n            name=\"verify\"\n            variant=\"primary\"\n            className={styles.btnModalVerify}\n            disabled={requestInProgress}\n            onClick={handleVerify}\n          >\n            {I18n.t(I18nPromptCTA)}\n          </Button>\n          <Button\n            name=\"cancel\"\n            className={styles.btnModalDismiss}\n            disabled={requestInProgress}\n            onClick={handleModalClose}\n          >\n            {I18n.t(I18nPromptDismiss)}\n          </Button>\n        </div>\n        <small>{I18n.t(I18nPromptFooter, gatingConditions)}</small>\n      </ModalBody>\n    </Modal>\n  );\n};\n\nAgeGateModal.propTypes = {\n  handleModalClose: PropTypes.func.isRequired,\n  handleDateSelectionChange: PropTypes.func.isRequired,\n  handleDateUpdateInProgress: PropTypes.func.isRequired,\n  handleDateUpdateSuccess: PropTypes.func.isRequired,\n  handleDateUpdateFailure: PropTypes.func.isRequired,\n  gatingModal: PropTypes.shape({\n    joinChallengeFn: PropTypes.func.isRequired,\n    gatingConditions: PropTypes.shape({\n      minimumAge: PropTypes.number\n    }).isRequired,\n    ageGate: {\n      dateSelected: PropTypes.instanceOf(Date)\n    }.isRequired,\n    requestInProgress: PropTypes.bool.isRequired\n  }),\n  currentAthlete: PropTypes.shape({\n    id: PropTypes.number.isRequired,\n    dateOfBirth: PropTypes.string\n  }),\n  locale: PropTypes.string.isRequired\n};\n\nexport default AgeGateModal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Analytics from 'utils/analytics';\nimport I18n from 'utils/I18n';\n\nimport { connect } from 'react-redux';\n\nimport InviteFriends from './InviteFriends';\nimport ChallengeJoinButton from './ChallengeJoinButton';\nimport DataGrid from '../DataGrid';\n\nimport styles from './styles.scss';\nimport AgeGateModal from '../../../shared/components/AgeGateModal';\nimport {\n  handleModalClose,\n  handleDateSelectionChange,\n  handleDateUpdateInProgress,\n  handleDateUpdateSuccess,\n  handleDateUpdateFailure\n} from '../../actions';\n\nexport const I18nPrefix = 'strava.challenges.challenge_detail';\n\nexport const TopSidebar = ({\n  currentAthlete,\n  header,\n  challengeId,\n  ended,\n  joined,\n  externalJoinUrl,\n  completed,\n  rewardUrl = '',\n  rewardButtonText,\n  loggedIn,\n  participantCount,\n  auxiliaryStats,\n  teamStats,\n  gatingConditions,\n  gatingModal,\n  onHandleModalClose,\n  onHandleDateSelectionChange,\n  onHandleDateUpdateInProgress,\n  onHandleDateUpdateSuccess,\n  onHandleDateUpdateFailure,\n  locale,\n  onlyTeamStats = false,\n  showTeamStats\n}) => {\n  function trackRewardAnalytics() {\n    Analytics.trackV2({\n      action: 'click',\n      category: 'challenges',\n      element: 'redeem_reward',\n      page: 'challenge_details',\n      properties: { challenge_id: challengeId }\n    });\n  }\n\n  function redeemReward() {\n    return (\n      <a\n        key=\"rewardButton\"\n        href={rewardUrl}\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        onClick={trackRewardAnalytics}\n        className={`btn btn-primary btn-sm btn-block text-footnote text-bold ${styles.button}`}\n      >\n        {rewardButtonText}\n      </a>\n    );\n  }\n\n  function inviteFriends(outline) {\n    if (!loggedIn) {\n      return null;\n    }\n\n    return (\n      <InviteFriends\n        key=\"inviteFriends\"\n        outline={outline}\n        challengeId={challengeId}\n        currentAthlete={currentAthlete}\n        challengeName={header.name}\n        challengeLogoUrl={header.challengeLogoUrl}\n      />\n    );\n  }\n\n  function moreChallenges(outline) {\n    return (\n      <a\n        key=\"moreChallenges\"\n        href=\"/challenges\"\n        className={`btn btn-primary btn-sm btn-block text-footnote text-bold ${\n          styles.button\n        } ${outline && 'btn-outline'}`}\n      >\n        {I18n.t(`${I18nPrefix}.more_challenges`)}\n      </a>\n    );\n  }\n\n  function joinButton() {\n    return (\n      <ChallengeJoinButton\n        key=\"joinButton\"\n        {...{\n          challengeId,\n          currentAthlete,\n          joined,\n          loggedIn,\n          externalJoinUrl,\n          gatingConditions\n        }}\n      />\n    );\n  }\n\n  function buttonGroup() {\n    if (!joined) {\n      return ended ? [moreChallenges()] : [joinButton(), inviteFriends(true)];\n    }\n    if (!completed) {\n      return ended ? [moreChallenges()] : [joinButton(), inviteFriends()];\n    }\n    if (rewardUrl) {\n      return ended\n        ? [redeemReward(), moreChallenges(true)]\n        : [redeemReward(), inviteFriends(true)];\n    }\n    return ended ? [moreChallenges()] : [moreChallenges(), inviteFriends(true)];\n  }\n\n  function overallStatsHeading() {\n    if (auxiliaryStats.length > 0) {\n      return (\n        <h2 className={`text-headline ${styles.header}`}>\n          {I18n.t(`${I18nPrefix}.overall_stats`)}\n        </h2>\n      );\n    }\n    return null;\n  }\n\n  function overallStats() {\n    if (auxiliaryStats.length > 0) {\n      return (\n        <div className={styles.dataGrid}>\n          {auxiliaryStats && (\n            <DataGrid\n              dataGrid={auxiliaryStats}\n              containerClass={styles.statsRow}\n            />\n          )}\n        </div>\n      );\n    }\n    return null;\n  }\n\n  function teamStatsHeading() {\n    if (showTeamStats && teamStats.length > 0) {\n      return (\n        <h2 className={`text-headline ${styles.header}`}>\n          {I18n.t(`${I18nPrefix}.team_stats`)}\n        </h2>\n      );\n    }\n    return null;\n  }\n\n  function teamStatsList() {\n    if (teamStats.length > 0) {\n      return (\n        <div className={styles.dataGrid}>\n          {teamStats && (\n            <DataGrid dataGrid={teamStats} containerClass={styles.statsRow} />\n          )}\n        </div>\n      );\n    }\n    return null;\n  }\n\n  if (onlyTeamStats) {\n    return (\n      <p className={styles.container}>\n        {teamStatsHeading()}\n        {teamStatsList()}\n      </p>\n    );\n  }\n  return (\n    <div className={styles.container}>\n      <div className={styles.buttonGroup}>{buttonGroup()}</div>\n      <div className={styles.dataGrid}>\n        {participantCount && teamStats.length === 0 && (\n          <DataGrid dataGrid={participantCount} />\n        )}\n      </div>\n      {overallStatsHeading()}\n      {overallStats()}\n      {showTeamStats && teamStatsHeading()}\n      {showTeamStats && teamStatsList()}\n      <AgeGateModal\n        handleModalClose={onHandleModalClose}\n        handleDateSelectionChange={onHandleDateSelectionChange}\n        handleDateUpdateInProgress={onHandleDateUpdateInProgress}\n        handleDateUpdateSuccess={onHandleDateUpdateSuccess}\n        handleDateUpdateFailure={onHandleDateUpdateFailure}\n        currentAthlete={currentAthlete}\n        gatingModal={gatingModal}\n        locale={locale}\n      />\n    </div>\n  );\n};\n\nTopSidebar.propTypes = {\n  currentAthlete: PropTypes.shape({}),\n  header: PropTypes.shape({\n    name: PropTypes.string.isRequired,\n    challengeLogoUrl: PropTypes.string.isRequired\n  }).isRequired,\n  challengeId: PropTypes.number.isRequired,\n  ended: PropTypes.bool.isRequired,\n  joined: PropTypes.bool.isRequired,\n  externalJoinUrl: PropTypes.string,\n  completed: PropTypes.bool.isRequired,\n  rewardUrl: PropTypes.string,\n  rewardButtonText: PropTypes.string.isRequired,\n  loggedIn: PropTypes.bool.isRequired,\n  participantCount: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n  auxiliaryStats: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n  teamStats: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n  gatingConditions: PropTypes.shape({}),\n  gatingModal: PropTypes.shape({}),\n  onHandleModalClose: PropTypes.func.isRequired,\n  onHandleDateSelectionChange: PropTypes.func.isRequired,\n  onHandleDateUpdateInProgress: PropTypes.func.isRequired,\n  onHandleDateUpdateSuccess: PropTypes.func.isRequired,\n  onHandleDateUpdateFailure: PropTypes.func.isRequired,\n  locale: PropTypes.string.isRequired,\n  onlyTeamStats: PropTypes.bool,\n  showTeamStats: PropTypes.bool.isRequired\n};\n\nexport default connect(\n  (state) => ({\n    currentAthlete: state.currentAthlete,\n    header: state.header,\n    challengeId: state.challengeId,\n    ended: state.ended,\n    joined: state.joined,\n    externalJoinUrl: state.externalJoinUrl,\n    completed: state.completed,\n    rewardUrl: state.rewardUrl,\n    rewardButtonText: state.rewardButtonText,\n    loggedIn: state.loggedIn,\n    participantCount: state.participantCount,\n    auxiliaryStats: state.auxiliaryStats,\n    teamStats: state.teamStats,\n    gatingConditions: state.gatingConditions,\n    gatingModal: state.gatingModal\n  }),\n  {\n    onHandleModalClose: handleModalClose,\n    onHandleDateSelectionChange: handleDateSelectionChange,\n    onHandleDateUpdateInProgress: handleDateUpdateInProgress,\n    onHandleDateUpdateSuccess: handleDateUpdateSuccess,\n    onHandleDateUpdateFailure: handleDateUpdateFailure\n  }\n)(TopSidebar);\n","// extracted by mini-css-extract-plugin\nexport default {\"header\":\"Show--header--NWmC-\",\"top-row\":\"Show--top-row--siFxa\",\"topRow\":\"Show--top-row--siFxa\",\"bottom-row\":\"Show--bottom-row--slCyt\",\"bottomRow\":\"Show--bottom-row--slCyt\",\"team-challenge-row\":\"Show--team-challenge-row--NG-cs\",\"teamChallengeRow\":\"Show--team-challenge-row--NG-cs\",\"achievements\":\"Show--achievements--Wa45Y\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Provider } from 'react-redux';\nimport { createStore, applyMiddleware } from 'redux';\n\nimport thunk from 'redux-thunk';\n\nimport Analytics from 'utils/analytics';\n\nimport reducer from './reducers';\n\nimport Achievements from './components/Achievements';\nimport Club from './components/Club';\nimport Header from './components/Header';\nimport Summary from '../shared/components/Summary';\nimport CollapsibleSection from '../shared/components/CollapsibleSection';\nimport Followers from './components/Followers';\nimport Progress from './components/Progress';\nimport TopSidebar from './components/TopSidebar';\n\nimport styles from './styles.scss';\nimport ProgressBar from '../shared/components/ProgressBar';\n\nclass Show extends React.Component {\n  store = createStore(reducer, { ...this.props }, applyMiddleware(thunk));\n\n  componentDidMount() {\n    const { challengeId } = this.props;\n\n    Analytics.trackV2({\n      action: 'screen_enter',\n      category: 'challenges',\n      page: 'challenge_details',\n      properties: { challenge_id: challengeId }\n    });\n  }\n\n  render() {\n    const {\n      challengeId,\n      activityType,\n      club,\n      header,\n      sections,\n      followersInChallenge,\n      summary,\n      achievements,\n      currentAthlete,\n      joined,\n      locale,\n      teamProgressBar\n    } = this.props;\n\n    return (\n      <Provider store={this.store}>\n        <main role=\"main\">\n          <Header className={`${styles.header}`} {...header} />\n          <div className={`container ${styles.topRow}`}>\n            <div className=\"col-md-push-8 col-md-4 col-sm-12 mb-xl\">\n              <TopSidebar\n                locale={locale}\n                showTeamStats={teamProgressBar === null}\n              />\n            </div>\n            <div className=\"col-md-pull-4 col-md-7 col-sm-12\">\n              <Progress />\n              <Summary summary={summary} />\n              {followersInChallenge && (\n                <Followers\n                  {...followersInChallenge}\n                  challengeId={challengeId}\n                  challengeLogo={header.challengeLogoUrl}\n                  challengeName={header.name}\n                />\n              )}\n            </div>\n          </div>\n          <div className={`container ${styles.teamChallengeRow}`}>\n            <div className=\"col-md-push-8 col-md-4 col-sm-12 mb-xl\">\n              {teamProgressBar && (\n                <TopSidebar\n                  locale={locale}\n                  onlyTeamStats={true}\n                  showTeamStats={true}\n                />\n              )}\n            </div>\n            <div className=\"col-md-pull-4 col-md-7 col-sm-12\">\n              <div className=\"mb-xl\">\n                {teamProgressBar && <ProgressBar {...teamProgressBar.data} />}\n              </div>\n            </div>\n          </div>\n          <div className={`container ${styles.bottomRow}`}>\n            <div className=\"col-md-7 col-sm-12\">\n              <CollapsibleSection\n                challengeId={challengeId}\n                activityType={activityType}\n                sections={sections}\n                currentAthlete={currentAthlete}\n                joined={joined}\n              />\n            </div>\n            <div className=\"col-md-offset-1 col-md-4 col-sm-12\">\n              {achievements && (\n                <Achievements\n                  className={club && styles.achievements}\n                  {...achievements}\n                />\n              )}\n              {club && <Club className=\"club\" />}\n            </div>\n          </div>\n        </main>\n      </Provider>\n    );\n  }\n}\n\nShow.propTypes = {\n  challengeId: PropTypes.number.isRequired,\n  activityType: PropTypes.string.isRequired,\n  loggedIn: PropTypes.bool.isRequired,\n  joined: PropTypes.bool.isRequired,\n  ended: PropTypes.bool.isRequired,\n  header: PropTypes.shape({\n    challengeLogoUrl: PropTypes.string.isRequired,\n    name: PropTypes.string.isRequired,\n    coverImageUrl: PropTypes.string.isRequired,\n    logoTitleText: PropTypes.string.isRequired,\n    coverTitleText: PropTypes.string.isRequired,\n    subtitle: PropTypes.string.isRequired\n  }).isRequired,\n  club: PropTypes.shape({}),\n  sections: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n  followersInChallenge: PropTypes.shape({}),\n  summary: PropTypes.shape({}).isRequired,\n  achievements: PropTypes.shape({}),\n  gatingConditions: PropTypes.shape({}),\n  currentAthlete: PropTypes.shape({}),\n  gatingModal: PropTypes.shape({}), // optional object that describes the (age) gating modal\n  locale: PropTypes.string.isRequired,\n  teamProgressBar: PropTypes.shape({\n    streaksCalendar: PropTypes.bool.isRequired,\n    data: PropTypes.shape({}).isRequired\n  }) // optional object present if challenge has both individual and team goals\n};\n\nexport default Show;\n","// extracted by mini-css-extract-plugin\nexport default {\"modal\":\"MapVisModal--modal--VRgqs\",\"title\":\"MapVisModal--title--7te2N\",\"description\":\"MapVisModal--description--Ena1A\",\"button\":\"MapVisModal--button--pY9v4\"};","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n  Modal,\n  ModalHeroImage,\n  ModalTitle,\n  ModalBody,\n  ModalActions\n} from '@strava/ui/Modal';\nimport { Button } from '@strava/ui/Button';\n\nimport I18n from 'utils/I18n';\nimport createNetworkingClient from 'utils/networking-client';\nimport { trackV2 } from 'utils/analytics';\n\nimport polylineImage from './assets/start-hidden.png';\nimport styles from './styles.scss';\n\nconst MapVisModal = ({ paths }) => {\n  const units = I18n.measurementUnits();\n  const i18nPrefix = 'templates.feed.map_visibility_modal.safe_by_default.';\n  const modalTitleText = I18n.t(`${i18nPrefix}title`);\n  const modalBodyText = I18n.t(`${i18nPrefix}description_${units}`);\n\n  const modalButtonText = I18n.t(`${i18nPrefix}button_primary`);\n  const modalButtonEmphasis = 'primary';\n  const modalButtonTextSecondary = I18n.t(`${i18nPrefix}button_secondary`);\n  const modalButtonSecondaryEmphasis = 'text';\n\n  const trackEventProperties = { cta: 'hide_start_end_opt_out' };\n  const trackEvent = (action, element = null, properties = null) => {\n    trackV2({\n      category: 'privacy_settings',\n      page: 'map_visibility_modal',\n      action,\n      ...(element && { element }),\n      ...(properties && { properties })\n    });\n  };\n\n  useEffect(() => {\n    trackEvent('screen_enter', null, trackEventProperties);\n  }, []);\n  const [isOpen, setIsOpen] = useState(true);\n  const closeModal = () => setIsOpen(false);\n\n  const updateImpressionCapping = () => {\n    createNetworkingClient().post(paths.dismissModalPath, {\n      promo: 'map_visibility_feed_coachmark_or_modal_dismissed'\n    });\n  };\n\n  const handlePrimarySubmit = (e) => {\n    e.preventDefault();\n    trackEvent('click', 'looks_good', trackEventProperties);\n    updateImpressionCapping();\n    closeModal();\n  };\n\n  const handleSecondarySubmit = (e) => {\n    e.preventDefault();\n    trackEvent('click', 'customize', trackEventProperties);\n    window.location.href = paths.hideAnywherePath;\n    updateImpressionCapping();\n    closeModal();\n  };\n\n  const dismissModal = () => {\n    trackEvent('click', 'dismiss', trackEventProperties);\n    updateImpressionCapping();\n    closeModal();\n  };\n\n  return (\n    <Modal\n      isOpen={isOpen}\n      onDismiss={dismissModal}\n      hasClose={true}\n      className={styles.modal}\n      aria-labelledby=\"map-vis-modal-title\"\n    >\n      <ModalHeroImage\n        src={polylineImage}\n        alt={I18n.t('templates.feed.map_visibility_modal.modal_image')}\n      />\n      <ModalTitle className={styles.title} id=\"map-vis-modal-title\">\n        {modalTitleText}\n      </ModalTitle>\n      <ModalBody>\n        <div className={styles.description}>{modalBodyText}</div>\n      </ModalBody>\n      <ModalActions style={{ justifyContent: 'space-between' }}>\n        <Button\n          className={styles.button}\n          variant={modalButtonEmphasis}\n          type=\"button\"\n          onClick={handlePrimarySubmit}\n        >\n          {modalButtonText}\n        </Button>\n        <Button\n          className={styles.button}\n          variant={modalButtonSecondaryEmphasis}\n          type=\"button\"\n          onClick={handleSecondarySubmit}\n        >\n          {modalButtonTextSecondary}\n        </Button>\n      </ModalActions>\n    </Modal>\n  );\n};\n\nMapVisModal.propTypes = {\n  paths: PropTypes.shape({\n    settingsPath: PropTypes.string,\n    hideAnywherePath: PropTypes.string,\n    dismissModalPath: PropTypes.string\n  }).isRequired\n};\n\nexport default MapVisModal;\n","export { default } from './MapVisModal';\n","// extracted by mini-css-extract-plugin\nexport default {\"card\":\"SegmentDetailsSideBar--card--cOh-u\",\"title\":\"SegmentDetailsSideBar--title--gV4Yh\",\"data\":\"SegmentDetailsSideBar--data--q+aH7\",\"action-link\":\"SegmentDetailsSideBar--action-link--5PFSK\",\"actionLink\":\"SegmentDetailsSideBar--action-link--5PFSK\"};","// extracted by mini-css-extract-plugin\nexport default {\"row-container\":\"AvatarWithDataRow--row-container--TMoIe\",\"rowContainer\":\"AvatarWithDataRow--row-container--TMoIe\",\"row-data\":\"AvatarWithDataRow--row-data--gcnuL\",\"rowData\":\"AvatarWithDataRow--row-data--gcnuL\",\"avatar-border\":\"AvatarWithDataRow--avatar-border--eA0+I\",\"avatarBorder\":\"AvatarWithDataRow--avatar-border--eA0+I\",\"call-out-row\":\"AvatarWithDataRow--call-out-row--FI8f-\",\"callOutRow\":\"AvatarWithDataRow--call-out-row--FI8f-\",\"call-out-achievement\":\"AvatarWithDataRow--call-out-achievement--Hn01-\",\"callOutAchievement\":\"AvatarWithDataRow--call-out-achievement--Hn01-\",\"call-out-effort\":\"AvatarWithDataRow--call-out-effort--cfToQ\",\"callOutEffort\":\"AvatarWithDataRow--call-out-effort--cfToQ\",\"call-out-icon\":\"AvatarWithDataRow--call-out-icon--g+1u5\",\"callOutIcon\":\"AvatarWithDataRow--call-out-icon--g+1u5\",\"call-out-date\":\"AvatarWithDataRow--call-out-date--UDQ3M\",\"callOutDate\":\"AvatarWithDataRow--call-out-date--UDQ3M\",\"data-value-pair\":\"AvatarWithDataRow--data-value-pair--TKShC\",\"dataValuePair\":\"AvatarWithDataRow--data-value-pair--TKShC\"};","// extracted by mini-css-extract-plugin\nexport default {\"effort-count\":\"ExcludedSegmentEffortsItem--effort-count--UzlWP\",\"effortCount\":\"ExcludedSegmentEffortsItem--effort-count--UzlWP\",\"excluded-efforts-btn\":\"ExcludedSegmentEffortsItem--excluded-efforts-btn--JScHB\",\"excludedEffortsBtn\":\"ExcludedSegmentEffortsItem--excluded-efforts-btn--JScHB\",\"data-value-pair\":\"ExcludedSegmentEffortsItem--data-value-pair--2-HmO\",\"dataValuePair\":\"ExcludedSegmentEffortsItem--data-value-pair--2-HmO\",\"call-out-achievement\":\"ExcludedSegmentEffortsItem--call-out-achievement--wMu0u\",\"callOutAchievement\":\"ExcludedSegmentEffortsItem--call-out-achievement--wMu0u\",\"call-out-effort\":\"ExcludedSegmentEffortsItem--call-out-effort--wi6zJ\",\"callOutEffort\":\"ExcludedSegmentEffortsItem--call-out-effort--wi6zJ\"};","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport I18n from 'utils/I18n';\nimport { trackV2 } from 'utils/analytics';\nimport createNetworkingClient from 'utils/networking-client';\nimport { Button } from '@strava/ui/Button';\nimport { Spinner } from '@strava/ui/Spinner';\nimport styles from './styles.scss';\n\nimport ExcludedSegmentEffortsModal from '../../../ExcludedSegmentEffortsModal';\n\nconst ExcludedSegmentEffortsItem = ({ entity, id }) => {\n  const [isLoading, setIsLoading] = useState(true);\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [flaggedEfforts, setFlaggedEfforts] = useState([]);\n  const [speedUnit, setSpeedUnit] = useState(null);\n\n  useEffect(() => {\n    const fetchData = async () => {\n      const url = '/frontend/segments/excluded_efforts';\n      const params = { params: { entity, id } };\n      createNetworkingClient()\n        .get(url, params)\n        .then(({ data }) => {\n          setFlaggedEfforts(data.flagged_efforts);\n          setSpeedUnit(data.speed_unit);\n        })\n        .catch(() => {})\n        .finally(() => {\n          setIsLoading(false);\n        });\n    };\n\n    fetchData();\n  }, [entity, id]);\n\n  useEffect(() => {\n    if (flaggedEfforts.length > 0) {\n      trackV2({\n        action: 'screen_enter',\n        element: 'excluded_efforts',\n        category: 'segments',\n        page: 'segment_detail'\n      });\n    }\n  }, [flaggedEfforts]);\n\n  const spinner = (\n    <div className={styles.spinner}>\n      <Spinner />\n    </div>\n  );\n\n  const openModal = () => {\n    setIsModalOpen(true);\n    trackV2({\n      action: 'click',\n      element: 'excluded_efforts',\n      category: 'segments',\n      page: 'segment_detail'\n    });\n    trackV2({\n      action: 'screen_enter',\n      category: 'segments',\n      page: 'excluded_efforts'\n    });\n  };\n\n  const closeModal = () => {\n    setIsModalOpen(false);\n    trackV2({\n      action: 'screen_exit',\n      category: 'segments',\n      page: 'excluded_efforts'\n    });\n  };\n\n  const item = (\n    <li key=\"excluded-efforts\">\n      <div className={styles.dataValuePair}>\n        <div className={styles.callOutAchievement}>\n          {I18n.t(\n            'strava.labs.activities.segments_view.excluded_efforts.heading'\n          )}\n        </div>\n        <div className={styles.callOutEffort}>\n          {`- `}\n          <Button\n            variant=\"text\"\n            className={styles.excludedEffortsBtn}\n            type=\"button\"\n            onClick={openModal}\n          >\n            {flaggedEfforts.length}\n          </Button>\n        </div>\n        <ExcludedSegmentEffortsModal\n          entity={entity}\n          id={id}\n          flaggedEfforts={flaggedEfforts}\n          speedUnit={speedUnit}\n          isModalOpen={isModalOpen}\n          onDismiss={closeModal}\n        />\n      </div>\n    </li>\n  );\n\n  if (isLoading) {\n    return spinner;\n  }\n  if (flaggedEfforts.length > 0) {\n    return item;\n  }\n  return null;\n};\n\nExcludedSegmentEffortsItem.propTypes = {\n  entity: PropTypes.string.isRequired,\n  id: PropTypes.number.isRequired\n};\n\nexport default ExcludedSegmentEffortsItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Avatar } from '@strava/ui/Avatar';\nimport styles from './styles.scss';\n\nimport ExcludedSegmentEffortsItem from '../ExcludedSegmentEffortsItem';\n\nconst AvatarWithDataRow = ({\n  data,\n  achievementIcon,\n  loadExcludedEfforts = false,\n  segmentId\n}) => {\n  return (\n    <div className={styles.rowContainer}>\n      <div className={styles.rowAvatar}>\n        <Avatar\n          name={data.name}\n          src={data.profile}\n          href={`/athletes/${data.id}`}\n          type=\"athlete\"\n          size=\"large\"\n          className={styles.avatarBorder}\n        />\n      </div>\n      <div className={styles.rowData}>\n        {data.name && <div>{data.name}</div>}\n        <div className={styles.callOutRow}>\n          {achievementIcon && (\n            <div className={styles.callOutIcon}>{achievementIcon}</div>\n          )}\n          <ul>\n            {data.stats.map((entry) => (\n              <li key={entry.label}>\n                <div className={styles.dataValuePair}>\n                  <div className={styles.callOutAchievement}>{entry.label}</div>\n                  <div\n                    className={styles.callOutEffort}\n                    // eslint-disable-next-line react/no-danger\n                    dangerouslySetInnerHTML={{\n                      __html: entry.value ? `- ${entry.value}` : '--'\n                    }}\n                  />\n                </div>\n              </li>\n            ))}\n            {loadExcludedEfforts && (\n              <ExcludedSegmentEffortsItem entity=\"segment\" id={segmentId} />\n            )}\n          </ul>\n\n          {data.date && (\n            <div className={`text-caption2 ${styles.callOutDate}`}>\n              <a\n                href={`/activities/${data.activityId}#${data.segmentEffortId}`}\n              >\n                {data.date}\n              </a>\n            </div>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nAvatarWithDataRow.propTypes = {\n  achievementIcon: PropTypes.element,\n  data: PropTypes.shape({\n    segmentEffortId: PropTypes.number,\n    activityId: PropTypes.number,\n    name: PropTypes.string,\n    profile: PropTypes.string,\n    id: PropTypes.number,\n    date: PropTypes.string,\n    stats: PropTypes.array,\n    segmentId: PropTypes.string\n  }).isRequired,\n  loadExcludedEfforts: PropTypes.bool,\n  segmentId: PropTypes.number\n};\n\nexport default AvatarWithDataRow;\n","// extracted by mini-css-extract-plugin\nexport default {\"url-label\":\"CardActionsSection--url-label--t8PS6\",\"urlLabel\":\"CardActionsSection--url-label--t8PS6\",\"link-with-caret\":\"CardActionsSection--link-with-caret--ZDp2b\",\"linkWithCaret\":\"CardActionsSection--link-with-caret--ZDp2b\",\"upcoming-segment-goal\":\"CardActionsSection--upcoming-segment-goal--+oQ+C\",\"upcomingSegmentGoal\":\"CardActionsSection--upcoming-segment-goal--+oQ+C\",\"not-allowed\":\"CardActionsSection--not-allowed--9-bZ-\",\"notAllowed\":\"CardActionsSection--not-allowed--9-bZ-\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport I18n from 'utils/I18n';\nimport { Popup } from '@strava/ui/Popup';\nimport Analytics from 'utils/analytics';\n\nimport { Button } from '@strava/ui/Button';\nimport styles from './styles.scss';\n\nconst trackClick = (id, element) => {\n  Analytics.trackV2({\n    action: 'click',\n    element,\n    category: 'side_bar',\n    page: 'segment_details',\n    properties: { segment_id: id }\n  });\n};\n\n// This is hack to reuse the legacy modal for setting goals.\nconst onClickSetGoal = (segmentId) => {\n  trackClick(segmentId, 'set_goal');\n  document.getElementById('set_goal_button').click();\n};\n\nconst urlLabelWithCaret = (label) => {\n  return (\n    <div className={styles.linkWithCaret}>\n      <div>{label}</div>\n      <div\n        className={`${styles.urlCaret} app-icon icon-caret-right icon-dark icon-sm`}\n      />\n    </div>\n  );\n};\n\nconst upcomingGoalDescription = (upcomingGoal, segmentId) => {\n  return (\n    <div>\n      <a\n        className={styles.urlLabel}\n        href=\"/athlete/goals\"\n        onClick={() => {\n          trackClick(segmentId, 'all_goals');\n        }}\n      >\n        {urlLabelWithCaret(\n          I18n.t('strava.performance_goals.upcoming_segment_goal')\n        )}\n      </a>\n      <div className={styles.upcomingSegmentGoal}>\n        <a\n          href={`/goals/segment/${upcomingGoal.id}`}\n          onClick={() => {\n            trackClick(segmentId, 'upcoming_goal');\n          }}\n        >\n          {I18n.t('templates.performance_goals.upcoming_segment_goal.details', {\n            target_time: upcomingGoal.targetTime,\n            segment_name: upcomingGoal.segmentName\n          })}\n        </a>\n        <span className=\"subtle\"> {upcomingGoal.endDate}</span>\n      </div>\n    </div>\n  );\n};\n\nconst sectionUrlAndLabel = (entry) => {\n  let content;\n  if (entry.useHamlGoalCreationModule) {\n    if (entry.athleteRestricted) {\n      content = (\n        <Popup\n          position=\"top\"\n          contents={\n            <>\n              <div className=\"tooltip-block centered text-center\">\n                <div className=\"app-icon icon-badge-premium icon-sm mb-xs\" />\n                <p>\n                  {I18n.t(\n                    'templates.segments.analysis.side_bar.subscribe_copy'\n                  )}\n                </p>\n                <Button\n                  variant=\"primary\"\n                  onClick={() => {\n                    trackClick(entry.segmentId, 'subscribe');\n                    window.location.href = '/subscribe?origin=segment_goal';\n                    return false;\n                  }}\n                >\n                  {I18n.t('templates.segments.analysis.side_bar.subscribe')}\n                </Button>\n              </div>\n            </>\n          }\n        >\n          <div className={`${styles.urlLabel} ${styles.notAllowed}`}>\n            {urlLabelWithCaret(entry.urlLabel)}\n          </div>\n        </Popup>\n      );\n    } else {\n      content = (\n        // eslint-disable-next-line jsx-a11y/anchor-is-valid\n        <a\n          className={styles.urlLabel}\n          href=\"#\"\n          onClick={() => onClickSetGoal(entry.segmentId)}\n        >\n          {urlLabelWithCaret(entry.urlLabel)}\n        </a>\n      );\n    }\n  } else {\n    content = (\n      <a\n        className={styles.urlLabel}\n        href={entry.url}\n        onClick={() => {\n          trackClick(entry.segmentId, entry.section);\n        }}\n      >\n        {urlLabelWithCaret(entry.urlLabel)}\n      </a>\n    );\n  }\n  return content;\n};\n\nconst CardActionsSection = ({ entry }) => {\n  if (entry.segmentNotEligible) {\n    return (\n      <div\n        className=\"light\"\n        // eslint-disable-next-line react/no-danger\n        dangerouslySetInnerHTML={{ __html: entry.segmentNotEligible }}\n      />\n    );\n  }\n  if (entry.upcomingGoal) {\n    return upcomingGoalDescription(entry.upcomingGoal, entry.segmentId);\n  }\n  return sectionUrlAndLabel(entry);\n};\n\nCardActionsSection.propTypes = {\n  entry: PropTypes.shape({}).isRequired\n};\n\nexport default CardActionsSection;\n","import PropTypes from 'prop-types';\nimport React, { useEffect } from 'react';\nimport AchievementsLocalLegendNormalXsmall from '@strava/icons/AchievementsLocalLegendNormalXsmall';\nimport AchievementsKomHighlightedXsmall from '@strava/icons/AchievementsKomHighlightedXsmall';\nimport I18n from 'utils/I18n';\nimport Analytics from 'utils/analytics';\nimport styles from './styles.scss';\n\nimport AvatarWithDataRow from './components/AvatarWithDataRow';\nimport CardActionsSection from './components/CardActionsSection';\n\nconst SegmentDetailsSideBar = ({ loggedIn, sideBarProps }) => {\n  useEffect(() => {\n    let localLegendAthleteId = null;\n    let localLegendEffortCount = null;\n    let komAthleteId = null;\n    let komEffortId = null;\n    let qomAthleteId = null;\n    let qomEffortId = null;\n    let overallEffortId = null;\n    let overallAthleteId = null;\n    let prEffortId = null;\n    let segmentEffortCount = null;\n    if (sideBarProps.localLegend) {\n      localLegendAthleteId = sideBarProps.localLegend.id;\n      localLegendEffortCount = sideBarProps.localLegend.mayorEffortCount;\n    }\n    if (sideBarProps.fastestTimes.men) {\n      komAthleteId = sideBarProps.fastestTimes.men.id;\n      komEffortId = sideBarProps.fastestTimes.men.segmentEffortId;\n    }\n    if (sideBarProps.fastestTimes.women) {\n      qomAthleteId = sideBarProps.fastestTimes.women.id;\n      qomEffortId = sideBarProps.fastestTimes.women.segmentEffortId;\n    }\n    if (sideBarProps.fastestTimes.overall) {\n      overallAthleteId = sideBarProps.fastestTimes.overall.id;\n      overallEffortId = sideBarProps.fastestTimes.overall.segmentEffortId;\n    }\n    if (loggedIn) {\n      prEffortId = sideBarProps.viewingAthlete.segmentEffortId;\n      segmentEffortCount = sideBarProps.viewingAthlete.segmentEffortCount;\n    }\n    Analytics.trackV2({\n      action: 'screen_enter',\n      category: 'segments',\n      page: 'segment_details',\n      element: 'side_bar',\n      properties: {\n        segment_id: sideBarProps.segmentId,\n        fastest_times: {\n          kom_effort_id: komEffortId,\n          kom_athlete_id: komAthleteId,\n          qom_athlete_id: qomAthleteId,\n          qom_effort_id: qomEffortId,\n          overall_effort_id: overallEffortId,\n          overall_athlete_id: overallAthleteId\n        },\n        local_legend: {\n          athlete_id: localLegendAthleteId,\n          efforts_count: localLegendEffortCount\n        },\n        your_stats: {\n          pr_effort_id: prEffortId,\n          segment_effort_count: segmentEffortCount\n        }\n      }\n    });\n  }, []);\n\n  const yourStats = () => {\n    return (\n      <AvatarWithDataRow\n        key=\"your_stats\"\n        data={sideBarProps.viewingAthlete}\n        loadExcludedEfforts={true}\n        segmentId={sideBarProps.segmentId}\n      />\n    );\n  };\n\n  const fastestTimes = () => {\n    const icon = <AchievementsKomHighlightedXsmall fill=\"#F6C95F\" />;\n    const sectionComponents = [];\n    if (sideBarProps.fastestTimes.overall) {\n      sectionComponents.push(\n        <AvatarWithDataRow\n          key=\"fastest_times_overall\"\n          data={sideBarProps.fastestTimes.overall}\n          achievementIcon={icon}\n        />\n      );\n    }\n    if (sideBarProps.fastestTimes.men) {\n      sectionComponents.push(\n        <AvatarWithDataRow\n          key=\"fastest_times_men\"\n          data={sideBarProps.fastestTimes.men}\n          achievementIcon={icon}\n        />\n      );\n    }\n    if (sideBarProps.fastestTimes.women) {\n      sectionComponents.push(\n        <AvatarWithDataRow\n          key=\"fastest_times_women\"\n          data={sideBarProps.fastestTimes.women}\n          achievementIcon={icon}\n        />\n      );\n    }\n    return sectionComponents;\n  };\n\n  const localLegend = () => {\n    const icon = <AchievementsLocalLegendNormalXsmall fill=\"#F6C95F\" />;\n    return (\n      <AvatarWithDataRow\n        key=\"local_legend\"\n        data={sideBarProps.localLegend}\n        achievementIcon={icon}\n      />\n    );\n  };\n\n  const sideBarEntryData = () => {\n    let viewingAthleteStats = {};\n    let localLegendStats = {};\n    let fastestTimesStats = {};\n    const { segmentId } = sideBarProps;\n    if (loggedIn) {\n      viewingAthleteStats = {\n        title: I18n.t('templates.segments.analysis.side_bar.your_stats'),\n        useHamlGoalCreationModule: true, // See CardActionsSection#onClickSetGoal\n        urlLabel: I18n.t('templates.segments.analysis.side_bar.set_goal'),\n        sectionComponents: yourStats(),\n        segmentNotEligible: sideBarProps.viewingAthlete.segmentNotEligible,\n        athleteRestricted: sideBarProps.viewingAthlete.athleteRestricted,\n        upcomingGoal: sideBarProps.viewingAthlete.upcomingGoal,\n        segmentId\n      };\n    }\n    if (sideBarProps.fastestTimes.overall || sideBarProps.fastestTimes.women) {\n      fastestTimesStats = {\n        title: I18n.t('templates.segments.analysis.side_bar.fastest_times'),\n        url: `/segments/${sideBarProps.segmentId}/compare`,\n        urlLabel: I18n.t(\n          'templates.segments.analysis.side_bar.compare_efforts'\n        ),\n        sectionComponents: fastestTimes(),\n        segmentId,\n        section: 'fastest_times'\n      };\n    }\n    if (sideBarProps.localLegend) {\n      localLegendStats = {\n        title: I18n.t('templates.segments.analysis.side_bar.most_efforts'),\n        url: `/segments/${sideBarProps.segmentId}/local-legend`,\n        urlLabel: I18n.t('templates.segments.analysis.side_bar.view_lcl_stats'),\n        sectionComponents: localLegend(),\n        segmentId,\n        section: 'local_legend'\n      };\n    }\n    return [viewingAthleteStats, fastestTimesStats, localLegendStats].filter(\n      (e) => {\n        return Object.keys(e).length !== 0; // Remove components that are not populated with any data\n      }\n    );\n  };\n  return (\n    <ul>\n      {sideBarEntryData().map((entry) => (\n        <li className={styles.card} key={entry.title}>\n          <h2 className={`text-title3 ${styles.title}`}>{entry.title}</h2>\n          <div className={styles.data}>{entry.sectionComponents}</div>\n          <div className={styles.actionLink}>\n            <CardActionsSection entry={entry} />\n          </div>\n        </li>\n      ))}\n    </ul>\n  );\n};\n\nSegmentDetailsSideBar.propTypes = {\n  loggedIn: PropTypes.bool.isRequired,\n  sideBarProps: PropTypes.shape({\n    segmentId: PropTypes.number.isRequired,\n    viewingAthlete: PropTypes.shape({\n      segmentEffortId: PropTypes.number,\n      segmentEffortCount: PropTypes.number,\n      segmentNotEligible: PropTypes.bool,\n      athleteRestricted: PropTypes.bool,\n      upcomingGoal: PropTypes.shape({}),\n      stats: PropTypes.array\n    }),\n    fastestTimes: PropTypes.shape({\n      overall: PropTypes.shape({\n        id: PropTypes.number,\n        segmentEffortId: PropTypes.number\n      }),\n      men: PropTypes.shape({\n        id: PropTypes.number,\n        segmentEffortId: PropTypes.number\n      }),\n      women: PropTypes.shape({\n        id: PropTypes.number,\n        segmentEffortId: PropTypes.number\n      })\n    }),\n    localLegend: PropTypes.shape({\n      id: PropTypes.number,\n      mayorEffortCount: PropTypes.number,\n      icon: PropTypes.element\n    })\n  }).isRequired\n};\n\nexport default SegmentDetailsSideBar;\n","import createNetworkingClient from '../../utils/networking-client';\n\n// these types represent the different states that the StarToggle component\n// can be in\nexport const types = {\n  TOGGLE_SEGMENT_STAR_SUCCESS: 'TOGGLE_SEGMENT_STAR_SUCCESS',\n  TOGGLE_SEGMENT_STAR_FAILURE: 'TOGGLE_SEGMENT_STAR_FAILURE'\n};\n\n// this is the primary logic in the component, which performs a network call\n// and based on the result of that network call dispatches success or failure\n// state to the reducer\nexport const toggleSegmentStar = (segmentId, isActive) => (dispatch) => {\n  const active = isActive ? 'off' : 'on';\n  const url = `/segments/${segmentId}/starred`;\n\n  const instance = createNetworkingClient();\n  instance\n    .put(url, { active, source: 'starred-segments' })\n    .then(() => dispatch({ type: types.TOGGLE_SEGMENT_STAR_SUCCESS }))\n    .catch(() => dispatch({ type: types.TOGGLE_SEGMENT_STAR_FAILURE }));\n};\n\nexport default {\n  types,\n  toggleSegmentStar\n};\n","import { types } from './actions';\n\nexport default function segmentStarReducer(state = {}, action) {\n  switch (action.type) {\n    // if the action was successful, toggle the state of the starred segment\n    case types.TOGGLE_SEGMENT_STAR_SUCCESS:\n      return {\n        ...state,\n        isActive: !state.isActive\n      };\n    // otherwise keep the state the same (we could add error state here to\n    // render an error message)\n    case types.TOGGLE_SEGMENT_STAR_FAILURE:\n      return state;\n    default:\n      return state;\n  }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"star\":\"StarToggle--star--Miasb\",\"active\":\"StarToggle--active--1MIjs\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { toggleSegmentStar } from '../../actions';\nimport styles from './index.scss';\n\nexport class StarToggleComponent extends React.PureComponent {\n  handleClick = () => {\n    // get both the state (isActive and segmentId) and the action function from\n    // props. The toggleSegmentStarAction is set up in the mapDispatchToProps\n    // function below, and is defined in the actions.js file in the main\n    // StarredSegment component directory.\n    const { isActive, segmentId, toggleSegmentStarAction } = this.props;\n\n    // this function is a wrapped version of the toggleSegmentStar function\n    // in the actions.js file\n    toggleSegmentStarAction(segmentId, isActive);\n  };\n\n  render() {\n    const { isActive } = this.props;\n\n    return (\n      <button\n        className={`${styles.star} starred-segment starred ${\n          isActive ? 'active' : ''\n        } ${isActive ? styles.active : ''}`}\n        onClick={this.handleClick}\n      >\n        <span className=\"app-icon-wrapper\">\n          <span className=\"app-icon icon-star icon-sm icon-dark\" />\n        </span>\n      </button>\n    );\n  }\n}\n\nStarToggleComponent.propTypes = {\n  segmentId: PropTypes.number.isRequired,\n  isActive: PropTypes.bool.isRequired,\n  toggleSegmentStarAction: PropTypes.func.isRequired\n};\n\n//\n// Redux mapping methods\n//\n\nfunction mapStateToProps(state) {\n  return {\n    segmentId: state.segmentId,\n    isActive: state.isActive\n  };\n}\n\nfunction mapDispatchToProps(dispatch) {\n  return {\n    toggleSegmentStarAction: bindActionCreators(toggleSegmentStar, dispatch)\n  };\n}\n\n// wire up the state and the dispatch and export the resulting component\nconst wrappedComponent = connect(\n  mapStateToProps,\n  mapDispatchToProps\n)(StarToggleComponent);\n\nexport default wrappedComponent;\n","import React from 'react';\nimport { createStore, applyMiddleware } from 'redux';\nimport { Provider } from 'react-redux';\nimport thunk from 'redux-thunk';\n\nimport reducer from './reducers';\nimport StarToggle from './components/StarToggle';\n\n// this component wraps the StarToggle component with redux\nclass StarredSegment extends React.Component {\n  store = createStore(\n    reducer,\n    {\n      ...this.props,\n      isActive: true\n    },\n    applyMiddleware(thunk)\n  );\n\n  render() {\n    return (\n      <Provider store={this.store}>\n        <StarToggle />\n      </Provider>\n    );\n  }\n}\n\nexport default StarredSegment;\n","// extracted by mini-css-extract-plugin\nexport default {\"badge\":\"VerifiedSegmentModal--badge--hGr6k\",\"modal\":\"VerifiedSegmentModal--modal--iAOj4\",\"modal-header\":\"VerifiedSegmentModal--modal-header--El0kc\",\"modalHeader\":\"VerifiedSegmentModal--modal-header--El0kc\",\"button\":\"VerifiedSegmentModal--button--shNfQ\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport I18n from 'utils/I18n';\nimport { Button, LinkButton } from '@strava/ui/Button';\nimport { Modal, ModalActions, ModalBody } from '@strava/ui/Modal';\nimport verifiedBadge from '../../../assets/images/avatar/badges/icon-badge-verified.png';\nimport styles from './VerifiedSegmentModal.scss';\n\nconst VerifiedSegmentModal = ({ activityTypeTitle, location }) => {\n  const [isModalOpen, setIsModalOpen] = useState(false);\n\n  const toggleModalOpen = () => {\n    setIsModalOpen(!isModalOpen);\n  };\n\n  return (\n    <>\n      <Button\n        variant=\"icon\"\n        onClick={toggleModalOpen}\n        title={I18n.t('components.verified_segment_modal.title')}\n        className={styles.badge}\n      >\n        <img src={verifiedBadge} alt=\"\" width={16} height={16} />{' '}\n        {activityTypeTitle}\n      </Button>{' '}\n      {location}\n      <Modal\n        isOpen={isModalOpen}\n        onDismiss={toggleModalOpen}\n        hasClose={true}\n        className={styles.modal}\n      >\n        <ModalBody>\n          <div className={styles.modalHeader}>\n            <img src={verifiedBadge} alt=\"\" width={24} height={24} />\n            <h2>{I18n.t('components.verified_segment_modal.title')}</h2>\n          </div>\n          <p>{I18n.t('components.verified_segment_modal.description')}</p>\n        </ModalBody>\n        <ModalActions>\n          <Button\n            onClick={toggleModalOpen}\n            variant=\"primary\"\n            className={styles.button}\n          >\n            {I18n.t('components.verified_segment_modal.got_it')}\n          </Button>\n          <LinkButton\n            variant=\"text\"\n            href=\"https://support.strava.com/hc/en-us/articles/27780101464973-Strava-Verified-Segments\"\n            className={styles.button}\n          >\n            {I18n.t('components.verified_segment_modal.learn_more')}\n          </LinkButton>\n        </ModalActions>\n      </Modal>\n    </>\n  );\n};\n\nVerifiedSegmentModal.propTypes = {\n  activityTypeTitle: PropTypes.string.isRequired,\n  location: PropTypes.string.isRequired\n};\n\nexport default VerifiedSegmentModal;\n","export { default } from './VerifiedSegmentModal';\n","import createNetworkingClient from '../../utils/networking-client';\n\nconst types = {\n  HEIGHT_REPORTED: 'HEIGHT_REPORTED',\n  SETTING_COLLAPSED: 'SETTING_COLLAPSED',\n  SETTING_EXPANDED: 'SETTING_EXPANDED',\n  VALUE_CHANGED: 'VALUE_CHANGED',\n  VALUE_SAVED_FAILURE: 'VALUE_SAVED_FAILURE',\n  VALUE_SAVED_REQUESTED: 'VALUE_SAVED_REQUESTED',\n  VALUE_SAVED_SUCCESS: 'VALUE_SAVED_SUCCESS'\n};\n\nexport const heightReported = (optionIndex, optionHeight) => ({\n  type: types.HEIGHT_REPORTED,\n  optionIndex,\n  optionHeight\n});\n\nexport const settingCollapsed = (analyticsReporter) => {\n  analyticsReporter('inner', 'click', 'cancel');\n  return { type: types.SETTING_COLLAPSED };\n};\n\nexport const settingExpanded = (analyticsReporter, settingName) => {\n  analyticsReporter('outer', 'click', settingName);\n  return { type: types.SETTING_EXPANDED };\n};\n\nexport const valueChanged = (optionIndex, optionValue, analyticsReporter) => {\n  analyticsReporter('inner', 'click', optionValue);\n  return {\n    type: types.VALUE_CHANGED,\n    optionIndex\n  };\n};\n\nconst valueSaveFailure = (optionIndex) => ({\n  type: types.VALUE_SAVED_FAILURE,\n  optionIndex\n});\n\nconst valueSaveSuccess = (optionIndex) => ({\n  type: types.VALUE_SAVED_SUCCESS,\n  optionIndex\n});\n\nexport const valueSaved = ({\n  athleteId,\n  settingName,\n  optionIndex,\n  optionValue,\n  analyticsReporter\n}) => (dispatch) => {\n  dispatch({ type: types.VALUE_SAVED_REQUESTED });\n\n  if (!athleteId) {\n    dispatch(valueSaveFailure(optionIndex));\n    return null;\n  }\n\n  analyticsReporter('inner', 'click', 'ok');\n\n  const url = `/athletes/${athleteId}`;\n  const payload = {\n    athlete: {\n      [settingName]: optionValue\n    }\n  };\n\n  const instance = createNetworkingClient();\n  return instance\n    .put(url, payload, { headers: { Accept: 'text/javascript' } })\n    .then(() => dispatch(valueSaveSuccess(optionIndex)))\n    .catch(() => dispatch(valueSaveFailure(optionIndex)));\n};\n\nexport default types;\n","import types from './actions';\n\nexport default function reducer(state = {}, action) {\n  switch (action.type) {\n    case types.HEIGHT_REPORTED:\n      return {\n        ...state,\n        options: [\n          ...state.options.slice(0, action.optionIndex),\n          { ...state.options[action.optionIndex], height: action.optionHeight },\n          ...state.options.slice(action.optionIndex + 1)\n        ]\n      };\n\n    case types.SETTING_COLLAPSED:\n      return {\n        ...state,\n        isExpanded: false,\n        selectedOptionIndex: state.savedOptionIndex\n      };\n\n    case types.SETTING_EXPANDED:\n      return {\n        ...state,\n        isExpanded: true,\n        selectedOptionHeight: state.options[state.selectedOptionIndex].height\n      };\n\n    case types.VALUE_CHANGED:\n      if (state.isSubmittable) {\n        return {\n          ...state,\n          selectedOptionIndex: action.optionIndex\n        };\n      }\n\n      return {\n        ...state,\n        savedOptionIndex: action.optionIndex,\n        selectedOptionIndex: action.optionIndex,\n        isExpanded: false\n      };\n\n    case types.VALUE_SAVED_FAILURE:\n      return state;\n\n    case types.VALUE_SAVED_SUCCESS:\n      return {\n        ...state,\n        isExpanded: false,\n        savedOptionIndex: action.optionIndex\n      };\n\n    default:\n      return state;\n  }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/*\n * Technique taken with gratitude from:\n * https://medium.com/@jessebeach/dealing-with-focus-and-blur-in-a-composite-widget-in-react-90d3c3b49a9b\n */\nclass FocusableElement extends React.Component {\n  constructor(props) {\n    super(props);\n    this.timeoutID = null;\n  }\n\n  onBlur = () => {\n    this.timeoutID = setTimeout(() => {\n      if (this.props.isFocused) {\n        this.props.onBlur();\n      }\n    }, 0);\n  };\n\n  onFocus = () => {\n    clearTimeout(this.timeoutID);\n    if (!this.props.isFocused) {\n      this.props.onFocus();\n    }\n  };\n\n  render() {\n    const {\n      children,\n      isFocused,\n      onBlur,\n      onFocus,\n      refFocusable,\n      ...props\n    } = this.props;\n    return (\n      <div\n        onBlur={this.onBlur}\n        onFocus={this.onFocus}\n        ref={refFocusable}\n        {...props}\n      >\n        {children}\n      </div>\n    );\n  }\n}\n\nFocusableElement.propTypes = {\n  children: PropTypes.node.isRequired,\n  isFocused: PropTypes.bool.isRequired,\n  onBlur: PropTypes.func.isRequired,\n  onFocus: PropTypes.func.isRequired,\n  refFocusable: PropTypes.shape({})\n};\n\nexport default FocusableElement;\n","// extracted by mini-css-extract-plugin\nexport default {\"expandable-option-list\":\"ExpandableOptionList--expandable-option-list--ru7Mw\",\"expandableOptionList\":\"ExpandableOptionList--expandable-option-list--ru7Mw\",\"who-can-see\":\"ExpandableOptionList--who-can-see--fy5kY\",\"whoCanSee\":\"ExpandableOptionList--who-can-see--fy5kY\",\"collapsed\":\"ExpandableOptionList--collapsed--t1dc9\",\"heading\":\"ExpandableOptionList--heading--frEbW\"};","// extracted by mini-css-extract-plugin\nexport default {\"expand\":\"Footer--expand--X5OzP\",\"controls\":\"Footer--controls--pTHlF\"};","// extracted by mini-css-extract-plugin\nexport default {\"btn-ok\":\"Controls--btn-ok--A3dS9\",\"btnOk\":\"Controls--btn-ok--A3dS9\",\"btn-cancel\":\"Controls--btn-cancel--kuC8Z\",\"btnCancel\":\"Controls--btn-cancel--kuC8Z\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\n\nimport I18n from 'utils/I18n';\n\nimport styles from './index.scss';\n\nconst I18nPrefix = 'strava.settings.privacy.visibility.';\nconst I18nKey = {\n  ok: `${I18nPrefix}ok`,\n  cancel: `${I18nPrefix}cancel`\n};\n\nconst Controls = ({ onCancel, onOk }) => (\n  <>\n    <Button\n      key=\"cancel\"\n      type=\"button\"\n      className={styles.btnCancel}\n      onClick={onCancel}\n    >\n      {I18n.t(I18nKey.cancel)}\n    </Button>\n    <Button\n      key=\"ok\"\n      type=\"button\"\n      variant=\"primary\"\n      className={styles.btnOk}\n      data-testid=\"controls-ok-btn\"\n      onClick={onOk}\n    >\n      {I18n.t(I18nKey.ok)}\n    </Button>\n  </>\n);\n\nControls.propTypes = {\n  onOk: PropTypes.func.isRequired,\n  onCancel: PropTypes.func.isRequired\n};\n\nexport default Controls;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './index.scss';\n\nimport Controls from '../Controls';\n\nfunction Footer({\n  isExpanded,\n  isSubmittable,\n  settingCollapsed,\n  handleValueSave\n}) {\n  if (isExpanded && isSubmittable) {\n    return (\n      <div className={styles.controls}>\n        <Controls onCancel={settingCollapsed} onOk={handleValueSave} />\n      </div>\n    );\n  }\n\n  if (!isExpanded) {\n    return <div className={styles.expand}>&#xfe40;</div>;\n  }\n\n  return null;\n}\n\nFooter.propTypes = {\n  isSubmittable: PropTypes.bool.isRequired,\n  isExpanded: PropTypes.bool.isRequired,\n  handleValueSave: PropTypes.func.isRequired,\n  settingCollapsed: PropTypes.func.isRequired\n};\n\nexport default Footer;\n","// extracted by mini-css-extract-plugin\nexport default {\"options\":\"OptionList--options--YnbkD\"};","// extracted by mini-css-extract-plugin\nexport default {\"setting\":\"Option--setting--Gsvqv\",\"label\":\"Option--label--jmD6S\",\"description\":\"Option--description--2zDdI\",\"title\":\"Option--title--M-tjF\",\"detail\":\"Option--detail--9-DwE\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport sizeMe from 'react-sizeme';\n\nimport styles from './index.scss';\n\nconst NotVisibleStyle = {\n  position: 'absolute',\n  visibility: 'hidden',\n  zIndex: '-9999'\n};\n\nclass Option extends React.Component {\n  /**\n   * isVisible when the <li> is selected OR the list\n   * is expanded\n   */\n  isVisible = () => this.props.isSelected || this.props.isExpanded;\n\n  handleValueChange = () => {\n    const { optionIndex, value, analyticsReporter } = this.props;\n    this.props.valueChanged(optionIndex, value, analyticsReporter);\n  };\n\n  render() {\n    const { detail, isSelected, name, title, refSelected, value } = this.props;\n\n    return (\n      <li\n        className={styles.setting}\n        style={this.isVisible() ? {} : NotVisibleStyle}\n      >\n        <label className={styles.label}>\n          <input\n            type=\"radio\"\n            name={name}\n            value={value}\n            checked={isSelected}\n            onChange={this.handleValueChange}\n            ref={isSelected && refSelected}\n            tabIndex={isSelected ? '0' : '-1'}\n          />\n          <div className={styles.description}>\n            <span className={styles.title}>{title}</span>\n            <span className={styles.detail}>{detail}</span>\n          </div>\n        </label>\n      </li>\n    );\n  }\n}\n\nOption.propTypes = {\n  analyticsReporter: PropTypes.func.isRequired,\n  detail: PropTypes.string.isRequired,\n  isExpanded: PropTypes.bool.isRequired,\n  isSelected: PropTypes.bool.isRequired,\n  name: PropTypes.string.isRequired,\n  optionIndex: PropTypes.number.isRequired,\n  refSelected: PropTypes.shape({}).isRequired,\n  title: PropTypes.string.isRequired,\n  value: PropTypes.string.isRequired,\n  valueChanged: PropTypes.func.isRequired\n};\n\nexport default sizeMe({ monitorWidth: false, monitorHeight: true })(Option);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './index.scss';\n\nimport Option from '../Option';\n\nfunction handleHeightReport(heightReported, optionIndex, height) {\n  return (size) => {\n    const newHeight = size.height;\n\n    if (newHeight === height) {\n      return;\n    }\n\n    if (newHeight === 0) {\n      return;\n    }\n\n    heightReported(optionIndex, newHeight);\n  };\n}\n\nfunction OptionList({\n  options,\n  selectedOptionIndex,\n  heightReported,\n  ...props\n}) {\n  return (\n    <ul className={styles.options} id={OptionList.identifier(props.name)}>\n      {options.map((option, i) => (\n        <Option\n          {...props}\n          {...option}\n          key={option.value}\n          optionIndex={i}\n          isSelected={i === selectedOptionIndex}\n          onSize={handleHeightReport(heightReported, i, option.height)}\n        />\n      ))}\n    </ul>\n  );\n}\n\nOptionList.identifier = function identifier(settingName) {\n  return `${OptionList.name}-${settingName}`;\n};\n\nOptionList.propTypes = {\n  heightReported: PropTypes.func.isRequired,\n  valueChanged: PropTypes.func.isRequired,\n\n  name: PropTypes.string.isRequired,\n  selectedOptionIndex: PropTypes.number.isRequired,\n  isExpanded: PropTypes.bool.isRequired,\n  options: PropTypes.arrayOf(\n    PropTypes.shape({\n      title: PropTypes.string.isRequired,\n      detail: PropTypes.string.isRequired,\n      value: PropTypes.string.isRequired\n    })\n  ).isRequired\n};\n\nexport default OptionList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport FocusableElement from 'components/shared/FocusableElement';\nimport I18n from 'utils/I18n';\n\nimport styles from './index.scss';\nimport {\n  heightReported,\n  settingCollapsed,\n  settingExpanded,\n  valueChanged,\n  valueSaved\n} from '../../actions';\n\nimport Footer from '../Footer';\nimport OptionList from '../OptionList';\n\nconst I18nPrefix = 'strava.settings.privacy.visibility.';\nconst I18nKey = {\n  who_can_see: `${I18nPrefix}who_can_see`\n};\n\nexport class ExpandableOptionList extends React.Component {\n  static PaddingPx = 50;\n\n  static InitialOptionHeightPx = 66;\n\n  constructor(props) {\n    super(props);\n\n    this.optionListID = OptionList.identifier(props.name);\n    this.refFocusable = React.createRef();\n    this.refSelected = React.createRef();\n\n    const { athleteId = null, isSubmittable } = props;\n    if (isSubmittable && !athleteId) {\n      throw new Error('`athleteId` is required for submittable component');\n    }\n  }\n\n  handleSettingCollapse = () => {\n    this.refFocusable.current.blur();\n    this.props.settingCollapsed(this.props.analyticsReporter);\n  };\n\n  handleSettingExpand = () => {\n    const { name, analyticsReporter } = this.props;\n\n    this.refSelected.current.focus();\n\n    // This is necessary because when the component is embedded within a form,\n    // the name is the name of the form tag; activity[visibility]\n    // and we only want visibility here.\n    const formTagNameRegex = /\\[(.*)\\]/;\n    const match = name.match(formTagNameRegex);\n    if (match) {\n      this.props.settingExpanded(analyticsReporter, match[1]);\n      return;\n    }\n    this.props.settingExpanded(analyticsReporter, name);\n  };\n\n  handleValueSave = () => {\n    const {\n      athleteId = null,\n      name,\n      options,\n      savedOptionIndex,\n      selectedOptionIndex,\n      analyticsReporter\n    } = this.props;\n\n    if (savedOptionIndex === selectedOptionIndex) {\n      this.handleSettingCollapse();\n      return;\n    }\n\n    this.props\n      .valueSaved({\n        athleteId,\n        settingName: name,\n        optionIndex: selectedOptionIndex,\n        optionValue: options[selectedOptionIndex].value,\n        analyticsReporter\n      })\n      .then(() => this.refFocusable.current.blur());\n  };\n\n  /**\n   * styleContainer returns a style object with a `height` property when `isExpanded`,\n   * it returns null otherwise.\n   *\n   * styleContainer is necessary for styling the collapsed ExpandableOptionList s.t.\n   * there is no perceived shudder/jankiness as its contents become\n   * absolutely positioned and have no DOM-impactful height when `isExpanded`.\n   *\n   */\n  styleContainer = () => {\n    const {\n      isExpanded = false,\n      selectedOptionHeight = ExpandableOptionList.InitialOptionHeightPx\n    } = this.props;\n    const height = ExpandableOptionList.PaddingPx + selectedOptionHeight;\n\n    if (!isExpanded) {\n      return null;\n    }\n\n    return { height: `${height}px` };\n  };\n\n  /**\n   * styleMenu returns a style object with a `top` property when `isExpanded` and\n   * `savedOptionIndex` > 0, it returns null otherwise.\n   *\n   * styleMenu sums height of all Options above the currently saved Option, and subtracts\n   * that from the implicit `top: 0` so that the expanded widget is centered\n   * around the Option that was selected when the widget expands.\n   *\n   */\n  styleMenu = () => {\n    const { isExpanded = false, options, savedOptionIndex } = this.props;\n\n    if (!isExpanded) {\n      return null;\n    }\n\n    if (savedOptionIndex === 0) {\n      return null;\n    }\n\n    const height = options\n      .slice(0, savedOptionIndex)\n      .reduce((total, o) => total + (o.height || 0), 0);\n\n    return { top: `-${height}px` };\n  };\n\n  render() {\n    const { isExpanded = false } = this.props;\n\n    let whoCanSeeClasses = styles.whoCanSee;\n    if (!isExpanded) {\n      whoCanSeeClasses += ` ${styles.collapsed}`;\n    }\n\n    return (\n      <section\n        className={styles.expandableOptionList}\n        style={this.styleContainer()}\n      >\n        <FocusableElement\n          aria-expanded={isExpanded}\n          aria-controls={this.optionListID}\n          className={whoCanSeeClasses}\n          style={this.styleMenu()}\n          refFocusable={this.refFocusable}\n          isFocused={isExpanded}\n          onBlur={this.handleSettingCollapse}\n          onFocus={this.handleSettingExpand}\n          tabIndex=\"0\"\n          data-testid=\"expandable-option-list\"\n        >\n          <p className={`text-caption4 ${styles.heading}`}>\n            {I18n.t(I18nKey.who_can_see)}\n          </p>\n          <OptionList\n            {...this.props}\n            isExpanded={isExpanded}\n            refSelected={this.refSelected}\n          />\n          <Footer\n            {...this.props}\n            isExpanded={isExpanded}\n            settingCollapsed={this.handleSettingCollapse}\n            handleValueSave={this.handleValueSave}\n          />\n        </FocusableElement>\n      </section>\n    );\n  }\n}\n\nExpandableOptionList.propTypes = {\n  // actions\n  heightReported: PropTypes.func.isRequired,\n  settingCollapsed: PropTypes.func.isRequired,\n  settingExpanded: PropTypes.func.isRequired,\n  valueChanged: PropTypes.func.isRequired,\n  valueSaved: PropTypes.func.isRequired,\n\n  // other props\n  athleteId: PropTypes.number,\n  name: PropTypes.string.isRequired,\n  savedOptionIndex: PropTypes.number.isRequired,\n  selectedOptionIndex: PropTypes.number.isRequired,\n  selectedOptionHeight: PropTypes.number,\n  isExpanded: PropTypes.bool,\n  isSubmittable: PropTypes.bool.isRequired,\n  options: PropTypes.arrayOf(\n    PropTypes.shape({\n      height: PropTypes.number,\n      title: PropTypes.string.isRequired,\n      detail: PropTypes.string.isRequired,\n      value: PropTypes.string.isRequired\n    })\n  ).isRequired,\n\n  // For Snowplow Tracking\n  analyticsReporter: PropTypes.func.isRequired\n};\n\nexport default connect(\n  (state) => state,\n  {\n    heightReported,\n    settingCollapsed,\n    settingExpanded,\n    valueChanged,\n    valueSaved\n  }\n)(ExpandableOptionList);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Provider } from 'react-redux';\nimport { createStore, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\n\nimport { trackV2 } from 'utils/analytics';\nimport reducer from './reducers';\n\nimport ExpandableOptionList from './components/ExpandableOptionList';\nimport { logMessage } from '../../utils/sentry';\n\nfunction getIndexOfOption(options, value) {\n  return options.findIndex((o) => o.value === value);\n}\n\nfunction analyticsFactory({ category, page, properties = {} }) {\n  return function analyticsReporter(location, action, element) {\n    if (['inner', 'outer'].indexOf(location) === -1) {\n      logMessage('Wrong location!');\n      return;\n    }\n    trackV2({ category, page: page[location], action, element, properties });\n  };\n}\n\nclass VisibilitySetting extends React.Component {\n  constructor(props) {\n    super(props);\n\n    const { options, selectedValue, analytics } = props;\n    const optionIndex = getIndexOfOption(options, selectedValue);\n    if (optionIndex === -1) {\n      throw new Error('`selectedValue` not found in `options`');\n    }\n\n    this.store = createStore(\n      reducer,\n      {\n        ...props,\n        savedOptionIndex: optionIndex,\n        selectedOptionIndex: optionIndex,\n        analyticsReporter: analyticsFactory(analytics)\n      },\n      applyMiddleware(thunk)\n    );\n  }\n\n  render() {\n    return (\n      <Provider store={this.store}>\n        <ExpandableOptionList {...this.props} />\n      </Provider>\n    );\n  }\n}\n\nVisibilitySetting.propTypes = {\n  athleteId: PropTypes.number,\n  isSubmittable: PropTypes.bool,\n  name: PropTypes.string.isRequired,\n  selectedValue: PropTypes.string.isRequired,\n  options: PropTypes.arrayOf(\n    PropTypes.shape({\n      title: PropTypes.string.isRequired,\n      detail: PropTypes.string.isRequired,\n      value: PropTypes.string.isRequired\n    })\n  ).isRequired,\n\n  analytics: PropTypes.shape({\n    category: PropTypes.string.isRequired,\n    page: PropTypes.shape({\n      outer: PropTypes.string,\n      inner: PropTypes.string\n    }).isRequired,\n    properties: PropTypes.shape({\n      activity_id: PropTypes.number\n    })\n  }).isRequired\n};\n\nexport default VisibilitySetting;\n","// extracted by mini-css-extract-plugin\nexport default {\"header\":\"MapVisibilityControls--header--XIamG\",\"learn-more\":\"MapVisibilityControls--learn-more--iJpnn\",\"learnMore\":\"MapVisibilityControls--learn-more--iJpnn\",\"hide-address\":\"MapVisibilityControls--hide-address--F6uR5\",\"hideAddress\":\"MapVisibilityControls--hide-address--F6uR5\",\"hide-anywhere\":\"MapVisibilityControls--hide-anywhere--uEcVj\",\"hideAnywhere\":\"MapVisibilityControls--hide-anywhere--uEcVj\",\"hide-all\":\"MapVisibilityControls--hide-all--WwxFV\",\"hideAll\":\"MapVisibilityControls--hide-all--WwxFV\",\"add-edit-button\":\"MapVisibilityControls--add-edit-button--io6uj\",\"addEditButton\":\"MapVisibilityControls--add-edit-button--io6uj\",\"hide-all-label\":\"MapVisibilityControls--hide-all-label--AlrRA\",\"hideAllLabel\":\"MapVisibilityControls--hide-all-label--AlrRA\",\"hide-all-detail\":\"MapVisibilityControls--hide-all-detail--4IbKf\",\"hideAllDetail\":\"MapVisibilityControls--hide-all-detail--4IbKf\",\"switch\":\"MapVisibilityControls--switch--DsKRk\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\nimport { Switch } from '@strava/ui/Switch';\nimport SvgActionsVisibleDisabledNormalMedium from '@strava/icons/ActionsVisibleDisabledNormalMedium';\nimport SvgActivityDistanceNormalMedium from '@strava/icons/ActivityDistanceNormalMedium';\nimport SvgActionsGlobalNormalMedium from '@strava/icons/ActionsGlobalNormalMedium';\n\nimport I18n from 'utils/I18n';\nimport { trackV2 } from 'utils/analytics';\nimport createNetworkingClient from 'utils/networking-client';\nimport ConfirmModal from '../ConfirmModal/ConfirmModal';\nimport styles from './styles.scss';\n\nfunction MapVisibilityControls({\n  numPrivateLocations,\n  defaultStreamPrivacy,\n  defaultActivityMapVisibility,\n  paths,\n  isAthleteUnder18\n}) {\n  const i18nPrefix = 'strava.settings.privacy.map_visibility.';\n\n  // mapsHidden is for sending the string value, 'everyone' / 'only_me', during the fetch request to the server to update the athlete settings\n  const [mapsHidden, setMapsHidden] = useState(\n    defaultActivityMapVisibility !== 'everyone'\n  );\n\n  // toggleSwitchState is for updating the UI of the toggle button. UI design requires the toggle to update prior to clicking confirm if an athlete under 18 clicks the toggle to expose map visibility to everyone\n  const [toggleSwitchState, setToggleSwitchState] = useState(\n    defaultActivityMapVisibility !== 'everyone'\n  );\n\n  const trackEvent = (action, element = null, properties = null) => {\n    trackV2({\n      category: 'privacy_settings',\n      page: 'map_visibility',\n      action,\n      ...(element && { element }),\n      ...(properties && { properties })\n    });\n  };\n  const [openModal, setOpenModal] = useState(false);\n  const closeModal = () => {\n    setOpenModal(false);\n    setToggleSwitchState(true);\n  };\n\n  const updateMapVisibility = (callback) => {\n    trackEvent('click', 'hide_all_maps', {\n      map_visibility: mapsHidden ? 'everyone' : 'only_you'\n    });\n\n    createNetworkingClient()\n      .put(paths.athleteSettings, {\n        settings: {\n          default_activity_map_visibility: mapsHidden ? 'everyone' : 'only_me'\n        }\n      })\n      .then(() => {\n        setMapsHidden((prevMapsHidden) => !prevMapsHidden);\n        callback();\n      });\n  };\n\n  const onSwitchClick = () => {\n    if (isAthleteUnder18 && toggleSwitchState) {\n      setOpenModal(true);\n      setToggleSwitchState(false);\n    } else {\n      updateMapVisibility(() =>\n        setToggleSwitchState((prevSwitchState) => !prevSwitchState)\n      );\n    }\n  };\n\n  return (\n    <div>\n      <h3 className={styles.header}>{I18n.t(`${i18nPrefix}header`)}</h3>\n      <a\n        href=\"https://support.strava.com/hc/en-us/articles/115000173384\"\n        className={styles.learnMore}\n        onClick={() =>\n          trackEvent('click', 'learn_more', { article_id: 115000173384 })\n        }\n      >\n        {I18n.t(`${i18nPrefix}learn_more`)}\n      </a>\n      <div className={styles.hideAddress}>\n        <SvgActivityDistanceNormalMedium />\n        <div id=\"map-visibility-hide-address\">\n          <div>{I18n.t_html(`${i18nPrefix}hide_address_v2_html`)}</div>\n          <div>\n            {I18n.t_html(\n              `${i18nPrefix}address_hidden_html`,\n              {\n                count: numPrivateLocations,\n                url: paths.hideAddress\n              },\n              {\n                onLinkClick: () =>\n                  trackEvent('click', 'currently_hidden_address')\n              }\n            )}\n          </div>\n        </div>\n        <Button\n          type=\"button\"\n          className={styles.addEditButton}\n          onClick={() => {\n            trackEvent('click', 'hide_specific_address');\n            window.location.href = paths.hideAddress;\n          }}\n        >\n          {I18n.t(\n            numPrivateLocations ? `${i18nPrefix}edit` : `${i18nPrefix}add`\n          )}\n        </Button>\n      </div>\n      <div className={styles.hideAnywhere}>\n        <SvgActionsGlobalNormalMedium />\n        <div>{I18n.t_html(`${i18nPrefix}hide_anywhere_v2_html`)}</div>\n        <Button\n          type=\"button\"\n          className={styles.addEditButton}\n          onClick={() => {\n            trackEvent('click', 'hide_any_start_end');\n            window.location.href = paths.hideAnywhere;\n          }}\n        >\n          {I18n.t(\n            defaultStreamPrivacy === 'disabled'\n              ? `${i18nPrefix}add`\n              : `${i18nPrefix}edit`\n          )}\n        </Button>\n      </div>\n      <div className={styles.hideAll}>\n        <SvgActionsVisibleDisabledNormalMedium />\n        <div>\n          <div className={styles.hideAllLabel}>\n            {I18n.t_html(`${i18nPrefix}hide_all_v2`)}\n          </div>\n          <div className={styles.hideAllDetail}>\n            {I18n.t_html(`${i18nPrefix}hide_all_detail_html`)}\n          </div>\n        </div>\n        <Switch\n          name=\"default-activity-map-visibility\"\n          className={styles.switch}\n          checked={toggleSwitchState}\n          onClick={onSwitchClick}\n          disabled={openModal}\n        />\n        <ConfirmModal\n          title={I18n.t_html(\n            'strava.settings.privacy.visibility.change_visibility'\n          )}\n          body={I18n.t_html(`${i18nPrefix}hide_all_warning_under_18`)}\n          onConfirm={() => updateMapVisibility(() => setOpenModal(false))}\n          isOpen={openModal}\n          onDismiss={closeModal}\n        />\n      </div>\n    </div>\n  );\n}\n\nMapVisibilityControls.propTypes = {\n  numPrivateLocations: PropTypes.number.isRequired,\n  defaultStreamPrivacy: PropTypes.string.isRequired,\n  defaultActivityMapVisibility: PropTypes.string.isRequired,\n  paths: PropTypes.shape({\n    hideAddress: PropTypes.string,\n    hideAnywhere: PropTypes.string,\n    athleteSettings: PropTypes.string\n  }).isRequired,\n  isAthleteUnder18: PropTypes.bool.isRequired\n};\n\nexport default MapVisibilityControls;\n","export { default } from './MapVisibilityControls';\n","// Setting style rules to `null` will prevent them from being rendered\n// This allows for standard styling using CSS without the need to use !important\n\n// important - input height and highlighter height needs to be the same in order\n// for highlighted mentions overlay to scroll together with the input text.\n\nexport const setMentionInputStyles = ({ inputHeight }) => ({\n  // Container\n  control: {\n    height: null,\n    width: null\n  },\n\n  // Mentioned Name Overlay\n  highlighter: {\n    lineHeight: null,\n    border: '1px solid transparent',\n    height: inputHeight,\n    padding: null,\n    color: null,\n    width: null,\n    pointerEvents: 'none',\n    overflow: 'hidden',\n    boxSizing: 'border-box'\n  },\n\n  // <textarea> tag\n  input: {\n    backgroundColor: null,\n    boxSizing: null,\n    display: null,\n    fontFamily: null,\n    fontSize: null,\n    height: inputHeight,\n    resize: null,\n    width: null,\n    overflow: 'auto'\n  },\n\n  // Mentioned Popover\n  suggestions: {\n    backgroundColor: null,\n    left: 0,\n    marginTop: null,\n    minWidth: null,\n    position: 'absolute',\n    right: 0,\n    top: null,\n    width: null,\n    zIndex: 50,\n    // <ul> element\n    list: {\n      listStyleType: null,\n      margin: null,\n      padding: null\n    },\n    // <li> element\n    item: {\n      cursor: null,\n\n      '&focused': {\n        backgroundColor: '#e6e6e6'\n      }\n    }\n  }\n});\n\nexport default { setMentionInputStyles };\n","// extracted by mini-css-extract-plugin\nexport default {\"body\":\"StravaMentionsInput--body--yOMK3\",\"btn\":\"StravaMentionsInput--btn--YYcZz\",\"suggestions\":\"StravaMentionsInput--suggestions--v2vJg\",\"suggestion-list\":\"StravaMentionsInput--suggestion-list--s0x0J\",\"suggestionList\":\"StravaMentionsInput--suggestion-list--s0x0J\",\"highlighter\":\"StravaMentionsInput--highlighter--+x0r2\",\"suggestion\":\"StravaMentionsInput--suggestion--XfaTw\",\"meta-container\":\"StravaMentionsInput--meta-container--G9xOE\",\"metaContainer\":\"StravaMentionsInput--meta-container--G9xOE\",\"entity-name\":\"StravaMentionsInput--entity-name--Dudon\",\"entityName\":\"StravaMentionsInput--entity-name--Dudon\",\"location\":\"StravaMentionsInput--location--6QQm3\",\"member-icon\":\"StravaMentionsInput--member-icon--YNAMK\",\"memberIcon\":\"StravaMentionsInput--member-icon--YNAMK\",\"mentioned-entity\":\"StravaMentionsInput--mentioned-entity--PDFS2\",\"mentionedEntity\":\"StravaMentionsInput--mentioned-entity--PDFS2\"};","const sortByDisplayName = (a, b) => {\n  if (a.display < b.display) {\n    return -1;\n  }\n  if (a.display > b.display) {\n    return 1;\n  }\n  return 0;\n};\n\n// Sort by display name\n// Remove any duplicate entries\n// Remove viewing athlete from suggested results\nexport const sortAndFilter = (mentionableAthletes, viewingAthleteId) => {\n  let entries = mentionableAthletes.sort((a, b) => sortByDisplayName(a, b));\n  entries = Array.from(new Set(entries.map((a) => a.id))).map((id) => {\n    return entries.find((a) => a.id === id);\n  });\n  entries = entries.filter(\n    (obj) => String(obj?.id) !== String(viewingAthleteId)\n  );\n  return entries;\n};\n\nexport default { sortAndFilter };\n","import createNetworkingClient from 'utils/networking-client';\nimport { devLog } from '../../utils/devUtils';\nimport { logError } from '../../utils/sentry';\nimport { sortAndFilter } from './StravaMentionsInput.utils';\n\n// TODO::: re-implement caching after club-mentions-web has been deployed at 100%\nconst fetchData = (url, viewingAthleteId) => {\n  return createNetworkingClient()\n    .get(url)\n    .then(({ data }) => {\n      return sortAndFilter(data, viewingAthleteId);\n    })\n    .catch((e) => {\n      logError(e);\n      return [];\n    });\n};\n\nexport const fetchMentionableEntities = ({\n  entity,\n  entityId,\n  viewingAthleteId,\n  surfaceType\n}) => {\n  devLog(\n    `[StravaMentionsInput]#fetchMentionableEntities {entity: ${entity}, entityId: ${entityId},  surfaceType: ${surfaceType}}`\n  );\n\n  let url = '/athlete/mentionable_entities';\n  if (entity && entityId) {\n    url = `/athlete/mentionable_entities?parent_type=${entity}&parent_id=${entityId}`;\n    if (surfaceType) {\n      url += `&surface_type=${surfaceType}`;\n    }\n  }\n  return fetchData(url, viewingAthleteId);\n};\n\nexport default { fetchMentionableEntities };\n","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { MentionsInput, Mention } from 'react-mentions';\nimport { Avatar } from '@strava/ui/Avatar';\nimport { trackV2 } from 'utils/analytics';\n\nimport I18n from 'utils/I18n';\nimport { useSafeState } from '@strava/react-hooks/use-safe-state';\nimport { setMentionInputStyles } from './MentionInputStyles';\n\nimport styles from './StravaMentionsInput.scss';\nimport { sortAndFilter } from './StravaMentionsInput.utils';\nimport { fetchMentionableEntities } from './StravaMentionsInput.cache';\n\nconst StravaMentionsInput = ({\n  viewingAthleteId,\n  entity,\n  entityId,\n  placeHolder,\n  suggestionLimit = 5,\n  autoFocus = false,\n  clubMentionsEnabled,\n  trackAnalytics = () => {},\n  onInputChange = () => {},\n  clearInputToggle = false,\n  inputName = '',\n  inputHeight = 60,\n  value = '',\n  surfaceType = 'comment',\n  analyticsFields = {\n    page: '',\n    category: ''\n  },\n  classNames,\n  onInputClickAnalytics = () => {}\n}) => {\n  const [mentionableEntities, setMentionableEntities] = useSafeState([]);\n  const [inputValue, setInputValue] = useState(value);\n  const firstRender = useRef(true);\n\n  const mentionInputStyles = setMentionInputStyles({ inputHeight });\n\n  useEffect(() => {\n    if (firstRender.current) {\n      firstRender.current = false;\n      return;\n    }\n    setInputValue('');\n  }, [clearInputToggle]);\n\n  useEffect(() => {\n    fetchMentionableEntities({ viewingAthleteId }).then((mentionables) => {\n      setMentionableEntities(mentionables);\n    });\n  }, [entity, entityId, setMentionableEntities, viewingAthleteId]);\n\n  const nameFromId = (id) => {\n    if (mentionableEntities && mentionableEntities.length > 0) {\n      const filteredEntity = mentionableEntities.find((a) => a.id === id);\n\n      if (filteredEntity) {\n        return filteredEntity.display;\n      }\n    }\n    return '';\n  };\n\n  const filteredMentionableEntities = (query) => {\n    if (analyticsFields && query.length === 0) {\n      trackV2({\n        category: analyticsFields.category,\n        page: analyticsFields.page,\n        action: 'screen_enter',\n        element: 'mentions_list'\n      });\n    }\n\n    const results = mentionableEntities.filter(\n      (a) => a.display.toLowerCase().indexOf(query.toLowerCase()) >= 0\n    );\n    return results.slice(0, suggestionLimit);\n  };\n\n  const fetchEntities = (e) => {\n    if (e.key === '@') {\n      fetchMentionableEntities({\n        entity,\n        entityId,\n        viewingAthleteId,\n        surfaceType\n      }).then((mentionables) => {\n        const filtered = sortAndFilter(\n          mentionableEntities.concat(mentionables),\n          viewingAthleteId\n        );\n\n        setMentionableEntities(filtered);\n      });\n    }\n  };\n  const onAddMentionableEntity = (id) => {\n    if (analyticsFields) {\n      const numericId = id.split('/')[1];\n      const entityType = clubMentionsEnabled\n        ? mentionableEntities.find((a) => a.id === id).type\n        : 'athlete';\n\n      trackV2({\n        category: analyticsFields.category,\n        page: analyticsFields.page,\n        action: 'click',\n        element: 'mentions_list',\n        properties: {\n          mentioned_athlete_id:\n            clubMentionsEnabled && entityType === 'athlete' ? numericId : null,\n          mentioned_club_id:\n            clubMentionsEnabled && entityType === 'club' ? numericId : null\n        }\n      });\n    }\n  };\n\n  const renderSuggestion = (entry) => {\n    const avatarStyle = { marginRight: '8px' };\n\n    return (\n      <div className={styles.suggestion} data-testid=\"suggestions\">\n        <Avatar\n          name={entry.display}\n          src={\n            clubMentionsEnabled && entry.type && entry.type === 'club'\n              ? entry.image\n              : entry.profile\n          }\n          size=\"small\"\n          type={clubMentionsEnabled && entry.type ? entry.type : 'athlete'}\n          style={avatarStyle}\n          badge={entry.member_type}\n          onClick={() => {\n            trackAnalytics({\n              action: 'click',\n              element: 'profile_picture',\n              properties: { element_source: 'mentionable-athlete-suggestions' }\n            });\n          }}\n        />\n        <div className={styles.metaContainer}>\n          <div className={styles.entityName}>{entry.display}</div>\n          {entry.location && entry.location.length > 0 && (\n            <div>\n              {clubMentionsEnabled && entry.type === 'club' && (\n                <>\n                  <span className={`text-caption2 ${styles.location}`}>\n                    {I18n.t('components.mentions.club')}\n                  </span>\n                  <span className={styles.locationDivider}>・</span>\n                </>\n              )}\n              <span className={`text-caption2 ${styles.location}`}>\n                {entry.location}\n              </span>\n            </div>\n          )}\n        </div>\n      </div>\n    );\n  };\n\n  return (\n    <>\n      <MentionsInput\n        allowSpaceInQuery={true}\n        autoFocus={autoFocus}\n        style={mentionInputStyles}\n        onClick={onInputClickAnalytics}\n        classNames={{\n          mentions: styles.body,\n          mentions__highlighter: styles.highlighter,\n          mentions__suggestions: styles.suggestions,\n          mentions__suggestions__list: styles.suggestionList,\n          ...classNames\n        }}\n        value={inputValue}\n        placeholder={placeHolder}\n        onChange={(event, newValue, newPlainTextValue, mentions) => {\n          setInputValue(newValue);\n          onInputChange({ event, newValue, newPlainTextValue, mentions });\n        }}\n        onKeyDown={fetchEntities}\n        a11ySuggestionsListLabel={I18n.t('components.mentions.list_label')}\n      >\n        <Mention\n          appendSpaceOnAdd={true}\n          data={filteredMentionableEntities}\n          displayTransform={nameFromId}\n          // Possible TODO: make patch into React-Mentions library to access a function\n          // or a string for what we pass to the markup prop\n          markup=\"[strava://__id__]\"\n          renderSuggestion={renderSuggestion}\n          className={styles.mentionedEntity}\n          onAdd={onAddMentionableEntity}\n        />\n      </MentionsInput>\n      {inputName && (\n        <input name={inputName} type=\"hidden\" value={value || ''} />\n      )}\n    </>\n  );\n};\n\nStravaMentionsInput.propTypes = {\n  entity: PropTypes.oneOf(['activity', 'group_activity', 'post']).isRequired,\n  entityId: PropTypes.string,\n  placeHolder: PropTypes.string,\n  suggestionLimit: PropTypes.number,\n  autoFocus: PropTypes.bool,\n  viewingAthleteId: PropTypes.string.isRequired,\n  trackAnalytics: PropTypes.func,\n  inputName: PropTypes.string,\n  onInputChange: PropTypes.func,\n  clubMentionsEnabled: PropTypes.bool.isRequired,\n  clearInputToggle: PropTypes.bool,\n  inputHeight: PropTypes.number,\n  value: PropTypes.string,\n  surfaceType: PropTypes.string,\n  analyticsFields: PropTypes.shape({\n    page: PropTypes.string,\n    category: PropTypes.string\n  }),\n  classNames: PropTypes.shape({}),\n  onInputClickAnalytics: PropTypes.func\n};\n\nexport default StravaMentionsInput;\n","export { default } from './StravaMentionsInput';\n","// extracted by mini-css-extract-plugin\nexport default {\"suggestions\":\"MentionableComment--suggestions--LLgxF\",\"suggestion-list\":\"MentionableComment--suggestion-list--Bzs+w\",\"suggestionList\":\"MentionableComment--suggestion-list--Bzs+w\",\"highlighter\":\"MentionableComment--highlighter--k4JI4\",\"suggestion\":\"MentionableComment--suggestion--in26l\",\"meta-container\":\"MentionableComment--meta-container--cEWp1\",\"metaContainer\":\"MentionableComment--meta-container--cEWp1\",\"athlete-name\":\"MentionableComment--athlete-name--1MLF+\",\"athleteName\":\"MentionableComment--athlete-name--1MLF+\",\"location\":\"MentionableComment--location--NHKBf\",\"member-icon\":\"MentionableComment--member-icon--1JHOu\",\"memberIcon\":\"MentionableComment--member-icon--1JHOu\",\"mentioned-athlete\":\"MentionableComment--mentioned-athlete--4A3yg\",\"mentionedAthlete\":\"MentionableComment--mentioned-athlete--4A3yg\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport I18n from 'utils/I18n';\nimport createNetworkingClient from 'utils/networking-client';\nimport StravaMentionsInput from '../StravaMentionsInput';\n\nimport styles from './styles.scss';\n\nclass MentionableComment extends React.Component {\n  state = {\n    isSubmitting: false,\n    value: ''\n  };\n\n  submitComment = (e) => {\n    e.preventDefault();\n\n    const { entity, entityId } = this.props;\n    const { value } = this.state;\n\n    this.setState({ isSubmitting: true });\n    createNetworkingClient()\n      .post(`/feed/${entity.toLowerCase()}/${entityId}/comment`, {\n        comment: value\n      })\n      .then((response) => {\n        if (response && response.status === 200) {\n          this.handleSubmitCommentComplete(response.data);\n        } else {\n          this.handleSubmitCommentFail();\n        }\n      })\n      .catch(() => {\n        this.handleSubmitCommentFail();\n      });\n  };\n\n  handleSubmitCommentComplete = (data) => {\n    const { entity, entityId, onSubmitSuccess } = this.props;\n\n    this.setState({ value: '', isSubmitting: false });\n\n    if (onSubmitSuccess) {\n      onSubmitSuccess(data);\n      return;\n    }\n\n    // Dispatch an event so that code outside or React can be executed\n    // when a comment is created.\n    const ev = new CustomEvent('commentCreatedFromReact', {\n      detail: {\n        response: data,\n        entity,\n        entityId\n      }\n    });\n    document.dispatchEvent(ev);\n  };\n\n  handleSubmitCommentFail = () => {\n    // TODO: handle error case\n  };\n\n  handleChange = ({ newValue }) => {\n    // Avoids text duplication bug detailed here: https://github.com/signavio/react-mentions/issues/332\n    const cleanValue = newValue.replace(/[\\r]+/g, '');\n    this.setState({ value: cleanValue });\n  };\n\n  render() {\n    const { value, isSubmitting } = this.state;\n    const { entity, entityId, clubMentionsEnabled } = this.props;\n    const {\n      placeHolder,\n      str,\n      textAreaClasses,\n      buttonClasses,\n      buttonText,\n      autoFocus = false,\n      viewingAthleteId\n    } = this.props;\n\n    const useButtonText =\n      buttonText || I18n.t('templates.feed.comment_box.post');\n\n    return (\n      <>\n        <StravaMentionsInput\n          autoFocus={autoFocus}\n          entity={entity}\n          entityId={entityId}\n          onInputChange={this.handleChange}\n          clubMentionsEnabled={clubMentionsEnabled}\n          surfaceType=\"comment\"\n          placeHolder={placeHolder}\n          viewingAthleteId={viewingAthleteId}\n          classNames={{\n            mentions: 'media-body',\n            mentions__highlighter: styles.highlighter,\n            mentions__suggestions: styles.suggestions,\n            mentions__suggestions__list: styles.suggestionList,\n            mentions__input: textAreaClasses\n          }}\n        />\n        <div className=\"media-actions\">\n          <button\n            type=\"button\"\n            className={`text-footnote ${buttonClasses}`}\n            disabled={isSubmitting || value.length === 0}\n            onClick={this.submitComment}\n            {...str}\n          >\n            {useButtonText}\n          </button>\n        </div>\n      </>\n    );\n  }\n}\n\nMentionableComment.propTypes = {\n  entity: PropTypes.string.isRequired,\n  entityId: PropTypes.string.isRequired,\n  clubMentionsEnabled: PropTypes.bool.isRequired,\n  str: PropTypes.shape({\n    'str-type': PropTypes.string.isRequired,\n    'str-on': PropTypes.string.isRequired,\n    'str-trackable-id': PropTypes.string.isRequired\n  }),\n  placeHolder: PropTypes.string,\n  textAreaClasses: PropTypes.string,\n  buttonClasses: PropTypes.string,\n  buttonText: PropTypes.string,\n  suggestionLimit: PropTypes.number,\n  autoFocus: PropTypes.bool,\n  onSubmitSuccess: PropTypes.func,\n  viewingAthleteId: PropTypes.string.isRequired\n};\n\nexport default MentionableComment;\n","// extracted by mini-css-extract-plugin\nexport default {\"slider\":\"Handle--slider--ldj1z\",\"disabled\":\"Handle--disabled--7co7r\",\"start\":\"Handle--start--F22xX\",\"end\":\"Handle--end--j02lR\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.scss';\n\nconst Handle = ({\n  entityId,\n  domain: [min, max],\n  handle,\n  disabled = false,\n  getHandleProps\n}) => {\n  const classNames = [styles.slider];\n\n  if (disabled) {\n    classNames.push(styles.disabled);\n  }\n  if (handle.percent === 0) {\n    classNames.push(styles.start);\n  } else if (handle.percent === 100) {\n    classNames.push(styles.end);\n  }\n\n  return (\n    <button\n      id={`perceived-exertion-slider-${entityId}`}\n      role=\"slider\"\n      type=\"button\"\n      aria-valuemin={min}\n      aria-valuemax={max}\n      aria-valuenow={handle.value}\n      className={classNames.join(' ')}\n      style={{\n        left: `${handle.percent}%`\n      }}\n      {...getHandleProps(handle.id)}\n    />\n  );\n};\n\nHandle.propTypes = {\n  entityId: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n    .isRequired,\n  domain: PropTypes.arrayOf(Number).isRequired,\n  handle: PropTypes.shape({\n    id: PropTypes.string.isRequired,\n    value: PropTypes.number.isRequired,\n    percent: PropTypes.number.isRequired\n  }).isRequired,\n  getHandleProps: PropTypes.func.isRequired,\n  disabled: PropTypes.bool\n};\n\nexport default Handle;\n","// extracted by mini-css-extract-plugin\nexport default {\"track\":\"Track--track--IoRiC\",\"disabled\":\"Track--disabled--079fp\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.scss';\n\nconst Track = ({ source, target, disabled = false }) => (\n  <div\n    className={`${styles.track} ${disabled ? styles.disabled : ''}`}\n    style={{\n      left: `${source.percent}%`,\n      width: `${target.percent - source.percent}%`\n    }}\n  />\n);\n\nTrack.propTypes = {\n  source: PropTypes.shape({\n    value: PropTypes.number.isRequired,\n    percent: PropTypes.number.isRequired\n  }).isRequired,\n  target: PropTypes.shape({\n    value: PropTypes.number.isRequired,\n    percent: PropTypes.number.isRequired\n  }).isRequired,\n  disabled: PropTypes.bool\n};\n\nexport default Track;\n","// extracted by mini-css-extract-plugin\nexport default {\"tick\":\"Tick--tick--eBWfe\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.scss';\n\nconst Tick = ({ tick }) => (\n  <div\n    className={styles.tick}\n    style={{\n      left: `${tick.percent}%`\n    }}\n  />\n);\n\nTick.propTypes = {\n  tick: PropTypes.shape({\n    percent: PropTypes.number.isRequired\n  }).isRequired\n};\n\nexport default Tick;\n","// extracted by mini-css-extract-plugin\nexport default {\"slider\":\"RPESlider--slider--NDMYL\",\"graphic-wrap\":\"RPESlider--graphic-wrap--QMUVK\",\"graphicWrap\":\"RPESlider--graphic-wrap--QMUVK\",\"rail\":\"RPESlider--rail--XnBfv\",\"ticks\":\"RPESlider--ticks--423H3\",\"rail-hitarea\":\"RPESlider--rail-hitarea---cmVm\",\"railHitarea\":\"RPESlider--rail-hitarea---cmVm\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Slider, Rail, Handles, Tracks, Ticks } from 'react-compound-slider';\n\nimport Handle from './Handle';\nimport Track from './Track';\nimport Tick from './Tick';\n\nimport styles from './styles.scss';\n\nconst RPESlider = ({\n  entityId,\n  domain,\n  values,\n  disabled = false,\n  onUpdate = () => {},\n  onChange = () => {}\n}) => (\n  <Slider\n    disabled={disabled}\n    mode={1}\n    step={1}\n    domain={domain}\n    onChange={onChange}\n    onUpdate={onUpdate}\n    values={values}\n    className={styles.slider}\n  >\n    <div className={styles.graphicWrap}>\n      <div className={styles.rail} />\n    </div>\n\n    <Tracks left={false}>\n      {({ tracks }) => (\n        <div className={styles.graphicWrap}>\n          {tracks.map(({ id, source, target }) => (\n            <Track key={id} source={source} target={target} />\n          ))}\n        </div>\n      )}\n    </Tracks>\n\n    <Ticks count={domain[1]}>\n      {({ ticks }) => (\n        <div className={`${styles.graphicWrap} ${styles.ticks}`}>\n          {ticks.map((tick) => (\n            <Tick key={tick.id} tick={tick} count={ticks.length} />\n          ))}\n        </div>\n      )}\n    </Ticks>\n\n    {/*\n      whe need to use Rail component here so that we can add getRailProps\n      which will add mouse interections\n    */}\n    <Rail>\n      {({ getRailProps }) => (\n        <div className={styles.graphicWrap}>\n          <div className={styles.railHitarea} {...getRailProps()} />\n        </div>\n      )}\n    </Rail>\n\n    <Handles>\n      {({ handles, getHandleProps }) => (\n        <div className={styles.graphicWrap}>\n          {handles.map((handle) => (\n            <Handle\n              entityId={entityId}\n              key={handle.id}\n              handle={handle}\n              domain={domain}\n              getHandleProps={getHandleProps}\n            />\n          ))}\n        </div>\n      )}\n    </Handles>\n  </Slider>\n);\n\nRPESlider.propTypes = {\n  entityId: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n    .isRequired,\n  disabled: PropTypes.bool,\n  domain: PropTypes.arrayOf(Number).isRequired,\n  values: PropTypes.arrayOf(Number).isRequired,\n  onUpdate: PropTypes.func,\n  onChange: PropTypes.func\n};\n\nexport default RPESlider;\n","// extracted by mini-css-extract-plugin\nexport default {\"slider-container\":\"PerceivedExertionInput--slider-container--vT2Dv\",\"sliderContainer\":\"PerceivedExertionInput--slider-container--vT2Dv\",\"label-container\":\"PerceivedExertionInput--label-container--+doYg\",\"labelContainer\":\"PerceivedExertionInput--label-container--+doYg\",\"label\":\"PerceivedExertionInput--label--7CEXn\",\"info-btn\":\"PerceivedExertionInput--info-btn--W3jbo\",\"infoBtn\":\"PerceivedExertionInput--info-btn--W3jbo\",\"title\":\"PerceivedExertionInput--title--6Ry6A\",\"reset-btn\":\"PerceivedExertionInput--reset-btn--zMoeb\",\"resetBtn\":\"PerceivedExertionInput--reset-btn--zMoeb\",\"slider\":\"PerceivedExertionInput--slider--O0Ai5\",\"slider-ticks\":\"PerceivedExertionInput--slider-ticks--1MEXL\",\"sliderTicks\":\"PerceivedExertionInput--slider-ticks--1MEXL\",\"disabled\":\"PerceivedExertionInput--disabled--6haCa\",\"hint\":\"PerceivedExertionInput--hint--UZz++\",\"hint-title\":\"PerceivedExertionInput--hint-title--fiKMw\",\"hintTitle\":\"PerceivedExertionInput--hint-title--fiKMw\"};","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nclass Portal extends React.Component {\n  portalNode;\n\n  state = {\n    isMounted: false\n  };\n\n  componentDidMount() {\n    const { id } = this.props;\n\n    this.portalNode = document.createElement('div');\n    this.portalNode.setAttribute('data-portal-id', `portal-${id}`);\n    document.body.appendChild(this.portalNode);\n\n    this.setState({ isMounted: true });\n  }\n\n  componentWillUnmount() {\n    document.body.removeChild(this.portalNode);\n  }\n\n  render() {\n    const { children } = this.props;\n    const { isMounted } = this.state;\n\n    if (!isMounted) {\n      return null;\n    }\n\n    return ReactDOM.createPortal(children, this.portalNode);\n  }\n}\n\nPortal.propTypes = {\n  id: PropTypes.string.isRequired,\n  children: PropTypes.node\n};\n\nexport default Portal;\n","// extracted by mini-css-extract-plugin\nexport default {\"tooltip-container\":\"Tooltip--tooltip-container--3QZlM\",\"tooltipContainer\":\"Tooltip--tooltip-container--3QZlM\",\"tooltip\":\"Tooltip--tooltip--d9Eb0\",\"arrow\":\"Tooltip--arrow--f-IeC\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Manager, Reference, Popper } from 'react-popper';\n\nimport Portal from '../Portal';\n\nimport styles from './styles.scss';\n\nclass Tooltip extends React.Component {\n  state = {\n    isOpen: this.props.isOpen\n  };\n\n  handleShow = () => {\n    this.setState({ isOpen: true });\n  };\n\n  handleHide = () => {\n    this.setState({ isOpen: false });\n  };\n\n  tooltipClassName = () => {\n    const { className } = this.props;\n    const toolTipClasses = [styles.tooltip];\n\n    if (className) {\n      toolTipClasses.push(className);\n    }\n\n    return toolTipClasses.join(' ');\n  };\n\n  render() {\n    const { children, content, placement = 'top' } = this.props;\n    const { isOpen } = this.state;\n\n    return (\n      <Manager>\n        <Reference>\n          {({ ref }) =>\n            React.cloneElement(children, {\n              ref,\n              onMouseOver: this.handleShow,\n              onMouseLeave: this.handleHide,\n              onFocus: this.handleShow,\n              onBlur: this.handleHide\n            })\n          }\n        </Reference>\n        <Portal id=\"tooltip-container\">\n          {isOpen ? (\n            <Popper placement={placement}>\n              {({ style, placement: dataPlacement, ref, arrowProps }) => (\n                <div\n                  ref={ref}\n                  role=\"tooltip\"\n                  style={style}\n                  className={styles.tooltipContainer}\n                  data-placement={dataPlacement}\n                >\n                  <div className={this.tooltipClassName()}>{content}</div>\n                  <div\n                    ref={arrowProps.ref}\n                    style={arrowProps.style}\n                    className={styles.arrow}\n                    data-placement={dataPlacement}\n                  />\n                </div>\n              )}\n            </Popper>\n          ) : null}\n        </Portal>\n      </Manager>\n    );\n  }\n}\n\nTooltip.propTypes = {\n  children: PropTypes.node.isRequired,\n  content: PropTypes.string.isRequired,\n  placement: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),\n  className: PropTypes.string,\n  isOpen: PropTypes.bool\n};\n\nexport default Tooltip;\n","// extracted by mini-css-extract-plugin\nexport default {\"toggle-container\":\"Toggle--toggle-container--BmLh5\",\"toggleContainer\":\"Toggle--toggle-container--BmLh5\",\"disabled\":\"Toggle--disabled---O-c0\",\"info-btn\":\"Toggle--info-btn--CCFpO\",\"infoBtn\":\"Toggle--info-btn--CCFpO\",\"tooltip\":\"Toggle--tooltip--xtP7B\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport InfoIcon from '@strava/icons/NavigationInformationNormalXsmall';\nimport { Button } from '@strava/ui/Button';\n\nimport I18n from 'utils/I18n';\nimport Tooltip from 'components/shared/Tooltip';\n\nimport styles from './styles.scss';\n\nexport const I18nPrefix = 'strava.perceived_exertion_input.toggle';\n\nconst Toggle = ({\n  entityId,\n  name,\n  checked = false,\n  disabled = false,\n  onChange\n}) => {\n  const containerClassName = [styles.toggleContainer];\n\n  if (disabled) {\n    containerClassName.push(styles.disabled);\n  }\n\n  return (\n    <div className={containerClassName.join(' ')}>\n      <label htmlFor={`rpe-toggle-${entityId}`}>\n        {/*\n          The HTML specification says unchecked check boxes are not\n          successful, and thus web browsers do not send them.\n          In order to solve this we have a hidden input that has 0/1\n          depending if checkbox is selected or not, this hidden input data\n          get's sent to the server and not the actual checkbox value.\n        */}\n        <input name={name} type=\"hidden\" value={checked ? 1 : 0} />\n        <input\n          id={`rpe-toggle-${entityId}`}\n          type=\"checkbox\"\n          disabled={disabled}\n          checked={checked ? 'checked' : ''}\n          onChange={onChange}\n        />\n        {I18n.t(`${I18nPrefix}.label`)}\n      </label>\n\n      <Tooltip\n        className={styles.tooltip}\n        content={I18n.t(`${I18nPrefix}.learn_more.body_v2`)}\n      >\n        <Button\n          type=\"button\"\n          variant=\"icon\"\n          className={styles.infoBtn}\n          aria-label={I18n.t(`${I18nPrefix}.learn_more.cta.learn_more`)}\n        >\n          <InfoIcon fill=\"#999\" aria-hidden={true} />\n        </Button>\n      </Tooltip>\n    </div>\n  );\n};\n\nToggle.propTypes = {\n  entityId: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n    .isRequired,\n  name: PropTypes.string.isRequired,\n  onChange: PropTypes.func.isRequired,\n  checked: PropTypes.bool,\n  disabled: PropTypes.bool\n};\n\nexport default Toggle;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport InfoIcon from '@strava/icons/NavigationInformationNormalXsmall';\nimport { Button } from '@strava/ui/Button';\n\nimport I18n from 'utils/I18n';\nimport { trackV2 } from 'utils/analytics';\n\nimport isNil from 'lodash-es/isNil';\nimport RPESlider from './components/RPESlider';\n\nimport styles from './styles.scss';\nimport Toggle from './components/Toggle';\n\nexport const I18nPrefix = 'strava.perceived_exertion_input';\n\nclass PerceivedExertionInput extends React.Component {\n  state = {\n    sliderDomain: [1, 10],\n    showToggle: this.props.showToggle ?? true,\n    hasValue: !isNil(this.props.perceivedExertion),\n    perceivedExertion: isNil(this.props.perceivedExertion)\n      ? [-1]\n      : [this.props.perceivedExertion],\n    preferPerceivedExertion: this.props.preferPerceivedExertion\n  };\n\n  containerRef = React.createRef();\n\n  componentDidMount() {\n    // Listen to an event so that code outside of React can\n    // communicate with this component.\n    const node = this.containerRef.current;\n    const showToggleEvent = 'PerceivedExertionInput::showToggle';\n    node.addEventListener(showToggleEvent, ({ detail }) => {\n      this.setState({ showToggle: detail.showToggle });\n    });\n  }\n\n  handleReset = () => {\n    const { analytics } = this.props;\n\n    this.setState({\n      hasValue: false,\n      perceivedExertion: [-1],\n      preferPerceivedExertion: false\n    });\n\n    trackV2({\n      category: analytics.category,\n      page: analytics.page.outer,\n      action: 'click',\n      element: 'remove_perceived_exertion_input'\n    });\n  };\n\n  handleSliderUpdate = (v) => {\n    const { perceivedExertion } = this.state;\n\n    if (perceivedExertion[0] !== -1) {\n      this.setState({ hasValue: true });\n    }\n\n    this.setState({ perceivedExertion: v });\n  };\n\n  handleSliderChange = (values) => {\n    const { perceivedExertion } = this.state;\n    const { analytics } = this.props;\n\n    if (perceivedExertion[0] === -1 || perceivedExertion[0] !== values[0]) {\n      return;\n    }\n\n    trackV2({\n      category: analytics.category,\n      page: analytics.page.outer,\n      action: 'interact',\n      element: 'perceived_exertion_slider',\n      properties: {\n        value: values[0]\n      }\n    });\n  };\n\n  handlePreferPerceivedExertionToggle = () => {\n    const { preferPerceivedExertion } = this.state;\n    const { analytics } = this.props;\n\n    this.setState({ preferPerceivedExertion: !preferPerceivedExertion });\n\n    trackV2({\n      category: analytics.category,\n      page: analytics.page.outer,\n      action: 'click',\n      element: 'prefer_perceived_exertion_toggle'\n    });\n  };\n\n  getExertionKey = () => {\n    const { hasValue, perceivedExertion } = this.state;\n\n    if (!hasValue) {\n      return 'empty';\n    }\n\n    if (perceivedExertion[0] <= 3) {\n      return 'easy';\n    }\n    if (perceivedExertion[0] >= 4 && perceivedExertion[0] <= 6) {\n      return 'moderate';\n    }\n    if (perceivedExertion[0] >= 7 && perceivedExertion[0] <= 9) {\n      return 'hard';\n    }\n\n    return 'max_effort';\n  };\n\n  getHintBodyText = () => {\n    const exertionKey = this.getExertionKey();\n\n    if (exertionKey === 'empty') {\n      return I18n.t(`${I18nPrefix}.slider.hint.${exertionKey}.body_v2`);\n    }\n\n    return (\n      <>\n        {I18n.t(`${I18nPrefix}.slider.hint.${exertionKey}.body_line_1`)}\n        <br />\n        {I18n.t(`${I18nPrefix}.slider.hint.${exertionKey}.body_line_2`)}\n        <br />\n        {I18n.t(`${I18nPrefix}.slider.hint.${exertionKey}.body_line_3`)}\n      </>\n    );\n  };\n\n  render() {\n    const {\n      sliderDomain,\n      showToggle = true,\n      hasValue,\n      perceivedExertion = null,\n      preferPerceivedExertion = false\n    } = this.state;\n    const { entityId, inputName, toggleName, analytics } = this.props;\n\n    const exertionKey = this.getExertionKey();\n\n    return (\n      <div ref={this.containerRef}>\n        <div className={styles.labelContainer}>\n          <label\n            htmlFor={`perceived-exertion-slider-${entityId}`}\n            className={`text-footnote ${styles.label}`}\n          >\n            {I18n.t(`${I18nPrefix}.slider.label`)}\n          </label>\n          <Button\n            type=\"button\"\n            variant=\"icon\"\n            // .help.new-version is needed here so that jQuery code can\n            // pickup the click event and show the glossary modal\n            className={`help new-version ${styles.infoBtn}`}\n            data-glossary-term=\"definition-perceived-exertion\"\n            aria-label={I18n.t(\n              `${I18nPrefix}.toggle.learn_more.cta.learn_more`\n            )}\n            onClick={() => {\n              trackV2({\n                category: analytics.category,\n                page: analytics.page.outer,\n                action: 'click',\n                element: 'toggle_perceived_exertion_learn_more'\n              });\n            }}\n          >\n            <InfoIcon fill=\"#999\" aria-hidden={true} />\n          </Button>\n        </div>\n        <input\n          type=\"hidden\"\n          name={inputName}\n          value={hasValue ? perceivedExertion[0] : ''}\n        />\n        <div className={styles.sliderContainer}>\n          <div className={styles.slider}>\n            <div className={styles.title}>\n              <div className=\"text-footnote\">\n                {I18n.t(`${I18nPrefix}.slider.title.${exertionKey}`)}\n              </div>\n\n              {hasValue && (\n                <Button\n                  type=\"button\"\n                  className={`text-footnote ${styles.resetBtn}`}\n                  onClick={this.handleReset}\n                >\n                  {I18n.t(`${I18nPrefix}.slider.clear_entry`)}\n                </Button>\n              )}\n            </div>\n\n            <RPESlider\n              entityId={entityId}\n              domain={sliderDomain}\n              values={perceivedExertion}\n              onUpdate={this.handleSliderUpdate}\n              onChange={this.handleSliderChange}\n            />\n            <div\n              className={`text-caption2 ${styles.sliderTicks} ${\n                hasValue ? '' : styles.disabled\n              }`}\n            >\n              <div>{I18n.t(`${I18nPrefix}.slider.ticks.easy`)}</div>\n              <div>{I18n.t(`${I18nPrefix}.slider.ticks.moderate`)}</div>\n              <div>{I18n.t(`${I18nPrefix}.slider.ticks.max_effort`)}</div>\n            </div>\n\n            {showToggle && (\n              <Toggle\n                entityId={entityId}\n                name={toggleName}\n                checked={preferPerceivedExertion}\n                disabled={!hasValue}\n                onChange={this.handlePreferPerceivedExertionToggle}\n              />\n            )}\n          </div>\n\n          <div className={styles.hint}>\n            <div className={`text-caption2 text-bold ${styles.hintTitle}`}>\n              {I18n.t(`${I18nPrefix}.slider.hint.${exertionKey}.title`)}\n            </div>\n            <div className=\"text-caption2\">{this.getHintBodyText()}</div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n\nPerceivedExertionInput.propTypes = {\n  entityId: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n    .isRequired,\n  inputName: PropTypes.string.isRequired,\n  toggleName: PropTypes.string.isRequired,\n  perceivedExertion: PropTypes.number,\n  preferPerceivedExertion: PropTypes.bool,\n  showToggle: PropTypes.bool,\n  analytics: PropTypes.shape({\n    category: PropTypes.string.isRequired,\n    page: PropTypes.shape({\n      outer: PropTypes.string,\n      inner: PropTypes.string\n    }).isRequired\n  }).isRequired\n};\n\nexport default PerceivedExertionInput;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"ProgressGoalsRelativeEffortTab--container--x+eBq\",\"head\":\"ProgressGoalsRelativeEffortTab--head--djcOC\",\"summit-icon\":\"ProgressGoalsRelativeEffortTab--summit-icon--EnBHF\",\"summitIcon\":\"ProgressGoalsRelativeEffortTab--summit-icon--EnBHF\",\"info-icon\":\"ProgressGoalsRelativeEffortTab--info-icon--SbZA4\",\"infoIcon\":\"ProgressGoalsRelativeEffortTab--info-icon--SbZA4\"};","// extracted by mini-css-extract-plugin\nexport default {\"placeholder\":\"Placeholder--placeholder--JSyfU\",\"shimmer\":\"Placeholder--shimmer--1ib-T\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.scss';\n\nconst Placeholder = ({\n  height = '13px',\n  width = '100%',\n  className,\n  ...otherProps\n}) => (\n  <div\n    style={{ height, width }}\n    className={`${styles.placeholder} ${className}`}\n    {...otherProps}\n  />\n);\n\nPlaceholder.propTypes = {\n  height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  className: PropTypes.string\n};\n\nexport default Placeholder;\n","// extracted by mini-css-extract-plugin\nexport default {\"last-week\":\"NoAccess--last-week--0b0U3\",\"lastWeek\":\"NoAccess--last-week--0b0U3\",\"head\":\"NoAccess--head--kcOx4\",\"title\":\"NoAccess--title--leszI\",\"body\":\"NoAccess--body--Y8+uM\",\"description\":\"NoAccess--description--sOTCI\",\"graphic\":\"NoAccess--graphic--6drXf\"};","import React from 'react';\n\nimport Placeholder from '../Placeholder';\n\nimport styles from './styles.scss';\n\nconst NoAccess = () => (\n  <>\n    <div className={styles.lastWeek}>\n      <Placeholder height={13} width=\"30%\" />\n    </div>\n\n    <div className={styles.head}>\n      <Placeholder height={20} width=\"80%\" className={styles.title} />\n\n      <Placeholder height={13} className={styles.body} />\n      <Placeholder height={13} className={styles.body} />\n      <Placeholder height={13} width=\"90%\" />\n    </div>\n\n    <div className={styles.graphic}>\n      <Placeholder height={113} />\n    </div>\n\n    <div className={`media media-middle ${styles.description}`}>\n      <div className=\"media-object\">\n        <div className=\"app-icon-wrapper\">\n          <div className=\"app-icon icon-premium icon-xl\" />\n        </div>\n      </div>\n      <div className=\"media-content\">\n        <Placeholder height={64} />\n      </div>\n    </div>\n  </>\n);\n\nexport default NoAccess;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"WeekChart--container--RFGhY\",\"bar-chart\":\"WeekChart--bar-chart--SUXqZ\",\"barChart\":\"WeekChart--bar-chart--SUXqZ\",\"bar\":\"WeekChart--bar--hVO-P\",\"x-axis\":\"WeekChart--x-axis--HbWC5\",\"xAxis\":\"WeekChart--x-axis--HbWC5\",\"tick\":\"WeekChart--tick--p9s85\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { scaleLinear } from 'd3-scale';\nimport { max } from 'd3-array';\nimport Cldr from 'utils/Cldr';\n\nimport styles from './styles.scss';\n\nconst weekdayNames = (key) => {\n  return Cldr.calendar.weekdays({\n    format: 'stand-alone',\n    names_form: 'narrow'\n  })[key];\n};\n\nconst WEEKDAY_KEYS = {\n  0: 'mon',\n  1: 'tue',\n  2: 'wed',\n  3: 'thu',\n  4: 'fri',\n  5: 'sat',\n  6: 'sun'\n};\n\nconst WeekChart = ({ dailyScores }) => {\n  const m = max(dailyScores);\n  const scale = scaleLinear()\n    .domain([0, m === 0 ? 100 : m])\n    .range([0, 100]);\n\n  const barData = dailyScores.map((v, i) => ({\n    x: v,\n    w: weekdayNames(WEEKDAY_KEYS[i])\n  }));\n\n  return (\n    <div className={`mt-xs ${styles.container}`}>\n      <div className={styles.barChart}>\n        {barData.map((d, i) => (\n          <div key={`bar-${WEEKDAY_KEYS[i]}`} className={styles.bar}>\n            <span style={{ height: `${scale(d.x)}%` }} />\n          </div>\n        ))}\n      </div>\n\n      <div className={styles.xAxis}>\n        {barData.map((d, i) => (\n          <div key={`xAxis-${WEEKDAY_KEYS[i]}`} className={styles.tick}>\n            {d.w}\n          </div>\n        ))}\n      </div>\n    </div>\n  );\n};\n\nWeekChart.propTypes = {\n  dailyScores: PropTypes.arrayOf(PropTypes.number).isRequired\n};\n\nexport default WeekChart;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"HasAccess--head--BYFF7\",\"title\":\"HasAccess--title--uAyKw\",\"body\":\"HasAccess--body--jJVKh\",\"stats-container\":\"HasAccess--stats-container--Dhh41\",\"statsContainer\":\"HasAccess--stats-container--Dhh41\",\"stats\":\"HasAccess--stats--m0T13\",\"stat\":\"HasAccess--stat--dn4IR\",\"stat-label\":\"HasAccess--stat-label--xhWzp\",\"statLabel\":\"HasAccess--stat-label--xhWzp\",\"stat-value\":\"HasAccess--stat-value---zE8u\",\"statValue\":\"HasAccess--stat-value---zE8u\"};","import React from 'react';\nimport { Stats } from '@strava/ui/Stats';\nimport { Stat } from '@strava/ui/Stat';\n\nimport I18n from 'utils/I18n';\n\nimport WeekChart from '../../WeeklySummary/WeekInsightStats/WeekChart';\nimport Placeholder from '../Placeholder';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'strava.relative_effort.week_insight_stats';\n\nconst HasAccess = () => (\n  <>\n    <div className={styles.head}>\n      <Placeholder height={20} width=\"80%\" className={styles.title} />\n\n      <Placeholder height={13} className={styles.body} />\n      <Placeholder height={13} width=\"90%\" />\n    </div>\n\n    <div className=\"mb-md\">\n      <Placeholder height={16} width=\"30%\" />\n    </div>\n\n    <div className={`${styles.statsContainer} mb-lg`}>\n      <WeekChart dailyScores={[0, 0, 0, 0, 0, 0, 0]} />\n      <Stats listClassName={styles.stats}>\n        <Stat\n          value={<Placeholder height={18} width={24} />}\n          label={I18n.t(`${I18nPrefix}.score`)}\n          wrapperClassName={styles.stat}\n          valueClassName={styles.statValue}\n          labelClassName={styles.statLabel}\n        />\n        <Stat\n          value={<Placeholder height={18} width={76} />}\n          label={I18n.t(`${I18nPrefix}.range`)}\n          wrapperClassName={styles.stat}\n          valueClassName={styles.statValue}\n          labelClassName={styles.statLabel}\n        />\n      </Stats>\n    </div>\n\n    <Placeholder height={113} />\n  </>\n);\n\nexport default HasAccess;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport NoAccess from './NoAccess';\nimport HasAccess from './HasAccess';\n\nconst LoadingState = ({ hasAccess = false }) =>\n  hasAccess ? <HasAccess /> : <NoAccess />;\n\nLoadingState.propTypes = {\n  hasAccess: PropTypes.bool\n};\n\nexport default LoadingState;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Disclaimer--container--WkFfy\",\"fade-out\":\"Disclaimer--fade-out--Bq5q4\",\"fadeOut\":\"Disclaimer--fade-out--Bq5q4\",\"title\":\"Disclaimer--title--m9MSU\",\"body\":\"Disclaimer--body--9wEUL\",\"cta\":\"Disclaimer--cta--sEdyM\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'strava.relative_effort.disclaimer';\n\nfunction Disclaimer({ onContinueClick }) {\n  const [fadeOut, setFadeOut] = useState(false);\n\n  return (\n    <div className={`${styles.container} ${fadeOut ? styles.fadeOut : ''}`}>\n      <h3 className={`text-headline text-bold ${styles.title}`}>\n        {I18n.t(`${I18nPrefix}.title`)}\n      </h3>\n      <p className={`text-footnote ${styles.body}`}>\n        {I18n.t(`${I18nPrefix}.body`)}\n      </p>\n      <Button\n        type=\"button\"\n        variant=\"default\"\n        className={`text-footnote text-bold ${styles.cta}`}\n        onClick={() => {\n          if (fadeOut) {\n            return;\n          }\n          setFadeOut(true);\n          setTimeout(() => onContinueClick(), 200);\n        }}\n      >\n        {I18n.t(`${I18nPrefix}.cta`)}\n      </Button>\n    </div>\n  );\n}\n\nDisclaimer.propTypes = {\n  onContinueClick: PropTypes.func.isRequired\n};\n\nexport default Disclaimer;\n","// extracted by mini-css-extract-plugin\nexport default {\"last-week\":\"NoAccess--last-week--UR4G9\",\"lastWeek\":\"NoAccess--last-week--UR4G9\",\"description\":\"NoAccess--description--YhEFs\",\"graphic\":\"NoAccess--graphic--Rgc-J\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport I18n from 'utils/I18n';\nimport { CONSTS, getZone, getPrimaryColor } from 'utils/relative-effort';\n\nimport styles from './styles.scss';\n\nimport lowEffortImage from './assets/low.png';\nimport moderateEffortImage from './assets/moderate.png';\nimport highEffortImage from './assets/high.png';\n\nexport const I18nPrefix = 'strava.relative_effort';\n\nfunction getGraphicSrc(value, buckets) {\n  const zone = getZone(value, buckets);\n\n  switch (zone) {\n    case CONSTS.ZONES.NONE:\n    case CONSTS.ZONES.LOW:\n      return lowEffortImage;\n\n    case CONSTS.ZONES.OPTIMUM:\n    case CONSTS.ZONES.STEADY_PROGRESS:\n      return moderateEffortImage;\n\n    case CONSTS.ZONES.HIGH:\n    case CONSTS.ZONES.VERY_HIGH:\n      return highEffortImage;\n\n    default:\n      return moderateEffortImage;\n  }\n}\n\nfunction getIntensityKey(value, buckets) {\n  const zone = getZone(value, buckets);\n\n  switch (zone) {\n    case CONSTS.ZONES.NONE:\n    case CONSTS.ZONES.LOW:\n      return 'low';\n\n    case CONSTS.ZONES.OPTIMUM:\n    case CONSTS.ZONES.STEADY_PROGRESS:\n      return 'moderate';\n\n    case CONSTS.ZONES.HIGH:\n    case CONSTS.ZONES.VERY_HIGH:\n      return 'high';\n\n    default:\n      return 'moderate';\n  }\n}\n\nconst NoAccess = ({\n  cumulativeScore,\n  buckets,\n  subscriptionUrl,\n  isTrialEligible\n}) => {\n  const IntensityKey = getIntensityKey(cumulativeScore, buckets);\n\n  return (\n    <>\n      <div className={`text-caption2 ${styles.lastWeek}`}>\n        {I18n.t(`${I18nPrefix}.last_week_uppercase`)}\n      </div>\n      <div\n        className=\"text-headline text-bold mb-xs\"\n        style={{ color: getPrimaryColor(cumulativeScore, buckets) }}\n      >\n        {I18n.t(`${I18nPrefix}.upsell.insight_week.titles.${IntensityKey}`)}\n      </div>\n      <div className=\"text-footnote mb-sm\">\n        {I18n.t(\n          `${I18nPrefix}.upsell.insight_week.descriptions.${IntensityKey}`\n        )}\n      </div>\n\n      <img\n        src={getGraphicSrc(cumulativeScore, buckets)}\n        className={styles.graphic}\n        alt=\"\"\n      />\n\n      <div className={`media media-middle mb-md ${styles.description}`}>\n        <div className=\"media-content\">\n          <div className=\"media-body\">\n            {isTrialEligible\n              ? I18n.t(`${I18nPrefix}.upsell.description_v2`)\n              : I18n.t(`${I18nPrefix}.upsell.description_v3`)}\n          </div>\n        </div>\n      </div>\n      <a\n        href={subscriptionUrl}\n        className=\"btn btn-default btn-block mt-md text-footnote text-heavy\"\n      >\n        {isTrialEligible\n          ? I18n.t(`${I18nPrefix}.upsell.cta.start_trial`)\n          : I18n.t(`${I18nPrefix}.upsell.cta.subscribe`)}\n      </a>\n    </>\n  );\n};\n\nNoAccess.propTypes = {\n  cumulativeScore: PropTypes.number.isRequired,\n  buckets: PropTypes.arrayOf(Number).isRequired,\n  subscriptionUrl: PropTypes.string.isRequired,\n  isTrialEligible: PropTypes.bool.isRequired\n};\n\nexport default NoAccess;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"LoadingError--container--XlCqT\",\"refresh-icon\":\"LoadingError--refresh-icon--gheLf\",\"refreshIcon\":\"LoadingError--refresh-icon--gheLf\",\"message\":\"LoadingError--message--93sGS\",\"cta\":\"LoadingError--cta--TPnA0\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\nimport I18n from 'utils/I18n';\n\nimport refreshIcon from '@strava/orion/assets/icons/actions_refresh_normal_large.svg';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'strava.relative_effort.loading_failure';\n\nconst LoadingError = ({ handleRetry }) => (\n  <div className={styles.container}>\n    <div className={styles.refreshIcon}>\n      <div className=\"app-icon-wrapper\">\n        <div\n          className=\"app-icon icon-xxl\"\n          style={{ backgroundImage: `url(${refreshIcon})` }}\n        />\n      </div>\n    </div>\n    <p className={`text-footnote ${styles.message}`}>\n      {I18n.t(`${I18nPrefix}.update_failed`)}\n    </p>\n    <Button\n      type=\"button\"\n      variant=\"default\"\n      className={`text-footnote text-heavy ${styles.cta}`}\n      onClick={handleRetry}\n    >\n      {I18n.t(`${I18nPrefix}.cta`)}\n    </Button>\n  </div>\n);\n\nLoadingError.propTypes = {\n  handleRetry: PropTypes.func.isRequired\n};\n\nexport default LoadingError;\n","// extracted by mini-css-extract-plugin\nexport default {\"description\":\"WeekInsightText--description--XsEQC\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport I18n from 'utils/I18n';\nimport reUtils, {\n  CONSTS,\n  getZone,\n  getPrimaryColor\n} from 'utils/relative-effort';\n\nimport styles from './styles.scss';\n\nexport const I18nPrefix = 'strava.relative_effort.insight_week';\n\nclass WeekInsightText extends React.Component {\n  getTitleText = (isCurrentWeek) => {\n    const { cumulativeScore, buckets } = this.props;\n    const zone = getZone(cumulativeScore, buckets);\n    const titles = `${I18nPrefix}.${isCurrentWeek ? 'current' : 'past'}.titles`;\n\n    switch (zone) {\n      case CONSTS.ZONES.NONE:\n        return I18n.t(`${titles}.none`);\n      case CONSTS.ZONES.LOW:\n        return I18n.t(`${titles}.low`);\n      case CONSTS.ZONES.OPTIMUM:\n        return I18n.t(`${titles}.optimum`);\n      case CONSTS.ZONES.STEADY_PROGRESS:\n        return I18n.t(`${titles}.steady_progress`);\n      case CONSTS.ZONES.HIGH:\n        return I18n.t(`${titles}.high`);\n      case CONSTS.ZONES.VERY_HIGH:\n        return I18n.t(`${titles}.very_high`);\n      default:\n        return '';\n    }\n  };\n\n  getDescriptionText = (isCurrentWeek) => {\n    const { cumulativeScore, buckets } = this.props;\n    const zone = getZone(cumulativeScore, buckets);\n\n    if (isCurrentWeek) {\n      const descriptions = `${I18nPrefix}.current.descriptions`;\n      switch (zone) {\n        case CONSTS.ZONES.NONE:\n          return I18n.t(`${descriptions}.none`);\n        case CONSTS.ZONES.LOW:\n          return I18n.t(`${descriptions}.low`, {\n            value: parseInt(buckets[0], 10)\n          });\n        case CONSTS.ZONES.OPTIMUM:\n          return I18n.t(`${descriptions}.optimum`);\n        case CONSTS.ZONES.STEADY_PROGRESS:\n          return I18n.t(`${descriptions}.steady_progress`, {\n            value: parseInt(buckets[2] - cumulativeScore, 10)\n          });\n        case CONSTS.ZONES.HIGH:\n          return I18n.t(`${descriptions}.high`);\n        case CONSTS.ZONES.VERY_HIGH:\n          return I18n.t(`${descriptions}.very_high`);\n        default:\n          return '';\n      }\n    } else {\n      const descriptions = `${I18nPrefix}.past.descriptions`;\n      switch (zone) {\n        case CONSTS.ZONES.NONE:\n          return I18n.t(`${descriptions}.none`);\n        case CONSTS.ZONES.LOW:\n          return I18n.t(`${descriptions}.low_v2`, {\n            value: parseInt(buckets[0], 10)\n          });\n        case CONSTS.ZONES.OPTIMUM:\n          return I18n.t(`${descriptions}.optimum_v2`);\n        case CONSTS.ZONES.STEADY_PROGRESS:\n          return I18n.t(`${descriptions}.steady_progress_v2`, {\n            value: parseInt(buckets[2] - cumulativeScore, 10)\n          });\n        case CONSTS.ZONES.HIGH:\n          return I18n.t(`${descriptions}.high_v2`);\n        case CONSTS.ZONES.VERY_HIGH:\n          return I18n.t(`${descriptions}.very_high_v2`);\n        default:\n          return '';\n      }\n    }\n  };\n\n  render() {\n    const { activityWeekDate, cumulativeScore, buckets } = this.props;\n    const isCurrentWeek = reUtils.isCurrentWeek(activityWeekDate);\n\n    return (\n      <>\n        <div\n          className=\"text-headline text-bold mb-xs\"\n          style={{ color: getPrimaryColor(cumulativeScore, buckets) }}\n        >\n          {this.getTitleText(isCurrentWeek)}\n        </div>\n        <div className={`text-footnote mb-sm ${styles.description}`}>\n          {this.getDescriptionText(isCurrentWeek)}\n        </div>\n      </>\n    );\n  }\n}\n\nWeekInsightText.propTypes = {\n  activityWeekDate: PropTypes.instanceOf(Date).isRequired,\n  cumulativeScore: PropTypes.number.isRequired,\n  buckets: PropTypes.arrayOf(PropTypes.number).isRequired\n};\n\nexport default WeekInsightText;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"WeekInsightStats--container--gzRaR\",\"stats\":\"WeekInsightStats--stats--0Qr0H\",\"stat\":\"WeekInsightStats--stat--gun6O\",\"stat-label\":\"WeekInsightStats--stat-label--DFq3k\",\"statLabel\":\"WeekInsightStats--stat-label--DFq3k\",\"state-value\":\"WeekInsightStats--state-value--tAqud\",\"stateValue\":\"WeekInsightStats--state-value--tAqud\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Stats } from '@strava/ui/Stats';\nimport { Stat } from '@strava/ui/Stat';\n\nimport I18n from 'utils/I18n';\nimport WeekChart from './WeekChart';\n\nimport styles from './styles.scss';\n\nconst I18nPrefix = 'strava.relative_effort.week_insight_stats';\n\nconst WeekInsightStats = ({ cumulativeScore, dailyScores, buckets }) => (\n  <div className={styles.container}>\n    <WeekChart dailyScores={dailyScores} />\n    <Stats listClassName={styles.stats}>\n      <Stat\n        value={cumulativeScore}\n        label={I18n.t(`${I18nPrefix}.score`)}\n        wrapperClassName={styles.stat}\n        valueClassName={styles.statValue}\n        labelClassName={styles.statLabel}\n      />\n      <Stat\n        value={`${Math.round(buckets[0])}-${Math.round(buckets[2])}`}\n        label={I18n.t(`${I18nPrefix}.range`)}\n        wrapperClassName={styles.stat}\n        valueClassName={styles.statValue}\n        labelClassName={styles.statLabel}\n      />\n    </Stats>\n  </div>\n);\n\nWeekInsightStats.propTypes = {\n  cumulativeScore: PropTypes.number.isRequired,\n  dailyScores: PropTypes.arrayOf(PropTypes.number).isRequired,\n  buckets: PropTypes.arrayOf(PropTypes.number).isRequired\n};\n\nexport default WeekInsightStats;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"WeeklyGraph--container---tzgH\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n  XAxis,\n  YAxis,\n  CartesianGrid,\n  ComposedChart,\n  ResponsiveContainer,\n  Tooltip,\n  Line,\n  Area,\n  ReferenceLine,\n  ReferenceDot\n} from 'recharts';\nimport Cldr from 'utils/Cldr';\nimport {\n  getPrimaryColor,\n  getSecondaryColor,\n  getDateFromYearWeek,\n  getFirstDayOfWeekFromDate\n} from 'utils/relative-effort';\n\nimport styles from './styles.scss';\n\n// Returns Monday date for a given year and week\nfunction getDate(year, week) {\n  const date = getDateFromYearWeek(year, week);\n  const firstDayOfWeek = getFirstDayOfWeekFromDate(date);\n\n  // Shift date to be the first day of the week (Monday)\n  return new Date(date.setDate(firstDayOfWeek + 1));\n}\n\nclass WeeklyGraph extends React.Component {\n  constructor(props) {\n    super(props);\n\n    const { weeklyScores } = props;\n\n    const rangeData = weeklyScores.map((d) => ({\n      date: getDate(d.year, d.week).getTime(),\n      score: d.cumulative_score,\n      range: [d.buckets[0], d.buckets[2]]\n    }));\n\n    const scores = weeklyScores.map((w) => w.cumulative_score);\n    const maxScore = Math.max(...scores);\n\n    this.state = {\n      rangeData,\n      maxScore\n    };\n  }\n\n  onMouseMove = (d) => {\n    const { activeTooltipIndex, isTooltipActive } = d;\n    const { selectedWeekIndex, snapToPoint } = this.props;\n\n    if (!isTooltipActive) {\n      return;\n    }\n\n    if (activeTooltipIndex === selectedWeekIndex) {\n      return;\n    }\n\n    snapToPoint(activeTooltipIndex);\n  };\n\n  formatXAxisTick = (d) =>\n    Cldr.formatDateTime(new Date(d), {\n      format: 'additional',\n      type: 'MMMd'\n    });\n\n  render() {\n    const { weeklyScores, selectedWeekIndex, defaultWeekIndex } = this.props;\n    const { rangeData, maxScore } = this.state;\n\n    const tickColor = 'transparent';\n    const tickTextStyle = {\n      fill: '#6b6b76',\n      fontSize: '7px'\n    };\n\n    const activeDotFillColor = getPrimaryColor(\n      weeklyScores[selectedWeekIndex].cumulative_score,\n      weeklyScores[selectedWeekIndex].buckets\n    );\n    const activeDotStrokeColor = getSecondaryColor(\n      weeklyScores[selectedWeekIndex].cumulative_score,\n      weeklyScores[selectedWeekIndex].buckets\n    );\n\n    const showCurrentWeekIndicator = defaultWeekIndex !== selectedWeekIndex;\n\n    return (\n      <div className={styles.container}>\n        <ResponsiveContainer width=\"100%\" height={110}>\n          <ComposedChart\n            data={rangeData}\n            margin={{ top: 0, right: -28, left: -20 }}\n            onMouseMove={this.onMouseMove}\n          >\n            <CartesianGrid horizontal={false} stroke=\"#fff\" />\n            <XAxis\n              dy={2}\n              dataKey=\"date\"\n              scale=\"point\"\n              tick={tickTextStyle}\n              tickLine={{ stroke: tickColor }}\n              stroke=\"none\"\n              tickFormatter={this.formatXAxisTick}\n              minTickGap={0}\n              interval={0}\n            />\n            <YAxis\n              dx={2}\n              orientation=\"right\"\n              tick={tickTextStyle}\n              tickLine={{ stroke: tickColor }}\n              stroke=\"none\"\n              type=\"number\"\n              domain={[0, (dataMax) => dataMax * 1.25]}\n              ticks={[parseInt(maxScore * 0.5, 10), maxScore]}\n            />\n            <Area\n              isAnimationActive={false}\n              dataKey=\"range\"\n              stroke=\"#fff\"\n              fill=\"#fff\"\n              fillOpacity={1}\n              activeDot={false}\n            />\n            <Line\n              isAnimationActive={false}\n              dataKey=\"score\"\n              stroke=\"none\"\n              dot={{\n                fill: '#fff',\n                stroke: '#000',\n                strokeWidth: 1,\n                r: 2.5\n              }}\n              activeDot={false}\n            />\n            <Tooltip content={() => {}} cursor={false} />\n            {showCurrentWeekIndicator && (\n              <ReferenceLine\n                x={rangeData[defaultWeekIndex].date}\n                stroke=\"#000\"\n                strokeWidth={1}\n              />\n            )}\n            {showCurrentWeekIndicator && (\n              <ReferenceDot\n                x={rangeData[defaultWeekIndex].date}\n                y={rangeData[defaultWeekIndex].score}\n                fill=\"#000\"\n                stroke=\"none\"\n                r={3.5}\n              />\n            )}\n            <ReferenceLine\n              x={rangeData[selectedWeekIndex].date}\n              stroke={activeDotFillColor}\n              strokeWidth={1}\n            />\n            <ReferenceDot\n              x={rangeData[selectedWeekIndex].date}\n              y={rangeData[selectedWeekIndex].score}\n              fill={activeDotFillColor}\n              stroke={activeDotStrokeColor}\n              strokeWidth={7}\n              strokeOpacity={0.4}\n              r={3.5}\n            />\n          </ComposedChart>\n        </ResponsiveContainer>\n      </div>\n    );\n  }\n}\n\nWeeklyGraph.propTypes = {\n  defaultWeekIndex: PropTypes.number.isRequired,\n  selectedWeekIndex: PropTypes.number.isRequired,\n  weeklyScores: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n  snapToPoint: PropTypes.func.isRequired\n};\n\nexport default WeeklyGraph;\n","// extracted by mini-css-extract-plugin\nexport default {\"date-range\":\"DateRange--date-range--DpK2L\",\"dateRange\":\"DateRange--date-range--DpK2L\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Cldr from 'utils/Cldr';\nimport I18n from 'utils/I18n';\nimport reUtils from 'utils/relative-effort';\n\nimport styles from './styles.scss';\n\nexport const I18nPrefix = 'strava.relative_effort';\n\nconst DateRange = ({ date }) => {\n  const firstDayOfWeek = reUtils.getFirstDayOfWeekFromDate(date);\n\n  const monday = Cldr.formatDateTime(\n    new Date(date.setDate(firstDayOfWeek + 1)),\n    {\n      format: 'additional',\n      type: 'MMMd'\n    }\n  );\n  const sunday = Cldr.formatDateTime(\n    new Date(date.setDate(firstDayOfWeek + 7)),\n    {\n      format: 'additional',\n      type: 'MMMd'\n    }\n  );\n\n  const isCurrentWeek = reUtils.isCurrentWeek(date);\n\n  return (\n    <div className={`text-caption2 ${styles.dateRange}`}>\n      {isCurrentWeek\n        ? I18n.t(`${I18nPrefix}.this_week_uppercase`)\n        : `${monday} - ${sunday}`}\n    </div>\n  );\n};\n\nDateRange.propTypes = {\n  date: PropTypes.instanceOf(Date).isRequired\n};\n\nexport default DateRange;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport reUtils from 'utils/relative-effort';\n\nimport WeekInsightText from './WeekInsightText';\nimport WeekInsightStats from './WeekInsightStats';\nimport WeeklyGraph from './WeeklyGraph';\nimport DateRange from './DateRange';\n\nexport const I18nPrefix = 'strava.relative_effort';\n\nclass WeeklySummary extends React.Component {\n  snapToPoint = (index) => {\n    const { onSelectedWeekIndexUpdate } = this.props;\n    onSelectedWeekIndexUpdate(index);\n  };\n\n  onMouseEnter = () => {\n    clearTimeout(this.mouseLeaveTimer);\n  };\n\n  onMouseLeave = () => {\n    const { onSelectedWeekIndexUpdate, defaultWeekIndex } = this.props;\n\n    clearTimeout(this.mouseLeaveTimer);\n    this.mouseLeaveTimer = setTimeout(() => {\n      onSelectedWeekIndexUpdate(defaultWeekIndex);\n    }, 250);\n  };\n\n  render() {\n    const { weeklyScores, selectedWeekIndex, defaultWeekIndex } = this.props;\n    const selectedWeek = weeklyScores[selectedWeekIndex];\n    const { year, week } = selectedWeek;\n    const activityWeekDate = reUtils.getDateFromYearWeek(year, week);\n\n    return (\n      <>\n        <div className=\"mb-md\">\n          <WeekInsightText\n            activityWeekDate={activityWeekDate}\n            cumulativeScore={selectedWeek.cumulative_score}\n            buckets={selectedWeek.buckets}\n          />\n        </div>\n        <div className=\"mb-md\">\n          <DateRange date={activityWeekDate} />\n        </div>\n        <div className=\"mb-lg\">\n          <WeekInsightStats\n            cumulativeScore={selectedWeek.cumulative_score}\n            dailyScores={selectedWeek.daily_scores}\n            buckets={selectedWeek.buckets}\n          />\n        </div>\n        <div onMouseEnter={this.onMouseEnter} onMouseLeave={this.onMouseLeave}>\n          <WeeklyGraph\n            defaultWeekIndex={defaultWeekIndex}\n            selectedWeekIndex={selectedWeekIndex}\n            weeklyScores={weeklyScores}\n            snapToPoint={this.snapToPoint}\n          />\n        </div>\n      </>\n    );\n  }\n}\n\nWeeklySummary.propTypes = {\n  weeklyScores: PropTypes.arrayOf(PropTypes.object).isRequired,\n  defaultWeekIndex: PropTypes.number.isRequired,\n  selectedWeekIndex: PropTypes.number.isRequired,\n  onSelectedWeekIndexUpdate: PropTypes.func.isRequired\n};\n\nexport default WeeklySummary;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport I18n from 'utils/I18n';\nimport createNetworkingClient from 'utils/networking-client';\n\nimport styles from './styles.scss';\nimport LoadingState from './components/LoadingState';\nimport Disclaimer from './components/Disclaimer';\nimport NoAccess from './components/NoAccess';\nimport LoadingError from './components/LoadingError';\nimport WeeklySummary from './components/WeeklySummary';\n\nexport const I18nPrefix = 'strava.relative_effort';\n\nclass ProgressGoalsRelativeEffortTab extends React.Component {\n  state = {\n    isLoading: true,\n    hasLoadingError: false,\n    disclaimerAgreed: false,\n    weeklyScores: [],\n    defaultWeekIndex: -1,\n    selectedWeekIndex: -1\n  };\n\n  componentDidMount() {\n    this.fetchData();\n  }\n\n  fetchData = () => {\n    const { athleteId } = this.props;\n\n    createNetworkingClient()\n      .get(`/athletes/${athleteId}/relative_effort`, {\n        params: {\n          num_weeks: 7\n        }\n      })\n      .then((response) => {\n        if (response && response.status === 200) {\n          this.handleFetchComplete(response.data);\n        } else {\n          this.handleFetchError();\n        }\n      })\n      .catch(() => {\n        this.handleFetchError();\n      });\n  };\n\n  handleFetchError = () => {\n    this.setState({ hasLoadingError: true });\n  };\n\n  handleFetchComplete = (data) => {\n    const weeklyScores = data.weekly_scores.reverse();\n    const defaultWeekIndex = weeklyScores.length - data.selected_week_index - 1;\n\n    this.setState({\n      isLoading: false,\n      hasLoadingError: false,\n      disclaimerAgreed: data.disclaimer_agreed,\n      weeklyScores,\n      defaultWeekIndex,\n      selectedWeekIndex: defaultWeekIndex\n    });\n  };\n\n  handleFetchRetry = () => {\n    this.setState({ hasLoadingError: false, isLoading: true }, () => {\n      this.fetchData();\n    });\n  };\n\n  handleDisclaimerContinueClick = () => {\n    const { athleteId } = this.props;\n\n    createNetworkingClient().post(\n      `/athletes/${athleteId}/relative_effort_disclaimer_agreed`\n    );\n\n    this.setState({ disclaimerAgreed: true });\n  };\n\n  handleSelectedWeekIndexUpdate = (index) => {\n    this.setState({ selectedWeekIndex: index });\n  };\n\n  renderContent = () => {\n    const {\n      disclaimerAgreed,\n      weeklyScores,\n      defaultWeekIndex,\n      selectedWeekIndex,\n      isLoading\n    } = this.state;\n    const { hasAccess, subscriptionUrl, isTrialEligible } = this.props;\n\n    if (isLoading) {\n      return <LoadingState hasAccess={hasAccess} />;\n    }\n\n    if (!disclaimerAgreed) {\n      return (\n        <Disclaimer onContinueClick={this.handleDisclaimerContinueClick} />\n      );\n    }\n\n    if (hasAccess) {\n      return (\n        <WeeklySummary\n          weeklyScores={weeklyScores}\n          defaultWeekIndex={defaultWeekIndex}\n          selectedWeekIndex={selectedWeekIndex}\n          onSelectedWeekIndexUpdate={this.handleSelectedWeekIndexUpdate}\n        />\n      );\n    }\n\n    // Grab previous weeks data, this is per spec and same as on mobile apps\n    const data = weeklyScores[weeklyScores.length - 2];\n\n    return (\n      <NoAccess\n        cumulativeScore={data.cumulative_score}\n        buckets={data.buckets}\n        subscriptionUrl={subscriptionUrl}\n        isTrialEligible={isTrialEligible}\n      />\n    );\n  };\n\n  render() {\n    const { hasLoadingError } = this.state;\n\n    if (hasLoadingError) {\n      return (\n        <div className={styles.container}>\n          <LoadingError handleRetry={this.handleFetchRetry} />\n        </div>\n      );\n    }\n\n    return (\n      <div className={styles.container}>\n        <div className={styles.head}>\n          <div className=\"text-caption2\">\n            <div className=\"app-icon-wrapper\">\n              <div className={`app-icon icon-premium ${styles.summitIcon}`} />\n            </div>\n            {I18n.t(`${I18nPrefix}.title_uppercase`)}\n          </div>\n          <div\n            // .help.new-version here is needed here so that jQuery code can\n            // pickup the click event and show the glossary modal\n            className=\"help new-version\"\n            data-glossary-term=\"definition-suffer-score\"\n          >\n            <span className=\"app-icon-wrapper\">\n              <span\n                className={`app-icon icon-info-xsmall ${styles.infoIcon}`}\n              />\n            </span>\n          </div>\n        </div>\n        {this.renderContent()}\n      </div>\n    );\n  }\n}\n\nProgressGoalsRelativeEffortTab.propTypes = {\n  hasAccess: PropTypes.bool.isRequired,\n  athleteId: PropTypes.number.isRequired,\n  subscriptionUrl: PropTypes.string.isRequired,\n  isTrialEligible: PropTypes.bool.isRequired\n};\n\nexport default ProgressGoalsRelativeEffortTab;\n","// extracted by mini-css-extract-plugin\nexport default {\"list\":\"Breadcrumbs--list--Nf2a7\",\"item\":\"Breadcrumbs--item--4EKMq\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\n\nimport styles from './styles.scss';\n\nconst Breadcrumbs = ({ breadcrumbs }) => {\n  const [first, ...crumbs] = breadcrumbs;\n\n  return (\n    <ol className={`${styles.list} mb-0`}>\n      <li className={styles.item}>\n        <a href={first.href}>{first.text}</a>\n      </li>\n\n      {crumbs.map((b, i) => {\n        const last = i === crumbs.length - 1;\n\n        return (\n          <li key={b.href} className={styles.item}>\n            {last ? b.text : <Link to={b.href}>{b.text}</Link>}\n          </li>\n        );\n      })}\n    </ol>\n  );\n};\n\nBreadcrumbs.propTypes = {\n  breadcrumbs: PropTypes.arrayOf(\n    PropTypes.shape({\n      href: PropTypes.string.isRequired,\n      text: PropTypes.string.isRequired\n    })\n  ).isRequired\n};\n\nexport default Breadcrumbs;\n","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"OptionList--item--IA+++\"};","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Markup } from 'interweave';\n\nimport styles from './styles.scss';\n\nconst types = {\n  SINGLE_SELECT: 'single_select',\n  MULTI_SELECT: 'multi_select'\n};\n\nconst OptionList = ({ type, options, disabled = false, onChange }) => {\n  const [selectedValues, setSelectedValues] = useState([]);\n\n  const handleChange = (e) => {\n    const { value, checked } = e.target;\n\n    if (types.SINGLE_SELECT === type) {\n      setSelectedValues([value]);\n      return;\n    }\n\n    if (checked) {\n      setSelectedValues((prevValues) => [...prevValues, value]);\n    } else {\n      setSelectedValues((prevValues) => prevValues.filter((v) => v !== value));\n    }\n  };\n\n  useEffect(() => {\n    onChange(selectedValues);\n  }, [selectedValues]);\n\n  return (\n    <ul className={styles.list}>\n      {options.map(({ value, text }) => {\n        const isSelected = selectedValues.indexOf(value) !== -1;\n        const id = `option-${value}`;\n\n        return (\n          <li key={value} className={styles.item}>\n            <label htmlFor={id} className=\"text-book\">\n              {types.SINGLE_SELECT === type ? (\n                <input\n                  type=\"radio\"\n                  id={id}\n                  value={value}\n                  checked={isSelected}\n                  disabled={disabled}\n                  onChange={handleChange}\n                  tabIndex={isSelected ? '0' : '-1'}\n                />\n              ) : (\n                <input\n                  type=\"checkbox\"\n                  id={id}\n                  value={value}\n                  checked={isSelected}\n                  disabled={disabled}\n                  onChange={handleChange}\n                  tabIndex={isSelected ? '0' : '-1'}\n                />\n              )}\n\n              <Markup noWrap={true} content={text} />\n            </label>\n          </li>\n        );\n      })}\n    </ul>\n  );\n};\n\nOptionList.propTypes = {\n  type: PropTypes.oneOf(Object.keys(types).map((k) => types[k])).isRequired,\n  options: PropTypes.arrayOf(\n    PropTypes.shape({\n      value: PropTypes.string.isRequired,\n      text: PropTypes.string.isRequired\n    })\n  ).isRequired,\n  disabled: PropTypes.bool,\n  onChange: PropTypes.func.isRequired\n};\n\nexport default OptionList;\n","import React, { useCallback, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Markup } from 'interweave';\nimport { useHistory } from 'react-router-dom';\n\nimport I18n from 'utils/I18n';\nimport ButtonCTAWithCancel from 'components/ButtonCTAWithCancel';\nimport OptionList from '../OptionList';\n\nfunction SurveyLanding({\n  screen_name: screenName,\n  title,\n  subtitle,\n  euWebLink,\n  questions,\n  handleCancel: handleCancelProp,\n  handleNext\n}) {\n  const [selectedValue, setSelectedValues] = useState(null);\n  const history = useHistory();\n  const selections = useMemo(() => {\n    const obj = {};\n    questions.forEach((q) => {\n      obj[q.type] = selectedValue === q.type;\n    });\n    return obj;\n  }, [selectedValue]);\n\n  const handleCTA = useCallback(() => {\n    const { externalPath } = questions.find((o) => o.type === selectedValue);\n\n    handleNext({ selections });\n\n    if (externalPath) {\n      window.location.href = externalPath;\n    } else {\n      history.push(selectedValue);\n    }\n  }, [selections]);\n\n  const handleCancel = useCallback(() => {\n    handleCancelProp({ selections });\n  }, [selections]);\n\n  return (\n    <>\n      <h2 className=\"text-title1 text-book mb-0\">{screenName}</h2>\n      <hr className=\"mt-lg mb-lg\" style={{ borderColor: '#d5d5d5' }} />\n      <h3 className=\"text-title2 mt-0 mb-lg\">{title}</h3>\n      {subtitle && <p className=\"mb-lg\">{subtitle}</p>}\n      {euWebLink && <Markup tagName=\"p\" className=\"mb-lg\" content={euWebLink} />}\n\n      <OptionList\n        type=\"single_select\"\n        options={questions.map(({ type, text }) => ({\n          value: type,\n          text\n        }))}\n        selectedValues={[selectedValue]}\n        onChange={(values) => setSelectedValues(values[0])}\n      />\n\n      <Markup\n        tagName=\"p\"\n        content={\n          I18n.t('strava.feedback.additional_information', {\n            url: 'https://support.strava.com/hc/en-us/articles/216917777-How-Do-I-Contact-Strava-Support'\n          })\n        }\n      />\n\n      <div className=\"mt-lg\" style={{ display: 'inline-block' }}>\n        <ButtonCTAWithCancel\n          onCancel={handleCancel}\n          onCTA={handleCTA}\n          ctaVariant=\"next\"\n          ctaDisabled={!selectedValue}\n        />\n      </div>\n    </>\n  );\n}\n\nSurveyLanding.propTypes = {\n  screen_name: PropTypes.string.isRequired,\n  title: PropTypes.string.isRequired,\n  subtitle: PropTypes.string,\n  euWebLink: PropTypes.string,\n  questions: PropTypes.arrayOf(\n    PropTypes.shape({\n      type: PropTypes.string.isRequired,\n      text: PropTypes.string.isRequired,\n      externalPath: PropTypes.string\n    })\n  ).isRequired,\n  handleCancel: PropTypes.func.isRequired,\n  handleNext: PropTypes.func.isRequired\n};\n\nexport default SurveyLanding;\n","// extracted by mini-css-extract-plugin\nexport default {\"freeform-input\":\"SurveyStep--freeform-input--Nw0MF\",\"freeformInput\":\"SurveyStep--freeform-input--Nw0MF\"};","import React, { useCallback, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport ButtonCTAWithCancel from 'components/ButtonCTAWithCancel';\nimport OptionList from '../OptionList';\n\nimport styles from './styles.scss';\n\nconst SINGLE_SELECT = 'single_select';\nconst MULTI_SELECT = 'multi_select';\n\nfunction SurveyStep({\n  survey_key: surveyKey,\n  screen_name: screenName,\n  title,\n  subtitle,\n  questions,\n  question_type: questionType,\n  button: ctaText,\n  freeform_input: freeformInput,\n  isSubmitting = false,\n  handleCancel: handleCancelProp,\n  handleNext\n}) {\n  const [selectedValues, setSelectedValues] = useState([]);\n  const [freeformValue, setFreeformValue] = useState('');\n  const canSubmit =\n    selectedValues.length !== 0 || freeformValue.trim().length !== 0;\n\n  const selections = useMemo(() => {\n    const obj = {};\n    questions.forEach((q) => {\n      obj[q.type] = selectedValues.indexOf(q.type) !== -1;\n    });\n    return obj;\n  }, [selectedValues]);\n\n  const handleCTA = useCallback(() => {\n    const data = { surveyKey, selections };\n\n    if (freeformValue.length !== 0) {\n      data.freeformText = freeformValue;\n    }\n\n    handleNext(data);\n  }, [selections, freeformValue]);\n\n  const handleCancel = useCallback(() => {\n    const data = { surveyKey, selections };\n\n    if (freeformValue.length !== 0) {\n      data.freeformText = freeformValue;\n    }\n\n    handleCancelProp(data);\n  }, [selections, freeformValue]);\n\n  return (\n    <>\n      <h2 className=\"text-title1 text-book mb-0\">{screenName}</h2>\n      <hr className=\"mt-lg mb-lg\" style={{ borderColor: '#d5d5d5' }} />\n      <h3 className=\"text-title2 mt-0 mb-lg\">{title}</h3>\n      {subtitle && <p className=\"text-footnote mb-lg\">{subtitle}</p>}\n\n      <OptionList\n        type={questionType}\n        options={questions.map(({ type, text }) => ({\n          value: type,\n          text\n        }))}\n        selectedValues={selectedValues}\n        disabled={isSubmitting}\n        onChange={(values) => setSelectedValues(values)}\n      />\n\n      {freeformInput && (\n        <div className={styles.freeformInput}>\n          <div>\n            <label htmlFor=\"freeform-input\" className=\"text-book\">\n              {freeformInput.title}\n            </label>\n          </div>\n          <textarea\n            id=\"freeform-input\"\n            placeholder={freeformInput.placeholder}\n            maxLength={freeformInput.max_characters}\n            rows={5}\n            value={freeformValue}\n            onChange={(e) => setFreeformValue(e.target.value)}\n          />\n        </div>\n      )}\n\n      <div className=\"mt-xl\" style={{ display: 'inline-block' }}>\n        <ButtonCTAWithCancel\n          onCancel={handleCancel}\n          onCTA={handleCTA}\n          ctaVariant=\"custom\"\n          ctaText={ctaText}\n          ctaDisabled={!canSubmit}\n          disabled={isSubmitting}\n        />\n      </div>\n    </>\n  );\n}\n\nSurveyStep.propTypes = {\n  survey_key: PropTypes.string.isRequired,\n  screen_name: PropTypes.string.isRequired,\n  title: PropTypes.string.isRequired,\n  subtitle: PropTypes.string,\n  questions: PropTypes.arrayOf(\n    PropTypes.shape({\n      type: PropTypes.string.isRequired,\n      text: PropTypes.string.isRequired\n    })\n  ).isRequired,\n  question_type: PropTypes.oneOf([SINGLE_SELECT, MULTI_SELECT]).isRequired,\n  button: PropTypes.string.isRequired,\n  freeform_input: PropTypes.shape({\n    max_characters: PropTypes.number.isRequired,\n    title: PropTypes.string.isRequired,\n    placeholder: PropTypes.string.isRequired\n  }),\n\n  isSubmitting: PropTypes.bool,\n  handleCancel: PropTypes.func.isRequired,\n  handleNext: PropTypes.func.isRequired\n};\n\nexport default SurveyStep;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { HashRouter as Router, Switch, Route } from 'react-router-dom';\n\nimport { trackV2 } from 'utils/analytics';\nimport createNetworkingClient from 'utils/networking-client';\n\nimport Breadcrumbs from './components/Breadcrumbs';\nimport SurveyLanding from './components/SurveyLanding';\nimport SurveyStep from './components/SurveyStep';\n\nclass FeedbackApp extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      isSubmitting: false\n    };\n  }\n\n  trackEvent = ({ action, element, properties }) => {\n    const { analytics } = this.props;\n\n    trackV2({\n      category: 'feedback',\n      page: analytics.page,\n      action,\n      element,\n      properties: {\n        ...analytics.properties,\n        ...properties\n      }\n    });\n  };\n\n  handleCancel = ({ surveyKey, selections, freeformText }) => {\n    const { origin_path: originPath } = this.props;\n\n    this.trackEvent({\n      action: 'click',\n      element: 'cancel',\n      properties: {\n        ...selections,\n        ...(surveyKey && { survey_key: surveyKey }),\n        ...(freeformText && { response_text: freeformText })\n      }\n    });\n\n    window.location.href = originPath;\n  };\n\n  handleNext = ({ selections }) => {\n    this.trackEvent({\n      action: 'click',\n      element: 'next',\n      properties: {\n        ...selections\n      }\n    });\n  };\n\n  handleSubmit = ({ surveyKey, selections, freeformText }) => {\n    const { isSubmitting } = this.state;\n\n    if (isSubmitting) return;\n    this.setState({ isSubmitting: true });\n\n    const {\n      origin_path: originPath,\n      redirect_on_success_path: redirectOnSuccessPath,\n      submit_path: submitPath,\n      surveys\n    } = this.props;\n    const redirectPath = redirectOnSuccessPath ?? originPath;\n\n    const { survey: selectedSurvey } = surveys.find(\n      ({ survey }) => survey.survey_key === surveyKey\n    );\n    const properties = {\n      ...selections,\n      survey_key: surveyKey,\n      ...(freeformText && { response_text: freeformText })\n    };\n\n    this.trackEvent({ action: 'click', element: 'submit', properties });\n\n    const submitData = {\n      survey_key: surveyKey,\n      selections\n    };\n\n    createNetworkingClient()\n      .post(submitPath, submitData)\n      .then((response) => {\n        if (response && response.status === 201) {\n          // eslint-disable-next-line no-alert\n          alert(\n            `${selectedSurvey.footnote_title}\\n\\n${selectedSurvey.footnote_description}`\n          );\n\n          this.trackEvent({ action: 'click', element: 'ok', properties });\n\n          window.location.href = redirectPath;\n\n          return;\n        }\n\n        this.setState({ isSubmitting: false });\n      })\n      .catch(() => {\n        this.setState({ isSubmitting: false });\n        window.location.reload();\n      });\n  };\n\n  render() {\n    const {\n      origin_path: originPath,\n      origin_name: originalName,\n      title,\n      subtitle,\n      eu_web_link: euWebLink,\n      screen_name: screenName,\n      surveys\n    } = this.props;\n    const { isSubmitting } = this.state;\n\n    const breadcrumbs = [\n      {\n        href: originPath,\n        text: originalName\n      },\n      {\n        href: '/',\n        text: screenName\n      }\n    ];\n\n    return (\n      <Router>\n        <Switch>\n          {surveys\n            .filter(({ survey }) => !survey.external_path)\n            .map(({ survey }) => (\n              <Route path={`/${survey.survey_key}`} key={survey.survey_key}>\n                <Breadcrumbs\n                  breadcrumbs={[\n                    ...breadcrumbs,\n                    {\n                      href: `/${survey.survey_key}`,\n                      text: survey.screen_name\n                    }\n                  ]}\n                />\n                <SurveyStep\n                  {...survey}\n                  isSubmitting={isSubmitting}\n                  handleCancel={this.handleCancel}\n                  handleNext={this.handleSubmit}\n                />\n              </Route>\n            ))}\n\n          {/* this needs to be last so if users enter some rubbish path we show first step */}\n          <Route path=\"/\">\n            <Breadcrumbs breadcrumbs={breadcrumbs} />\n            <SurveyLanding\n              screen_name={screenName}\n              title={title}\n              subtitle={subtitle}\n              euWebLink={euWebLink}\n              questions={surveys.map(({ label, survey }) => ({\n                type: survey.survey_key,\n                text: label,\n                externalPath: survey.external_path\n              }))}\n              handleCancel={this.handleCancel}\n              handleNext={this.handleNext}\n            />\n          </Route>\n        </Switch>\n      </Router>\n    );\n  }\n}\n\nFeedbackApp.propTypes = {\n  origin_path: PropTypes.string.isRequired,\n  origin_name: PropTypes.string.isRequired,\n  submit_path: PropTypes.string.isRequired,\n  title: PropTypes.string.isRequired,\n  redirect_on_success_path: PropTypes.string,\n  subtitle: PropTypes.string,\n  eu_web_link: PropTypes.string,\n  screen_name: PropTypes.string.isRequired,\n  surveys: PropTypes.arrayOf(\n    PropTypes.shape({\n      label: PropTypes.string.isRequired,\n      survey: PropTypes.shape({}).isRequired\n    })\n  ).isRequired,\n  analytics: PropTypes.shape({\n    page: PropTypes.string.isRequired,\n    properties: PropTypes.shape({})\n  }).isRequired\n};\n\nexport default FeedbackApp;\n","import React from 'react';\n\nconst NoAccess = () => <div>Upsell TBD</div>;\n\nexport default NoAccess;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"FetchError--container--ixouL\",\"refresh-icon\":\"FetchError--refresh-icon--PKGfh\",\"refreshIcon\":\"FetchError--refresh-icon--PKGfh\",\"message\":\"FetchError--message--ndfla\",\"cta\":\"FetchError--cta--zL607\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\nimport I18n from 'utils/I18n';\n\nimport SvgActionsRefreshNormalLarge from '@strava/icons/ActionsRefreshNormalLarge';\n\nimport styles from './styles.scss';\n\nconst I18nKey = 'strava.progress_goals';\n\nconst FetchError = ({ handleRetry }) => (\n  <div className={styles.container}>\n    <div className={styles.refreshIcon}>\n      <div className=\"app-icon-wrapper\">\n        <SvgActionsRefreshNormalLarge className=\"app-icon icon-xxl\" />\n      </div>\n    </div>\n    <p className={`text-footnote ${styles.message}`}>\n      {I18n.t(`${I18nKey}.update_failed`)}\n    </p>\n    <Button\n      type=\"button\"\n      variant=\"default\"\n      className={`text-footnote text-heavy ${styles.cta}`}\n      onClick={handleRetry}\n    >\n      {I18n.t(`${I18nKey}.cta`)}\n    </Button>\n  </div>\n);\n\nFetchError.propTypes = {\n  handleRetry: PropTypes.func.isRequired\n};\n\nexport default FetchError;\n","import React from 'react';\n\nconst FetchInProgress = () => <div>Loading Screen TBD</div>;\n\nexport default FetchInProgress;\n","import NoAccess from './NoAccess';\nimport FetchError from './FetchError';\nimport FetchInProgress from './FetchInProgress';\n\nexport { FetchInProgress, FetchError, NoAccess };\n","// extracted by mini-css-extract-plugin\nexport default {\"btn-card-link\":\"Footer--btn-card-link--IiJDV\",\"btnCardLink\":\"Footer--btn-card-link--IiJDV\",\"app-icon-wrapper\":\"Footer--app-icon-wrapper--ouZm9\",\"appIconWrapper\":\"Footer--app-icon-wrapper--ouZm9\"};","import React from 'react';\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\n\nconst I18nKey = 'strava.progress_goals';\n\nfunction Footer() {\n  return (\n    <div className=\"card\">\n      <div className=\"card-footer\">\n        <a\n          className={`${styles.btnCardLink} media media-middle`}\n          href=\"/athlete/goals\"\n        >\n          <div className=\"media-body\">\n            {I18n.t(`${I18nKey}.manage_your_goals`)}\n          </div>\n          <div className=\"media-right\">\n            <span className={`${styles.appIconWrapper}`}>\n              <span className=\"app-icon icon-caret-right icon-dark icon-lg\" />\n            </span>\n          </div>\n        </a>\n      </div>\n    </div>\n  );\n}\n\nFooter.propTypes = {};\n\nexport default Footer;\n","// extracted by mini-css-extract-plugin\nexport default {\"progress-circle-filled\":\"CircularProgressChart--progress-circle-filled--UrA6j\",\"progressCircleFilled\":\"CircularProgressChart--progress-circle-filled--UrA6j\",\"progress-circle-background\":\"CircularProgressChart--progress-circle-background--sDI6M\",\"progressCircleBackground\":\"CircularProgressChart--progress-circle-background--sDI6M\"};","const calculateProgressFill = (progress, limit, min = 0.0, max = 1.0) => {\n  // If a goal is near but not completed, cap the maximum percentage\n  // displayed to the `incompleteProgressLimit` to provide obvious visual\n  // cue that a goal is incomplete\n  if (progress > limit && progress > min && progress < max) {\n    return limit;\n  }\n  return Math.max(Math.min(progress, max), min);\n};\n\nexport default calculateProgressFill;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { arc } from 'd3-shape';\nimport styles from './styles.scss';\nimport calculateProgressFill from '../utils';\n\nconst CircularProgressChart = ({\n  children,\n  progress = 0.0,\n  canvasWidth,\n  canvasHeight,\n  iconProportion = 0.4,\n  outerCircleProportion = 0.48,\n  innerCircleProportion = 0.45, // 0.9375 * outerCircleProportion\n  incompleteProgressLimit = 0.98\n}) => {\n  const tau = 2 * Math.PI;\n  const outerRadius = canvasWidth * outerCircleProportion;\n  const innerRadius = canvasWidth * innerCircleProportion;\n\n  const hasProgress = progress > 0.0;\n\n  const iconWidth = canvasWidth * iconProportion;\n  const iconHeight = canvasHeight * iconProportion;\n\n  const progressAngle = Math.max(\n    calculateProgressFill(progress, incompleteProgressLimit) * tau,\n    1.0\n  );\n\n  const backgroundArc = arc()\n    .innerRadius(innerRadius)\n    .outerRadius(outerRadius)\n    .startAngle(0)\n    .endAngle(tau);\n\n  const progressArc = arc()\n    .innerRadius(innerRadius)\n    .outerRadius(outerRadius)\n    .startAngle(0)\n    .endAngle(progressAngle);\n\n  const icon = React.cloneElement(React.Children.only(children), {\n    x: -iconWidth / 2.0,\n    y: -iconHeight / 2.0,\n    height: iconHeight,\n    width: iconWidth\n  });\n\n  return (\n    <div>\n      <svg width={canvasWidth} height={canvasHeight}>\n        <g transform={`translate(${canvasWidth / 2},${canvasHeight / 2})`}>\n          <path\n            d={backgroundArc()}\n            className={styles.progressCircleBackground}\n          />\n          {icon}\n          {hasProgress && (\n            <path d={progressArc()} className={styles.progressCircleFilled} />\n          )}\n        </g>\n      </svg>\n    </div>\n  );\n};\n\nCircularProgressChart.propTypes = {\n  progress: PropTypes.number,\n  canvasWidth: PropTypes.number.isRequired,\n  canvasHeight: PropTypes.number.isRequired,\n  children: PropTypes.element.isRequired,\n  outerCircleProportion: PropTypes.number,\n  innerCircleProportion: PropTypes.number,\n  iconProportion: PropTypes.number,\n  incompleteProgressLimit: PropTypes.number\n};\n\nexport default CircularProgressChart;\n","// extracted by mini-css-extract-plugin\nexport default {\"progress-bar-filled\":\"HorizontalProgressChart--progress-bar-filled--lKjJa\",\"progressBarFilled\":\"HorizontalProgressChart--progress-bar-filled--lKjJa\",\"progress-bar-empty\":\"HorizontalProgressChart--progress-bar-empty--Vu9Iz\",\"progressBarEmpty\":\"HorizontalProgressChart--progress-bar-empty--Vu9Iz\",\"progress-secondary-marker\":\"HorizontalProgressChart--progress-secondary-marker--DepNM\",\"progressSecondaryMarker\":\"HorizontalProgressChart--progress-secondary-marker--DepNM\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { rect } from 'd3-shape';\nimport styles from './styles.scss';\nimport calculateProgressFill from '../utils';\n\nconst HorizontalProgressChart = ({\n  primaryProgress = 0.0,\n  secondaryProgress = 0.0,\n  canvasWidth,\n  progressBarHeight = 2,\n  incompleteProgressLimit = 0.98\n}) => {\n  const canvasHeight = progressBarHeight + 6;\n  const secondaryHorizontalOffset = secondaryProgress * canvasWidth - 2;\n  const secondaryVerticalOffset = canvasHeight - 2;\n\n  const primaryProgressFill =\n    calculateProgressFill(primaryProgress, incompleteProgressLimit) * 100.0;\n\n  return (\n    <svg\n      style={{ overflow: 'visible', width: canvasWidth, height: canvasHeight }}\n    >\n      <g>\n        <rect\n          height={progressBarHeight}\n          style={{ width: '100%' }}\n          className={styles.progressBarEmpty}\n        />\n        <rect\n          height={progressBarHeight}\n          style={{ width: `${primaryProgressFill}%` }}\n          className={styles.progressBarFilled}\n        />\n        <polygon\n          points=\"0,4 6,4 3,0\"\n          transform={`translate(${secondaryHorizontalOffset}, ${secondaryVerticalOffset})`}\n          className={styles.progressSecondaryMarker}\n        />\n      </g>\n    </svg>\n  );\n};\n\nHorizontalProgressChart.propTypes = {\n  canvasWidth: PropTypes.number.isRequired,\n  primaryProgress: PropTypes.number,\n  secondaryProgress: PropTypes.number,\n  progressBarHeight: PropTypes.number,\n  incompleteProgressLimit: PropTypes.number\n};\n\nexport default HorizontalProgressChart;\n","// extracted by mini-css-extract-plugin\nexport default {\"goal-flex\":\"ProgressGoalDisplay--goal-flex--Lb685\",\"goalFlex\":\"ProgressGoalDisplay--goal-flex--Lb685\",\"goal-section\":\"ProgressGoalDisplay--goal-section--kDU8V\",\"goalSection\":\"ProgressGoalDisplay--goal-section--kDU8V\",\"goal-stats\":\"ProgressGoalDisplay--goal-stats--eGVJ2\",\"goalStats\":\"ProgressGoalDisplay--goal-stats--eGVJ2\",\"goal-stat-remaining\":\"ProgressGoalDisplay--goal-stat-remaining--Ph+mg\",\"goalStatRemaining\":\"ProgressGoalDisplay--goal-stat-remaining--Ph+mg\",\"goal-stat-completed\":\"ProgressGoalDisplay--goal-stat-completed--WJ3Yx\",\"goalStatCompleted\":\"ProgressGoalDisplay--goal-stat-completed--WJ3Yx\",\"goal-stat-activity-type\":\"ProgressGoalDisplay--goal-stat-activity-type--cARqU\",\"goalStatActivityType\":\"ProgressGoalDisplay--goal-stat-activity-type--cARqU\",\"goal-horizontal-container\":\"ProgressGoalDisplay--goal-horizontal-container--WgeI8\",\"goalHorizontalContainer\":\"ProgressGoalDisplay--goal-horizontal-container--WgeI8\",\"goal-annual-remaining-label\":\"ProgressGoalDisplay--goal-annual-remaining-label--oRK+Q\",\"goalAnnualRemainingLabel\":\"ProgressGoalDisplay--goal-annual-remaining-label--oRK+Q\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport I18n from 'utils/I18n';\nimport ActivityIcon from 'components/ActivityIcon';\nimport CircularProgressChart from '../CircularProgressChart';\nimport HorizontalProgressChart from '../HorizontalProgressChart';\n\nimport styles from './styles.scss';\n\nconst I18nKey = 'strava.progress_goals';\n\nconst ProgressGoalDisplay = ({\n  goal,\n  formatters,\n  circularChartCanvasSize = {\n    width: 40,\n    height: 40\n  }\n}) => {\n  const {\n    period,\n    value,\n    threshold: target,\n    goal_type: goalType,\n    activity_types: activityTypes,\n    year_percent_complete: percentYearComplete\n  } = goal;\n\n  // The Goals backend implements goals with multiple activity types, but\n  // only single activity type is supported in product.\n  const activityType = activityTypes[0];\n\n  // No Goal in Wambach is implemented as an active goal with a goal of 0\n  const noGoal = target <= 0;\n  const progress = noGoal ? 0 : Math.min(1.0, value / target);\n  const isAnnualGoal = period === 'year';\n  const relativeAnnualProgress = value - target * (percentYearComplete || 0);\n  const annualProgressKey = relativeAnnualProgress >= 0 ? 'ahead' : 'behind';\n\n  const formatValue = (valueType, goalValue, includeScalarUnit = true) => {\n    switch (valueType) {\n      case 'elevation':\n        if (includeScalarUnit) {\n          return formatters.elevationFormatter.formatShort(goalValue);\n        }\n        return formatters.elevationFormatter.format(goalValue);\n      case 'time':\n        return formatters.timespanFormatter.abbreviatedNoTags(goalValue, false);\n      case 'distance':\n        if (includeScalarUnit) {\n          return formatters.distanceFormatter.formatShort(goalValue, 0);\n        }\n        return formatters.distanceFormatter.format(goalValue, 0);\n      default:\n        return '';\n    }\n  };\n\n  const formatLabels = () => {\n    if (noGoal) {\n      return {\n        primary: I18n.t(`${I18nKey}.goals_display.no_goal`),\n        secondary: I18n.t(`${I18nKey}.goals_display.completed`, {\n          formatted_completed_value: formatValue(goalType, value)\n        }),\n        annual: ''\n      };\n    }\n    const goalRemaining = target - value;\n    const goalSecondaryFormatted = I18n.t(`${I18nKey}.goals_display.subtitle`, {\n      formatted_current_value: formatValue(goalType, value, false),\n      formatted_goal_amount: formatValue(goalType, target)\n    });\n    let goalPrimaryFormatted = I18n.t(`${I18nKey}.goals_display.remaining`, {\n      formatted_remaining_value: formatValue(goalType, goalRemaining)\n    });\n    if (goalRemaining <= 0) {\n      goalPrimaryFormatted = I18n.t(`${I18nKey}.goals_display.achieved`, {\n        formatted_completed_value: formatValue(goalType, target)\n      });\n    }\n    const goalAnnualFormatted = I18n.t(\n      `${I18nKey}.goals_display.annual_progress.${annualProgressKey}`,\n      {\n        formatted_value: formatValue(goalType, Math.abs(relativeAnnualProgress))\n      }\n    );\n    return {\n      primary: goalPrimaryFormatted,\n      secondary: goalSecondaryFormatted,\n      annual: goalAnnualFormatted\n    };\n  };\n\n  const formattedLabels = formatLabels();\n\n  return (\n    <div className={styles.goalSection}>\n      <div className={styles.goalFlex}>\n        <div>\n          <CircularProgressChart\n            progress={isAnnualGoal ? 0 : progress}\n            canvasWidth={circularChartCanvasSize.width}\n            canvasHeight={circularChartCanvasSize.height}\n          >\n            <ActivityIcon type={activityType} size=\"Xsmall\" />\n          </CircularProgressChart>\n        </div>\n        <div className={styles.goalStats}>\n          <div className={`text-footnote ${styles.goalStatRemaining}`}>\n            {formattedLabels.primary}\n          </div>\n          <div className={`text-caption2 ${styles.goalStatCompleted}`}>\n            {formattedLabels.secondary}\n          </div>\n          <div className={`text-caption2 ${styles.goalStatActivityType}`}>\n            {I18n.t(`strava.activities.types.${activityType}`)}\n          </div>\n        </div>\n      </div>\n      {isAnnualGoal && (\n        <div>\n          <div className={styles.goalHorizontalContainer}>\n            <HorizontalProgressChart\n              primaryProgress={progress}\n              secondaryProgress={percentYearComplete}\n              canvasWidth={248}\n            />\n          </div>\n          <div className={`text-caption2 ${styles.goalAnnualRemainingLabel}`}>\n            {formattedLabels.annual}\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n\nProgressGoalDisplay.propTypes = {\n  circularChartCanvasSize: PropTypes.shape({\n    width: PropTypes.number,\n    height: PropTypes.number\n  }),\n  formatters: PropTypes.shape({\n    elevationFormatter: PropTypes.object.isRequired,\n    timespanFormatter: PropTypes.object.isRequired,\n    distanceFormatter: PropTypes.object.isRequired\n  }).isRequired,\n  goal: PropTypes.shape({\n    id: PropTypes.number,\n    goal_type: PropTypes.string,\n    activity_types: PropTypes.arrayOf(PropTypes.string),\n    period: PropTypes.string,\n    threshold: PropTypes.number,\n    value: PropTypes.number,\n    year_percent_complete: PropTypes.number\n  }).isRequired\n};\n\nexport default ProgressGoalDisplay;\n","// extracted by mini-css-extract-plugin\nexport default {\"goal-period-section\":\"ProgressGoalPeriodList--goal-period-section--gjPtB\",\"goalPeriodSection\":\"ProgressGoalPeriodList--goal-period-section--gjPtB\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport I18n from 'utils/I18n';\n\nimport ProgressGoalDisplay from '../ProgressGoalDisplay';\nimport styles from './styles.scss';\n\nconst I18nKey = 'strava.progress_goals.goals_display.period';\n\nconst ProgressGoalPeriodList = ({ goals, periodName, formatters }) => {\n  return (\n    <div className={`card ${styles.goalPeriodSection}`}>\n      <div className=\"card-body\">\n        <div className=\"text-headline text-bold\">\n          {I18n.t(`${I18nKey}.${periodName}`)}\n        </div>\n        {goals.map((goal) => (\n          <ProgressGoalDisplay\n            key={goal.id}\n            goal={goal}\n            formatters={formatters}\n          />\n        ))}\n      </div>\n    </div>\n  );\n};\n\nProgressGoalPeriodList.propTypes = {\n  formatters: PropTypes.shape({\n    elevationFormatter: PropTypes.object.isRequired,\n    timespanFormatter: PropTypes.object.isRequired,\n    distanceFormatter: PropTypes.object.isRequired\n  }).isRequired,\n  periodName: PropTypes.string.isRequired,\n  goals: PropTypes.arrayOf(\n    PropTypes.shape({\n      id: PropTypes.number,\n      goal_type: PropTypes.string,\n      activity_types: PropTypes.arrayOf(PropTypes.string),\n      period: PropTypes.string,\n      threshold: PropTypes.number,\n      value: PropTypes.number,\n      year_percent_complete: PropTypes.number\n    })\n  ).isRequired\n};\n\nexport default ProgressGoalPeriodList;\n","import React, { useMemo, useState, useCallback, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport I18n from 'utils/I18n';\n\nimport createNetworkingClient from 'utils/networking-client';\n\nimport {\n  FetchInProgress,\n  FetchError,\n  NoAccess\n} from './components/LoadingStates';\n\nimport Footer from './components/Footer';\nimport ProgressGoalPeriodList from './components/ProgressGoalPeriodList';\n\nconst displayStates = {\n  NO_ACCESS: 0,\n  LOADING: 1,\n  FETCH_SUCCESS: 2,\n  FETCH_ERROR: 3\n};\n\nconst periodRenderOrder = ['week', 'month', 'year'];\n\nfunction ProgressGoalsSidebar({ unitPreference, hasAccess, athleteId }) {\n  const showFooter = true;\n\n  const formatters = useMemo(() => {\n    const unitSystem = unitPreference === 'feet' ? 'imperial' : 'metric';\n\n    return {\n      elevationFormatter: I18n.elevationFormatter(unitSystem),\n      distanceFormatter: I18n.distanceFormatter(unitSystem),\n      timespanFormatter: I18n.timespanFormatter()\n    };\n  }, [unitPreference]);\n  const [displayState, setDisplayState] = useState(\n    hasAccess === true ? displayStates.LOADING : displayStates.NO_ACCESS\n  );\n  const [goalsByPeriod, setGoalsByPeriod] = useState({});\n\n  const handleFetchComplete = useCallback((data) => {\n    // Group activities by their period\n    const grouped = data.reduce((acc, gl) => {\n      (acc[gl.period] = acc[gl.period] || []).push(gl);\n      return acc;\n    }, []);\n    setGoalsByPeriod(grouped);\n    setDisplayState(displayStates.FETCH_SUCCESS);\n  }, []);\n\n  const handleFetchError = useCallback(() => {\n    setDisplayState(displayStates.FETCH_ERROR);\n  }, []);\n\n  const fetchData = useCallback(() => {\n    createNetworkingClient()\n      .get(`/athletes/${athleteId}/goals/goals_sidebar_v2`)\n      .then((response) => {\n        if (response && response.status === 200) {\n          handleFetchComplete(response.data);\n        } else {\n          handleFetchError();\n        }\n      })\n      .catch(() => {\n        handleFetchError();\n      });\n  }, []);\n\n  useEffect(() => {\n    if (hasAccess === true) {\n      fetchData();\n    }\n  }, []);\n\n  const goalDisplay = () => {\n    switch (displayState) {\n      case displayStates.NO_ACCESS:\n        return <NoAccess />;\n      case displayStates.LOADING:\n        return <FetchInProgress />;\n      case displayStates.FETCH_ERROR:\n        return <FetchError handleRetry={fetchData} />;\n      default:\n        return periodRenderOrder\n          .filter((period) => period in goalsByPeriod)\n          .map((period) => (\n            <ProgressGoalPeriodList\n              key={period}\n              periodName={period}\n              goals={goalsByPeriod[period]}\n              formatters={formatters}\n            />\n          ));\n    }\n  };\n\n  return (\n    <>\n      <div className=\"goal-periods\">{goalDisplay()}</div>\n      {showFooter && <Footer />}\n    </>\n  );\n}\n\nProgressGoalsSidebar.propTypes = {\n  athleteId: PropTypes.number.isRequired,\n  unitPreference: PropTypes.string.isRequired,\n  hasAccess: PropTypes.bool.isRequired\n};\n\nexport default ProgressGoalsSidebar;\n","// extracted by mini-css-extract-plugin\nexport default {\"app-icon\":\"SidebarTabContainer--app-icon--MyAbR\",\"appIcon\":\"SidebarTabContainer--app-icon--MyAbR\",\"progress-goals-tabs\":\"SidebarTabContainer--progress-goals-tabs--Sda--\",\"progressGoalsTabs\":\"SidebarTabContainer--progress-goals-tabs--Sda--\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Tabs, TabList, Tab, TabPanels, TabPanel } from '@reach/tabs';\nimport '@reach/tabs/styles.css';\n\nimport ProgressGoalsRelativeEffortTab from 'components/ProgressGoalsRelativeEffortTab';\nimport ProgressGoalsSidebar from 'components/ProgressGoals/Sidebar';\n\nimport RelativeEffortTabIcon from '@strava/icons/NavigationTrainingNormalXsmall';\nimport ProgressGoalsTabIcon from '@strava/icons/ActionsPendingNormalXsmall';\nimport styles from './styles.scss';\n\nconst tabLocalStorageKey = 'strava.progressGoals';\nconst defaultTabName = 'progress-goals';\nconst tabIndexMapping = ['relative-effort-goals', 'progress-goals'];\n\nconst createTabStore = () => {\n  const tabIndex = () => {\n    if (localStorage) {\n      const tabStorageData = JSON.parse(\n        localStorage.getItem(tabLocalStorageKey)\n      );\n      if (tabStorageData) {\n        const idx = tabIndexMapping.indexOf(tabStorageData.selectedTabName);\n        if (idx >= 0) {\n          return idx;\n        }\n      }\n    }\n    return tabIndexMapping.indexOf(defaultTabName);\n  };\n\n  const setTabIndex = (index) => {\n    if (localStorage) {\n      if (index < tabIndexMapping.length) {\n        localStorage.setItem(\n          tabLocalStorageKey,\n          JSON.stringify({ selectedTabName: tabIndexMapping[index] })\n        );\n      }\n    }\n  };\n\n  return {\n    tabIndex,\n    setTabIndex\n  };\n};\n\nfunction ProgressGoalsSidebarTabContainer({\n  athleteId,\n  hasAccess,\n  isTrialEligible,\n  unitPreference,\n  relativeEffortSubscriptionUrl\n}) {\n  const tabStateStore = createTabStore();\n  const [tabIndex, setTabIndex] = useState(tabStateStore.tabIndex());\n\n  const onTabChange = (idx) => {\n    setTabIndex(idx);\n    tabStateStore.setTabIndex(idx);\n  };\n\n  return (\n    <Tabs\n      className={styles.progressGoalsTabs}\n      index={tabIndex}\n      onChange={onTabChange}\n    >\n      <TabList>\n        <Tab>\n          <RelativeEffortTabIcon className={styles.appIcon} />\n        </Tab>\n        <Tab>\n          <ProgressGoalsTabIcon className={styles.appIcon} />\n        </Tab>\n      </TabList>\n      <TabPanels>\n        <TabPanel>\n          <ProgressGoalsRelativeEffortTab\n            athleteId={athleteId}\n            hasAccess={hasAccess}\n            subscriptionUrl={relativeEffortSubscriptionUrl}\n            isTrialEligible={isTrialEligible}\n          />\n        </TabPanel>\n        <TabPanel>\n          <ProgressGoalsSidebar\n            athleteId={athleteId}\n            hasAccess={hasAccess}\n            unitPreference={unitPreference}\n          />\n        </TabPanel>\n      </TabPanels>\n    </Tabs>\n  );\n}\n\nProgressGoalsSidebarTabContainer.propTypes = {\n  athleteId: PropTypes.number.isRequired,\n  hasAccess: PropTypes.bool.isRequired,\n  isTrialEligible: PropTypes.bool.isRequired,\n  unitPreference: PropTypes.string.isRequired,\n  relativeEffortSubscriptionUrl: PropTypes.string.isRequired\n};\n\nexport default ProgressGoalsSidebarTabContainer;\n","// extracted by mini-css-extract-plugin\nexport default {\"mentions\":\"ActivityDescriptionEdit--mentions--ByRTw\",\"mentions--multiLine\":\"ActivityDescriptionEdit--mentions--multiLine--PuTyb\",\"mentionsMultiLine\":\"ActivityDescriptionEdit--mentions--multiLine--PuTyb\",\"mentions__highlighter\":\"ActivityDescriptionEdit--mentions__highlighter--NiF3-\",\"mentionsHighlighter\":\"ActivityDescriptionEdit--mentions__highlighter--NiF3-\",\"mentions__input\":\"ActivityDescriptionEdit--mentions__input--d8lEQ\",\"mentionsInput\":\"ActivityDescriptionEdit--mentions__input--d8lEQ\",\"mentions__suggestions__list\":\"ActivityDescriptionEdit--mentions__suggestions__list--4XHv3\",\"mentionsSuggestionsList\":\"ActivityDescriptionEdit--mentions__suggestions__list--4XHv3\",\"mentions__suggestions__item\":\"ActivityDescriptionEdit--mentions__suggestions__item--4Uq+l\",\"mentionsSuggestionsItem\":\"ActivityDescriptionEdit--mentions__suggestions__item--4Uq+l\",\"mentions__suggestions__item--focused\":\"ActivityDescriptionEdit--mentions__suggestions__item--focused--bpBwA\",\"mentionsSuggestionsItemFocused\":\"ActivityDescriptionEdit--mentions__suggestions__item--focused--bpBwA\",\"suggestion\":\"ActivityDescriptionEdit--suggestion--sBSZA\",\"meta-container\":\"ActivityDescriptionEdit--meta-container--IpHL-\",\"metaContainer\":\"ActivityDescriptionEdit--meta-container--IpHL-\",\"athlete-name\":\"ActivityDescriptionEdit--athlete-name--PU7SK\",\"athleteName\":\"ActivityDescriptionEdit--athlete-name--PU7SK\",\"location\":\"ActivityDescriptionEdit--location--gJYkE\",\"member-icon\":\"ActivityDescriptionEdit--member-icon--P2W3l\",\"memberIcon\":\"ActivityDescriptionEdit--member-icon--P2W3l\",\"mentioned-athlete\":\"ActivityDescriptionEdit--mentioned-athlete--+cbkU\",\"mentionedAthlete\":\"ActivityDescriptionEdit--mentioned-athlete--+cbkU\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { trackV2 } from 'utils/analytics';\nimport StravaMentionsInput from '../StravaMentionsInput/StravaMentionsInput';\nimport styles from './index.scss';\n\nfunction ActivityDescriptionEdit({\n  entity,\n  entityId,\n  placeHolder,\n  activityDescription = '',\n  clubMentionsEnabled,\n  suggestionLimit = 5,\n  inputName,\n  autoFocus = false,\n  viewingAthleteId,\n  analyticsFields\n}) {\n  // Avoids text duplication bug detailed here: https://github.com/signavio/react-mentions/issues/332\n  const cleanDescription = activityDescription\n    ? activityDescription.replace(/[\\r]+/g, '')\n    : '';\n  const [description, setDescription] = useState(cleanDescription);\n\n  const surfaceType = 'description';\n\n  const handleChange = ({ newValue }) => {\n    // Avoids text duplication bug detailed here: https://github.com/signavio/react-mentions/issues/332\n    const cleanValue = newValue.replace(/[\\r]+/g, '');\n    setDescription(cleanValue);\n  };\n\n  const descriptionOnClick = () => {\n    if (analyticsFields) {\n      trackV2({\n        category: analyticsFields.category,\n        page: analyticsFields.page,\n        action: 'click',\n        element: surfaceType\n      });\n    }\n  };\n\n  return (\n    <>\n      <StravaMentionsInput\n        autoFocus={autoFocus}\n        entity={entity}\n        entityId={entityId ? entityId.toString() : null}\n        onInputChange={handleChange}\n        clubMentionsEnabled={clubMentionsEnabled}\n        inputName={inputName}\n        placeHolder={placeHolder}\n        suggestionLimit={suggestionLimit}\n        viewingAthleteId={viewingAthleteId.toString()}\n        clearInputToggle={false}\n        inputHeight={108}\n        onInputClickAnalytics={descriptionOnClick}\n        surfaceType={surfaceType}\n        analyticsFields={analyticsFields}\n        value={description || ''}\n        classNames={styles}\n      />\n    </>\n  );\n}\n\nActivityDescriptionEdit.propTypes = {\n  entity: PropTypes.string.isRequired,\n  entityId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  placeHolder: PropTypes.string,\n  activityDescription: PropTypes.string,\n  inputName: PropTypes.string.isRequired,\n  clubMentionsEnabled: PropTypes.bool.isRequired,\n  suggestionLimit: PropTypes.number,\n  autoFocus: PropTypes.bool,\n  viewingAthleteId: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n    .isRequired,\n  analyticsFields: PropTypes.shape({\n    page: PropTypes.string,\n    category: PropTypes.string\n  })\n};\n\nexport default ActivityDescriptionEdit;\n","export { default } from './ActivityDescriptionEdit';\n","// extracted by mini-css-extract-plugin\nexport default {\"list\":\"MediaThumbnailList--list--boXGW\",\"item\":\"MediaThumbnailList--item--6KcOd\",\"button\":\"MediaThumbnailList--button--bNoi-\",\"button-logged-out\":\"MediaThumbnailList--button-logged-out--8lg4+\",\"buttonLoggedOut\":\"MediaThumbnailList--button-logged-out--8lg4+\",\"video-indicator\":\"MediaThumbnailList--video-indicator--w5uH6\",\"videoIndicator\":\"MediaThumbnailList--video-indicator--w5uH6\",\"see-more-button\":\"MediaThumbnailList--see-more-button--SSgNY\",\"seeMoreButton\":\"MediaThumbnailList--see-more-button--SSgNY\",\"see-more-button-logged-out\":\"MediaThumbnailList--see-more-button-logged-out---E4ej\",\"seeMoreButtonLoggedOut\":\"MediaThumbnailList--see-more-button-logged-out---E4ej\",\"count\":\"MediaThumbnailList--count--9cMSl\"};","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport clsx from 'clsx';\nimport ActionsVideoThumbnailNormalXsmall from '@strava/icons/ActionsVideoThumbnailNormalXsmall';\n\nimport StravaMediaLightbox from 'components/StravaMediaLightbox';\nimport { trackV2 } from 'utils/analytics';\n\nimport styles from './MediaThumbnailList.scss';\n\nfunction MediaThumbnailList({\n  isLoggedIn = false,\n  items = [],\n  viewableCount = 8,\n  thumbnailSize = 60,\n  category,\n  profileType,\n  page\n}) {\n  const [lightboxState, setLightboxState] = useState({\n    isOpen: false,\n    selectedIndex: 0\n  });\n\n  const itemsToDisplay = viewableCount - 1;\n  const hasMoreItems = items.length - viewableCount > 0;\n  const moreCount = items.length - itemsToDisplay;\n  const adjustedItems = hasMoreItems ? items.slice(0, itemsToDisplay) : items;\n\n  useEffect(() => {\n    if (window.location.pathname.includes('/activities')) {\n      // Provided that URL includes a unique videoId param then we can assert that URL is a redirect from BranchIO deep link.\n      // Then we can programmatically trigger the Modal (StravaMediaLightbox) and select that video to display.\n      // Deep link format => `/activities/<activityId>?videoId=<video_id>`\n      const urlParams = new URLSearchParams(window.location.search);\n      // Grab unique videoId param from deep link\n      const videoId = urlParams.get('videoId');\n      // If no videoId param then it's not a deep link so do nothing.\n      if (videoId) {\n        const photoIndex = items.findIndex((item) => item.photo_id === videoId);\n        if (photoIndex >= 0) {\n          setLightboxState({ isOpen: true, selectedIndex: photoIndex });\n        }\n      }\n    }\n  }, [items]);\n\n  // Analytics for screen enter/exit\n  useEffect(() => {\n    if (items.length === 0) {\n      return;\n    }\n    const firstItem = items[0];\n    const isAdp = page === 'activity_detail';\n    const data = {\n      category,\n      page,\n      element: isAdp ? 'media' : 'media_thumbnail',\n      properties: {\n        athlete_id: firstItem.viewing_athlete_id,\n        requested_athlete_id: firstItem.owner_id\n      }\n    };\n\n    if (isAdp) {\n      data.properties.activity_id = firstItem.activity_id;\n      data.properties.activity_athlete_id = firstItem.owner_id;\n    }\n\n    trackV2({\n      ...data,\n      action: 'screen_enter'\n    });\n\n    window.addEventListener('beforeunload', function() {\n      trackV2({\n        ...data,\n        action: 'screen_exit'\n      });\n    });\n  }, []);\n\n  function handleItemClick(index) {\n    setLightboxState({ isOpen: true, selectedIndex: index });\n  }\n\n  const onMediaClick = (media) => {\n    const data = {\n      category,\n      page,\n      properties: {\n        activity_id: media.activity_id,\n        activity_athlete_id: media.owner_id,\n        athlete_id: media.viewing_athlete_id,\n        requested_athlete_id: media.owner_id\n      }\n    };\n\n    const isImage = media.media_type === 1;\n    if (isImage) {\n      data.properties.image_id = media.photo_id;\n    } else {\n      data.properties.video_id = media.photo_id;\n    }\n\n    // Photo / Video\n    const adpElement = isImage ? 'image' : 'video';\n    const profileElement = isImage ? 'photo_thumbnail' : 'video_thumbnail';\n\n    trackV2({\n      ...data,\n      action: 'click',\n      element: category === 'activity_detail' ? adpElement : profileElement\n    });\n  };\n\n  if (items.length === 0) {\n    return null;\n  }\n\n  return (\n    <>\n      <MediaList>\n        {adjustedItems.map((item, index) => (\n          <MediaListItem\n            key={item.photo_id}\n            style={{ height: thumbnailSize, width: thumbnailSize }}\n          >\n            <Item\n              isInteractive={isLoggedIn}\n              onClick={() => handleItemClick(index)}\n            >\n              <img src={item.thumbnail} alt=\"\" />\n              {item.media_type === 2 ? <VideoIndicator /> : null}\n            </Item>\n          </MediaListItem>\n        ))}\n\n        {hasMoreItems ? (\n          <MediaListItem\n            style={{ height: thumbnailSize, width: thumbnailSize }}\n          >\n            <MoreItem\n              isInteractive={isLoggedIn}\n              onClick={() => handleItemClick(itemsToDisplay)}\n            >\n              <img src={items[itemsToDisplay].thumbnail} alt=\"\" />\n              {items[itemsToDisplay].media_type === 2 ? (\n                <VideoIndicator />\n              ) : null}\n              <div className={styles.count}>+ {moreCount}</div>\n            </MoreItem>\n          </MediaListItem>\n        ) : null}\n      </MediaList>\n\n      {lightboxState.isOpen ? (\n        <StravaMediaLightbox\n          selectedPhotoIndex={lightboxState.selectedIndex}\n          photoList={items}\n          onMount={() => {\n            onMediaClick(items[lightboxState.selectedIndex]);\n          }}\n          onCloseRequest={() => {\n            setLightboxState({ isOpen: false });\n          }}\n          analyticProps={{\n            page,\n            feedType: profileType,\n            entityId: items[lightboxState.selectedIndex].activity_id\n          }}\n        />\n      ) : null}\n    </>\n  );\n}\n\nMediaThumbnailList.propTypes = {\n  isLoggedIn: PropTypes.bool,\n  items: PropTypes.arrayOf(\n    // TODO: Look into if we have have this shared somehow\n    PropTypes.shape({\n      media_type: PropTypes.number.isRequired,\n      photo_id: PropTypes.string.isRequired,\n      large: PropTypes.string.isRequired,\n      thumbnail: PropTypes.string.isRequired,\n      caption_escaped: PropTypes.string,\n      viewing_athlete_id: PropTypes.oneOfType([\n        PropTypes.number,\n        PropTypes.string\n      ]),\n      owner_id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      editable: PropTypes.bool,\n      activity_id: PropTypes.string\n    })\n  ),\n  viewableCount: PropTypes.number,\n  thumbnailSize: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  category: PropTypes.string.isRequired,\n  profileType: PropTypes.string.isRequired,\n  page: PropTypes.string.isRequired\n};\n\nfunction Item({ isInteractive, children, onClick }) {\n  return isInteractive ? (\n    <MediaListItemButton onClick={onClick} onKeyPress={onClick}>\n      {children}\n    </MediaListItemButton>\n  ) : (\n    <div className={styles.buttonLoggedOut}>{children}</div>\n  );\n}\n\nItem.propTypes = {\n  isInteractive: PropTypes.bool.isRequired,\n  children: PropTypes.node.isRequired,\n  onClick: PropTypes.func.isRequired\n};\n\nfunction MoreItem({ isInteractive, children, onClick }) {\n  return isInteractive ? (\n    <MediaListItemButton\n      className={styles.seeMoreButton}\n      onClick={onClick}\n      onKeyPress={onClick}\n    >\n      {children}\n    </MediaListItemButton>\n  ) : (\n    <div className={clsx(styles.buttonLoggedOut, styles.seeMoreButtonLoggedOut)}>\n      {children}\n    </div>\n  );\n}\n\nMoreItem.propTypes = {\n  isInteractive: PropTypes.bool.isRequired,\n  children: PropTypes.node.isRequired,\n  onClick: PropTypes.func.isRequired\n};\n\n/**\n * MediaList\n */\nfunction MediaList({ className, ...props }) {\n  return <ul {...props} className={clsx(styles.list, className)} />;\n}\n\nMediaList.propTypes = {\n  className: PropTypes.string\n};\n\n/**\n * MediaListItem\n */\n\nfunction MediaListItem({ className, ...props }) {\n  return <li {...props} className={clsx(styles.item, className)} />;\n}\n\nMediaListItem.propTypes = {\n  className: PropTypes.string\n};\n\n/**\n * MediaListItemButton\n */\n\nfunction MediaListItemButton({ className, ...props }) {\n  return (\n    <div\n      {...props}\n      role=\"button\"\n      className={clsx(styles.button, className)}\n      tabIndex=\"0\"\n    />\n  );\n}\n\nMediaListItemButton.propTypes = {\n  className: PropTypes.string\n};\n\nfunction VideoIndicator() {\n  return (\n    <div className={styles.videoIndicator} data-testid=\"video-indicator\">\n      <ActionsVideoThumbnailNormalXsmall />\n    </div>\n  );\n}\n\nexport default MediaThumbnailList;\n","export { default } from './MediaThumbnailList';\n","// extracted by mini-css-extract-plugin\nexport default {\"list\":\"AthleteProfileHeaderMediaGrid--list--GwWYs\",\"list-item\":\"AthleteProfileHeaderMediaGrid--list-item--LUYNJ\",\"listItem\":\"AthleteProfileHeaderMediaGrid--list-item--LUYNJ\",\"three-up\":\"AthleteProfileHeaderMediaGrid--three-up--Oxveq\",\"threeUp\":\"AthleteProfileHeaderMediaGrid--three-up--Oxveq\",\"four-up\":\"AthleteProfileHeaderMediaGrid--four-up--fSj4C\",\"fourUp\":\"AthleteProfileHeaderMediaGrid--four-up--fSj4C\",\"five-up\":\"AthleteProfileHeaderMediaGrid--five-up--GHaCP\",\"fiveUp\":\"AthleteProfileHeaderMediaGrid--five-up--GHaCP\",\"six-up\":\"AthleteProfileHeaderMediaGrid--six-up--lGBwa\",\"sixUp\":\"AthleteProfileHeaderMediaGrid--six-up--lGBwa\",\"button\":\"AthleteProfileHeaderMediaGrid--button--ysyzf\",\"button-logged-out\":\"AthleteProfileHeaderMediaGrid--button-logged-out--A5Gg9\",\"buttonLoggedOut\":\"AthleteProfileHeaderMediaGrid--button-logged-out--A5Gg9\",\"image\":\"AthleteProfileHeaderMediaGrid--image---tdOO\",\"video-indicator\":\"AthleteProfileHeaderMediaGrid--video-indicator--5H7Tl\",\"videoIndicator\":\"AthleteProfileHeaderMediaGrid--video-indicator--5H7Tl\"};","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport clsx from 'clsx';\nimport ActionsVideoThumbnailNormalSmall from '@strava/icons/ActionsVideoThumbnailNormalSmall';\n\nimport StravaMediaLightbox from 'components/StravaMediaLightbox';\nimport { trackV2 } from 'utils/analytics';\n\nimport styles from './AthleteProfileHeaderMediaGrid.scss';\n\nfunction AthleteProfileHeaderMediaGrid({\n  isLoggedIn,\n  items = [],\n  profileType\n}) {\n  const [lightboxState, setLightboxState] = useState({\n    isOpen: false,\n    selectedIndex: 0\n  });\n\n  // Analytics for screen enter/exit\n  useEffect(() => {\n    if (items.length === 0) {\n      return;\n    }\n    const firstItem = items[0];\n    const data = {\n      category: 'profile',\n      page: profileType,\n      element: 'header_media',\n      properties: {\n        athlete_id: firstItem.viewing_athlete_id,\n        requested_athlete_id: firstItem.owner_id\n      }\n    };\n\n    trackV2({\n      ...data,\n      action: 'screen_enter'\n    });\n\n    window.addEventListener('beforeunload', function() {\n      trackV2({\n        ...data,\n        action: 'screen_exit'\n      });\n    });\n  }, []);\n\n  function handleItemClick(index) {\n    setLightboxState({ isOpen: true, selectedIndex: index });\n  }\n\n  function getButtonProps(index) {\n    if (isLoggedIn) {\n      return {\n        role: 'button',\n        className: styles.button,\n        onClick: () => handleItemClick(index),\n        onKeyPress: () => handleItemClick(index),\n        tabIndex: '0'\n      };\n    }\n\n    return {\n      className: styles.buttonLoggedOut\n    };\n  }\n\n  const listClassName = (() => {\n    if (items.length < 4) {\n      return styles.threeUp;\n    }\n    if (items.length < 5) {\n      return styles.fourUp;\n    }\n    if (items.length < 6) {\n      return styles.fiveUp;\n    }\n    return styles.sixUp;\n  })();\n\n  const onMediaClick = (media) => {\n    const data = {\n      category: 'profile',\n      page: profileType,\n      action: 'click',\n      properties: {\n        athlete_id: media.viewing_athlete_id,\n        requested_athlete_id: media.owner_id\n      }\n    };\n\n    const isImage = media.media_type === 1;\n    if (isImage) {\n      data.properties.image_id = media.photo_id;\n    } else {\n      data.properties.video_id = media.photo_id;\n    }\n\n    trackV2({\n      ...data,\n      action: 'click',\n      element: media.media_type === 1 ? 'header_image' : 'header_video'\n    });\n  };\n\n  if (items.length === 0) {\n    return null;\n  }\n\n  return (\n    <>\n      <ul className={clsx(styles.list, listClassName)}>\n        {items.map((item, index) => (\n          <li key={item.photo_id} className={styles.listItem}>\n            <div {...getButtonProps(index)}>\n              <div\n                className={styles.image}\n                style={{ backgroundImage: `url(${item.large})` }}\n              />\n              {item.media_type === 2 ? (\n                <div\n                  className={styles.videoIndicator}\n                  data-testid=\"video-indicator\"\n                >\n                  <ActionsVideoThumbnailNormalSmall />\n                </div>\n              ) : null}\n            </div>\n          </li>\n        ))}\n      </ul>\n\n      {lightboxState.isOpen ? (\n        <StravaMediaLightbox\n          selectedPhotoIndex={lightboxState.selectedIndex}\n          photoList={items}\n          onMount={() => {\n            onMediaClick(items[lightboxState.selectedIndex]);\n          }}\n          onCloseRequest={() => {\n            setLightboxState({ isOpen: false });\n          }}\n          analyticProps={{\n            page: profileType,\n            feedType: profileType,\n            entityId: items[lightboxState.selectedIndex].activity_id\n          }}\n        />\n      ) : null}\n    </>\n  );\n}\n\nAthleteProfileHeaderMediaGrid.propTypes = {\n  isLoggedIn: PropTypes.bool.isRequired,\n  items: PropTypes.arrayOf(\n    PropTypes.shape({\n      photo_id: PropTypes.string.isRequired,\n      large: PropTypes.string.isRequired,\n      thumbnail: PropTypes.string.isRequired,\n      viewing_athlete_id: PropTypes.string.isRequired,\n      owner_id: PropTypes.string.isRequired\n    })\n  ),\n  profileType: PropTypes.string.isRequired\n};\n\nexport default AthleteProfileHeaderMediaGrid;\n","export { default } from './AthleteProfileHeaderMediaGrid';\n","import React, { useEffect, useState } from 'react';\n\nimport { TranslationContext } from '@strava/container-context';\nimport EmbedModal from '@strava/feature-embed-modal';\nimport I18n from 'utils/I18n';\n\nconst validateEmbedModalProps = (props) => {\n  if (typeof props.embedId !== 'string' || props.embedId === '') {\n    console.error('embed modal props.embedId must be a non-empty string');\n    return false;\n  }\n  const validEmbedTypes = ['activity', 'route'];\n  if (!validEmbedTypes.includes(props.embedType)) {\n    console.error(\n      `embed modal props.embedType must be one of ${validEmbedTypes.join(', ')}`\n    );\n    return false;\n  }\n  return true;\n};\n\nconst EmbedModalWrapper = () => {\n  const [embedModalProps, setEmbedModalProps] = useState(null);\n\n  useEffect(() => {\n    function handleOpenDialog(e) {\n      // do a runtime check of the embed modal props so that we fail early\n      // with a good warning rather than generating an invalid embed modal\n      if (!validateEmbedModalProps(e.detail)) {\n        return;\n      }\n      const { embedId, embedType } = e.detail;\n      setEmbedModalProps({ embedId, embedType });\n    }\n\n    document.addEventListener('OpenEmbedDialog', handleOpenDialog);\n\n    return () => {\n      document.removeEventListener('OpenEmbedDialog', handleOpenDialog);\n    };\n  }, []);\n\n  function closeModal() {\n    setEmbedModalProps(null);\n  }\n\n  if (!embedModalProps) {\n    return null;\n  }\n\n  const { embedType, embedId } = embedModalProps;\n\n  return (\n    <TranslationContext.Provider\n      value={{\n        t: (key, props = {}) => I18n.t(key, props),\n        getLanguage: () => I18n.language()\n      }}\n    >\n      <EmbedModal\n        isOpen={true}\n        onDismiss={closeModal}\n        embedType={embedType}\n        embedId={embedId}\n      />\n    </TranslationContext.Provider>\n  );\n};\n\nexport default EmbedModalWrapper;\n","// extracted by mini-css-extract-plugin\nexport default {\"modal\":\"FeatureEdInfoBox--modal--Gpdxw\",\"body\":\"FeatureEdInfoBox--body--ublo5\",\"header\":\"FeatureEdInfoBox--header--d0wPL\",\"subheader\":\"FeatureEdInfoBox--subheader--kY2ew\",\"cancel\":\"FeatureEdInfoBox--cancel--Sjqr0\",\"fade-out\":\"FeatureEdInfoBox--fade-out--4aRNz\",\"fadeOut\":\"FeatureEdInfoBox--fade-out--4aRNz\",\"enterFadeOut\":\"FeatureEdInfoBox--enterFadeOut--Zn7Ab\",\"video-icon\":\"FeatureEdInfoBox--video-icon--UTCWt\",\"videoIcon\":\"FeatureEdInfoBox--video-icon--UTCWt\",\"circle\":\"FeatureEdInfoBox--circle--0p64-\",\"circle-container\":\"FeatureEdInfoBox--circle-container--ppPDF\",\"circleContainer\":\"FeatureEdInfoBox--circle-container--ppPDF\",\"fadeIn\":\"FeatureEdInfoBox--fadeIn--+SIHp\",\"new-kudo-animation\":\"FeatureEdInfoBox--new-kudo-animation--Pn-dB\",\"newKudoAnimation\":\"FeatureEdInfoBox--new-kudo-animation--Pn-dB\"};","import React, { useState, useEffect } from 'react';\nimport I18n from 'utils/I18n';\nimport ActionsCancelNormalXsmall from '@strava/icons/ActionsCancelNormalXsmall';\nimport ActionsVideoThumbnailNormalSmall from '@strava/icons/ActionsVideoThumbnailNormalSmall';\nimport clsx from 'clsx';\nimport styles from './FeatureEdInfoBox.scss';\n\nfunction FeatureEdInfoBox() {\n  const [isDismissed, setIsDismissed] = useState(false);\n  const [showInfoBox, setShowInfoBox] = useState(true);\n\n  useEffect(() => {\n    if (isDismissed) {\n      setTimeout(() => {\n        setShowInfoBox(false);\n      }, 500);\n    }\n  }, [isDismissed]);\n\n  return (\n    <>\n      {showInfoBox && (\n        <div className={clsx(styles.modal, isDismissed ? styles.fadeOut : '')}>\n          <div className={styles.circleContainer}>\n            <div className={styles.circle}>\n              <ActionsVideoThumbnailNormalSmall className={styles.videoIcon} />\n            </div>\n          </div>\n\n          <div className={styles.body}>\n            <div className={styles.header}>\n              {I18n.t(`templates.activities.edit.feature_education.header`)}\n              <ActionsCancelNormalXsmall\n                onClick={() => {\n                  setIsDismissed(true);\n                }}\n                className={styles.cancel}\n              />\n            </div>\n            <div className={styles.subheader}>\n              {I18n.t(`templates.activities.edit.feature_education.subheader`)}\n            </div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n}\n\nFeatureEdInfoBox.propTypes = {};\nexport default FeatureEdInfoBox;\n","export { default } from './FeatureEdInfoBox';\n","// extracted by mini-css-extract-plugin\nexport default {\"label\":\"MediaUploader--label--y7bkw\",\"dropzone\":\"MediaUploader--dropzone--sS1mw\",\"highlight\":\"MediaUploader--highlight--MehQ6\",\"centered\":\"MediaUploader--centered--h3Hhd\",\"media-container\":\"MediaUploader--media-container--w6M8d\",\"mediaContainer\":\"MediaUploader--media-container--w6M8d\",\"header\":\"MediaUploader--header--JoZvv\",\"subheader\":\"MediaUploader--subheader--6VV2+\",\"popup\":\"MediaUploader--popup--BfSfP\",\"contents\":\"MediaUploader--contents--A021J\",\"arrow\":\"MediaUploader--arrow--uuEOI\"};","// extracted by mini-css-extract-plugin\nexport default {\"thumbnail-container\":\"Thumbnail--thumbnail-container--oDF+D\",\"thumbnailContainer\":\"Thumbnail--thumbnail-container--oDF+D\",\"highlight\":\"Thumbnail--highlight--N+H4j\",\"thumbnail\":\"Thumbnail--thumbnail--nW6NB\",\"thumbnail-image\":\"Thumbnail--thumbnail-image--hzP0B\",\"thumbnailImage\":\"Thumbnail--thumbnail-image--hzP0B\",\"placeholder-image\":\"Thumbnail--placeholder-image--1w-vW\",\"placeholderImage\":\"Thumbnail--placeholder-image--1w-vW\",\"portrait\":\"Thumbnail--portrait--HVA3S\",\"landscape\":\"Thumbnail--landscape--7RRD2\",\"no-landscape\":\"Thumbnail--no-landscape--jsh3x\",\"noLandscape\":\"Thumbnail--no-landscape--jsh3x\",\"landscape-container\":\"Thumbnail--landscape-container--QPi1x\",\"landscapeContainer\":\"Thumbnail--landscape-container--QPi1x\",\"landscape-icon\":\"Thumbnail--landscape-icon--n9O1-\",\"landscapeIcon\":\"Thumbnail--landscape-icon--n9O1-\",\"icon\":\"Thumbnail--icon--KlFE-\",\"portrait-play-icon\":\"Thumbnail--portrait-play-icon--wQLQO\",\"portraitPlayIcon\":\"Thumbnail--portrait-play-icon--wQLQO\",\"landscape-play-icon\":\"Thumbnail--landscape-play-icon--dNCx7\",\"landscapePlayIcon\":\"Thumbnail--landscape-play-icon--dNCx7\",\"popup-contents\":\"Thumbnail--popup-contents--S5Bso\",\"popupContents\":\"Thumbnail--popup-contents--S5Bso\",\"no-show\":\"Thumbnail--no-show--Ke2KA\",\"noShow\":\"Thumbnail--no-show--Ke2KA\",\"spinner-container\":\"Thumbnail--spinner-container--i5R4D\",\"spinnerContainer\":\"Thumbnail--spinner-container--i5R4D\",\"circle-progress-bar\":\"Thumbnail--circle-progress-bar--UaH23\",\"circleProgressBar\":\"Thumbnail--circle-progress-bar--UaH23\",\"no-thumbnail\":\"Thumbnail--no-thumbnail--8JzZb\",\"noThumbnail\":\"Thumbnail--no-thumbnail--8JzZb\",\"failed-to-upload-no-preview\":\"Thumbnail--failed-to-upload-no-preview--jE9XH\",\"failedToUploadNoPreview\":\"Thumbnail--failed-to-upload-no-preview--jE9XH\",\"failed-to-upload-with-preview\":\"Thumbnail--failed-to-upload-with-preview--vamyq\",\"failedToUploadWithPreview\":\"Thumbnail--failed-to-upload-with-preview--vamyq\",\"failed-to-upload-with-preview-opacity\":\"Thumbnail--failed-to-upload-with-preview-opacity--0iM7K\",\"failedToUploadWithPreviewOpacity\":\"Thumbnail--failed-to-upload-with-preview-opacity--0iM7K\",\"no-image\":\"Thumbnail--no-image--ibnvh\",\"noImage\":\"Thumbnail--no-image--ibnvh\"};","// extracted by mini-css-extract-plugin\nexport default {\"popup-button-list\":\"PopupContents--popup-button-list--OU7Sn\",\"popupButtonList\":\"PopupContents--popup-button-list--OU7Sn\",\"single-button-contents\":\"PopupContents--single-button-contents--MmaIH\",\"singleButtonContents\":\"PopupContents--single-button-contents--MmaIH\",\"popup-button\":\"PopupContents--popup-button--j+wBq\",\"popupButton\":\"PopupContents--popup-button--j+wBq\",\"popup-text\":\"PopupContents--popup-text--X7w1V\",\"popupText\":\"PopupContents--popup-text--X7w1V\",\"popup-header\":\"PopupContents--popup-header--DPlOs\",\"popupHeader\":\"PopupContents--popup-header--DPlOs\",\"delete-container\":\"PopupContents--delete-container--uick2\",\"deleteContainer\":\"PopupContents--delete-container--uick2\",\"delete-to-reupload\":\"PopupContents--delete-to-reupload--081Zw\",\"deleteToReupload\":\"PopupContents--delete-to-reupload--081Zw\",\"delete\":\"PopupContents--delete--iFLa+\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport I18n from 'utils/I18n';\nimport { Button } from '@strava/ui/Button';\nimport styles from './PopupContents.scss';\n\nfunction PopupContents({\n  hasFailedToUpload,\n  mediaType,\n  remove,\n  uuid,\n  index,\n  setHighlightMedia,\n  highlightMediaId\n}) {\n  return hasFailedToUpload ? (\n    <ul className={clsx(styles.popupButtonList)}>\n      <div className={styles.popupText}>\n        <div className={styles.popupHeader}>\n          {mediaType === 2\n            ? I18n.t(\n                `templates.activities.edit.photos.error_handling.error_with_media`\n              )\n            : I18n.t(\n                `templates.activities.edit.photos.error_handling.something_went_wrong`\n              )}\n        </div>\n        <div>\n          {I18n.t(\n            `templates.activities.edit.photos.error_handling.try_uploading_again`\n          )}\n        </div>\n      </div>\n      <div className={styles.deleteContainer}>\n        <Button\n          className={styles.deleteToReupload}\n          onClick={(e) => {\n            remove(e, index);\n          }}\n          variant=\"primary\"\n        >\n          {I18n.t(`templates.activities.edit.photos.delete`)}\n        </Button>\n      </div>\n    </ul>\n  ) : (\n    <ul className={styles.popupButtonList}>\n      <li>\n        <Button\n          className={styles.popupButton}\n          onClick={(e) => {\n            setHighlightMedia(e, index);\n          }}\n          disabled={highlightMediaId === uuid}\n        >\n          {I18n.t(`templates.activities.edit.photos.set_highlight_v2`)}\n        </Button>\n      </li>\n      <li>\n        <Button\n          className={clsx(styles.popupButton, styles.delete)}\n          onClick={(e) => {\n            remove(e, index);\n          }}\n        >\n          {I18n.t(`templates.activities.edit.photos.delete`)}\n        </Button>\n      </li>\n    </ul>\n  );\n}\n\nPopupContents.propTypes = {\n  hasFailedToUpload: PropTypes.bool.isRequired,\n  mediaType: PropTypes.number.isRequired,\n  remove: PropTypes.func.isRequired,\n  uuid: PropTypes.string.isRequired,\n  index: PropTypes.number.isRequired,\n  setHighlightMedia: PropTypes.func.isRequired,\n  highlightMediaId: PropTypes.string.isRequired\n};\nexport default PopupContents;\n","export { default } from './PopupContents';\n","import React, { useEffect, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { color } from '@strava/ui-tokens/js';\nimport clsx from 'clsx';\nimport { Popup } from '@strava/ui/Popup';\nimport ActionsVideoThumbnailNormalXsmall from '@strava/icons/ActionsVideoThumbnailNormalXsmall';\nimport ActionsVideoThumbnailNormalSmall from '@strava/icons/ActionsVideoThumbnailNormalSmall';\nimport ActionsPhotoNormalSmall from '@strava/icons/ActionsPhotoNormalSmall';\nimport NavigationWarningNormalSmall from '@strava/icons/NavigationWarningNormalSmall';\nimport { CircularProgressbar, buildStyles } from 'react-circular-progressbar';\nimport 'react-circular-progressbar/dist/styles.css';\nimport { useDrag, useDrop } from 'react-dnd';\nimport { Spinner } from '@strava/ui/Spinner';\nimport styles from './Thumbnail.scss';\nimport PopupContents from './PopupContents';\n\nfunction Thumbnail({\n  file,\n  index,\n  highlightMediaId,\n  setHighlightMedia,\n  remove,\n  loadingStates,\n  uuid,\n  mediaType,\n  moveThumbnail\n}) {\n  const [portraitOrientation, setPortraitOrientation] = useState();\n  const [isPreviewError, setIsPreviewError] = useState(false);\n\n  const isPlaceHolderImage = (preview) =>\n    preview === 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\n  const [isPlaceHolder, setIsPlaceHolder] = useState(\n    isPlaceHolderImage(file.preview)\n  );\n\n  const isPortrait = (img) => {\n    const w = img.naturalWidth || img.width;\n    const h = img.naturalHeight || img.height;\n    return h > w;\n  };\n\n  // Get orientation of the thumbnail\n  useEffect(() => {\n    setIsPlaceHolder(isPlaceHolderImage(file.preview));\n  }, [file.preview]);\n\n  // Get orientation of the thumbnail\n  useEffect(() => {\n    const img = new Image();\n    img.src = file.preview;\n    img.onload = () => {\n      setPortraitOrientation(isPortrait(img));\n    };\n  }, [file]);\n\n  const ItemTypes = {\n    THUMBNAIL: 'thumbnail'\n  };\n\n  const hasFailedToUpload = loadingStates[uuid] === -1;\n\n  const ref = useRef(null);\n  const [{ handlerId }, drop] = useDrop({\n    accept: ItemTypes.THUMBNAIL,\n    collect(monitor) {\n      return {\n        handlerId: monitor.getHandlerId()\n      };\n    },\n    hover(item, monitor) {\n      if (!ref.current) {\n        return;\n      }\n      const dragIndex = item.index;\n      const hoverIndex = index;\n      const dragElement = document.getElementById(monitor.getItem().uuid);\n\n      // Don't replace items with themselves\n      if (dragIndex === hoverIndex) {\n        return;\n      }\n      // Determine rectangle on screen\n      const hoverBoundingRect = ref.current?.getBoundingClientRect();\n      const dragBoundingRect = dragElement.getBoundingClientRect();\n\n      // Get hovered image vertical middle position\n      const hoverMiddleY =\n        (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n\n      // Get hovered image horizontal middle position\n      const hoverMiddleX =\n        (hoverBoundingRect.right - hoverBoundingRect.left) / 2;\n\n      // Determine mouse position\n      const clientOffset = monitor.getClientOffset();\n\n      // Get pixels to the top\n      const hoverClientY = clientOffset.y - hoverBoundingRect.top;\n\n      // Get pixels to the left\n      const hoverClientX = clientOffset.x - hoverBoundingRect.left;\n\n      // Are we dragging right or left?\n      const dragRight = dragIndex === hoverIndex - 1;\n      const dragLeft = dragIndex === hoverIndex + 1;\n\n      // Are we dragging up or down?\n      const dragUp = dragBoundingRect.top > hoverBoundingRect.top;\n      const dragDown = dragBoundingRect.bottom < hoverBoundingRect.bottom;\n\n      // Only perform the move when the mouse has crossed half of the items height/width\n      // When dragging downwards, only move when the cursor is below 50%\n      // When dragging upwards, only move when the cursor is above 50%\n\n      // Dragging right\n      if (dragRight && dragIndex < hoverIndex && hoverClientX < hoverMiddleX) {\n        return;\n      }\n      // Dragging left\n      if (dragLeft && dragIndex > hoverIndex && hoverClientX > hoverMiddleX) {\n        return;\n      }\n      // Dragging upwards\n      if (dragUp && dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\n        return;\n      }\n      // Dragging downwards\n      if (dragDown && dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\n        return;\n      }\n\n      // Change the state in MediaUploader\n      moveThumbnail(dragIndex, hoverIndex);\n\n      // eslint-disable-next-line no-param-reassign\n      item.index = hoverIndex;\n    }\n  });\n  const [{ isDragging }, drag] = useDrag({\n    type: ItemTypes.THUMBNAIL,\n    item: () => {\n      return { uuid, index };\n    },\n    collect: (monitor) => ({\n      isDragging: monitor.isDragging()\n    })\n  });\n  drag(drop(ref));\n\n  const videoIcon = () => {\n    // Icon for Videos\n    if (mediaType === 2 && !isPreviewError) {\n      return (\n        <ActionsVideoThumbnailNormalXsmall\n          className={clsx(\n            styles.icon,\n            portraitOrientation\n              ? styles.portraitPlayIcon\n              : styles.landscapePlayIcon\n          )}\n        />\n      );\n    }\n    return null;\n  };\n\n  const thumbnailInnerIcon = () => {\n    // Processing media file\n    if (file && loadingStates[uuid] === 0) {\n      return (\n        <div\n          className={clsx(\n            styles.icon,\n            portraitOrientation ? '' : styles.landscapeIcon,\n            isPreviewError || isPlaceHolder ? styles.noThumbnail : ''\n          )}\n        >\n          <Spinner\n            size={24}\n            color={isPreviewError || isPlaceHolder ? 'default' : 'white'}\n          />\n        </div>\n      );\n    }\n\n    // Only show the progress as it is loading\n    if (\n      file &&\n      loadingStates[uuid] !== 100 &&\n      !hasFailedToUpload &&\n      loadingStates[uuid] > 0\n    ) {\n      return (\n        <CircularProgressbar\n          value={loadingStates[uuid]}\n          text=\"\"\n          className={clsx(\n            styles.circleProgressBar,\n            portraitOrientation ? '' : styles.landscapeIcon,\n            isPreviewError || isPlaceHolder ? styles.noThumbnail : ''\n          )}\n          styles={buildStyles({\n            pathColor:\n              isPreviewError || isPlaceHolder\n                ? color.colorCoreAsphalt\n                : color.colorCoreWhite\n          })}\n        />\n      );\n    }\n\n    // File Upload fails\n    if (file && hasFailedToUpload) {\n      return (\n        <NavigationWarningNormalSmall\n          className={clsx(\n            styles.icon,\n            portraitOrientation ? '' : styles.landscapeIcon,\n            isPreviewError || isPlaceHolder ? styles.noLandscape : ''\n          )}\n        />\n      );\n    }\n\n    // Show media type icon when thumbnail is not generated\n    if (isPreviewError && mediaType === 1 && loadingStates[uuid] === 100) {\n      return (\n        <ActionsPhotoNormalSmall\n          className={clsx(\n            styles.icon,\n            portraitOrientation ? '' : styles.landscapeIcon,\n            isPreviewError || isPlaceHolder ? styles.noThumbnail : ''\n          )}\n        />\n      );\n    }\n    if (isPreviewError && mediaType === 2 && loadingStates[uuid] === 100) {\n      return (\n        <ActionsVideoThumbnailNormalSmall\n          className={clsx(\n            styles.icon,\n            portraitOrientation ? '' : styles.landscapeIcon,\n            isPreviewError || isPlaceHolder ? styles.noThumbnail : ''\n          )}\n        />\n      );\n    }\n    return null;\n  };\n\n  return (\n    <button\n      className={clsx(styles.thumbnailContainer)}\n      key={file.name}\n      onClick={(e) => {\n        e.preventDefault();\n        e.stopPropagation();\n      }}\n      onKeyDown={(e) => {\n        e.preventDefault();\n        e.stopPropagation();\n      }}\n    >\n      <div className={styles.thumbnail}>\n        <div\n          className={clsx(\n            styles.spinnerContainer,\n            isPreviewError || isPlaceHolder ? styles.noThumbnail : ''\n          )}\n        >\n          <Popup\n            className={isDragging ? styles.noShow : ''}\n            contentsClassName={clsx(\n              styles.popupContents,\n              hasFailedToUpload ? styles.singleButtonContents : ''\n            )}\n            contents={\n              <PopupContents\n                hasFailedToUpload={hasFailedToUpload}\n                mediaType={mediaType}\n                remove={remove}\n                uuid={uuid}\n                index={index}\n                setHighlightMedia={setHighlightMedia}\n                highlightMediaId={highlightMediaId}\n              />\n            }\n            position=\"top\"\n            flip={false}\n          >\n            <div\n              className={clsx(\n                portraitOrientation ? '' : styles.landscapeContainer,\n                isPreviewError || isPlaceHolder ? styles.noLandscape : '',\n                isPreviewError && hasFailedToUpload\n                  ? styles.failedToUploadNoPreview\n                  : '',\n                !isPreviewError && hasFailedToUpload\n                  ? styles.failedToUploadWithPreview\n                  : ''\n              )}\n            >\n              <img\n                key={file.name}\n                src={file.preview}\n                className={clsx(\n                  styles.thumbnailImage,\n                  highlightMediaId === uuid ? styles.highlight : '',\n                  portraitOrientation ? styles.portrait : styles.landscape,\n                  isPreviewError ? styles.noImage : '',\n                  !isPreviewError && hasFailedToUpload\n                    ? styles.failedToUploadWithPreviewOpacity\n                    : '',\n                  isPlaceHolder ? styles.placeholderImage : ''\n                )}\n                // Revoke data uri after image is loaded\n                alt={file.name}\n                data-handler-id={handlerId}\n                ref={ref}\n                id={uuid}\n                onError={() => setIsPreviewError(true)}\n              />\n            </div>\n          </Popup>\n          {videoIcon()}\n          {thumbnailInnerIcon()}\n        </div>\n      </div>\n      {/* Needed to pass values to update activity call */}\n      <input type=\"hidden\" name={`photos[${uuid}][rank]`} value={index} />\n      <input\n        type=\"hidden\"\n        name={`photos[${uuid}][media_type]`}\n        value={mediaType}\n      />\n      <input\n        type=\"hidden\"\n        name={`photos[${uuid}][caption]`}\n        value={file.caption}\n      />\n    </button>\n  );\n}\n\nThumbnail.propTypes = {\n  file: PropTypes.shape({\n    preview: PropTypes.string,\n    name: PropTypes.string,\n    caption: PropTypes.string\n  }).isRequired,\n  index: PropTypes.number.isRequired,\n  highlightMediaId: PropTypes.string.isRequired,\n  setHighlightMedia: PropTypes.func.isRequired,\n  remove: PropTypes.func.isRequired,\n  loadingStates: PropTypes.shape({}).isRequired,\n  uuid: PropTypes.string.isRequired,\n  mediaType: PropTypes.number.isRequired,\n  moveThumbnail: PropTypes.func.isRequired\n};\n\nexport default Thumbnail;\n","export { default } from './Thumbnail';\n","// extracted by mini-css-extract-plugin\nexport default {\"icon\":\"FeatureEdInfoIcon--icon--COxgC\",\"header\":\"FeatureEdInfoIcon--header--xtxIw\",\"content\":\"FeatureEdInfoIcon--content--lQmOl\"};","import React from 'react';\n\nimport I18n from 'utils/I18n';\nimport InfoModal from '../../InfoModal/InfoModal';\n\nimport styles from './FeatureEdInfoIcon.scss';\n\nconst FeatureEdInfoIcon = () => {\n  return (\n    <InfoModal className={styles.icon}>\n      <>\n        <div className={styles.header}>\n          {I18n.t(\n            `templates.activities.edit.feature_education.info_icon.header`\n          )}\n        </div>\n        <div className={styles.content}>\n          <p>\n            {I18n.t(\n              `templates.activities.edit.feature_education.info_icon.content_1`\n            )}\n          </p>\n          <p>\n            {I18n.t(\n              `templates.activities.edit.feature_education.info_icon.content_2`\n            )}\n          </p>\n          <p>\n            {I18n.t(\n              `templates.activities.edit.feature_education.info_icon.content_3`\n            )}\n          </p>\n        </div>\n      </>\n    </InfoModal>\n  );\n};\n\nexport default FeatureEdInfoIcon;\n","export { default } from './FeatureEdInfoIcon';\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"AddMediaThumbnail--container--lYSDX\",\"max-width\":\"AddMediaThumbnail--max-width--qsjv4\",\"maxWidth\":\"AddMediaThumbnail--max-width--qsjv4\",\"center\":\"AddMediaThumbnail--center--pwJvu\"};","import React from 'react';\nimport ActionsPhotoNormalMedium from '@strava/icons/ActionsPhotoNormalMedium';\nimport { color } from '@strava/ui-tokens/js';\nimport styles from './AddMediaThumbnail.scss';\n\nfunction AddMediaThumbnail() {\n  return (\n    <div className={styles.container}>\n      <div className={styles.maxWidth}>\n        <div className={styles.center}>\n          <ActionsPhotoNormalMedium fill={color.colorExtendedNeutralN4} />\n        </div>\n      </div>\n    </div>\n  );\n}\n\nAddMediaThumbnail.propTypes = {};\n\nexport default AddMediaThumbnail;\n","export { default } from './AddMediaThumbnail';\n","import createNetworkingClient from 'utils/networking-client';\nimport { createFFmpeg } from '@ffmpeg/ffmpeg';\nimport exifr from 'exifr';\n\n// Prepopulated files have unique_id\n// while uploaded files have uuid, so we want to return one of them\nexport const normalizeId = (file) => file.unique_id || file.uuid;\n\n// Active has snake_case while React files use camelCase\nexport const normalizeMediaType = (file) => file.media_type || file.mediaType;\n\n// Check if media is an Image or a Video\nexport const getMediaType = (file) => (/video/.test(file.type) ? 2 : 1);\n\n// TODO: Look into crypto UUID potentially\n// For each new file, create a uuid for it that will be used as unique_id\nexport const getUuid = () =>\n  'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n    // eslint-disable-next-line no-bitwise\n    const r = (Math.random() * 16) | 0;\n    // eslint-disable-next-line no-bitwise\n    const v = c === 'x' ? r : (r & 0x3) | 0x8;\n    return v.toString(16);\n  });\n\nexport const getVideoMetadata = (file) =>\n  new Promise((resolve) => {\n    const url = URL.createObjectURL(file);\n\n    const video = document.createElement('video');\n    video.muted = true;\n    video.src = url;\n    video.preload = 'metadata';\n    video.playsInline = true;\n\n    video.addEventListener('loadeddata', () => {\n      const canvas = document.createElement('canvas');\n      canvas.width = video.videoWidth;\n      canvas.height = video.videoHeight;\n      canvas\n        .getContext('2d')\n        .drawImage(video, 0, 0, canvas.width, canvas.height);\n\n      canvas.toBlob((blob) => {\n        resolve({\n          width: video.width,\n          height: video.height,\n          duration: video.duration,\n          previewUrl: URL.createObjectURL(blob)\n        });\n      }, 'image/png');\n      video.pause();\n    });\n    video.play();\n  });\n\n// Check if file is of type HEIC\nexport const isHEICFile = (file) => {\n  return file.type.includes('heic');\n};\n\n// Convert HEIC File to blob to convert to a new file to ultimately\n// convert to a JPEG file for thumbnail and storage in backend\nexport const convertHEICFileToBlob = async (file) => {\n  const blobURL = URL.createObjectURL(file);\n\n  // convert \"fetch\" the new blob url\n  const blobRes = await fetch(blobURL);\n\n  // convert response to blob\n  const blob = await blobRes.blob();\n\n  // Only load this big library when needed here\n  const heic2any = (await import('heic2any')).default;\n\n  // return a converted blob\n  return heic2any({ blob });\n};\n\n// Process file and create thumbnail from the video drawn on a canvas\n// Returns a preview url\nexport const getThumbnailPreviewUrl = (file) =>\n  new Promise((resolve) => {\n    const url = URL.createObjectURL(file);\n    const mediaType = getMediaType(file);\n\n    // Image\n    if (mediaType === 1) {\n      resolve(url);\n      return;\n    }\n    // Video\n    getVideoMetadata(file).then(({ previewUrl }) => resolve(previewUrl));\n  });\n\nconst loadFfmpeg = async () => {\n  const origin = window?.location?.origin || 'https://www.strava.com';\n\n  const ffmpeg = createFFmpeg({\n    mainName: 'main',\n    // TODO: Figure out how to link this to our package.json\n    // so it is not hardcoded\n    // NOTE: hosting on Strava to avoid CORS issues\n    corePath: `${origin}/js/vendor/@ffmpeg/core-st@0.11.0/dist/ffmpeg-core.js`\n  });\n\n  // Load ffmpeg.wasm-core script\n  if (!ffmpeg.isLoaded()) {\n    await ffmpeg.load();\n  }\n\n  return ffmpeg;\n};\n\n// Process video using ffmpeg to get the metadata that is not easily accessible from the video itself\n// Used to get location data from video files\nconst extractVideoHiddenMetadata = async (file) => {\n  const ffmpeg = await loadFfmpeg();\n\n  // Load video file in ffmpeg lib\n  const arrayBuffer = await file.arrayBuffer();\n  const locationFileName = `video-${new Date().getTime()}.txt`;\n  ffmpeg.FS('writeFile', file.name, new Uint8Array(arrayBuffer));\n\n  // Prepare command to get metadata of video file\n  //\n  // https://www.ffmpeg.org/ffmpeg-formats.html#:~:text=ffmpeg%20%2Di%20INPUT%20%2Df%20ffmetadata%20FFMETADATAFILE\n  //\n  // ffmetadata: metadata\n  //\n  const metadataCommand = `-f ffmetadata`.split(' ');\n\n  await ffmpeg.run('-i', file.name, ...metadataCommand, locationFileName);\n\n  const data = ffmpeg.FS('readFile', locationFileName);\n  const blob = new Blob([data.buffer]);\n\n  return new File([blob], file.name);\n};\n\n// Takes a txt file and returns an array of each line\nexport const parseTextFile = (file) =>\n  new Promise((resolve) => {\n    const fileReader = new FileReader();\n    fileReader.readAsText(file);\n    fileReader.onload = () => {\n      const stringFileArray = fileReader.result.split(/\\r?\\n/);\n      resolve(stringFileArray);\n    };\n  });\n\n// Regex iphone location string\n// Example - com.apple.quicktime.location.ISO6709=+34.1502-118.2578+181.324/\nexport function iphoneRegex(input) {\n  const regex = /com\\.apple\\.quicktime\\.location\\.ISO6709=/i;\n  return regex.test(input);\n}\n\n// Regex android location string\n// Example - location=+40.7930-111.9344/\nexport function androidRegex(input) {\n  const regex = /location=/i;\n  return regex.test(input);\n}\n\n// Find string location data and return formatted location object\nexport const extractLocationData = (stringFileArray) => {\n  const locationLine = stringFileArray.find(\n    (str) => iphoneRegex(str) || androidRegex(str)\n  );\n  if (locationLine === undefined) {\n    return null;\n  }\n  const splitStr = locationLine.split('+');\n  const latLongSplit = splitStr[1].split('-');\n  const locationData = {\n    lat: parseFloat(latLongSplit[0]),\n    lng: parseFloat(latLongSplit[1].replace('/', ''))\n  };\n  return locationData;\n};\n\n// Return URL that will specify where to store the media\nexport const getMediaUrl = async (file, uuid, athleteId) => {\n  const path = `/photos/metadata`;\n  const mediaType = getMediaType(file);\n\n  let location;\n  // Image\n  if (mediaType === 1) {\n    const data = await exifr.gps(file);\n    location = data\n      ? {\n          lat: data.latitude,\n          lng: data.longitude\n        }\n      : null;\n  }\n  // Video\n  else {\n    const additionalVideoMetadata = await extractVideoHiddenMetadata(file);\n    const parsedTextArray = await parseTextFile(additionalVideoMetadata);\n    const locationData = await extractLocationData(parsedTextArray);\n    location = locationData;\n  }\n\n  try {\n    const result = await createNetworkingClient().put(path, {\n      athlete_id: athleteId,\n      uuid,\n      taken_at: file.lastModified,\n      media_type: mediaType,\n      location\n    });\n\n    return result;\n  } catch (error) {\n    return {\n      error: {\n        message: `${error.name}: ${error.message}`,\n        debug: {\n          path\n        }\n      }\n    };\n  }\n};\n\n// Store media at given URL\nexport const storeMedia = async (data, file, onProgress) => {\n  const { uri, header } = data;\n\n  try {\n    const result = await createNetworkingClient().put(uri, file, {\n      headers: header,\n      onUploadProgress: (progressEvent) => {\n        const progress = (progressEvent.loaded / progressEvent.total) * 100;\n        onProgress(progress);\n      },\n      timeout: 300000 // 5 mins\n    });\n    return result;\n  } catch (error) {\n    return {\n      error: {\n        message: `${error.name}: ${error.message}`,\n        debug: {\n          uri\n        }\n      }\n    };\n  }\n};\n\nexport const trimVideo = async (file) => {\n  // Limit to the first 30 seconds.  Needs 31 to be from 0 - 30\n  const trimDuration = 31;\n  const { duration } = await getVideoMetadata(file);\n\n  if (duration <= trimDuration) {\n    return file;\n  }\n\n  const ffmpeg = await loadFfmpeg();\n\n  // Load video file in ffmpeg lib\n  const arrayBuffer = await file.arrayBuffer();\n  const trimFileName = `trim-${new Date().getTime()}-${file.name}`;\n  ffmpeg.FS('writeFile', file.name, new Uint8Array(arrayBuffer));\n\n  // Prepare command to trim video\n  //\n  // https://shotstack.io/learn/use-ffmpeg-to-trim-video/\n  //\n  // -ss: starting position\n  // -t: duration from starting position\n  //\n  const trimCommand = `-ss 00:00:00 -t 00:00:${trimDuration}`.split(' ');\n\n  // copy the original audio and video without re-encoding\n  const copyCommand = '-c:v copy -c:a copy'.split(' ');\n\n  // execute command to trim the video\n  await ffmpeg.run(\n    '-i',\n    file.name,\n    ...trimCommand,\n    ...copyCommand,\n    trimFileName\n  );\n\n  // Get data for trimmed video from ffmpeg\n  const data = ffmpeg.FS('readFile', trimFileName);\n  const blob = new Blob([data.buffer], { type: file.type });\n\n  return new File([blob], trimFileName, { type: file.type });\n};\n\n// Count the number of photos and videos added in one drag and drop for analytics\n// and return total and type - photo/video/both\nexport function countPhotoAndVideoFiles(files) {\n  let photoCount = 0;\n  let videoCount = 0;\n  files.forEach((file) => {\n    const mediaType = getMediaType(file);\n    if (mediaType === 2) {\n      videoCount += 1;\n    } else {\n      photoCount += 1;\n    }\n  });\n\n  let type;\n  if (photoCount > 0 && videoCount > 0) {\n    type = 'both';\n  } else if (photoCount > 0) {\n    type = 'photo';\n  } else {\n    type = 'video';\n  }\n\n  return { total: photoCount + videoCount, type };\n}\n\nexport default {\n  normalizeId,\n  normalizeMediaType,\n  getMediaType,\n  getUuid,\n  getThumbnailPreviewUrl,\n  getMediaUrl,\n  storeMedia,\n  convertHEICFileToBlob,\n  isHEICFile\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"FeatureEdPopup--container--Eu24h\",\"top-row\":\"FeatureEdPopup--top-row--yxlTX\",\"topRow\":\"FeatureEdPopup--top-row--yxlTX\",\"mid-row\":\"FeatureEdPopup--mid-row--I0d7Y\",\"midRow\":\"FeatureEdPopup--mid-row--I0d7Y\",\"bottom-row\":\"FeatureEdPopup--bottom-row--8Ok+x\",\"bottomRow\":\"FeatureEdPopup--bottom-row--8Ok+x\",\"cancel\":\"FeatureEdPopup--cancel--Cyn2A\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport ActionsCancelNormalXsmall from '@strava/icons/ActionsCancelNormalXsmall';\nimport { Button } from '@strava/ui/Button';\nimport styles from './FeatureEdPopup.scss';\n\nfunction FeatureEdPopup({ steps, toProgressStrings, setShowTooltip }) {\n  const [stepNumber, setStepNumber] = useState(0);\n\n  return (\n    <div className={styles.container}>\n      <div className={styles.topRow}>\n        {stepNumber + 1}/{steps.length}\n        <ActionsCancelNormalXsmall\n          onClick={() => {\n            setShowTooltip(false);\n          }}\n          className={styles.cancel}\n        />\n      </div>\n      <div className={styles.midRow}>{steps[stepNumber]}</div>\n      <div className={styles.bottomRow}>\n        <Button\n          type=\"submit\"\n          variant=\"default\"\n          id=\"next-button\"\n          onClick={() => {\n            setStepNumber((prevState) => prevState + 1);\n            if (stepNumber + 1 >= steps.length) {\n              setShowTooltip(false);\n            }\n          }}\n        >\n          {toProgressStrings[stepNumber]}\n        </Button>\n      </div>\n    </div>\n  );\n}\n\nFeatureEdPopup.propTypes = {\n  steps: PropTypes.arrayOf(PropTypes.string).isRequired,\n  toProgressStrings: PropTypes.arrayOf(PropTypes.string).isRequired,\n  setShowTooltip: PropTypes.func.isRequired\n};\nexport default FeatureEdPopup;\n","export { default } from './FeatureEdPopup';\n","import React, { useEffect, useState, useCallback, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDropzone } from 'react-dropzone';\nimport I18n from 'utils/I18n';\nimport ActionsPhotoNormalMedium from '@strava/icons/ActionsPhotoNormalMedium';\nimport { devLog } from 'utils/devUtils';\nimport clsx from 'clsx';\nimport { color } from '@strava/ui-tokens/js';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { Popup } from '@strava/ui/Popup';\nimport { trackV2 } from 'utils/analytics';\nimport FeatureEdInfoBox from './FeatureEdInfoBox';\nimport styles from './MediaUploader.scss';\nimport Thumbnail from './Thumbnail';\nimport FeatureEdInfoIcon from './FeatureEdInfoIcon';\nimport AddMediaThumbnail from './AddMediaThumbnail';\nimport { getPhotoWithMaxDimension } from '../../utils/generalUtils';\nimport {\n  getThumbnailPreviewUrl,\n  getMediaType,\n  getUuid,\n  normalizeId,\n  normalizeMediaType,\n  getMediaUrl,\n  storeMedia,\n  trimVideo,\n  convertHEICFileToBlob,\n  isHEICFile,\n  countPhotoAndVideoFiles\n} from './MediaUploader.utils';\nimport FeatureEdPopup from './FeatureEdPopup';\n\nfunction MediaUploader({\n  athleteId,\n  media,\n  defaultPhotoId,\n  viewFeatureEdData,\n  activityId\n}) {\n  const [files, setFiles] = useState([]);\n  const [loadingStates, setLoadingStates] = useState({});\n  const [highlightMediaId, setHighlightMediaId] = useState(defaultPhotoId);\n  const firstThumbnail = useRef(null);\n  const [showTooltip, setShowTooltip] = useState(false);\n  const [hasSeenFeatureEd, setHasSeenFeatureEd] = useState(false);\n  const { count } = viewFeatureEdData;\n  const canViewFeatureEd = count < 4;\n\n  async function processFile(file) {\n    const uuid = getUuid();\n    const mediaType = getMediaType(file);\n    // We want a place holder for HEIC files\n    const transparentGifPlaceholder =\n      'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\n    const previewUrl = isHEICFile(file)\n      ? transparentGifPlaceholder\n      : await getThumbnailPreviewUrl(file);\n\n    // Instantiate the loading state of the file\n    // for the circular progress bar\n    setLoadingStates((prevState) => ({\n      ...prevState,\n      [uuid]: 0\n    }));\n\n    setFiles((prevState) => {\n      return [\n        ...prevState,\n        ...{\n          preview: previewUrl,\n          uuid,\n          mediaType,\n          name: file.name,\n          type: file.type\n        }\n      ];\n    });\n\n    let tempFile = file;\n\n    if (isHEICFile(tempFile)) {\n      const newBlob = await convertHEICFileToBlob(tempFile);\n      const newUrl = URL.createObjectURL(newBlob);\n      tempFile = new File([newBlob], tempFile.name, {\n        type: 'image/jpeg'\n      });\n\n      // Find file and replace with updated thumbnail preview\n      setFiles((prevState) => {\n        const tempArrayElement = prevState.find((e) => e.uuid === uuid);\n        const remaining = prevState.filter((e) => e.uuid !== uuid);\n\n        return [\n          ...remaining,\n          ...{\n            ...tempArrayElement,\n            preview: newUrl\n          }\n        ];\n      });\n    }\n\n    const mediaUrl = await getMediaUrl(tempFile, uuid, athleteId);\n    const fileToUpload = mediaType === 2 ? await trimVideo(tempFile) : tempFile;\n\n    // Store the media to s3 and update the progress bar live\n    const processEnd = await storeMedia(\n      mediaUrl.data,\n      fileToUpload,\n      (progress) => {\n        setLoadingStates((prevState) => ({\n          ...prevState,\n          [uuid]: progress\n        }));\n      }\n    );\n\n    // Upload failed\n    if ('error' in processEnd) {\n      setLoadingStates((prevState) => ({\n        ...prevState,\n        [uuid]: -1\n      }));\n    }\n  }\n\n  // Dropzone\n  const { getRootProps, getInputProps, isDragAccept } = useDropzone({\n    accept: ['image/*', 'video/*', 'image/heic'],\n    onDrop: (acceptedFiles) => {\n      acceptedFiles.forEach(async (file) => {\n        processFile(file);\n      });\n\n      const { total, type } = countPhotoAndVideoFiles(acceptedFiles);\n      trackV2({\n        category: 'edit_activity',\n        page: 'edit_activity',\n        action: 'interact',\n        element: 'add_media',\n        properties: {\n          source: 'main',\n          type,\n          stage: 'default',\n          num_media: total\n        }\n      });\n\n      if (!hasSeenFeatureEd) {\n        setShowTooltip(true);\n        setHasSeenFeatureEd(true);\n      }\n    },\n    maxSize: 1000000000, // 1 gb\n    onError: (error) => {\n      // TODO: Make a better error handling\n      devLog(error.message);\n    }\n  });\n\n  const setHighlightMedia = (e, index) => {\n    e.preventDefault();\n    e.stopPropagation();\n    devLog(index);\n    const newId = normalizeId(files[index]);\n    setHighlightMediaId(newId);\n  };\n\n  const remove = (e, index) => {\n    e.preventDefault();\n    e.stopPropagation();\n    const newFiles = [...files];\n    const newId = normalizeId(newFiles[index]);\n    newFiles.splice(index, 1);\n    if (highlightMediaId === newId && newFiles.length > 0) {\n      setHighlightMediaId(normalizeId(newFiles[0]));\n    }\n    setFiles(newFiles);\n  };\n\n  useEffect(() => {\n    // Sets the first media item uploaded to be highlighted\n    // on initial upload\n    if (highlightMediaId === null && files.length > 0) {\n      setHighlightMediaId(normalizeId(files[0]));\n    }\n  }, [files]);\n\n  useEffect(() => {\n    // Load previews of media that are already attached to activity\n    setFiles([\n      ...media.map((file) => {\n        setLoadingStates((prevState) => ({\n          ...prevState,\n          [normalizeId(file)]: 100\n        }));\n        return Object.assign(file, {\n          preview: getPhotoWithMaxDimension(file.urls)\n        });\n      })\n    ]);\n\n    // Make sure to revoke the data uris to avoid memory leaks, will run on unmount\n    return () => files.forEach((file) => URL.revokeObjectURL(file.preview));\n  }, []);\n\n  const moveThumbnail = useCallback((dragIndex, hoverIndex) => {\n    setFiles((prevState) => {\n      const thumb = prevState[dragIndex];\n      prevState.splice(dragIndex, 1);\n      prevState.splice(hoverIndex, 0, thumb);\n\n      return [...prevState];\n    });\n  }, []);\n\n  return (\n    <div>\n      <div className={styles.label} id=\"patar\">\n        {I18n.t(`templates.activities.edit.media.header`)}\n        <FeatureEdInfoIcon />\n      </div>\n      {canViewFeatureEd && <FeatureEdInfoBox />}\n      <Popup\n        contents={\n          <FeatureEdPopup\n            steps={[\n              I18n.t(`templates.activities.edit.feature_education.tooltip_1`),\n              I18n.t(`templates.activities.edit.feature_education.tooltip_2`)\n            ]}\n            toProgressStrings={[\n              I18n.t(`templates.activities.edit.feature_education.next`),\n              I18n.t(\n                `templates.activities.edit.feature_education.got_it_thanks`\n              )\n            ]}\n            setShowTooltip={setShowTooltip}\n          />\n        }\n        className={styles.popup}\n        contentsClassName={styles.contents}\n        arrowClassName={styles.arrow}\n        position=\"top\"\n        isOpenOverride={canViewFeatureEd ? showTooltip : false}\n        canClick={false}\n        flip={false}\n      >\n        <div\n          {...getRootProps({\n            onClick: () => {\n              // Fire analytics event for when you click on media uploader\n              trackV2({\n                category: 'edit_activity',\n                page: 'edit_activity',\n                action: 'click',\n                element: 'add_media',\n                properties: {\n                  type: 'media',\n                  stage: 'default',\n                  activity_id: activityId,\n                  source: 'main'\n                }\n              });\n            },\n            className: clsx(\n              styles.dropzone,\n              files.length > 0 ? '' : styles.centered,\n              isDragAccept ? styles.highlight : ''\n            )\n          })}\n        >\n          <input\n            onClick={(e) => {\n              e.preventDefault();\n            }}\n            {...getInputProps()}\n          />\n          <DndProvider backend={HTML5Backend}>\n            {files.length === 0 && (\n              <>\n                <ActionsPhotoNormalMedium fill={color.colorExtendedNeutralN1} />\n                <p className={styles.header}>\n                  {I18n.t(`templates.photos.form.dropzone_header_v2`)}\n                </p>\n                <p className={styles.subheader}>\n                  {I18n.t(`templates.photos.form.dropzone_sub`)}\n                </p>\n              </>\n            )}\n            {files.length > 0 && (\n              <>\n                <div className={styles.mediaContainer}>\n                  {files.map((file, index) => {\n                    return (\n                      <Thumbnail\n                        file={file}\n                        index={index}\n                        remove={remove}\n                        loadingStates={loadingStates}\n                        uuid={normalizeId(file)}\n                        highlightMediaId={highlightMediaId}\n                        setHighlightMedia={setHighlightMedia}\n                        mediaType={normalizeMediaType(file)}\n                        moveThumbnail={moveThumbnail}\n                        ref={firstThumbnail}\n                      />\n                    );\n                  })}\n                  <AddMediaThumbnail />\n                </div>\n                {/* Needed to pass value to update activity call */}\n                <input\n                  type=\"hidden\"\n                  name=\"default_photo_id\"\n                  value={highlightMediaId}\n                />\n              </>\n            )}\n          </DndProvider>\n        </div>\n      </Popup>\n    </div>\n  );\n}\n\nMediaUploader.propTypes = {\n  athleteId: PropTypes.number.isRequired,\n  media: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n  defaultPhotoId: PropTypes.number,\n  viewFeatureEdData: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n  activityId: PropTypes.number.isRequired\n};\n\nexport default MediaUploader;\n","export { default } from './MediaUploader';\n","// extracted by mini-css-extract-plugin\nexport default {\"button\":\"EditActivityButton--button--YK07q\",\"container\":\"EditActivityButton--container--8zL+Y\",\"contents\":\"EditActivityButton--contents--9PU5Y\",\"text\":\"EditActivityButton--text--d9-71\",\"got-it-button\":\"EditActivityButton--got-it-button--3Er4e\",\"gotItButton\":\"EditActivityButton--got-it-button--3Er4e\",\"arrow\":\"EditActivityButton--arrow--wax6b\"};","import React, { useState } from 'react';\nimport I18n from 'utils/I18n';\nimport PropTypes from 'prop-types';\nimport ActionsEditNormalSmall from '@strava/icons/ActionsEditNormalSmall';\nimport { Popup } from '@strava/ui/Popup';\nimport { Button } from '@strava/ui/Button';\n\nimport styles from './EditActivityButton.scss';\n\nfunction EditActivityButton({ link, title, ariaLabel, viewFeatureEdData }) {\n  const [showFeatureEdPopup, setShowFeatureEdPopup] = useState(true);\n  const { count } = viewFeatureEdData;\n  const canViewFeatureEd = count < 4;\n\n  return (\n    <Popup\n      contents={\n        <>\n          <div className={styles.container}>\n            <div className={styles.text}>\n              {I18n.t(`templates.activities.edit.feature_education.new_media`)}\n            </div>\n            <Button\n              type=\"submit\"\n              variant=\"primary\"\n              id=\"got-it-button\"\n              onClick={() => {\n                setShowFeatureEdPopup(false);\n              }}\n              className={styles.gotItButton}\n            >\n              {I18n.t(`templates.activities.edit.feature_education.got_it`)}\n            </Button>\n          </div>\n        </>\n      }\n      className={styles.popup}\n      contentsClassName={styles.contents}\n      arrowClassName={styles.arrow}\n      position=\"bottom\"\n      isOpenOverride={canViewFeatureEd ? showFeatureEdPopup : false}\n      canClick={false}\n      offset={[38, 0]}\n      flip={false}\n    >\n      <a\n        href={link}\n        className={styles.button}\n        aria-label={ariaLabel}\n        title={title}\n      >\n        <ActionsEditNormalSmall />\n      </a>\n    </Popup>\n  );\n}\n\nEditActivityButton.propTypes = {\n  link: PropTypes.string.isRequired,\n  title: PropTypes.string.isRequired,\n  ariaLabel: PropTypes.string.isRequired,\n  viewFeatureEdData: PropTypes.arrayOf(PropTypes.shape({})).isRequired\n};\nexport default EditActivityButton;\n","export { default } from './EditActivityButton';\n","// extracted by mini-css-extract-plugin\nexport default {\"error-text\":\"CommentReactionList--error-text--ZHSvJ\",\"errorText\":\"CommentReactionList--error-text--ZHSvJ\",\"row-content\":\"CommentReactionList--row-content--AgBSQ\",\"rowContent\":\"CommentReactionList--row-content--AgBSQ\",\"row-content-athlete-data\":\"CommentReactionList--row-content-athlete-data--UczR+\",\"rowContentAthleteData\":\"CommentReactionList--row-content-athlete-data--UczR+\",\"athlete-name\":\"CommentReactionList--athlete-name--pIRiN\",\"athleteName\":\"CommentReactionList--athlete-name--pIRiN\",\"location\":\"CommentReactionList--location--tbqpo\",\"comment-list-others\":\"CommentReactionList--comment-list-others--IqTu9\",\"commentListOthers\":\"CommentReactionList--comment-list-others--IqTu9\"};","import React from 'react';\nimport { Avatar } from '@strava/ui/Avatar';\nimport PropTypes from 'prop-types';\nimport I18n from 'utils/I18n';\nimport styles from './index.scss';\n\nconst CommentReactionList = ({ reactionListData = [] }) => {\n  const { athletes, reactionCount } = reactionListData;\n  const prefix = 'components.feed.social';\n  const otherCommentReactors =\n    reactionCount > athletes.length ? reactionCount - athletes.length : null;\n\n  if (!athletes.length) {\n    return (\n      <div\n        className={styles.errorText}\n        data-testid=\"comment_reaction_list_error\"\n      >\n        {I18n.t('components.feed.social.comment_reaction_list_error')}\n      </div>\n    );\n  }\n  return (\n    <div>\n      {athletes.map((athlete) => (\n        <div key={athlete.id} className={styles.rowContent}>\n          <Avatar\n            badge={athlete.member_type}\n            href={athlete.url}\n            name={athlete.name}\n            size=\"small\"\n            src={athlete.avatar_url}\n            type=\"athlete\"\n            data-testid=\"comment_reaction_list_avatar\"\n          />\n          <div className={styles.rowContentAthleteData}>\n            <div className={styles.athleteName}>\n              <a href={athlete.url}>{athlete.name}</a>\n            </div>\n            <div className={`text-caption1 ${styles.location}`}>\n              {athlete.location}\n            </div>\n          </div>\n        </div>\n      ))}\n      {otherCommentReactors && (\n        <div\n          className={styles.commentListOthers}\n          data-testid=\"comment-list-others\"\n        >\n          {I18n.t(`${prefix}.comment_list_others`, {\n            count: otherCommentReactors\n          })}\n        </div>\n      )}\n    </div>\n  );\n};\n\nCommentReactionList.propTypes = {\n  reactionListData: PropTypes.shape({\n    reactionCount: PropTypes.number,\n    athletes: PropTypes.arrayOf(\n      PropTypes.shape({\n        member_type: PropTypes.string,\n        name: PropTypes.string.isRequired,\n        avatar_url: PropTypes.string,\n        location: PropTypes.string,\n        url: PropTypes.string,\n        id: PropTypes.string.isRequired,\n        is_private: PropTypes.bool,\n        is_following: PropTypes.bool,\n        firstName: PropTypes.string\n      })\n    )\n  })\n};\n\nexport default CommentReactionList;\n","import PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { displayName } from 'utils/generalUtils';\n\nconst AthleteName = ({ firstName, lastName }) => {\n  const [name, setName] = useState({ firstName, lastName });\n\n  const handleNameChange = useCallback((e) => {\n    const { value, name: targetName } = e.target;\n    setName((prev) => {\n      return { ...prev, [targetName]: value };\n    });\n  }, []);\n\n  useEffect(() => {\n    window.addEventListener('OnBoardingNameChange', handleNameChange, false);\n    return () => {\n      window.removeEventListener('OnBoardingNameChange', handleNameChange);\n    };\n  }, [handleNameChange]);\n\n  return <h2 data-cy=\"dashboard-athlete-name\">{displayName(name)}</h2>;\n};\n\nAthleteName.propTypes = {\n  firstName: PropTypes.string.isRequired,\n  lastName: PropTypes.string.isRequired\n};\nexport default AthleteName;\n","export { default } from './AthleteName';\n","// Kudos And Comments Modal (with Kudos, Comments, Achievement, Other Athletes tabs)\nexport const OPEN_MODAL_COMMENTS_TAB = 'OPEN_MODAL_COMMENTS_TAB';\nexport const OPEN_MODAL_KUDOS_TAB = 'OPEN_MODAL_KUDOS_TAB';\nexport const OPEN_MODAL_ACHIEVEMENTS_TAB = 'OPEN_MODAL_ACHIEVEMENTS_TAB';\nexport const OPEN_MODAL_OTHER_ATHLETES_TAB = 'OPEN_MODAL_OTHER_ATHLETES_TAB';\nexport const CLOSE_MODAL = 'CLOSE_MODAL';\nexport const OPEN_COMMENT_REACTION_LIST = 'OPEN_COMMENT_REACTION_LIST';\nexport const CLOSE_COMMENT_REACTION_LIST = 'CLOSE_COMMENT_REACTION_LIST';\n\n// Give Kudos (entity card, Kudos And Comments Modal)\nexport const ADD_KUDO = 'ADD_KUDO';\n\n// Delete Comment\nexport const DELETE_COMMENT_CANCEL = 'DELETE_COMMENT_CANCEL';\nexport const DELETE_COMMENT_COMPLETE = 'DELETE_COMMENT_COMPLETE';\nexport const DELETE_COMMENT_START = 'DELETE_COMMENT_START';\n\n// Add new comment\nexport const ADD_COMMENT_START = 'ADD_COMMENT_START';\nexport const ADD_COMMENT_COMPLETE = 'ADD_COMMENT_COMPLETE';\nexport const ADD_COMMENT_FAILED = 'ADD_COMMENT_FAILED';\nexport const ADD_COMMENT_REACTION = 'ADD_COMMENT_REACTION';\nexport const UNDO_COMMENT_REACTION = 'UNDO_COMMENT_REACTION';\n\nexport default {\n  ADD_KUDO,\n  ADD_COMMENT_REACTION,\n  ADD_COMMENT_START,\n  ADD_COMMENT_COMPLETE,\n  ADD_COMMENT_FAILED,\n  DELETE_COMMENT_CANCEL,\n  DELETE_COMMENT_COMPLETE,\n  DELETE_COMMENT_START,\n  CLOSE_MODAL,\n  OPEN_MODAL_COMMENTS_TAB,\n  OPEN_MODAL_KUDOS_TAB,\n  OPEN_MODAL_ACHIEVEMENTS_TAB,\n  OPEN_MODAL_OTHER_ATHLETES_TAB,\n  OPEN_COMMENT_REACTION_LIST,\n  CLOSE_COMMENT_REACTION_LIST,\n  UNDO_COMMENT_REACTION\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"adp-kudos-comments-container\":\"ADPKudosAndComments--adp-kudos-comments-container--MTy6F\",\"adpKudosCommentsContainer\":\"ADPKudosAndComments--adp-kudos-comments-container--MTy6F\",\"kudos-button-container\":\"ADPKudosAndComments--kudos-button-container--die4d\",\"kudosButtonContainer\":\"ADPKudosAndComments--kudos-button-container--die4d\",\"give-kudos-btn\":\"ADPKudosAndComments--give-kudos-btn--irFnr\",\"giveKudosBtn\":\"ADPKudosAndComments--give-kudos-btn--irFnr\",\"count\":\"ADPKudosAndComments--count--c2ecP\",\"social-button\":\"ADPKudosAndComments--social-button--9SpMW\",\"socialButton\":\"ADPKudosAndComments--social-button--9SpMW\",\"comment-icon\":\"ADPKudosAndComments--comment-icon--6CZny\",\"commentIcon\":\"ADPKudosAndComments--comment-icon--6CZny\",\"unfilled-kudo-icon\":\"ADPKudosAndComments--unfilled-kudo-icon--v4iCw\",\"unfilledKudoIcon\":\"ADPKudosAndComments--unfilled-kudo-icon--v4iCw\",\"kudo-icon\":\"ADPKudosAndComments--kudo-icon--HJ-On\",\"kudoIcon\":\"ADPKudosAndComments--kudo-icon--HJ-On\",\"kudoed-icon\":\"ADPKudosAndComments--kudoed-icon--ZXAjp\",\"kudoedIcon\":\"ADPKudosAndComments--kudoed-icon--ZXAjp\",\"newKudo\":\"ADPKudosAndComments--newKudo--Jmz6y\"};","// eslint-disable-next-line import/prefer-default-export\nexport const FEED_ENTRY_TYPES = Object.freeze({\n  activity: 'activity',\n  post: 'post',\n  fancyPromo: 'fancy_promo',\n  performanceGoalCreated: 'performance_goal_created',\n  challenge: 'challenge',\n  simplePromo: 'simple_promo',\n  groupActivity: 'group_activity',\n  suggestedActivity: 'suggested_activity',\n  club: 'club'\n});\n","import { snakeCase } from 'lodash-es';\nimport { FEED_ENTRY_TYPES } from '../../Feed/constants';\n\nexport const updateKudosEndpoint = ({ entity }) => {\n  return entity === FEED_ENTRY_TYPES.groupActivity\n    ? FEED_ENTRY_TYPES.activity\n    : snakeCase(entity);\n};\n\nexport default { updateKudosEndpoint };\n","import React from 'react';\n\nconst KudosAndCommentsContext = React.createContext();\n// Context object accepts a displayName string property.\n// React DevTools uses this string to determine what to display for the context.\nKudosAndCommentsContext.displayName = 'KudosAndCommentsContext';\n\nexport function useKudosAndCommentsContext() {\n  const context = React.useContext(KudosAndCommentsContext);\n\n  if (!context) {\n    throw new Error(\n      'useKudosAndCommentsContext must be used within the KudosAndCommentsContext.Provider'\n    );\n  }\n\n  return context;\n}\n\nexport default KudosAndCommentsContext;\n","export const buildInitialKudosAndCommentsState = (overrides) => ({\n  entity: null,\n  parentEntityId: null,\n  entityId: null,\n  openKudosCommentModal: false,\n  selectedTabIndex: 0,\n  kudoPosted: false,\n  newComment: null,\n  openCommentDeleteDialog: false,\n  isViewingCommentReactionsList: false,\n  selectedComment: null,\n  ...overrides\n});\n\nexport default { buildInitialKudosAndCommentsState };\n","import {\n  OPEN_MODAL_KUDOS_TAB,\n  OPEN_MODAL_COMMENTS_TAB,\n  OPEN_MODAL_ACHIEVEMENTS_TAB,\n  OPEN_MODAL_OTHER_ATHLETES_TAB,\n  CLOSE_MODAL,\n  ADD_KUDO,\n  DELETE_COMMENT_CANCEL,\n  DELETE_COMMENT_COMPLETE,\n  DELETE_COMMENT_START,\n  ADD_COMMENT_REACTION,\n  ADD_COMMENT_START,\n  ADD_COMMENT_COMPLETE,\n  ADD_COMMENT_FAILED,\n  OPEN_COMMENT_REACTION_LIST,\n  CLOSE_COMMENT_REACTION_LIST,\n  UNDO_COMMENT_REACTION\n} from './kudosAndComments.actions';\n\nexport function initKudosAndCommentsState({\n  entity,\n  parentEntityId,\n  entityId,\n  openKudosCommentModal,\n  selectedTabIndex,\n  kudoPosted,\n  newComment,\n  openCommentDeleteDialog,\n  trackAnalytics,\n  comments,\n  isViewingCommentReactionsList\n}) {\n  return {\n    entity,\n    parentEntityId,\n    entityId,\n    openKudosCommentModal,\n    selectedTabIndex,\n    kudoPosted,\n    newComment,\n    openCommentDeleteDialog,\n    trackAnalytics,\n    comments,\n    isViewingCommentReactionsList\n  };\n}\n\nexport function kudosAndCommentsReducer(state, action) {\n  switch (action.type) {\n    case OPEN_MODAL_KUDOS_TAB: {\n      const { element, selectedEntityId } = action.payload;\n      state.trackAnalytics({\n        action: 'click',\n        element\n      });\n      return {\n        ...state,\n        openKudosCommentModal: true,\n        selectedTabIndex: 0,\n        selectedEntityId\n      };\n    }\n    case OPEN_MODAL_COMMENTS_TAB: {\n      const { element, selectedEntityId } = action.payload;\n      state.trackAnalytics({\n        action: 'click',\n        element\n      });\n      return {\n        ...state,\n        openKudosCommentModal: true,\n        selectedTabIndex: 1,\n        selectedEntityId\n      };\n    }\n    case OPEN_MODAL_ACHIEVEMENTS_TAB: {\n      const { element, selectedEntityId } = action.payload;\n      state.trackAnalytics({\n        action: 'click',\n        element\n      });\n      return {\n        ...state,\n        openKudosCommentModal: true,\n        selectedTabIndex: 2,\n        selectedEntityId\n      };\n    }\n    case OPEN_MODAL_OTHER_ATHLETES_TAB: {\n      const { element, selectedEntityId } = action.payload;\n      state.trackAnalytics({\n        action: 'click',\n        element\n      });\n      return {\n        ...state,\n        openKudosCommentModal: true,\n        selectedTabIndex: 3,\n        selectedEntityId\n      };\n    }\n    case CLOSE_MODAL:\n      return {\n        ...state,\n        openKudosCommentModal: false,\n        selectedTabIndex: 0,\n        selectedEntityId: null\n      };\n    case ADD_KUDO:\n      return { ...state, kudoPosted: true };\n    case DELETE_COMMENT_START: {\n      state.trackAnalytics({\n        action: 'click',\n        element: `delete-btn-on-${action.payload.element}`\n      });\n      const { entityId, comment } = action.payload;\n      return {\n        ...state,\n        openCommentDeleteDialog: true,\n        comment,\n        entityId\n      };\n    }\n    case DELETE_COMMENT_CANCEL:\n      return {\n        ...state,\n        openCommentDeleteDialog: false,\n        comment: {}\n      };\n    case DELETE_COMMENT_COMPLETE: {\n      const { entityId, commentId } = action.payload;\n      const entityComments = state.comments[entityId];\n      return {\n        ...state,\n        openCommentDeleteDialog: false,\n        comments: {\n          ...state.comments,\n          [entityId]: entityComments.filter(\n            (comment) => comment.comment_id !== commentId\n          )\n        }\n      };\n    }\n    case ADD_COMMENT_START: {\n      return {\n        ...state,\n        isSubmittingComment: true\n      };\n    }\n    case ADD_COMMENT_COMPLETE: {\n      const { entityId, comment } = action.payload;\n      const entityComments = state.comments[entityId];\n      return {\n        ...state,\n        isSubmittingComment: false,\n        comments: {\n          ...state.comments,\n          [entityId]: entityComments.concat(comment)\n        }\n      };\n    }\n    case ADD_COMMENT_FAILED:\n      return {\n        ...state,\n        isSubmittingComment: false\n      };\n    case ADD_COMMENT_REACTION: {\n      const { commentId, entityId, reactionCount } = action.payload;\n      const entityComments = state.comments[entityId];\n\n      return {\n        ...state,\n        commentReactionPosted: true,\n        recentlyReactedCommentId: commentId,\n        recentlyUnReactedCommentId: null,\n        comments: {\n          ...state.comments,\n          [entityId]: entityComments.map((comment) => {\n            if (comment.comment_id === commentId) {\n              return {\n                ...comment,\n                reactions_summary: {\n                  ...comment.reactions_summary,\n                  has_reacted: true,\n                  reaction_count: reactionCount + 1\n                }\n              };\n            }\n            return comment;\n          })\n        }\n      };\n    }\n    case UNDO_COMMENT_REACTION: {\n      const { commentId, entityId, reactionCount } = action.payload;\n      const entityComments = state.comments[entityId];\n\n      return {\n        ...state,\n        commentReactionPosted: false,\n        recentlyUnReactedCommentId: commentId,\n        recentlyReactedCommentId: null,\n        comments: {\n          ...state.comments,\n          [entityId]: entityComments.map((comment) => {\n            if (comment.comment_id === commentId) {\n              return {\n                ...comment,\n                reactions_summary: {\n                  ...comment.reactions_summary,\n                  has_reacted: false,\n                  reaction_count: reactionCount - 1\n                }\n              };\n            }\n            return comment;\n          })\n        }\n      };\n    }\n    case OPEN_COMMENT_REACTION_LIST: {\n      const { commentId, selectedEntityId } = action.payload;\n      return {\n        ...state,\n        isViewingCommentReactionsList: true,\n        selectedComment: commentId,\n        selectedEntityId\n      };\n    }\n    case CLOSE_COMMENT_REACTION_LIST: {\n      const { selectedEntityId } = action.payload;\n      return {\n        ...state,\n        isViewingCommentReactionsList: false,\n        selectedEntityId,\n        selectedTabIndex: 1,\n        openKudosCommentModal: true\n      };\n    }\n\n    default:\n      throw new Error(`${action.type} - not recognised`);\n  }\n}\n\nexport default { initKudosAndCommentsState, kudosAndCommentsReducer };\n","import { useReducer } from 'react';\nimport { snakeCase } from 'lodash-es';\nimport { buildInitialKudosAndCommentsState } from '../../components/shared/KudosCommentsAndAchievements/kudosAndComments.initial-state';\nimport {\n  initKudosAndCommentsState,\n  kudosAndCommentsReducer\n} from '../../components/shared/KudosCommentsAndAchievements/kudosAndComments.reducer';\n\n// We need to provide a trackAnalytics function to buildInitialKudosAndCommentsState,\n// but we are using trackv2 for analytics directly.\nconst trackAnalytics = () => {};\n\nconst useKudosAndCommentsReducer = (entityId, entity, comments) => {\n  const [kudosAndCommentsEntityState, dispatch] = useReducer(\n    kudosAndCommentsReducer,\n    buildInitialKudosAndCommentsState({\n      trackAnalytics,\n      comments: { [entityId]: comments },\n      entity: snakeCase(entity),\n      entityId\n    }),\n    initKudosAndCommentsState\n  );\n\n  return { kudosAndCommentsEntityState, dispatch };\n};\n\nexport default useKudosAndCommentsReducer;\n","import {\n  OPEN_MODAL_COMMENTS_TAB,\n  OPEN_MODAL_KUDOS_TAB\n} from '../KudosCommentsAndAchievements/kudosAndComments.actions';\n\nexport const handleKudosAndCommentsNotificationLinkNavigation = ({\n  entityId,\n  dispatch,\n  url = window.location.href\n}) => {\n  // Renders the modal if url includes #comments or #kudos\n  // url comes from notification links\n  if (url.includes('#comments')) {\n    dispatch({\n      type: OPEN_MODAL_COMMENTS_TAB,\n      payload: { element: 'comment', selectedEntityId: entityId }\n    });\n  } else if (url.includes('#kudos')) {\n    dispatch({\n      type: OPEN_MODAL_KUDOS_TAB,\n      payload: {\n        element: 'kudo_icon',\n        selectedEntityId: entityId\n      }\n    });\n  }\n};\n\nexport default { handleKudosAndCommentsNotificationLinkNavigation };\n","// extracted by mini-css-extract-plugin\nexport default {\"avatar-and-meta\":\"AvatarAndMeta--avatar-and-meta--NqT51\",\"avatarAndMeta\":\"AvatarAndMeta--avatar-and-meta--NqT51\",\"meta\":\"AvatarAndMeta--meta--zouP0\",\"athlete-name\":\"AvatarAndMeta--athlete-name--5BH2a\",\"athleteName\":\"AvatarAndMeta--athlete-name--5BH2a\",\"location\":\"AvatarAndMeta--location--DtD0X\",\"row-content\":\"AvatarAndMeta--row-content--IcjGF\",\"rowContent\":\"AvatarAndMeta--row-content--IcjGF\",\"comment-reaction-container\":\"AvatarAndMeta--comment-reaction-container--3MdFM\",\"commentReactionContainer\":\"AvatarAndMeta--comment-reaction-container--3MdFM\",\"comment-reaction-button\":\"AvatarAndMeta--comment-reaction-button--nhbXR\",\"commentReactionButton\":\"AvatarAndMeta--comment-reaction-button--nhbXR\",\"comment-react-counter\":\"AvatarAndMeta--comment-react-counter--fwmtl\",\"commentReactCounter\":\"AvatarAndMeta--comment-react-counter--fwmtl\",\"view-comment-reactions-button\":\"AvatarAndMeta--view-comment-reactions-button--L+d0Q\",\"viewCommentReactionsButton\":\"AvatarAndMeta--view-comment-reactions-button--L+d0Q\",\"spacer\":\"AvatarAndMeta--spacer--Km2HS\",\"activity-link\":\"AvatarAndMeta--activity-link--H6X+x\",\"activityLink\":\"AvatarAndMeta--activity-link--H6X+x\"};","// extracted by mini-css-extract-plugin\nexport default {\"comment-reaction-container\":\"CommentReaction--comment-reaction-container--BgCJi\",\"commentReactionContainer\":\"CommentReaction--comment-reaction-container--BgCJi\",\"comment-reaction-button\":\"CommentReaction--comment-reaction-button--f3Ma1\",\"commentReactionButton\":\"CommentReaction--comment-reaction-button--f3Ma1\",\"comment-react-counter\":\"CommentReaction--comment-react-counter--OXeJc\",\"commentReactCounter\":\"CommentReaction--comment-react-counter--OXeJc\",\"view-comment-reactions-button\":\"CommentReaction--view-comment-reactions-button--X93Z5\",\"viewCommentReactionsButton\":\"CommentReaction--view-comment-reactions-button--X93Z5\"};","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { color as uiToken } from '@strava/ui-tokens/js';\n\nconst HeartIconUnfilledSVG = ({ color = uiToken.colorCoreO3, size = 16 }) => (\n  <svg\n    width={size}\n    height={size}\n    viewBox=\"0 0 16 16\"\n    fill={color}\n    xmlns=\"http://www.w3.org/2000/svg\"\n    aria-hidden={true}\n  >\n    <path\n      d=\"M14.2256 2.76413C13.4043 1.94233 12.3125 1.49023 11.1504 1.49023C9.98832 1.49023 8.89652 1.94233 8.07522 2.76363C8.04982 2.78903 8.02442 2.81443 8.00002 2.84033C7.97562 2.81443 7.95122 2.78903 7.92582 2.76413C6.23052 1.06783 3.46882 1.06883 1.77352 2.76413C0.0781156 4.46043 0.0781156 7.21973 1.77342 8.91603L8.00002 15.1421L14.2256 8.91603C15.0479 8.09473 15.5 7.00193 15.5 5.83983C15.5 4.67773 15.0479 3.58543 14.2256 2.76413ZM13.5186 8.20893L8.00002 13.7279L2.48052 8.20903C1.17482 6.90283 1.17482 4.77743 2.48052 3.47123C3.13382 2.81843 3.99222 2.49173 4.84962 2.49173C5.70802 2.49173 6.56542 2.81793 7.21782 3.47073C7.35742 3.61033 7.48152 3.75833 7.59182 3.91413L7.59742 3.92193H8.40282L8.40932 3.91263C8.51772 3.75783 8.64172 3.61043 8.78141 3.47123C10.047 2.20563 12.2531 2.20563 13.5187 3.47123C14.1515 4.10403 14.5001 4.94533 14.5001 5.83993C14.5001 6.73493 14.1515 7.57623 13.5187 8.20903L13.5186 8.20893Z\"\n      fill={color}\n    />\n  </svg>\n);\n\nHeartIconUnfilledSVG.propTypes = {\n  color: PropTypes.string,\n  size: PropTypes.number\n};\n\nexport default HeartIconUnfilledSVG;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { color as uiToken } from '@strava/ui-tokens/js';\n\nconst HeartIconFilledSVG = ({ color = uiToken.colorCoreO3, size = 16 }) => (\n  <svg\n    width={size}\n    height={size}\n    viewBox=\"0 0 16 16\"\n    fill={color}\n    xmlns=\"http://www.w3.org/2000/svg\"\n    aria-hidden={true}\n  >\n    <path\n      d=\"M14.2256 2.76413C13.4043 1.94233 12.3125 1.49023 11.1504 1.49023C9.98832 1.49023 8.89652 1.94233 8.07522 2.76363C8.04982 2.78903 8.02442 2.81443 8.00002 2.84033C7.97562 2.81443 7.95122 2.78903 7.92582 2.76413C6.23052 1.06783 3.46882 1.06883 1.77352 2.76413C0.0781156 4.46043 0.0781156 7.21973 1.77342 8.91603L8.00002 15.1421L14.2256 8.91603C15.0479 8.09473 15.5 7.00193 15.5 5.83983C15.5 4.67773 15.0479 3.58543 14.2256 2.76413Z\"\n      fill={color}\n    />\n  </svg>\n);\n\nHeartIconFilledSVG.propTypes = {\n  color: PropTypes.string,\n  size: PropTypes.number\n};\n\nexport default HeartIconFilledSVG;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { color as uiToken } from '@strava/ui-tokens/js';\nimport HeartIconUnfilled from './HeartIconUnfilled';\nimport HeartIconFilled from './HeartIconFilled';\n\nconst CommentReactionIcon = ({ canCommentReactStatus }) => {\n  const color = canCommentReactStatus\n    ? uiToken.colorExtendedNeutralN2\n    : uiToken.colorCoreO3;\n\n  return canCommentReactStatus ? (\n    <HeartIconUnfilled color={color} size={16} />\n  ) : (\n    <HeartIconFilled color={color} size={16} />\n  );\n};\n\nCommentReactionIcon.propTypes = {\n  canCommentReactStatus: PropTypes.bool.isRequired\n};\n\nexport default CommentReactionIcon;\n","import React, { useEffect, useState } from 'react';\nimport { Button } from '@strava/ui/Button';\nimport PropTypes from 'prop-types';\nimport createNetworkingClient from 'utils/networking-client';\nimport I18n from 'utils/I18n';\nimport { trackV2 } from 'utils/analytics';\nimport { useKudosAndCommentsContext } from '../KudosAndCommentsContext';\nimport {\n  ADD_COMMENT_REACTION,\n  OPEN_COMMENT_REACTION_LIST,\n  UNDO_COMMENT_REACTION\n} from '../kudosAndComments.actions';\nimport styles from './styles.scss';\nimport CommentReactionIcon from '../CommentReactionIcons/CommentReactionIcon';\nimport { logError } from '../../../../utils/sentry';\n\nconst CommentReaction = ({\n  hasReacted,\n  commentReactionCount,\n  commentId,\n  entityId,\n  analyticsProps\n}) => {\n  const {\n    dispatch,\n    kudosAndCommentsEntityState\n  } = useKudosAndCommentsContext();\n  const [canCommentReactStatus, setCanCommentReactStatus] = useState(\n    !hasReacted\n  );\n  const [reactionCount, setReactionCount] = useState(commentReactionCount);\n\n  useEffect(() => {\n    if (kudosAndCommentsEntityState.recentlyReactedCommentId === commentId) {\n      setCanCommentReactStatus(false);\n    }\n\n    if (kudosAndCommentsEntityState.recentlyUnReactedCommentId === commentId) {\n      setCanCommentReactStatus(true);\n    }\n  }, [\n    commentId,\n    dispatch,\n    kudosAndCommentsEntityState.recentlyReactedCommentId,\n    kudosAndCommentsEntityState.recentlyUnReactedCommentId\n  ]);\n\n  const prefix = 'components.feed.social';\n\n  const onClickViewCommentReactionList = () => {\n    trackV2({\n      category: analyticsProps.category,\n      page: analyticsProps.page,\n      action: 'click',\n      element: analyticsProps.listElement,\n      properties: { comment_id: commentId, activity_id: entityId }\n    });\n    dispatch({\n      type: OPEN_COMMENT_REACTION_LIST,\n      payload: { commentId, selectedEntityId: entityId }\n    });\n  };\n\n  const undoCommentReaction = () => {\n    createNetworkingClient()\n      .delete(`/comments/${commentId}/reactions`)\n      .then((response) => {\n        if (response && response.status === 204) {\n          setReactionCount((prevReactionCount) => prevReactionCount - 1);\n          trackV2({\n            category: analyticsProps.category,\n            page: analyticsProps.page,\n            action: 'click',\n            element: analyticsProps.buttonElement,\n            properties: {\n              comment_id: commentId,\n              activity_id: entityId,\n              has_reacted: false\n            }\n          });\n          setCanCommentReactStatus(true);\n        }\n        dispatch({\n          type: UNDO_COMMENT_REACTION,\n          payload: { commentId, entityId, reactionCount }\n        });\n      })\n      .catch((error) => {\n        logError(error);\n      });\n  };\n\n  const postCommentReaction = () => {\n    createNetworkingClient()\n      .post(`/comments/${commentId}/reactions`)\n      .then(() => {\n        setReactionCount((prevReactionCount) => prevReactionCount + 1);\n        trackV2({\n          category: analyticsProps.category,\n          page: analyticsProps.page,\n          action: 'click',\n          element: analyticsProps.buttonElement,\n          properties: {\n            comment_id: commentId,\n            activity_id: entityId,\n            has_reacted: true\n          }\n        });\n        dispatch({\n          type: ADD_COMMENT_REACTION,\n          payload: { commentId, entityId, reactionCount }\n        });\n        setCanCommentReactStatus(false);\n      })\n      .catch((error) => {\n        logError(error);\n      });\n  };\n\n  return (\n    <div className={styles.commentReactionContainer}>\n      <Button\n        aria-label=\"comment reaction icon\"\n        type=\"button\"\n        data-testid=\"comment-reaction-btn\"\n        className={styles.commentReactionButton}\n        onClick={() =>\n          canCommentReactStatus ? postCommentReaction() : undoCommentReaction()\n        }\n      >\n        <CommentReactionIcon canCommentReactStatus={canCommentReactStatus} />\n      </Button>\n      {reactionCount > 0 && (\n        <span className={styles.commentReactCounter}>\n          <Button\n            type=\"button\"\n            variant=\"text\"\n            data-testid=\"comment-reaction-count-btn\"\n            onClick={() => onClickViewCommentReactionList()}\n            className={styles.viewCommentReactionsButton}\n          >\n            {I18n.t(`${prefix}.reaction_count`, {\n              count: reactionCount\n            })}\n          </Button>\n        </span>\n      )}\n    </div>\n  );\n};\n\nCommentReaction.propTypes = {\n  hasReacted: PropTypes.bool.isRequired,\n  commentReactionCount: PropTypes.number.isRequired,\n  commentId: PropTypes.number.isRequired,\n  entityId: PropTypes.string.isRequired,\n  analyticsProps: PropTypes.shape({\n    category: PropTypes.string.isRequired,\n    page: PropTypes.string.isRequired,\n    buttonElement: PropTypes.string.isRequired,\n    listElement: PropTypes.string.isRequired\n  }).isRequired\n};\n\nexport default CommentReaction;\n","export { default } from './CommentReaction';\n","import React from 'react';\nimport { Avatar } from '@strava/ui/Avatar';\nimport PropTypes from 'prop-types';\nimport { Markup } from 'interweave';\nimport styles from './index.scss';\nimport { useKudosAndCommentsContext } from '../KudosAndCommentsContext';\nimport CommentReaction from '../CommentReaction';\n\nconst AvatarAndMeta = ({\n  athleteMetaData,\n  rowContent,\n  showCommentReactions,\n  entryId,\n  commentReactionCount = 0,\n  hasReacted = false,\n  entityId,\n  commentReactionAnalytics\n}) => {\n  const { kudosAndCommentsEntityState } = useKudosAndCommentsContext();\n\n  const activityName = athleteMetaData.activity_link ? (\n    <>\n      <div className={styles.spacer}>-</div>\n      <div className={styles.activityLink}>\n        <Markup noWrap={true} content={athleteMetaData.activity_link} />\n      </div>\n    </>\n  ) : null;\n\n  return (\n    <div className={styles.avatarAndMeta}>\n      <div className={styles.avatar}>\n        <Avatar\n          badge={athleteMetaData.member_type}\n          href={athleteMetaData.url}\n          name={athleteMetaData.name}\n          size=\"small\"\n          src={athleteMetaData.avatar_url}\n          type=\"athlete\"\n          onClick={() => {\n            kudosAndCommentsEntityState.trackAnalytics({\n              action: 'click',\n              element: 'profile_picture',\n              properties: { element_source: 'kudos_and_comments_modal_content' }\n            });\n          }}\n        />\n      </div>\n      <div className={styles.meta}>\n        <div className={styles.athleteName}>\n          <a href={athleteMetaData.url}>{athleteMetaData.name}</a>\n          {activityName}\n        </div>\n        {/* Location should not be shown if there is a content row (eg. comments) */}\n        {!rowContent &&\n          athleteMetaData.location &&\n          athleteMetaData.location.length > 0 && (\n            <div className={`text-caption1 ${styles.location}`}>\n              {athleteMetaData.location}\n            </div>\n          )}\n        {rowContent && (\n          <div className={styles.rowContent}>\n            {<Markup noWrap={true} content={rowContent} />}\n            {showCommentReactions && (\n              <CommentReaction\n                hasReacted={hasReacted}\n                commentReactionCount={commentReactionCount}\n                commentId={entryId}\n                entityId={entityId}\n                analyticsProps={commentReactionAnalytics}\n              />\n            )}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n\nAvatarAndMeta.propTypes = {\n  athleteMetaData: PropTypes.shape({\n    member_type: PropTypes.string,\n    name: PropTypes.string.isRequired,\n    avatar_url: PropTypes.string,\n    location: PropTypes.string,\n    url: PropTypes.string,\n    activity_link: PropTypes.string\n  }).isRequired,\n  rowContent: PropTypes.string,\n  showCommentReactions: PropTypes.bool.isRequired,\n  entryId: PropTypes.number,\n  commentReactionCount: PropTypes.number,\n  hasReacted: PropTypes.bool,\n  entityId: PropTypes.string.isRequired,\n  commentReactionAnalytics: PropTypes.shape({\n    category: PropTypes.string.isRequired,\n    page: PropTypes.string.isRequired,\n    buttonElement: PropTypes.string.isRequired,\n    listElement: PropTypes.string.isRequired\n  }).isRequired\n};\n\nexport default AvatarAndMeta;\n","export { default } from './AvatarAndMeta';\n","export { default } from './CommentReactionList';\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"KudosCommentsAndAchievementsModal--title--XsBAZ\",\"avatar\":\"KudosCommentsAndAchievementsModal--avatar--2yNCR\",\"description\":\"KudosCommentsAndAchievementsModal--description--H2ZT3\",\"tab-content\":\"KudosCommentsAndAchievementsModal--tab-content--LIFFw\",\"tabContent\":\"KudosCommentsAndAchievementsModal--tab-content--LIFFw\",\"body\":\"KudosCommentsAndAchievementsModal--body--Sr8Rz\",\"entry\":\"KudosCommentsAndAchievementsModal--entry--UFd3r\",\"segment-name\":\"KudosCommentsAndAchievementsModal--segment-name--NnLyJ\",\"segmentName\":\"KudosCommentsAndAchievementsModal--segment-name--NnLyJ\",\"timestamp-and-comment-actions\":\"KudosCommentsAndAchievementsModal--timestamp-and-comment-actions--s3i3r\",\"timestampAndCommentActions\":\"KudosCommentsAndAchievementsModal--timestamp-and-comment-actions--s3i3r\",\"timestamp\":\"KudosCommentsAndAchievementsModal--timestamp--T4ZZC\",\"comment-actions\":\"KudosCommentsAndAchievementsModal--comment-actions--n1flj\",\"commentActions\":\"KudosCommentsAndAchievementsModal--comment-actions--n1flj\",\"follow-btn\":\"KudosCommentsAndAchievementsModal--follow-btn--h1sq3\",\"followBtn\":\"KudosCommentsAndAchievementsModal--follow-btn--h1sq3\",\"comments-form\":\"KudosCommentsAndAchievementsModal--comments-form--DJZDq\",\"commentsForm\":\"KudosCommentsAndAchievementsModal--comments-form--DJZDq\",\"achievement-row\":\"KudosCommentsAndAchievementsModal--achievement-row--BHCJ0\",\"achievementRow\":\"KudosCommentsAndAchievementsModal--achievement-row--BHCJ0\",\"achievement-icon\":\"KudosCommentsAndAchievementsModal--achievement-icon--pOuPY\",\"achievementIcon\":\"KudosCommentsAndAchievementsModal--achievement-icon--pOuPY\",\"elapsed-time\":\"KudosCommentsAndAchievementsModal--elapsed-time--MUWOg\",\"elapsedTime\":\"KudosCommentsAndAchievementsModal--elapsed-time--MUWOg\",\"no-results\":\"KudosCommentsAndAchievementsModal--no-results--JX9+0\",\"noResults\":\"KudosCommentsAndAchievementsModal--no-results--JX9+0\",\"spinner\":\"KudosCommentsAndAchievementsModal--spinner--NJAsu\",\"footer\":\"KudosCommentsAndAchievementsModal--footer--LnuV3\",\"footer-action-btn\":\"KudosCommentsAndAchievementsModal--footer-action-btn--3i3bs\",\"footerActionBtn\":\"KudosCommentsAndAchievementsModal--footer-action-btn--3i3bs\",\"btn\":\"KudosCommentsAndAchievementsModal--btn--YDaqZ\",\"kudos-and-comments-modal\":\"KudosCommentsAndAchievementsModal--kudos-and-comments-modal--Y9sxh\",\"kudosAndCommentsModal\":\"KudosCommentsAndAchievementsModal--kudos-and-comments-modal--Y9sxh\",\"comment-reaction-list-back-button\":\"KudosCommentsAndAchievementsModal--comment-reaction-list-back-button--U1oFS\",\"commentReactionListBackButton\":\"KudosCommentsAndAchievementsModal--comment-reaction-list-back-button--U1oFS\",\"comment-reaction-list-back-button-children\":\"KudosCommentsAndAchievementsModal--comment-reaction-list-back-button-children--RqcYM\",\"commentReactionListBackButtonChildren\":\"KudosCommentsAndAchievementsModal--comment-reaction-list-back-button-children--RqcYM\"};","// extracted by mini-css-extract-plugin\nexport default {\"mentionable-comment-wrapper\":\"MentionableCommentForm--mentionable-comment-wrapper--zxkNM\",\"mentionableCommentWrapper\":\"MentionableCommentForm--mentionable-comment-wrapper--zxkNM\",\"avatar\":\"MentionableCommentForm--avatar--yoHvW\",\"post-comment-btn\":\"MentionableCommentForm--post-comment-btn--ZIvJ-\",\"postCommentBtn\":\"MentionableCommentForm--post-comment-btn--ZIvJ-\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Avatar } from '@strava/ui/Avatar';\n\nimport I18n from 'utils/I18n';\nimport createNetworkingClient from 'utils/networking-client';\n\nimport { Button } from '@strava/ui/Button';\nimport { snakeCase } from 'lodash-es';\n\nimport styles from './mentionable_comment.scss';\nimport {\n  entitiesWithKudosAndComments,\n  viewingAthleteProps\n} from '../../Feed/props/feed-prop-types';\nimport { useKudosAndCommentsContext } from '../KudosCommentsAndAchievements/KudosAndCommentsContext';\nimport {\n  ADD_COMMENT_FAILED,\n  ADD_COMMENT_START,\n  ADD_COMMENT_COMPLETE\n} from '../KudosCommentsAndAchievements/kudosAndComments.actions';\nimport { FEED_ENTRY_TYPES } from '../../Feed/constants';\nimport StravaMentionsInput from '../../StravaMentionsInput';\nimport { logError } from '../../../utils/sentry';\n\n// Remaps the given surface to the correct surface\n// type for the fetchMentionableEntities endpoint\nexport const remapSurfaceType = (surface) => {\n  if (surface === 'post') {\n    return 'post_comment';\n  }\n  if (surface === 'activity') {\n    return 'comment';\n  }\n  return null;\n};\n\nconst MentionableCommentForm = ({\n  viewingAthlete,\n  entity,\n  entityId,\n  placeHolder,\n  buttonText,\n  clubMentionsEnabled,\n  suggestionLimit = 5,\n  autoFocus = false,\n  parent = 'feed_card'\n}) => {\n  const [comment, setComment] = useState('');\n  const [clearInputToggle, setClearInputToggle] = useState(false);\n\n  const placeHolderProp =\n    placeHolder || I18n.t('templates.feed.comment_box.add_a_comment');\n  const buttonTextProp =\n    buttonText || I18n.t('templates.feed.comment_box.post');\n\n  const { avatarUrl, name, id: viewingAthleteId, memberType } = viewingAthlete;\n\n  const {\n    kudosAndCommentsEntityState,\n    dispatch\n  } = useKudosAndCommentsContext();\n\n  // group activities use the same endpoint as activities\n  const entityEndpoint =\n    entity === FEED_ENTRY_TYPES.groupActivity\n      ? FEED_ENTRY_TYPES.activity\n      : snakeCase(entity);\n\n  // Parses comment tokens into a string that can be shown to the user\n  // example input:\n  //     [{\n  //         \"type\": \"mention_token\",\n  //         \"text\": \"Athlete Name\",\n  //         \"path\": \"/athletes/10\",\n  //         \"athlete_id\": 1\n  //     },\n  //     {\n  //         \"type\": \"raw_token\",\n  //         \"text\": \" text\"\n  //     }]\n  //\n  // output: <a href=/athletes/10>Athlete Name</a><span> text</span>\n  const parseComment = (data) => {\n    if (typeof data === 'string') {\n      return data;\n    }\n    const formattedTokens = data.map((token) => {\n      if (token.type === 'mention_token') {\n        return `<a href=${token.path}>${token.text}</a>`;\n      }\n      return `<span>${token.text}</span>`;\n    });\n    return formattedTokens.join('');\n  };\n\n  const handleSubmitCommentComplete = (data) => {\n    setComment('');\n    setClearInputToggle(!clearInputToggle);\n\n    const commentEntry = { ...data };\n    commentEntry.comment = parseComment(data.comment);\n    dispatch({\n      type: ADD_COMMENT_COMPLETE,\n      payload: { comment: commentEntry, entityId }\n    });\n  };\n\n  const handleSubmitCommentFail = (error) => {\n    logError(error);\n    dispatch({ type: ADD_COMMENT_FAILED });\n  };\n\n  const submitComment = (e) => {\n    kudosAndCommentsEntityState.trackAnalytics({\n      action: 'click',\n      element: `post_comment_btn-on-${parent}`\n    });\n    e.preventDefault();\n    dispatch({ type: ADD_COMMENT_START });\n    createNetworkingClient()\n      .post(`/feed/${entityEndpoint}/${entityId}/comment`, {\n        comment\n      })\n      .then((response) => {\n        if (response && response.status === 200) {\n          handleSubmitCommentComplete(response.data);\n        } else {\n          handleSubmitCommentFail();\n        }\n      })\n      .catch((error) => {\n        handleSubmitCommentFail(error);\n      });\n  };\n\n  const handleChange = ({ newValue }) => {\n    setComment(newValue);\n  };\n\n  return (\n    <div\n      className={styles.mentionableCommentWrapper}\n      data-testid=\"comments-form\"\n    >\n      <div className={styles.avatar}>\n        <Avatar\n          src={avatarUrl}\n          type=\"athlete\"\n          name={name}\n          href={`/athletes/${viewingAthleteId}`}\n          badge={memberType}\n          size=\"xsmall\"\n          onClick={() => {\n            kudosAndCommentsEntityState.trackAnalytics({\n              action: 'click',\n              element: 'profile_picture',\n              properties: {\n                element_source: `comments-form-viewing-athlete-on-${parent}`\n              }\n            });\n          }}\n        />\n      </div>\n      <StravaMentionsInput\n        autoFocus={autoFocus}\n        entity={entity}\n        entityId={entityId}\n        onInputChange={handleChange}\n        surfaceType={remapSurfaceType(entity)}\n        placeHolder={placeHolderProp}\n        clubMentionsEnabled={clubMentionsEnabled}\n        suggestionLimit={suggestionLimit}\n        trackAnalytics={kudosAndCommentsEntityState.trackAnalytics}\n        viewingAthleteId={viewingAthleteId}\n        clearInputToggle={clearInputToggle}\n      />\n      <div className={styles.postCommentBtn}>\n        <Button\n          type=\"button\"\n          data-testid=\"post-comment-btn\"\n          variant=\"text\"\n          disabled={\n            kudosAndCommentsEntityState.isSubmittingComment ||\n            comment.length === 0\n          }\n          onClick={submitComment}\n        >\n          {buttonTextProp}\n        </Button>\n      </div>\n    </div>\n  );\n};\n\nMentionableCommentForm.propTypes = {\n  entity: entitiesWithKudosAndComments.isRequired,\n  entityId: PropTypes.string.isRequired,\n  placeHolder: PropTypes.string,\n  clubMentionsEnabled: PropTypes.bool.isRequired,\n  buttonText: PropTypes.string,\n  suggestionLimit: PropTypes.number,\n  autoFocus: PropTypes.bool,\n  viewingAthlete: viewingAthleteProps.isRequired,\n  parent: PropTypes.string\n};\n\nexport default MentionableCommentForm;\n","export { default } from './MentionableCommentForm';\n","/* eslint-disable import/prefer-default-export */\n// Takes Time Tag and converts displayed time to time ago from current time\n// ex) <time class=\"timeago\" datetime=\"2021-07-17T00:53:01Z\">3 days ago</time>\n// returns <time class=\"timeago\" datetime=\"2021-07-17T00:53:01Z\">July 17, 2021</time>\nimport I18n from 'utils/I18n';\n\nexport const buildTimeAgoTimestamp = (timestamp) => {\n  const timestampParsed = new DOMParser()\n    .parseFromString(timestamp, 'text/html')\n    .body.querySelector('time')\n    .getAttribute('datetime');\n  const timeToReplace = new DOMParser()\n    .parseFromString(timestamp, 'text/html')\n    .body.querySelector('time').innerHTML;\n  const timeAgo = I18n.timespanFormatter().constructor.timeago(\n    Date.parse(timestampParsed)\n  );\n  return timestamp.replace(timeToReplace, timeAgo);\n};\n","import React, { useState, useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { Markup } from 'interweave';\nimport I18n from 'utils/I18n';\nimport createNetworkingClient from 'utils/networking-client';\nimport { Avatar } from '@strava/ui/Avatar';\nimport { Spinner } from '@strava/ui/Spinner';\nimport {\n  ModalWithTabs,\n  ModalTabs,\n  ModalTabList,\n  ModalTab,\n  ModalTabPanels,\n  ModalTabPanel\n} from '@strava/ui/ModalWithTabs';\nimport { Button, LinkButton } from '@strava/ui/Button';\nimport { isEmpty } from 'lodash-es';\nimport AchievementsMedalPrSmall from '@strava/icons/AchievementsMedalPrSmall';\nimport AchievementsMedal02Small from '@strava/icons/AchievementsMedal02Small';\nimport AchievementsMedal03Small from '@strava/icons/AchievementsMedal03Small';\nimport AchievementsBadgeHighlightedSmall from '@strava/icons/AchievementsBadgeHighlightedSmall';\nimport AchievementsKomHighlightedSmall from '@strava/icons/AchievementsKomHighlightedSmall';\nimport AchievementsTrophy02Small from '@strava/icons/AchievementsTrophy02Small';\nimport AchievementsTrophy03Small from '@strava/icons/AchievementsTrophy03Small';\nimport AchievementsTrophy04Small from '@strava/icons/AchievementsTrophy04Small';\nimport AchievementsTrophy05Small from '@strava/icons/AchievementsTrophy05Small';\nimport AchievementsTrophy06Small from '@strava/icons/AchievementsTrophy06Small';\nimport AchievementsTrophy07Small from '@strava/icons/AchievementsTrophy07Small';\nimport AchievementsTrophy08Small from '@strava/icons/AchievementsTrophy08Small';\nimport AchievementsTrophy09Small from '@strava/icons/AchievementsTrophy09Small';\nimport AchievementsTrophy10Small from '@strava/icons/AchievementsTrophy10Small';\nimport SvgActionsArrowLeftNormalSmall from '@strava/icons/ActionsArrowLeftNormalSmall';\nimport Cldr from 'utils/Cldr';\nimport { FEED_ENTRY_TYPES } from '../../../Feed/constants';\nimport AvatarAndMeta from '../AvatarAndMeta';\nimport CommentReactionList from '../CommentReactionList';\nimport {\n  viewingAthleteProps,\n  entityOwnerProps,\n  segAndBestEffortAchievementsProps\n} from '../../../Feed/props/feed-prop-types';\nimport styles from './styles.scss';\nimport MentionableCommentForm from '../../MentionableCommentForm';\nimport { buildTimeAgoTimestamp } from '../../utils/buildTimeAgoTimeStamp';\nimport { useKudosAndCommentsContext } from '../KudosAndCommentsContext';\nimport {\n  CLOSE_MODAL,\n  ADD_KUDO,\n  DELETE_COMMENT_START,\n  CLOSE_COMMENT_REACTION_LIST\n} from '../kudosAndComments.actions';\nimport { updateKudosEndpoint } from '../../utils/updateKudosEndpoint';\nimport { logError } from '../../../../utils/sentry';\n\nconst prefix = 'templates.kudos_and_comments_modal';\n\nconst KudosCommentsAndAchievementsModal = ({\n  title,\n  segAndBestEffortAchievements = [],\n  viewingAthlete,\n  entity,\n  entityId,\n  hasOtherAthletes = false,\n  entityOwner,\n  kudosCount,\n  commentsEnabled = true,\n  clubMentionsEnabled,\n  commentReactionAnalytics\n}) => {\n  const {\n    kudosAndCommentsEntityState,\n    dispatch\n  } = useKudosAndCommentsContext();\n\n  const hasAchievements = !isEmpty(segAndBestEffortAchievements);\n  const correctedTabIndex = () => {\n    let { selectedTabIndex: tabIndexFromReducer } = kudosAndCommentsEntityState;\n    if (!hasAchievements && tabIndexFromReducer === 3) {\n      // adjust tab index if the athlete entry has no achievements tab\n      tabIndexFromReducer -= 1;\n    }\n    if (!commentsEnabled) {\n      // adjust tab index if comments are disabled for entity\n      tabIndexFromReducer -= 1;\n    }\n    return tabIndexFromReducer;\n  };\n\n  const [index, setIndex] = useState(correctedTabIndex());\n  const [groupedActivityData, setGroupedActivityData] = useState({\n    athletes: [],\n    hasOtherAthletes\n  });\n  const [hover, setHover] = useState(false);\n  const [kudoData, setKudosData] = useState({\n    isOwner: false,\n    kudosable: false,\n    athletes: []\n  });\n  const [commentReactionListData, setCommentReactionListData] = useState({\n    reactionCount: 0,\n    athletes: []\n  });\n  const [isLoading, setIsLoading] = useState(false);\n  const [followRequestApprovalStatusMap, setAthleteFollowRequestMap] = useState(\n    {}\n  );\n  const [isViewingCommentReactionList, setIsViewingReactionList] = useState(\n    kudosAndCommentsEntityState.isViewingCommentReactionsList\n  );\n\n  const comments = kudosAndCommentsEntityState.comments[entityId] || [];\n  const entityEndpoint = updateKudosEndpoint({ entity });\n\n  const fetchKudoList = useCallback(() => {\n    setIsLoading(true);\n    createNetworkingClient()\n      .get(`/feed/${entityEndpoint}/${entityId}/kudos`)\n      .then(({ data }) => {\n        setKudosData(data);\n        setIsLoading(false);\n      });\n  }, [entityId, entityEndpoint]);\n\n  const fetchCommentReactionList = useCallback(() => {\n    const selectedCommentId = kudosAndCommentsEntityState.selectedComment;\n    setIsLoading(true);\n    createNetworkingClient()\n      .get(`/comments/${selectedCommentId}/reactions`)\n      .then(({ data }) => {\n        setIsLoading(false);\n        if (data.athletes) {\n          setCommentReactionListData({\n            reactionCount: data.reaction_count,\n            athletes: data.athletes\n          });\n        }\n        return [];\n      })\n      .catch((error) => {\n        setIsLoading(false);\n        logError(error);\n      });\n  }, [kudosAndCommentsEntityState.selectedComment]);\n\n  useEffect(() => {\n    if (kudosAndCommentsEntityState.isViewingCommentReactionsList) {\n      fetchCommentReactionList();\n      // Comment Reactions List replaces kudo as tab index 0\n      setIndex(0);\n      setIsViewingReactionList(true);\n    } else {\n      setIsViewingReactionList(false);\n    }\n  }, [\n    kudosAndCommentsEntityState.isViewingCommentReactionsList,\n    dispatch,\n    fetchCommentReactionList\n  ]);\n\n  //  determine if the selected tab is 'other athlete' tab since\n  // comments and achievements tabs are optional\n  const isOtherAthletesTab = useCallback(() => {\n    return (\n      (commentsEnabled &&\n        ((hasAchievements && index === 3) ||\n          (!hasAchievements && index === 2))) ||\n      (!commentsEnabled &&\n        ((hasAchievements && index === 2) || (!hasAchievements && index === 1)))\n    );\n  }, [index, commentsEnabled, hasAchievements]);\n\n  const isKudosTab = useCallback(() => {\n    return index === 0;\n  }, [index]);\n\n  const fetchOtherAthletes = useCallback(() => {\n    setIsLoading(true);\n    createNetworkingClient()\n      .get(`/feed/${entityEndpoint}/${entityId}/group_athletes`)\n      .then(({ data }) => {\n        setGroupedActivityData({ ...data, hasOtherAthletes: true });\n        setIsLoading(false);\n      });\n  }, [entityEndpoint, entityId]);\n\n  useEffect(() => {\n    if (isKudosTab()) {\n      fetchKudoList();\n    }\n    if (isOtherAthletesTab()) {\n      fetchOtherAthletes();\n    }\n  }, [isKudosTab, fetchKudoList, fetchOtherAthletes, isOtherAthletesTab]);\n\n  const toggleHover = () => {\n    setHover((prev) => !prev);\n  };\n\n  const postKudo = () => {\n    kudosAndCommentsEntityState.trackAnalytics({\n      action: 'click',\n      element: 'kudo_btn_on_modal'\n    });\n    const viewAthleteKudoData = {\n      member_type: viewingAthlete.memberType,\n      url: `/athletes/${viewingAthlete.id}`,\n      name: viewingAthlete.name,\n      avatar_url: viewingAthlete.avatarUrl,\n      id: viewingAthlete.id,\n      location: viewingAthlete.location,\n      is_following: true // viewing athlete cannot follow themselves (this prevent the Follow button from showing)\n    };\n    createNetworkingClient()\n      .post(`/feed/${entityEndpoint}/${entityId}/kudo`)\n      .then(() =>\n        setKudosData((prev) => ({\n          ...prev,\n          athletes: [viewAthleteKudoData].concat(prev.athletes),\n          kudosable: false\n        }))\n      )\n      .then(() => {\n        dispatch({ type: ADD_KUDO });\n      })\n      .catch((error) => {\n        logError(error);\n      });\n  };\n\n  const isRecentlyFollowedAthlete = (kudoDataRow) =>\n    followRequestApprovalStatusMap[kudoDataRow.id] &&\n    followRequestApprovalStatusMap[kudoDataRow.id].requestApprovalStatus ===\n      'approved';\n\n  const isRecentlyRequestedAthlete = (kudoDataRow) =>\n    followRequestApprovalStatusMap[kudoDataRow.id] &&\n    followRequestApprovalStatusMap[kudoDataRow.id].requestApprovalStatus ===\n      'pending';\n\n  const onKudoDataRowButtonClick = (kudoDataRow) => {\n    kudosAndCommentsEntityState.trackAnalytics({\n      action: 'click',\n      element: 'unfollow_btn_on_modal'\n    });\n    const kudoserId = kudoDataRow.id;\n    const viewingAthleteId = viewingAthlete.id;\n    if (\n      isRecentlyRequestedAthlete(kudoDataRow) ||\n      isRecentlyFollowedAthlete(kudoDataRow)\n    ) {\n      // Athlete reversing their follow add/request action\n      createNetworkingClient()\n        .delete(\n          `/athletes/${viewingAthleteId}/follows/${followRequestApprovalStatusMap[kudoDataRow.id].followId}`\n        )\n        .then(() => {\n          setAthleteFollowRequestMap((prevState) =>\n            Object.assign(prevState, {\n              [kudoserId]: { requestApprovalStatus: '' }\n            })\n          );\n        })\n        .then(toggleHover);\n    } else {\n      kudosAndCommentsEntityState.trackAnalytics({\n        action: 'click',\n        element: 'follow_btn_on_modal'\n      });\n      const payload = {\n        follow: {\n          following_id: kudoserId,\n          follower_id: viewingAthleteId\n        }\n      };\n      createNetworkingClient()\n        .post(`/athletes/${viewingAthleteId}/follows`, payload)\n        .then((response) => {\n          const requestApprovalStatus = response.data.approved\n            ? 'approved'\n            : 'pending';\n          setAthleteFollowRequestMap((prevState) =>\n            Object.assign(prevState, {\n              [kudoserId]: {\n                requestApprovalStatus,\n                followId: response.data.follow_id\n              }\n            })\n          );\n        })\n        .then(toggleHover);\n    }\n  };\n\n  const leaveAthleteGroup = () => {\n    kudosAndCommentsEntityState.trackAnalytics({\n      action: 'click',\n      element: 'leave_athlete_group_btn_on_modal'\n    });\n    setIsLoading(true);\n    createNetworkingClient()\n      .delete(`/activities/${entityId}/grouping`)\n      .then(() => {\n        setGroupedActivityData({ athletes: [], hasOtherAthletes: false });\n        setIsLoading(false);\n      });\n  };\n\n  const processFollowButtonAttributes = (kudoDataRow) => {\n    let label;\n    let variant;\n    if (isRecentlyFollowedAthlete(kudoDataRow)) {\n      label = hover\n        ? I18n.t(`${prefix}.unfollow`)\n        : I18n.t(`${prefix}.following`);\n      variant = 'default';\n    } else if (isRecentlyRequestedAthlete(kudoDataRow)) {\n      label = hover\n        ? I18n.t(`${prefix}.follow_requested`)\n        : I18n.t(`${prefix}.cancel_follow_request`);\n      variant = 'default';\n    } else {\n      label = kudoDataRow.is_private\n        ? I18n.t(`${prefix}.request_to_follow`)\n        : I18n.t(`${prefix}.follow`);\n      variant = 'primaryOutline';\n    }\n    return { label, variant };\n  };\n\n  const buildFollowButton = (kudoDataRow) => {\n    const followButtonAttributes = processFollowButtonAttributes(kudoDataRow);\n    return (\n      <Button\n        type=\"button\"\n        data-testid=\"follow-btn\"\n        variant={followButtonAttributes.variant}\n        onClick={() => onKudoDataRowButtonClick(kudoDataRow)}\n        onMouseEnter={toggleHover}\n        onMouseLeave={toggleHover}\n        className={styles.followBtn}\n      >\n        {followButtonAttributes.label}\n      </Button>\n    );\n  };\n\n  const spinner = (\n    <div className={styles.spinner}>\n      <Spinner />\n    </div>\n  );\n\n  const entriesFromFetchedData = (dataList) => {\n    const components = [];\n    dataList.athletes.forEach((kudoDataRow) => {\n      components.push(\n        <div className={styles.entry} key={kudoDataRow.id} data-testid=\"entry\">\n          <AvatarAndMeta\n            athleteMetaData={kudoDataRow}\n            showCommentReactions={false} // We're not rendering comments here.\n            entityId={entityId}\n            commentReactionAnalytics={commentReactionAnalytics}\n          />\n          {!kudoDataRow.is_following && buildFollowButton(kudoDataRow)}\n        </div>\n      );\n    });\n    return components;\n  };\n\n  const buildKudoList = () => {\n    if (isLoading) {\n      return spinner;\n    }\n    // activity owner is not allowed to kudo their own activity\n    const kudoAllowed = !kudoData.isOwner && kudoData.kudosable;\n    let kudoEntries = entriesFromFetchedData(kudoData);\n    if (kudoEntries.length === 0) {\n      kudoEntries = (\n        <div className={styles.noResults}>\n          {I18n.t(`${prefix}.no_kudos_yet`)}\n        </div>\n      );\n    }\n    return (\n      <>\n        <div className={styles.body}>{kudoEntries}</div>\n        <div className={styles.footer}>\n          <Button\n            disabled={!kudoAllowed}\n            type=\"button\"\n            onClick={postKudo}\n            variant={kudoAllowed ? 'primary' : 'default'}\n            className={styles.footerActionBtn}\n          >\n            {I18n.t(`${prefix}.give_kudos`)}\n          </Button>\n        </div>\n      </>\n    );\n  };\n\n  const buildCommentReactionList = () => {\n    if (isLoading) {\n      return spinner;\n    }\n    return <CommentReactionList reactionListData={commentReactionListData} />;\n  };\n\n  const buildOtherAthleteList = () => {\n    if (isLoading) {\n      return spinner;\n    }\n    const groupAthletesEntries = entriesFromFetchedData(groupedActivityData);\n    return (\n      <>\n        <div className={styles.body}>{groupAthletesEntries}</div>\n        {!isEmpty(groupedActivityData.athletes) &&\n          viewingAthlete.id === entityOwner.id && (\n            <div className={styles.footer}>\n              <Button\n                onClick={leaveAthleteGroup}\n                className={styles.footerActionBtn}\n                type=\"button\"\n              >\n                {I18n.t(`${prefix}.leave_group`)}\n              </Button>\n            </div>\n          )}\n      </>\n    );\n  };\n\n  const deleteComment = (comment) => {\n    dispatch({\n      type: DELETE_COMMENT_START,\n      payload: { comment, entityId, element: 'modal' }\n    });\n  };\n\n  const allowedCommentReactionEntities = [\n    FEED_ENTRY_TYPES.activity,\n    FEED_ENTRY_TYPES.groupActivity,\n    FEED_ENTRY_TYPES.post\n  ];\n\n  const buildCommentList = () => {\n    let thread = [];\n    const showCommentReactions = allowedCommentReactionEntities.includes(\n      entity\n    );\n\n    comments.forEach((entry) => {\n      const commentReactionCount =\n        entry.reactions_summary && entry.reactions_summary.reaction_count\n          ? entry.reactions_summary.reaction_count\n          : 0;\n      const hasReacted =\n        entry.reactions_summary && entry.reactions_summary.has_reacted\n          ? entry.reactions_summary.has_reacted\n          : false;\n      const timeAgoTimestamp = buildTimeAgoTimestamp(entry.timestamp);\n\n      thread.push(\n        <div\n          className={styles.entry}\n          key={entry.comment_id}\n          data-testid=\"entry\"\n        >\n          <AvatarAndMeta\n            athleteMetaData={entry.athlete}\n            rowContent={entry.comment}\n            showCommentReactions={showCommentReactions}\n            commentReactionCount={commentReactionCount}\n            entryId={entry.comment_id}\n            hasReacted={hasReacted}\n            entityId={entityId}\n            commentReactionAnalytics={commentReactionAnalytics}\n          />\n          <div className={styles.timestampAndCommentActions}>\n            <div className={styles.timestamp}>\n              <Markup noWrap={true} content={timeAgoTimestamp} />\n            </div>\n            {(entry.deletable || entry.reportable || entry.quarantinable) && (\n              <div className={styles.commentActions}>\n                {entry.reportable && (\n                  <LinkButton\n                    variant=\"text\"\n                    data-testid=\"report-comment-btn\"\n                    className={styles.actionLinkButton}\n                    href={`/comments/${entry.comment_id}/feedback`}\n                  >\n                    {I18n.t(`${prefix}.report`)}\n                  </LinkButton>\n                )}\n                {entry.deletable && (\n                  <Button\n                    type=\"button\"\n                    className={styles.actionLinkButton}\n                    variant=\"text\"\n                    data-testid=\"delete-comment-btn\"\n                    onClick={() => deleteComment(entry)}\n                  >\n                    {I18n.t(`${prefix}.delete`)}\n                  </Button>\n                )}\n                {entry.quarantinable && (\n                  <LinkButton\n                    className={styles.actionLinkButton}\n                    variant=\"text\"\n                    data-testid=\"quarantine-comment-btn\"\n                    href={`/admin/quarantine/comment_form?comment_id=${entry.comment_id}`}\n                  >\n                    {I18n.t(`${prefix}.soft_delete`)}\n                  </LinkButton>\n                )}\n              </div>\n            )}\n          </div>\n        </div>\n      );\n    });\n    if (thread.length === 0) {\n      thread = (\n        <div className={styles.noResults}>\n          {I18n.t(`${prefix}.no_comments_yet`)}\n        </div>\n      );\n    }\n    return (\n      <>\n        <div className={styles.body}>{thread}</div>\n        <div className={`${styles.footer} ${styles.commentsForm}`}>\n          <MentionableCommentForm\n            viewingAthlete={viewingAthlete}\n            autoFocus={true}\n            entity={entity}\n            clubMentionsEnabled={clubMentionsEnabled}\n            entityId={entityId}\n            parent=\"modal\"\n          />\n        </div>\n      </>\n    );\n  };\n\n  const legacySpriteToStravaUiIcon = (sprite) => {\n    const SILVER = '#999999';\n    const GOLD = '#FEC835';\n    const BRONZE = '#E5820A';\n    switch (sprite) {\n      case 'icon-at-kom-1':\n        return <AchievementsKomHighlightedSmall fill={GOLD} />;\n      case 'icon-at-kom-2':\n        return <AchievementsTrophy02Small fill={GOLD} />;\n      case 'icon-at-kom-3':\n        return <AchievementsTrophy03Small fill={GOLD} />;\n      case 'icon-at-kom-4':\n        return <AchievementsTrophy04Small fill={GOLD} />;\n      case 'icon-at-kom-5':\n        return <AchievementsTrophy05Small fill={GOLD} />;\n      case 'icon-at-kom-6':\n        return <AchievementsTrophy06Small fill={GOLD} />;\n      case 'icon-at-kom-7':\n        return <AchievementsTrophy07Small fill={GOLD} />;\n      case 'icon-at-kom-8':\n        return <AchievementsTrophy08Small fill={GOLD} />;\n      case 'icon-at-kom-9':\n        return <AchievementsTrophy09Small fill={GOLD} />;\n      case 'icon-at-kom-10':\n        return <AchievementsTrophy10Small fill={GOLD} />;\n      case 'icon-at-pr-1':\n      case 'icon-yr-pr-1':\n        return <AchievementsMedalPrSmall fill={GOLD} />;\n      case 'icon-at-pr-2':\n      case 'icon-yr-pr-2':\n        return <AchievementsMedal02Small fill={SILVER} />;\n      case 'icon-at-pr-3':\n      case 'icon-yr-pr-3':\n        return <AchievementsMedal03Small fill={BRONZE} />;\n      default:\n        return <AchievementsBadgeHighlightedSmall fill={SILVER} />;\n    }\n  };\n\n  const buildAchievementList = () => {\n    const achievements = segAndBestEffortAchievements\n      .filter((achievement) => !achievement.hidden)\n      .map((achievement) => {\n        const achievementIcon = legacySpriteToStravaUiIcon(achievement.sprite);\n        return (\n          <div\n            className={`${styles.entry} ${styles.achievementRow}`}\n            key={`${achievement.id}-${achievement.name}`}\n            data-testid=\"entry\"\n          >\n            <div className={styles.achievementIcon}>{achievementIcon}</div>\n            <a\n              className={styles.segmentName}\n              href={`/activities/${achievement.activity_id}/segments/${achievement.id_string}`}\n            >\n              {achievement.name}\n            </a>\n            <span className={styles.description}>\n              {achievement.description}\n            </span>\n            <span className={styles.elapsedTime}>\n              <Markup noWrap={true} content={achievement.elapsed_time} />\n            </span>\n          </div>\n        );\n      });\n    return <div className={styles.body}>{achievements}</div>;\n  };\n\n  // tab order - kudos, comments (optional), achievements (optional), other athletes (optional)\n  const onTabChange = (selectedTab) => {\n    setIndex(selectedTab);\n    if (isViewingCommentReactionList) {\n      dispatch({\n        type: CLOSE_COMMENT_REACTION_LIST,\n        payload: { selectedEntityId: entityId }\n      });\n      // Go back to Comments tab\n      setIndex(1);\n    } else if (selectedTab === 0) {\n      // kudos tab\n      fetchKudoList();\n    } else if (isOtherAthletesTab()) {\n      // other athletes tab\n      fetchOtherAthletes();\n    }\n  };\n\n  const modalTitle = () => {\n    return (\n      <div className={styles.title}>\n        <div className={styles.avatar}>\n          <Avatar\n            name={entityOwner.name}\n            src={entityOwner.displayImage}\n            type={entityOwner.type}\n            badge={entityOwner.memberType}\n            href={entityOwner.profileUrl}\n            size=\"small\"\n            onClick={() => {\n              kudosAndCommentsEntityState.trackAnalytics({\n                action: 'click',\n                element: 'profile_picture',\n                properties: { element_source: 'kudos_and_comments_modal_title' }\n              });\n            }}\n          />\n        </div>\n        <div className={styles.description} id=\"kudos-comments-modal-title\">\n          <Markup noWrap={true} content={title} />\n        </div>\n      </div>\n    );\n  };\n\n  const kudosTabTitle = () => {\n    return I18n.t(`${prefix}.kudos`).concat(\n      ` (${Cldr.formatDecimal(kudosCount)})`\n    );\n  };\n\n  const commentsTabTitle = () => {\n    return I18n.t(`${prefix}.comments`).concat(\n      ` (${Cldr.formatDecimal(comments.length)})`\n    );\n  };\n\n  const acheivementsTabTitle = () => {\n    return I18n.t(`${prefix}.achievements`).concat(\n      ` (${Cldr.formatDecimal(\n        segAndBestEffortAchievements.filter((a) => !a.hidden).length\n      )})`\n    );\n  };\n\n  const otherAthletesTabTitle = () => {\n    return I18n.t(`${prefix}.other_athletes`);\n  };\n\n  const commentReactionListBackButton = () => {\n    return (\n      <div className={styles.commentReactionListBackButtonChildren}>\n        <SvgActionsArrowLeftNormalSmall />\n        <div data-testid=\"comment_reaction_back_btn\">\n          {I18n.t(`${prefix}.back`)}\n        </div>\n      </div>\n    );\n  };\n\n  const dismissModal = () => {\n    if (kudosAndCommentsEntityState.isViewingCommentReactionsList) {\n      dispatch({\n        type: CLOSE_COMMENT_REACTION_LIST,\n        payload: { selectedEntityId: entityId }\n      });\n    }\n\n    // if the modal was opened from a hash, remove the hash so that\n    // adding it again will trigger the modal to open again (this only happens\n    // in the super edge case of someone clicking a notification to view kudos\n    // or comments on the current activity, dismissing the modal, and then clicking\n    // the notification to view the kudos or comments on the current activity again)\n    if (\n      window.location.href.includes('#comments') ||\n      window.location.href.includes('#kudos')\n    ) {\n      window.history.replaceState(null, null, ' ');\n    }\n\n    dispatch({ type: CLOSE_MODAL });\n  };\n\n  return (\n    <ModalWithTabs\n      title={modalTitle()}\n      isOpen={true}\n      onDismiss={() => dismissModal()}\n      className={styles.kudosAndCommentsModal}\n      aria-labelledby=\"kudos-comments-modal-title\"\n    >\n      <ModalTabs index={index} onChange={onTabChange} defaultIndex={0}>\n        {!isViewingCommentReactionList ? (\n          <ModalTabList>\n            <ModalTab>{kudosTabTitle()}</ModalTab>\n            {commentsEnabled && <ModalTab>{commentsTabTitle()}</ModalTab>}\n            {hasAchievements && <ModalTab>{acheivementsTabTitle()}</ModalTab>}\n            {groupedActivityData.hasOtherAthletes && (\n              <ModalTab>{otherAthletesTabTitle()}</ModalTab>\n            )}\n          </ModalTabList>\n        ) : (\n          <ModalTabList>\n            <ModalTab className={styles.commentReactionListBackButton}>\n              {commentReactionListBackButton()}\n            </ModalTab>\n          </ModalTabList>\n        )}\n        {!isViewingCommentReactionList ? (\n          <ModalTabPanels>\n            <ModalTabPanel>\n              <div className={styles.tabContent}>{buildKudoList()}</div>\n            </ModalTabPanel>\n            {commentsEnabled && (\n              <ModalTabPanel>\n                <div className={styles.tabContent}>{buildCommentList()}</div>\n              </ModalTabPanel>\n            )}\n            {hasAchievements && (\n              <ModalTabPanel>\n                <div className={styles.tabContent}>\n                  {buildAchievementList()}\n                </div>\n              </ModalTabPanel>\n            )}\n            {hasOtherAthletes && (\n              <ModalTabPanel>\n                <div className={styles.tabContent}>\n                  {buildOtherAthleteList()}\n                </div>\n              </ModalTabPanel>\n            )}\n          </ModalTabPanels>\n        ) : (\n          <ModalTabPanels>\n            <ModalTabPanel>\n              <div>{buildCommentReactionList()}</div>\n            </ModalTabPanel>\n          </ModalTabPanels>\n        )}\n      </ModalTabs>\n    </ModalWithTabs>\n  );\n};\n\nKudosCommentsAndAchievementsModal.propTypes = {\n  title: PropTypes.string.isRequired,\n  segAndBestEffortAchievements: segAndBestEffortAchievementsProps,\n  viewingAthlete: viewingAthleteProps.isRequired,\n  entity: PropTypes.string.isRequired,\n  entityId: PropTypes.string.isRequired,\n  hasOtherAthletes: PropTypes.bool,\n  entityOwner: entityOwnerProps.isRequired,\n  clubMentionsEnabled: PropTypes.bool.isRequired,\n  kudosCount: PropTypes.number.isRequired,\n  commentsEnabled: PropTypes.bool, // this is currently only used by posts (AR work)\n  commentReactionAnalytics: PropTypes.shape({\n    category: PropTypes.string.isRequired,\n    page: PropTypes.string.isRequired,\n    buttonElement: PropTypes.string.isRequired,\n    listElement: PropTypes.string.isRequired\n  }).isRequired\n};\n\nexport default KudosCommentsAndAchievementsModal;\n","import React from 'react';\n\nimport { Modal, ModalBody, ModalActions } from '@strava/ui/Modal';\nimport { Button } from '@strava/ui/Button';\nimport createNetworkingClient from 'utils/networking-client';\nimport I18n from 'utils/I18n';\n\nimport { useKudosAndCommentsContext } from '../KudosAndCommentsContext';\nimport {\n  DELETE_COMMENT_CANCEL,\n  DELETE_COMMENT_COMPLETE\n} from '../kudosAndComments.actions';\nimport { logError } from '../../../../utils/sentry';\n\nconst prefix = 'templates.comment_delete_dialog';\n\nconst CommentDeleteAlertDialog = () => {\n  const {\n    kudosAndCommentsEntityState,\n    dispatch\n  } = useKudosAndCommentsContext();\n\n  const close = () => dispatch({ type: DELETE_COMMENT_CANCEL });\n  const deleteComment = () => {\n    const { comment, entityId } = kudosAndCommentsEntityState;\n    const commentId = comment.comment_id;\n    createNetworkingClient()\n      .delete('/feed/comment', {\n        data: { id: commentId }\n      })\n      .then(() => {\n        dispatch({\n          type: DELETE_COMMENT_COMPLETE,\n          payload: { entityId, commentId }\n        });\n      })\n      .catch((e) => {\n        logError(e);\n      });\n  };\n\n  return (\n    <>\n      <Modal\n        isOpen={kudosAndCommentsEntityState.openCommentDeleteDialog}\n        onDismiss={close}\n        aria-label={I18n.t(`${prefix}.are_you_sure`)}\n      >\n        <ModalBody>{I18n.t(`${prefix}.are_you_sure`)}</ModalBody>\n        <ModalActions>\n          <Button\n            onClick={close}\n            data-testid=\"cancel-delete-comment-btn\"\n            type=\"button\"\n          >\n            {I18n.t(`${prefix}.cancel`)}\n          </Button>\n          <Button\n            variant=\"primary\"\n            onClick={deleteComment}\n            type=\"button\"\n            data-testid=\"confirm-delete-comment-btn\"\n          >\n            {I18n.t(`${prefix}.ok`)}\n          </Button>\n        </ModalActions>\n      </Modal>\n    </>\n  );\n};\n\nexport default CommentDeleteAlertDialog;\n","export { default } from './CommentDeleteAlertDialog';\n","import createNetworkingClient from 'utils/networking-client';\nimport { logError } from '../../../utils/sentry';\nimport { ADD_KUDO } from '../KudosCommentsAndAchievements/kudosAndComments.actions';\n\nconst onClickKudo = ({\n  entityEndpoint,\n  entityId,\n  dispatch,\n  onClickKudoSuccessful\n}) => {\n  createNetworkingClient()\n    .post(`/feed/${entityEndpoint}/${entityId}/kudo`)\n    .then((response) => {\n      if (response && response.status === 200) {\n        onClickKudoSuccessful();\n      }\n    })\n    .then(() => {\n      dispatch({ type: ADD_KUDO });\n    })\n    .catch((e) => {\n      logError(e);\n    });\n};\n\nexport default onClickKudo;\n","import React, { useState, useCallback, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\nimport I18n from 'utils/I18n';\nimport SvgActionsKudoNormalXsmall from '@strava/icons/ActionsKudoNormalXsmall';\nimport SvgActionsKudoHighlightedXsmall from '@strava/icons/ActionsKudoHighlightedXsmall';\nimport { color } from '@strava/ui-tokens/js';\nimport SvgActionsCommentNormalXsmall from '@strava/icons/ActionsCommentNormalXsmall';\nimport Cldr from 'utils/Cldr';\nimport {\n  OPEN_MODAL_COMMENTS_TAB,\n  OPEN_MODAL_KUDOS_TAB\n} from '../../../components/shared/KudosCommentsAndAchievements/kudosAndComments.actions';\nimport styles from './styles.scss';\nimport { updateKudosEndpoint } from '../../../components/shared/utils/updateKudosEndpoint';\nimport KudosAndCommentsContext from '../../../components/shared/KudosCommentsAndAchievements/KudosAndCommentsContext';\nimport useKudosAndCommentsReducer from '../../../hooks/kudosAndComments/useKudosAndCommentsReducer';\nimport { handleKudosAndCommentsNotificationLinkNavigation } from '../../../components/shared/utils/handleKudosAndCommentsNotificationLinkNavigation';\nimport KudosCommentsAndAchievementsModal from '../../../components/shared/KudosCommentsAndAchievements/KudosCommentsAndAchievementsModal/KudosCommentsAndAchievementsModal';\nimport {\n  commentsProps,\n  entitiesWithKudosAndComments,\n  viewingAthleteProps\n} from '../../../components/Feed/props/feed-prop-types';\nimport CommentDeleteAlertDialog from '../../../components/shared/KudosCommentsAndAchievements/CommentDeleteAlertDialog';\nimport onClickKudo from '../../../components/shared/utils/onClickKudo';\n\nconst ADPKudosAndComments = ({\n  canKudo,\n  commentsEnabled,\n  comments,\n  kudosCount,\n  entity,\n  entityId,\n  ownerName,\n  ownerAvatarUrl,\n  ownerAthleteId,\n  activityName,\n  clubMentionsEnabled,\n  ownedByCurrentAthlete,\n  viewingAthlete\n}) => {\n  const [canKudoStatus, setCanKudoStatus] = useState(canKudo);\n  const [currentKudoCount, setCurrentKudoCount] = useState(kudosCount);\n  const [hasKudoed, setHasKudoed] = useState(false);\n  const entityEndpoint = updateKudosEndpoint({ entity });\n  const prefix = 'components.feed.social';\n\n  const { kudosAndCommentsEntityState, dispatch } = useKudosAndCommentsReducer(\n    entityId,\n    entity,\n    comments\n  );\n  const providerState = {\n    kudosAndCommentsEntityState,\n    dispatch\n  };\n\n  // Using comments from kudosAndCommentsEntityState rather than ruby props\n  // allows us to know when a new comment has been posted\n  const entityStateComments = kudosAndCommentsEntityState.comments[entityId];\n  const commentReactionAnalytics = {\n    category: 'activity_detail',\n    page: 'comment',\n    buttonElement: 'like_comment_btn_on_modal',\n    listElement: 'like_list_btn_on_modal'\n  };\n  const entityOwner = {\n    displayImage: ownerAvatarUrl,\n    name: ownerName,\n    profileUrl: `/athletes/${ownerAthleteId}`,\n    type: 'athlete'\n  };\n\n  const onClickKudoSuccessful = useCallback(() => {\n    // Not allowed to kudo more than once\n    setCanKudoStatus(false);\n    setHasKudoed(true);\n  }, []);\n\n  useEffect(() => {\n    if (kudosAndCommentsEntityState.kudoPosted) {\n      setCurrentKudoCount((prev) => prev + 1);\n      onClickKudoSuccessful();\n    }\n  }, [kudosAndCommentsEntityState.kudoPosted, onClickKudoSuccessful, dispatch]);\n\n  useEffect(() => {\n    handleKudosAndCommentsNotificationLinkNavigation({ entityId, dispatch });\n\n    const handleHashChange = (event) => {\n      // clicking on a notification to view kudos or comments on the current activity will\n      // add the `kudos` or `comments` hash to the url but not reload the page. We need to listen\n      // to the hash change event to open the modal when this happens.\n      handleKudosAndCommentsNotificationLinkNavigation({\n        entityId,\n        dispatch,\n        url: event.newUrl\n      });\n    };\n\n    window.addEventListener('hashchange', handleHashChange);\n\n    return () => window.removeEventListener('hashchange', handleHashChange);\n  }, [dispatch, entityId]);\n\n  return (\n    <KudosAndCommentsContext.Provider value={providerState}>\n      <React.Suspense fallback={<div />}>\n        <div className={styles.adpKudosCommentsContainer}>\n          <div className={styles.kudosButtonContainer}>\n            {canKudoStatus && (\n              <Button\n                className={styles.giveKudosBtn}\n                onClick={() =>\n                  onClickKudo({\n                    entityEndpoint,\n                    entityId,\n                    dispatch,\n                    onClickKudoSuccessful\n                  })\n                }\n                data-testid=\"give-kudos-btn\"\n              >\n                {I18n.t(`${prefix}.icon.give_kudos`)}\n              </Button>\n            )}\n            <Button\n              type=\"button\"\n              variant=\"default\"\n              className={styles.socialButton}\n              title={I18n.t(`${prefix}.view_all_kudos`)}\n              onClick={() =>\n                dispatch({\n                  type: OPEN_MODAL_KUDOS_TAB,\n                  payload: {\n                    element: 'kudo_icon',\n                    selectedEntityId: entityId\n                  }\n                })\n              }\n              data-testid=\"adp-kudos_button\"\n            >\n              {canKudoStatus || ownedByCurrentAthlete ? (\n                <SvgActionsKudoNormalXsmall\n                  fill={color.colorExtendedNeutralN2}\n                  data-testid=\"unfilled_kudos\"\n                  className={styles.unfilledKudoIcon}\n                />\n              ) : (\n                <SvgActionsKudoHighlightedXsmall\n                  className={hasKudoed ? styles.kudoedIcon : styles.kudoIcon}\n                  fill={color.colorCoreO3}\n                  data-testid=\"filled_kudos\"\n                />\n              )}\n              <div title={I18n.t(`${prefix}.view_all_kudos`)}>\n                <span data-testid=\"kudos_count\" className={styles.count}>\n                  {currentKudoCount}\n                </span>\n              </div>\n            </Button>\n          </div>\n\n          {commentsEnabled && (\n            <Button\n              type=\"button\"\n              variant=\"default\"\n              className={styles.socialButton}\n              data-testid=\"open_comment_modal_button\"\n              onClick={() =>\n                dispatch({\n                  type: OPEN_MODAL_COMMENTS_TAB,\n                  payload: { element: 'comment', selectedEntityId: entityId }\n                })\n              }\n              title={I18n.t(`${prefix}.view_all_comments`)}\n            >\n              <SvgActionsCommentNormalXsmall className={styles.commentIcon} />\n              <span data-testid=\"comments_count\" className={styles.count}>\n                {Cldr.formatDecimal(entityStateComments.length)}\n              </span>\n            </Button>\n          )}\n          {(kudosAndCommentsEntityState.openKudosCommentModal ||\n            kudosAndCommentsEntityState.isViewingCommentReactionsList) &&\n            kudosAndCommentsEntityState.selectedEntityId === entityId && (\n              <KudosCommentsAndAchievementsModal\n                entity={entity}\n                entityId={entityId}\n                entityOwner={entityOwner}\n                hasOtherAthletes={entity === 'group_activity'}\n                title={activityName}\n                viewingAthlete={viewingAthlete}\n                kudosCount={currentKudoCount}\n                clubMentionsEnabled={clubMentionsEnabled}\n                commentsEnabled={commentsEnabled}\n                segAndBestEffortAchievements={[]}\n                commentReactionAnalytics={commentReactionAnalytics}\n              />\n            )}\n          <CommentDeleteAlertDialog />\n        </div>\n      </React.Suspense>\n    </KudosAndCommentsContext.Provider>\n  );\n};\n\nADPKudosAndComments.propTypes = {\n  canKudo: PropTypes.bool.isRequired,\n  comments: commentsProps.isRequired,\n  kudosCount: PropTypes.number.isRequired,\n  clubMentionsEnabled: PropTypes.bool.isRequired,\n  entityId: PropTypes.string.isRequired,\n  ownerName: PropTypes.string.isRequired,\n  ownerAvatarUrl: PropTypes.string.isRequired,\n  ownedByCurrentAthlete: PropTypes.bool.isRequired,\n  ownerAthleteId: PropTypes.number.isRequired,\n  activityName: PropTypes.string.isRequired,\n  commentsEnabled: PropTypes.bool.isRequired,\n  entity: entitiesWithKudosAndComments.isRequired,\n  viewingAthlete: viewingAthleteProps.isRequired\n};\n\nexport default ADPKudosAndComments;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalBody, ModalActions } from '@strava/ui/Modal';\nimport { Button } from '@strava/ui/Button';\nimport createNetworkingClient from 'utils/networking-client';\nimport I18n from 'utils/I18n';\nimport { logError } from '../../../../utils/sentry';\n\nconst prefix = 'templates.discussions';\n\nconst EntityDeleteAlertDialog = ({\n  entityId,\n  isDeleteModalOpen,\n  setIsDeleteModalOpen,\n  entityParentType,\n  clubOrAthleteId\n}) => {\n  const redirectionURL =\n    entityParentType === 'Club'\n      ? `/clubs/${clubOrAthleteId}/discussion`\n      : `/athletes/${clubOrAthleteId}`;\n\n  // We only allow posts to be deleted for now\n  const deletePost = () => {\n    createNetworkingClient()\n      .delete(`/posts/${entityId}`)\n      .then(() => {\n        setIsDeleteModalOpen(false);\n        window.location.assign(redirectionURL);\n      })\n      .catch((e) => {\n        logError(e);\n      });\n  };\n\n  return (\n    <>\n      <Modal\n        isOpen={isDeleteModalOpen}\n        onDismiss={() => setIsDeleteModalOpen(false)}\n        aria-label={I18n.t(`${prefix}.post_view.confirm_delete_post`)}\n      >\n        <ModalBody>\n          {I18n.t(`${prefix}.post_view.confirm_delete_post`)}\n        </ModalBody>\n        <ModalActions>\n          <Button\n            onClick={() => setIsDeleteModalOpen(false)}\n            data-testid=\"cancel-delete-post-btn\"\n            type=\"button\"\n          >\n            {I18n.t('components.button_cta_with_cancel.cancel')}\n          </Button>\n          <Button\n            variant=\"primary\"\n            onClick={deletePost}\n            type=\"button\"\n            data-testid=\"confirm-delete-post-btn\"\n          >\n            {I18n.t('components.button_cta_with_cancel.ok')}\n          </Button>\n        </ModalActions>\n      </Modal>\n    </>\n  );\n};\n\nEntityDeleteAlertDialog.propTypes = {\n  entityId: PropTypes.string.isRequired,\n  isDeleteModalOpen: PropTypes.bool.isRequired,\n  setIsDeleteModalOpen: PropTypes.func.isRequired,\n  entityParentType: PropTypes.string.isRequired,\n  clubOrAthleteId: PropTypes.number.isRequired\n};\n\nexport default EntityDeleteAlertDialog;\n","// extracted by mini-css-extract-plugin\nexport default {\"kudos-and-comments-container\":\"PostsKudosAndComments--kudos-and-comments-container--PSHym\",\"kudosAndCommentsContainer\":\"PostsKudosAndComments--kudos-and-comments-container--PSHym\",\"kudo-icon-button\":\"PostsKudosAndComments--kudo-icon-button--uaO2m\",\"kudoIconButton\":\"PostsKudosAndComments--kudo-icon-button--uaO2m\",\"kudos-container\":\"PostsKudosAndComments--kudos-container--3Rds0\",\"kudosContainer\":\"PostsKudosAndComments--kudos-container--3Rds0\",\"kudo-count-btn\":\"PostsKudosAndComments--kudo-count-btn--xLoBz\",\"kudoCountBtn\":\"PostsKudosAndComments--kudo-count-btn--xLoBz\",\"comments-container\":\"PostsKudosAndComments--comments-container--NZAmt\",\"commentsContainer\":\"PostsKudosAndComments--comments-container--NZAmt\",\"comment-icon\":\"PostsKudosAndComments--comment-icon--D3tXd\",\"commentIcon\":\"PostsKudosAndComments--comment-icon--D3tXd\",\"comments-count\":\"PostsKudosAndComments--comments-count--B8KD1\",\"commentsCount\":\"PostsKudosAndComments--comments-count--B8KD1\",\"report\":\"PostsKudosAndComments--report--baCmo\",\"options-menu\":\"PostsKudosAndComments--options-menu--2jCbd\",\"optionsMenu\":\"PostsKudosAndComments--options-menu--2jCbd\",\"open\":\"PostsKudosAndComments--open--vcYBA\",\"options-dropdown-menu\":\"PostsKudosAndComments--options-dropdown-menu--sY22f\",\"optionsDropdownMenu\":\"PostsKudosAndComments--options-dropdown-menu--sY22f\",\"kudo-icon\":\"PostsKudosAndComments--kudo-icon--JaJx1\",\"kudoIcon\":\"PostsKudosAndComments--kudo-icon--JaJx1\",\"kudoed-icon\":\"PostsKudosAndComments--kudoed-icon--8vay8\",\"kudoedIcon\":\"PostsKudosAndComments--kudoed-icon--8vay8\",\"newKudo\":\"PostsKudosAndComments--newKudo--uM7gV\"};","import React, { useState, useCallback, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@strava/ui/Button';\nimport { color } from '@strava/ui-tokens/js';\nimport {\n  DropdownMenu,\n  DropdownButton,\n  DropdownList,\n  DropdownLink,\n  DropdownItem\n} from '@strava/ui/Dropdown';\nimport SvgActionsKudoNormalSmall from '@strava/icons/ActionsKudoNormalSmall';\nimport SvgActionsKudoHighlightedSmall from '@strava/icons/ActionsKudoHighlightedSmall';\nimport SvgActionsCommentNormalSmall from '@strava/icons/ActionsCommentNormalSmall';\nimport SvgNavigationMoreHighlightedSmall from '@strava/icons/NavigationMoreHighlightedSmall';\nimport Cldr from 'utils/Cldr';\nimport I18n from 'utils/I18n';\nimport KudosAndCommentsContext from '../../../components/shared/KudosCommentsAndAchievements/KudosAndCommentsContext';\nimport {\n  OPEN_MODAL_KUDOS_TAB,\n  OPEN_MODAL_COMMENTS_TAB\n} from '../../../components/shared/KudosCommentsAndAchievements/kudosAndComments.actions';\nimport { handleKudosAndCommentsNotificationLinkNavigation } from '../../../components/shared/utils/handleKudosAndCommentsNotificationLinkNavigation';\nimport {\n  commentsProps,\n  viewingAthleteProps\n} from '../../../components/Feed/props/feed-prop-types';\nimport KudosCommentsAndAchievementsModal from '../../../components/shared/KudosCommentsAndAchievements/KudosCommentsAndAchievementsModal/KudosCommentsAndAchievementsModal';\nimport useKudosAndCommentsReducer from '../../../hooks/kudosAndComments/useKudosAndCommentsReducer';\nimport CommentDeleteAlertDialog from '../../../components/shared/KudosCommentsAndAchievements/CommentDeleteAlertDialog';\nimport onClickKudo from '../../../components/shared/utils/onClickKudo';\nimport EntityDeleteAlertDialog from '../../../components/Feed/components/shared/EntityDeleteAlertDialog';\nimport styles from './styles.scss';\nimport { FEED_ENTRY_TYPES } from '../../../components/Feed/constants';\n\nconst PostsKudosAndComments = ({\n  canKudo,\n  commentsEnabled,\n  comments,\n  editPostPath,\n  kudosCount,\n  postEditable,\n  entityId,\n  viewingAthlete,\n  post,\n  authorAvatarUrl,\n  authorDisplayName,\n  ownedByCurrentAthlete,\n  isDeletable = false,\n  clubMentionsEnabled\n}) => {\n  const [canKudoStatus, setCanKudoStatus] = useState(canKudo);\n  const [currentKudoCount, setCurrentKudoCount] = useState(kudosCount);\n  const [hasKudoed, setHasKudoed] = useState(false);\n  const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);\n\n  const entity = 'post';\n\n  const commentReactionAnalytics = {\n    category: 'post_detail',\n    page: FEED_ENTRY_TYPES.post,\n    buttonElement: 'like_comment_btn_on_modal',\n    listElement: 'like_list_btn_on_modal'\n  };\n\n  const { kudosAndCommentsEntityState, dispatch } = useKudosAndCommentsReducer(\n    entityId,\n    entity,\n    comments\n  );\n\n  const providerState = {\n    kudosAndCommentsEntityState,\n    dispatch\n  };\n\n  // Using comments from kudosAndCommentsEntityState rather than ruby props\n  // allows us to know when a new comment has been posted\n  const entityStateComments = kudosAndCommentsEntityState.comments[entityId];\n\n  const onClickKudoSuccessful = useCallback(() => {\n    // Not allowed to kudo more than once\n    setCanKudoStatus(false);\n    setHasKudoed(true);\n  }, []);\n\n  useEffect(() => {\n    if (kudosAndCommentsEntityState.kudoPosted) {\n      setCurrentKudoCount((prev) => prev + 1);\n      onClickKudoSuccessful();\n    }\n  }, [kudosAndCommentsEntityState.kudoPosted, dispatch, onClickKudoSuccessful]);\n\n  useEffect(() => {\n    handleKudosAndCommentsNotificationLinkNavigation({ entityId, dispatch });\n  }, [dispatch, entityId]);\n\n  const entityOwner = {\n    displayImage: authorAvatarUrl,\n    name: authorDisplayName,\n    profileUrl: `/athletes/${post.athlete_id}`,\n    type: post.parent_type === 'Club' ? 'club' : 'athlete'\n  };\n\n  return (\n    <>\n      <KudosAndCommentsContext.Provider value={providerState}>\n        <div className={styles.kudosAndCommentsContainer}>\n          <div className={styles.kudosContainer}>\n            <Button\n              data-testid=\"give-kudos-btn\"\n              className={styles.kudoIconButton}\n              onClick={\n                canKudoStatus\n                  ? () =>\n                      onClickKudo({\n                        entityEndpoint: entity,\n                        entityId,\n                        dispatch,\n                        onClickKudoSuccessful\n                      })\n                  : () =>\n                      dispatch({\n                        type: OPEN_MODAL_KUDOS_TAB,\n                        payload: {\n                          element: 'kudo_icon',\n                          selectedEntityId: entityId\n                        }\n                      })\n              }\n            >\n              {canKudoStatus || ownedByCurrentAthlete ? (\n                <SvgActionsKudoNormalSmall data-testid=\"unfilled_kudos\" />\n              ) : (\n                <SvgActionsKudoHighlightedSmall\n                  fill={color.colorCoreO3}\n                  data-testid=\"filled_kudos\"\n                  className={hasKudoed ? styles.kudoedIcon : styles.kudoIcon}\n                />\n              )}\n            </Button>\n            <Button\n              className={styles.kudoCountBtn}\n              onClick={() =>\n                dispatch({\n                  type: OPEN_MODAL_KUDOS_TAB,\n                  payload: {\n                    element: 'kudo_icon',\n                    selectedEntityId: entityId\n                  }\n                })\n              }\n            >\n              <span data-testid=\"kudos_count\">\n                {Cldr.formatDecimal(currentKudoCount)}\n              </span>\n            </Button>\n          </div>\n          {commentsEnabled && (\n            <div className={styles.commentsContainer}>\n              <Button\n                className={styles.commentsButton}\n                data-testid=\"open_comment_modal_button\"\n                onClick={() =>\n                  dispatch({\n                    type: OPEN_MODAL_COMMENTS_TAB,\n                    payload: { element: 'comment', selectedEntityId: entityId }\n                  })\n                }\n              >\n                <SvgActionsCommentNormalSmall\n                  className={styles.commentIcon}\n                  fill={color.colorExtendedNeutralN4}\n                />\n                <div\n                  className={styles.commentsCount}\n                  data-testid=\"comments_count\"\n                >\n                  {Cldr.formatDecimal(entityStateComments.length)}\n                </div>\n              </Button>\n            </div>\n          )}\n          <div className={styles.report} data-testid=\"report-drop-down\">\n            <DropdownMenu className={styles.optionsMenu}>\n              <DropdownButton className={styles.actionBtn}>\n                <SvgNavigationMoreHighlightedSmall\n                  fill={color.colorExtendedNeutralN4}\n                />\n              </DropdownButton>\n              <DropdownList>\n                {postEditable ? (\n                  <DropdownLink href={editPostPath}>\n                    {I18n.t('components.discussions.posts.edit')}\n                  </DropdownLink>\n                ) : (\n                  <DropdownLink href={`/posts/${post.id}/feedback`}>\n                    <span data-testid=\"report-btn\">\n                      {I18n.t(`templates.kudos_and_comments_modal.report`)}\n                    </span>\n                  </DropdownLink>\n                )}\n                {isDeletable && (\n                  <DropdownItem\n                    data-testid=\"delete-btn\"\n                    onClick={() => setIsDeleteModalOpen(true)}\n                  >\n                    {I18n.t('templates.generic.delete')}\n                  </DropdownItem>\n                )}\n              </DropdownList>\n            </DropdownMenu>\n          </div>\n          {(kudosAndCommentsEntityState.openKudosCommentModal ||\n            kudosAndCommentsEntityState.isViewingCommentReactionsList) &&\n            kudosAndCommentsEntityState.selectedEntityId === entityId && (\n              <KudosCommentsAndAchievementsModal\n                entity={entity}\n                entityId={entityId}\n                entityOwner={entityOwner}\n                hasOtherAthletes={entity === 'group_activity'}\n                title={post.summary}\n                viewingAthlete={viewingAthlete}\n                clubMentionsEnabled={clubMentionsEnabled}\n                kudosCount={currentKudoCount}\n                commentsEnabled={commentsEnabled}\n                segAndBestEffortAchievements={[]}\n                commentReactionAnalytics={commentReactionAnalytics}\n              />\n            )}\n          <CommentDeleteAlertDialog />\n          <EntityDeleteAlertDialog\n            entityId={post.id.toString()}\n            isDeleteModalOpen={isDeleteModalOpen}\n            setIsDeleteModalOpen={setIsDeleteModalOpen}\n            entityParentType={post.parent_type}\n            clubOrAthleteId={post.parent_id}\n          />\n        </div>\n      </KudosAndCommentsContext.Provider>\n    </>\n  );\n};\n\nPostsKudosAndComments.propTypes = {\n  canKudo: PropTypes.bool.isRequired,\n  comments: commentsProps.isRequired,\n  kudosCount: PropTypes.number.isRequired,\n  entityId: PropTypes.string.isRequired,\n  editPostPath: PropTypes.string.isRequired,\n  postEditable: PropTypes.bool.isRequired,\n  commentsEnabled: PropTypes.bool.isRequired,\n  viewingAthlete: viewingAthleteProps.isRequired,\n  ownedByCurrentAthlete: PropTypes.bool.isRequired,\n  post: PropTypes.shape({\n    announcement: PropTypes.bool.isRequired,\n    athlete_id: PropTypes.number.isRequired,\n    comments_enabled: PropTypes.number.isRequired,\n    created_at: PropTypes.string.isRequired,\n    id: PropTypes.number.isRequired,\n    parent_id: PropTypes.number.isRequired,\n    parent_type: PropTypes.string.isRequired,\n    post: PropTypes.string.isRequired,\n    summary: PropTypes.string.isRequired,\n    updated_at: PropTypes.string.isRequired\n  }).isRequired,\n  authorAvatarUrl: PropTypes.string.isRequired,\n  authorDisplayName: PropTypes.string.isRequired,\n  isDeletable: PropTypes.bool,\n  clubMentionsEnabled: PropTypes.bool.isRequired\n};\n\nexport default PostsKudosAndComments;\n","import '../globalLibraries';\nimport '../coreLibraries';\n\n// Strava\n//\n// This is the main entry point for react components. If you create a new\n// component you will need to register in here.\n//\n// adding random string to force recompile:\n// A998D3152224818D225A880A9B627F1FB4484DD7E408EACA1B243326ED4AA01B\nimport ReactComponentMounter from '../utils/react-component-mounter';\n\n// Activity pages\nimport ActivityEditMapVisibilityApp from '../apps/activities/EditMapVisibilityApp';\nimport ActivityTagging from '../apps/activities/ActivityTagging';\nimport ActivityTruncate from '../apps/activities/Truncate';\nimport RelativeEffort from '../apps/activities/RelativeEffort';\nimport ExcludedEfforts from '../apps/activities/ExcludedEfforts';\nimport CorrectDistance from '../apps/activities/CorrectDistance/CorrectDistance';\nimport CorrectElevation from '../apps/activities/CorrectElevation/CorrectElevation';\nimport MapTypeInfo from '../apps/activities/MapTypeInfo/MapTypeInfo';\nimport HideStatsInfo from '../apps/activities/HideStatsInfo/HideStatsInfo';\nimport ActivityDetailsMapWrapper from '../components/ActivityDetailsMap';\n// Athlete pages\nimport LimitedProfileEntry from '../apps/AthleteProfileApp/components/LimitedProfileEntry';\nimport FollowsList from '../apps/AthleteProfileApp/components/FollowsList';\n// Settings pages\nimport EditPastActivitiesApp from '../apps/settings/EditPastActivitiesApp';\nimport PartnerIntegrationsApp from '../apps/settings/PartnerIntegrations';\nimport HideAddressApp from '../apps/settings/privacy/HideAddressApp';\nimport HideAnywhereApp from '../apps/settings/privacy/HideAnywhereApp';\n// Challenge pages\nimport Show from '../apps/challenges/Show';\n// Dashboard pages\nimport MapVisModal from '../apps/dashboard/components/MapVisModal';\n// Other pages\nimport SegmentDetailsSideBar from '../apps/segments/SegmentDetailsSideBar';\nimport StarredSegment from '../components/StarredSegment';\nimport VerifiedSegmentModal from '../components/VerifiedSegmentModal';\nimport VisibilitySetting from '../components/VisibilitySetting';\nimport MapVisibilityControls from '../components/MapVisibilityControls';\nimport MentionableComment from '../components/MentionableComment';\nimport PerceivedExertionInput from '../components/PerceivedExertionInput';\nimport ProgressGoalsRelativeEffortTab from '../components/ProgressGoalsRelativeEffortTab';\nimport FeedbackApp from '../apps/FeedbackApp';\nimport Microfrontend from '../apps/Microfrontend';\nimport LcLBespokeSegmentProgress from '../apps/website_v2/LcLBespokeSegmentProgress';\nimport ProgressGoalsSidebarTabContainer from '../components/ProgressGoals/SidebarTabContainer';\nimport ActivityDescriptionEdit from '../components/ActivityDescriptionEdit';\nimport MediaThumbnailList from '../components/MediaThumbnailList';\nimport AthleteProfileHeaderMediaGrid from '../components/AthleteProfileHeaderMediaGrid';\nimport EmbedModalWrapper from '../components/EmbedModal/EmbedModalWrapper';\nimport MediaUploader from '../components/MediaUploader';\nimport EditActivityButton from '../components/EditActivityButton';\n// Shared\nimport CommentReactionList from '../components/shared/KudosCommentsAndAchievements/CommentReactionList/CommentReactionList';\n// Onboarding\nimport AthleteName from '../apps/Onboarding/components/AthleteName';\nimport ADPKudosAndComments from '../apps/activities/ADPKudosAndComments/ADPKudosAndComments';\nimport PostsKudosAndComments from '../apps/posts/PostsKudosAndComments/PostsKudosAndComments';\n\nReactComponentMounter.register({\n  ActivityDescriptionEdit,\n  ActivityEditMapVisibilityApp,\n  ActivityTagging,\n  ActivityTruncate,\n  RelativeEffort,\n  ExcludedEfforts,\n  CorrectDistance,\n  CorrectElevation,\n  MapTypeInfo,\n  HideStatsInfo,\n  EditPastActivitiesApp,\n  EmbedModalWrapper,\n  PartnerIntegrationsApp,\n  HideAddressApp,\n  HideAnywhereApp,\n  SegmentDetailsSideBar,\n  StarredSegment,\n  VerifiedSegmentModal,\n  VisibilitySetting,\n  ActivityDetailsMapWrapper,\n  MapVisibilityControls,\n  MapVisModal,\n  MentionableComment,\n  PerceivedExertionInput,\n  ProgressGoalsRelativeEffortTab,\n  Show,\n  FeedbackApp,\n  LimitedProfileEntry,\n  FollowsList,\n  Microfrontend,\n  LcLBespokeSegmentProgress,\n  ProgressGoalsSidebarTabContainer,\n  MediaThumbnailList,\n  AthleteProfileHeaderMediaGrid,\n  CommentReactionList,\n  AthleteName,\n  ADPKudosAndComments,\n  MediaUploader,\n  PostsKudosAndComments,\n  EditActivityButton\n});\n\nexport { Microfrontend, ReactComponentMounter };\n"],"names":["cov_wiw2hjucb","customStyles","overlay","zIndex","afterOpen","beforeClose","_ref","ariaHideApp","shouldCloseOnOverlayClick","props","ReactModal","closeTimeoutMS","isOpen","onRequestClose","bodyOpenClassName","styles","overlayClassName","base","className","style","dialogClassName","onAfterOpen","React","children","cov_158u4w8lgy","types","TOGGLE_MODAL","HIDE_INTERSTITIAL","INVITE_SUBMITTING","INVITE_COMPLETE","INVITE_ERROR","FOLLOWERS_LOADING","FOLLOWERS_COMPLETE","FOLLOWERS_ERROR","toggleModal","type","hideInterstitial","inviteError","athleteId","invite","activityId","dispatch","inviteSubmitting","createNetworkingClient","post","invitedAthleteId","then","response","status","inviteComplete","catch","followersError","error","message","fetchFollowers","input","searchTerm","undefined","get","followers","data","results","e","cov_5ufxkkfm4","alt","src","banner","srcSet","retinaBanner","I18n","t","activity_type","activityType","Button","variant","onClick","triggerContinue","cov_wtv4hqcwm","followerStatus","READY","SUBMITTING","COMPLETE","ERROR","cov_1rux9vo9fi","FollowersListItem","constructor","addButtonClickHandler","handleInvite","addButtonClassName","follower","addButtonVariant","renderSubmitButtonContent","Spinner","renderErrorMessage","name","render","this","location","avatarUrl","Avatar","size","disabled","cov_4hqdke0vh","FollowersList","state","showEmptyState","renderLoadingState","renderErrorState","renderEmptyState","href","findFriendsUrl","renderFollowersList","map","key","filterList","event","timeout","clearTimeout","val","target","value","toLowerCase","setState","setTimeout","handleFetchFollowers","componentDidMount","length","listContent","loading","autoFocus","placeholder","onChange","connect","cov_2pd7v3r2o1","TaggingLinkCopy","showCopiedText","branchLink","branchLinkData","desktopUrl","onInputClick","select","copyToClipboard","successful","document","execCommand","hideCopiedText","hideCopiedTextTimer","athleteName","signature","inviterAvatarUrl","channel","feature","$desktop_url","strava_deeplink_url","inviter_athlete_id","toString","inviter_first_name","inviter_avatar_url","inviter_tagged_activity_id","inviter_activity_type_key","inviter_activity_signature","redirect_after_signup","window","Strava","BranchIO","createLink","done","link","err","console","warn","componentWillUnmount","ref","el","readOnly","cov_1w06mho1v8","cov_2261qwkfr6","Tagging","openModal","handleToggleModal","closeModal","addOthersBtn","someoneWithYou","continueClicked","handleHideInterstitial","renderInviteList","inviteContent","showInterstitial","title","TaggingInterstitial","TaggingInviteContainer","Modal","isModalOpen","groupActivity","cov_2mvtgbgsml","prepareFollowerItem","updateFollowerStatus","action","reducer","cov_2ausbcw0o7","ActivityTagging","store","createStore","applyMiddleware","thunk","Provider","cov_ic6veamb1","startPopup","endPopup","withMap","zones","start","end","zonesWithId","zone","i","id","createPopup","lngLat","mapboxgl","closeButton","closeOnClick","maxWidth","setLngLat","setHTML","addTo","removeStartPopup","remove","removeEndPopup","getFeaturesByLatLng","latLng","queryRenderedFeatures","project","latLngToLngLat","layers","z","checkStartPopup","features","forEach","_ref2","properties","lng","lat","checkEndPopup","_ref3","useEffect","PolygonCircle","position","radius","fillColor","fillOpacity","strokeColor","strokeOpacity","strokeWeight","strokeOffset","cov_zn40juxf3","currentStep","primaryLatLng","secondaryLatlng","fitBounds","privacyZones","showSecondaryLine","Map","options","minZoom","maxZoom","StyleNav","FitBounds","latlng","slice","updateOnLatlngChange","PrivacyZones","Polyline","lineColor","outlineWidth","opacity","Marker","WaypointCircle","secondaryStartMarker","secondaryEndMarker","cov_23pnfuza74","domain","min","max","handle","getHandleProps","role","left","percent","cov_23fnqmvwcm","source","width","cov_1sskum1sg3","step","scopeTo","onUpdate","useState","setStart","setEnd","Slider","mode","values","Tracks","right","tracks","getTrackProps","Track","Rail","_ref4","getRailProps","Handles","_ref5","handles","Handle","backgroundColor","s","x","getStartBackValue","getStartForwardValue","getEndBackValue","getEndForwardValue","cov_3riomv1xf","fetchStreams","params","stream_types","Error","cov_20jw14w1jo","Truncate","activityLatlng","cropLatlng","altitude","distance","handleRangeSliderChange","startIndex","endIndex","getElementById","parseInt","unitSystem","RangeSlider","RangeSelectMap","checkLatlngChanges","ElevationChart","height","units","elevation","scopeColor","formatters","ElevationFormatter","elevationFormatter","DistanceFormatter","distanceFormatter","PercentFormatter","percentFormatter","cov_44qt4kur","I18nPrefix","handleContinueClick","fadeOut","setFadeOut","cov_y1wlzwp7l","COLORS","NO_ZONE","PRIMARY","SECONDARY","LOW_ZONE","OPTIMUM_ZONE","HIGH_ZONE","ZONES","NONE","LOW","OPTIMUM","STEADY_PROGRESS","HIGH","VERY_HIGH","TRAINING_IMPACT","LOWER_RATIO","MID_RATIO","UPPER_RATIO","CONSTS","getZone","buckets","b","getPrimaryColor","getSecondaryColor","getTrainingImpactColor","ratio","color","getDateFromYearWeek","year","week","simple","Date","dow","getDay","ISOweekStart","setDate","getDate","getFirstDayOfWeekFromDate","date","isCurrentWeek","now","setHours","firstDayOfWeek","monday","sunday","cov_1o2qce85at","trendingRatio","summary","trainingImpactColor","infoIcon","intensity","score","label","bucket","impact","textKey","getTrainingImpactText","cov_2ctw9tlfoz","WeekInsight","getTitleText","cumulativeScore","titles","getDescriptionText","descriptions","dateRange","activityWeek","Cldr","formatDateTime","format","reUtils","cumulativeScoreColor","cov_2oemzrrsg1","WEEKDAY_KEYS","dailyScores","tickTextStyle","fill","fontSize","barData","v","w","calendar","weekdays","names_form","BarChart","XAxis","dataKey","tick","stroke","minTickGap","dy","Bar","barSize","minPointSize","cov_2ga18drrbr","WeeklyGraph","onMouseMove","d","activeTooltipIndex","isTooltipActive","selectedWeekIndex","snapToPoint","formatXAxisTick","weeklyScores","rangeData","getTime","cumulative_score","range","scores","maxScore","Math","currentWeekIndex","tickColor","activeDotFillColor","activeDotStrokeColor","showCurrentWeekIndicator","ResponsiveContainer","ComposedChart","margin","top","CartesianGrid","horizontal","scale","tickLine","tickFormatter","YAxis","dx","orientation","dataMax","ticks","Area","isAnimationActive","activeDot","Line","dot","strokeWidth","r","Tooltip","content","cursor","ReferenceLine","ReferenceDot","y","cov_14qn7b2dkb","currentActivityId","activities","table","activity","row","ActivityIcon","start_date_local","private","lockIconWrap","lockIcon","time","movingTime","moving_time","timespanFormatter","display","trending_ratio","suffer_score","cov_2m0ju6irvo","WeeklySummary","index","onMouseEnter","mouseLeaveTimer","onMouseLeave","selectedWeek","WeekChart","daily_scores","Activities","cov_uig0garqv","TrainingImpact","isLoading","disclaimerAgreed","activitySummary","handleDataFetchComplete","weekly_scores","reverse","selected_week_index","bucket_detail","relative_effort","disclaimer_agreed","handleDisclaimerContinueClick","activity_id","showDisclaimer","Disclaimer","ActivitySummary","cov_224tr3t04l","unit","unit_long","unit_short","cov_1wrqnjcc1j","entity","flaggedEfforts","speedUnit","onDismiss","trackModalClick","trackV2","element","category","page","ModalOverlay","ModalContent","ModalCloseButton","ModalTitle","ModalBody","t_html","learn_more_path","onLinkClick","path","AbbrUnit","elev_difference","avg_grade","elapsed_time","avg_speed","cov_i3pvv0klq","cov_1dldqw56vc","setIsLoading","setIsModalOpen","setFlaggedEfforts","setSpeedUnit","fetchData","url","flagged_efforts","speed_unit","finally","spinner","button","count","ExcludedSegmentEffortsModal","cov_1tmqhywgqe","activeSource","toggleModalOpen","modalContents","ModalActions","CorrectDistanceModal","hasClose","method","csrfToken","cov_1ampwaj1gi","lookupExists","adjusting","formAction","support_article_url","CorrectElevationModal","cov_2ce7gw0y81","ContentModal","clsx","NavigationInformationNormalXsmall","cov_u5ou400bb","MapTypeInfo","MapTypeModal","InfoModal","cov_22d7sx4du9","HideStatsInfo","cov_1btsnmy7hl","showCreateRoute","showGpxDownload","showFullScreenToggle","mapStyle","handleMapStyleChange","hasPrivacyZones","isFullscreen","setIsFullscreen","isSafari","test","navigator","userAgent","body","classList","add","styleOptions","Object","keys","MAP_STYLES","customDropdownStyles","control","minHeight","borderColor","valueContainer","padding","singleValue","marginBottom","indicatorSeparator","dropdownIndicator","alignItems","menu","marginTop","option","ActivityRoutesNormalXsmall","ActionsDownloadNormalXsmall","DropdownSelect","find","isSearchable","blurInputOnSelect","components","DropdownIndicator","ActionsArrowDownNormalXsmall","handleFullscreenToggleClick","toggleFullscreenEvent","CustomEvent","dispatchEvent","ActionsFullScreenExitNormalXsmall","ActionsFullScreenEnterNormalXsmall","cov_biaql3l6g","polyline","privacyZoneFromStartIndex","privacyZoneFromEndIndex","privacyZonePolylineStyle","cov_2r40qq09zt","publicServiceEnv","VIDEOJS_LOG_LEVEL","QUALITY_PLAY_DURATION","videojs","log","level","mediaId","onReady","videoRef","useRef","playerRef","hasPlay","setHasPlay","hasQualityPlay","setHasQualityPlay","current","player","isEqual","sources","autoplay","controls","muted","loop","controlBar","dispose","trackAction","useCallback","media_id","onPlay","currentTime","onTimeUpdate","playsInline","autoPlay","onEnded","cov_17ims2noge","cov_2ptdhlpr3d","media","video","large","photo_id","Video","responsive","fluid","poster","cov_29di2l57rw","cov_2jl1a7oih2","onSubmit","isSaving","hasChanges","buttonLabels","hideSaveBtn","tabIndex","ActionsCancelNormalXsmall","isSavingText","saveText","cov_bzamcitqv","cov_1r0475tfi4","isReported","isReporting","selectedOption","setSelectedOption","optionInappropriate","optionHarassment","optionNoConsent","labelStyles","BaseModal","savingText","handleOnDismiss","preventDefault","Markup","link_url","noWrap","htmlFor","Radio","checked","cov_1ealomix15","cov_1psjptc1jt","description","onTextChange","analyticProps","updatedDescription","setUpdatedDescription","entityId","feedType","currentPhoto","entity_id","entity_type","element_entity_type","media_type","element_entity_id","defaultValue","descriptionText","cov_1rwedh1z7r","cov_8i2wdw39p","lightboxCustomStyles","selectedPhotoIndex","photoList","onMount","onCloseRequest","photoIndex","isSavingDescription","isReportingMedia","openEditDescriptionModal","openReportMediaModal","showReportPhotoButton","reportedMediaHash","setParams","setVideo","lockWheelScrolling","stopPropagation","lockKeyScrolling","indexOf","code","addEventListener","passive","removeEventListener","selectedMedia","isImage","photoCount","prevPhotoIndex","nextPhotoIndex","prevPhoto","nextPhoto","onMoveNextRequest","prevParams","onMovePrevRequest","toggleReportMediaButton","prevState","openReportPhotoModal","addOrEditDescriptionLabel","caption_escaped","pause","paused","openAddEditDescriptionModal","toolbarButtons","buttons","isReportable","viewing_athlete_id","owner_id","isEditable","editable","isNotOnActivityDetailPage","pathname","push","DropdownMenu","DropdownButton","NavigationMoreHighlightedXsmall","DropdownPopover","portal","DropdownItems","DropdownLink","DropdownItem","cta_copy","imageDescription","Interweave","matchers","UrlMatcher","customTLDs","ActionsEditNormalXsmall","isVideo","currentVideo","fallback","VideoWrapper","on","source_type","source_id","video_id","cta","handleVolumeEvent","handleFullScreenEvent","DescriptionEditModal","updateDescription","payload","caption","put","logError","ReportMediaModal","reason","report_reason","updatedReportedMediaHash","reportMedia","Lightbox","wrapperClassName","mainCustomContent","mainSrc","nextSrc","prevSrc","currentMedia","imageCaption","imagePadding","reactModalStyle","enableZoom","cov_2n8h247yzr","cov_l15pm0fna","FALLBACK_LATLNG","mapBounds","streamData","defaultHighlight","interactive","measurementUnits","mapCreatedCallback","useMemo","privacy","findIndex","defaultHighlightLatLng","mapboxRef","setMapboxRef","currentMapBounds","setCurrentMapBounds","polylineHighlight","setPolylineHightlight","rabbitLatLng","setRabbitLatLng","setMapStyle","standard","mapStyleUrl","setMapStyleUrl","resizeMap","setResizeMap","mapPhotos","setMapPhotos","expandedPhoto","setExpandedPhoto","bounds","getBoundsFromLatLng","linear","duration","resize","onSetRabbitPosition","detail","onHideRabbit","onHighlightPolyline","onUnhighlightPolyline","onHighlightPolylineAndCenterOnMap","onResetMapBounds","onResizeMap","onRenderMapImages","_ref6","photos","listener","language","zoomControl","pitchWithRotate","dragRotate","MapControls","PrivacyZonePolylines","photo","attributes","legacyOptions","riseOnHover","thumbnail","StravaMediaLightbox","p","cov_161znma7dv","setStreamData","ActivityDetailsMap","_extends","cov_1xdpyzurig","cov_263y9x01j1","cov_212uj6gxik","cov_1zml9xd2jf","resultsPerPage","setResults","hasMore","setHasMore","setError","errorState","pageNum","reset","ceil","loadFollows","followsType","fetchedFollows","follows","prev","cov_u6uouxb85","athleteFirstName","primaryNav","hasBlockedAthletes","useFetchFollowers","o","nameParam","firstName","loader","rowCount","isRowLoaded","rowRenderer","athleteEntry","athlete","followEntry","follow","firstname","noRowsRenderer","optionsDropdown","ariaLabel","resultsContainer","InfiniteLoader","loadMoreRows","stopIndex","Promise","resolve","onRowsRendered","registerChild","AutoSizer","disableHeight","List","list","rowHeight","cov_26fgrnlmjp","cov_2e15de4rlk","I18nKey","cancel","ok","next","onCancel","onCTA","ctaDisabled","ctaVariant","ctaText","cov_2bapch2k1y","Option","isSelected","handleNext","valueChanged","onKeyPress","currentValue","handleValueChange","cov_15u3zvo8nz","withRouter","flow","isSubmitted","config","handleCancel","trackNext","trackScreenEnter","trackScreenExit","history","nextStep","OptionList","ButtonCTAWithCancel","cov_1w2kdsco7x","detailHtml","updating","isSubmitting","handleSubmit","attr","changes","cov_2n8d79t64w","areYouSure","AnalyticsCategory","AnalyticsAction","Click","ScreenEnter","ScreenExit","SummaryRoute","ConfirmationRoute","EditPastActivitiesApp","trackState","updates","setting_value","trackClick","trackError","routeToReturnTo","returnTo","confirmSubmit","k","copy","join","didSubmit","confirm","successState","failState","a","concat","Router","Switch","Redirect","exact","from","to","Route","Step","Summary","cov_1jist99qz4","VALUE_CHANGED","VALUE_SAVED_FAILURE","VALUE_SAVED_REQUESTED","VALUE_SAVED_SUCCESS","cov_2n222ofu9h","newState","changedPartner","partnerType","partnerName","selected","cov_gixl0c12n","I18nPrefixSelected","enabled","seeYourActivities","renderText","getDescriptionString","partner","profileImage","cov_2mucz94b1y","enhancedHeader","sponsoredHeader","yourHeader","PartnerIntegrationsList","optOutName","Analytics","onValueChanged","hasSponsored","sponsored","hasEnhanced","enhanced","showEnhancedHeading","sponsoredMapping","OptOutSetting","enhancedMapping","sponsoredIntegrations","enhancedIntegrations","valueSavedRequested","partner_opt_outs","opt_out_name","instance","headers","Accept","valueSavedSuccess","valueSavedFailure","cov_2d7tz9iw26","PartnerIntegrations","cov_2oayaiho9r","ActionsVisibleDisabledNormalXsmall","cov_nnu85ca5u","cov_2i6f7a5vct","cov_27lvuhfept","cov_2iazlguvlz","cov_19eo1cr6p","cov_1wk5vliuyw","defaultStreamPrivacy","numTicks","wrapper","onSlideEnd","meters_value","slider","graphicWrap","rail","Ticks","Tick","railHitarea","cov_22won8ecpx","cov_1905pr45q6","streamPrivacyProp","streamPrivacyOptions","updateSettingsPath","isAthleteUnder18","distanceUnits","setDefaultStreamPrivacy","newStreamPrivacyRef","oldStreamPrivacyRef","sliderLabels","filter","trackEvent","setOpenModal","applySettingUpdate","settings","default_stream_privacy","luggage_value","ConfirmModal","onConfirm","confirmSettingUpdate","StreamPrivacySlider","article_id","cov_ojx3c65qe","cov_16l4dsfw65","FETCH_CHALLENGE_PROGRESS_REQUESTED","FETCH_CHALLENGE_PROGRESS_SUCCESS","JOIN_CHALLENGE_FAILURE","JOIN_CHALLENGE_REQUESTED","JOIN_CHALLENGE_SUCCESS","JOIN_CLUB_FAILURE","JOIN_CLUB_REQUESTED","JOIN_CLUB_SUCCESS","LEAVE_CHALLENGE_FAILURE","LEAVE_CHALLENGE_REQUESTED","LEAVE_CHALLENGE_SUCCESS","MODAL_OPEN","MODAL_CLOSE","MODAL_CHANGE_DATE","DOB_UPDATE_REQUESTED","DOB_UPDATE_SUCCESS","DOB_UPDATE_FAILED","fetchChallengeProgress","challengeId","fetchChallengeProgressSuccess","reload","cov_11xr35f9ya","participantCount","numParticipants","remaining","progress","challengeJoinRequested","joined","challengeLeaveRequested","clubJoinRequested","club","memberCount","isClubMember","gatingModal","gatingConditions","joinChallengeFn","ageGate","dateSelected","requestInProgress","currentAthlete","dateOfBirth","getFullYear","getMonth","cov_5t4g5fjp4","headlineAchievement","otherAchievements","achievement","cov_19zfc4ujnl","Club","onJoinClub","joinUrl","joinButton","sportType","clubLogoUrl","clubUrl","container","logo","organizing","info","localeCount","formatDecimal","suffix","number","memberCountString","destUrl","redirectUrl","redirect","joinClubSuccess","cov_18vdhxvvyg","coverImageUrl","subtitle","challengeLogoUrl","coverTitleText","logoTitleText","backgroundImage","MediaQuery","minWidth","breakpoints","screenXs","cov_28iw7zalk9","arrowStyle","cov_2pp2m0pe97","CreatePost","handleChange","submitPost","discussionPath","trim","onSubmitFail","text","onSubmitSuccess","onCreateSuccess","avatarSrc","formLayout","avatar","inputWrapper","TextareaAutosize","submit","cov_88xjxcry5","authorId","authorName","timestamp","deletable","quarantinable","reportable","bodyText","deleteComment","parentId","avatarWrapper","center","header","hoverable","report","reportLink","comment_id","post_id","quarantine","quarantineLink","delete","deleteButton","formatTimespan","cov_25ntgbqn7a","CreateComment","focused","toggleFocus","submitComment","commentPath","onFocus","onBlur","showButton","cov_18xe3llouv","Comments","expanded","comments","commentId","onSuccess","onFail","item","createdComment","toggleExpanded","showComments","commentsToShow","comment","Comment","author","ts","buttonWrapper","cov_1qbf588owf","ActionsDropdown","actions","toggleMenu","dropdownMenu","moreIcon","onKeyDown","dropdownList","dropdownItem","cov_1kugri11g9","deletePost","reportPost","getAction","cov_d2omx3c0d","Discussion","posts","totalPosts","_this","onFetchSuccess","onFetchFail","total_posts","createdPost","postId","onDeleteSuccess","onDeleteFail","onSeeMore","renderButtonOrSpinner","renderPosts","Post","discussionList","indent","emptyState","cov_wd3gw183n","STATUS","idle","pending","resolved","rejected","restricted","CATEGORIES","gender","following","country","age","weight","PREMIUM_CATEGORIES","I18N_PREFIX","noResultsMsg","entries","viewingAthletePublicEntry","useDeepCompareMemoize","weightMeasurementUnit","subscribed","buildParams","before","after","subCategory","sub_category","limit","paramCategory","after_athlete_id","athlete_id","after_rank","rank","after_value","before_athlete_id","before_rank","before_value","includes","noClubsState","showLeaderboard","unprocessableClubState","cov_1e50522mig","currentPlaceLabel","viewingAthleteRank","cov_3sgxkuczw","currentCategory","currentSubcategory","categories","empty","onTabChangeCallback","onFilterChangeCallback","filterOptions","currentCategoryProps","currentCategoryHasFilters","subCategories","Tabs","tabs","TabList","tabKey","Tab","tabLabel","premium","badge","BadgesMulticolorSummitXsmall","subCategoryFilter","cov_25py6n9emj","messageRow","numColumns","isError","colSpan","tbody","resultRows","columnHeaders","onSubscribeCallback","leaderboardEntry","highlight","col","paywallMessage","paywallBanner","image","subTitle","callToAction","LinkButton","onNextPageCallback","onPrevPageCallback","isFirstPage","isLastPage","paginationLabel","tableContainer","columnHeader","styleName","thead","tfoot","pagination","ButtonGroup","ActionsArrowLeftNormalXsmall","ActionsArrowRightNormalXsmall","cov_1uolgsk1zn","GENDER_SUB_CATEGORIES","overall","men","women","AGE_SUB_CATEGORIES","bucket_0_19","bucket_20_24","bucket_25_34","bucket_35_44","bucket_45_54","bucket_55_64","bucket_65_69","bucket_70_74","bucket_75_plus","COUNTRY_SUB_CATEGORIES","countries","all","c","alpha3","sort","c1","c2","localeCompare","DEFAULT_PAGE_LIMIT","weight_measurement_unit","useFetchLeaderboardData","dimension","showActivityCount","challengeType","isTeamChallenge","defaultClub","clubs","trackAnalytics","elementData","challenge_id","leaderboard_category_type","leaderboard_subcategory_type","hasFilteredEntrySubset","showDistanceColumn","showProgressColumn","dimensionValueColumn","entry","activityLink","dimensionValue","extractColumnValuesForEntry","progressPercentage","progressFraction","displayRowColumns","overallRank","avatarAndNameContainer","memberType","profile","details","ProgressBar","bar","progressBarFraction","splice","place","activityCount","formattedDistance","tableColumnHeaders","nameShort","leaderboardData","categoriesMap","subCategoryMap","f","clubId","weightCategory","rowsWithDisplayValuesOnly","displayRows","viewingAthleteIsOnPage","entryAthleteId","isViewingAthlete","topRowRank","bottomRowRank","leaderboardSize","CurrentPlace","privacySection","ActionsLockClosedNormalSmall","CategoryTabs","rest","newParams","currentAthleteCountryISO","lookup","ageGroup","weight_group","LeaderboardsTable","onNextClick","onPrevClick","cov_1xe54ro2iq","sections","section","Collapsible","open","openOnLoad","transitionTime","trigger","CollapsibleTitleWithCaret","triggerWhenOpen","heading","qualifyingActivities","dangerouslySetInnerHTML","html","__html","imageUrl","imageTitle","Leaderboard","QualifyingActivities","cov_2mqy44jnyx","messageTextStyleClass","athletes","displayName","profileImg","cov_20zyeggxml","defaultIndex","ReactTabs","tabsRole","cov_2oqet4z0td","ReactTabList","cov_283y2rnrbv","selectedClassName","ReactTab","cov_1u5yhye4l8","TabPanel","ReactTabPanel","cov_11ohuprves","cov_1w3eg507i","modalIsOpen","friendsRequested","friends","onModalOpen","challengeLogo","challengeName","friend","athletePath","renderFriends","cov_1lpivglkxp","Followers","followersCount","Facepile","FriendsList","cov_6hq2hqevl","streaksCalendar","StreaksCalendar","cov_1g41xcpdie","validateEmail","email","cov_1ye0bfpoo0","createOption","replace","provided","flex","border","boxShadow","borderRadius","borderTop","multiValue","multiValueRemove","borderTopLeftRadius","borderBottomLeftRadius","EmailInput","inputValue","invalidInput","handleAddressesChange","handleInputChange","validateInput","updateValue","newValue","handleKeyDown","handleBlur","CreatableSelect","delimiter","isClearable","isMulti","menuIsOpen","onInputChange","Component","cov_1br3d9utsh","Email","submitRequested","submitSucceeded","errorMessage","successMessage","addresses","emails","address","renderMessage","success","aboveInput","selectInput","submitButton","cov_2o0puxv3c4","FriendOption","picture","Select","formatOptionLabel","getOptionLabel","getOptionValue","noOptionsMessage","cov_1g5wj8pz6s","StravaInvite","inviteValue","selectedAthletesArr","ids","athlete_ids","cov_1ite21o5p9","ShareModal","onClose","fetchAthletes","fetchAthletesSuccess","fetchAthletesFail","cov_2piwfc2hug","InviteFriends","outline","cov_2at783h1di","titleize","str","txt","charAt","toUpperCase","substr","lastName","forceAnonymize","maxLength","fullName","substring","isMobile","dateYearsAgo","years","toDateString","setFullYear","getPhotoWithMaxDimension","photoUrlHash","reduce","cov_1662w701kj","GatingHelper","dateFromString","shouldShowAgeGateModal","loggedIn","minimumAge","dob","cov_2o5qmefiez","ChallengeJoinButton","keepHovered","onJoinChallenge","showAgeModal","onLeaveChallenge","onHoverToggle","externalJoinUrl","leaveButton","joinChallengeSuccess","leaveChallengeSuccess","cov_173dlktyqx","dataGrid","containerClass","Stats","listClassName","Stat","labelClassName","valueClassName","addStat","cov_1y7af2q3yq","YOUNGEST_AGE_ON_PLATFORM","freeze","man","woman","preferNotSay","nonBinary","enUS","frFR","deDE","esES","ptBR","ruRU","itIT","jaJP","es419","nlNL","zhTW","ptPT","zhCN","cov_1g7wc4ozk2","Helper","pageStates","FILTERED_STATE","UNFILTERED_STATE","destinationUrl","networkClientInstance","events","CHALLENGE_JOINED_STATUS_CHANGE","FILTER_ADDED","FILTER_REMOVED","FILTER_REMOVE_ALL","FILTERED_REQUEST_SUCCEEDED","FILTERED_REQUEST_FAILED","UNFILTERED_REQUEST_SUCCEEDED","UNFILTERED_REQUEST_FAILED","challengesJoinStatus","joinedStatus","selectedFilters","identifier","trackFilterChanged","filterName","pageState","filteredChallenges","challenges","availableFilters","filters","initialState","promotedChallenge","gallerySections","hash","challenge","requestFilteredChallenges","json","joinChallenge","locale","trackChallengeClick","actionType","select_type","cov_27s8wgd1l2","isFocused","hasError","focus","controlColor","controlBoxShadow","ReactSelect","classNamePrefix","isDisabled","theme","colors","primary25","primary","danger","cov_gs3qxpj2f","MIN_YEARS_BEFORE_TODAY","I18N_MONTHS","prefix","m","dateMax","dateChangeCallback","erroredControls","required","userLanguage","focusTarget","enableDefaultFocus","correctedDateMax","isNil","day","setDay","month","setMonth","setYear","yearMax","monthMax","daySelectDefault","monthSelectDefault","yearSelectDefault","intArray","Array","_","numDaysInMonth","blankOption","dayOptions","monthOptions","yearOptions","defaultFocus","monthSelector","StravaDropdownSelect","newMonth","newDay","daySelector","yearSelector","newYear","classNames","buildSelectors","cov_iliblf47v","cov_zq7q4u4cd","I18nPromptHeading","I18nPromptText","I18nPromptCTA","I18nPromptDismiss","I18nPromptFooter","I18nDeniedHeading","I18nDeniedText","I18nDeniedDismiss","handleModalClose","handleDateSelectionChange","handleDateUpdateInProgress","handleDateUpdateSuccess","handleDateUpdateFailure","tagName","DropdownDatePicker","obj","showFullMonth","handleVerify","cov_uajibkqff","ended","completed","rewardUrl","rewardButtonText","auxiliaryStats","teamStats","onHandleModalClose","onHandleDateSelectionChange","onHandleDateUpdateInProgress","onHandleDateUpdateSuccess","onHandleDateUpdateFailure","onlyTeamStats","showTeamStats","trackRewardAnalytics","redeemReward","rel","inviteFriends","moreChallenges","teamStatsHeading","teamStatsList","DataGrid","AgeGateModal","cov_1hi1kzd2q6","Show","followersInChallenge","achievements","teamProgressBar","Header","TopSidebar","Progress","CollapsibleSection","Achievements","cov_20u2m4ac63","paths","i18nPrefix","modalTitleText","modalBodyText","modalButtonText","modalButtonEmphasis","modalButtonTextSecondary","modalButtonSecondaryEmphasis","trackEventProperties","setIsOpen","updateImpressionCapping","dismissModalPath","promo","dismissModal","ModalHeroImage","polylineImage","justifyContent","hideAnywherePath","cov_9tfvtfofa","cov_1i32ttkogp","dataValuePair","callOutAchievement","callOutEffort","excludedEffortsBtn","cov_2ejzx47md1","achievementIcon","loadExcludedEfforts","segmentId","rowContainer","rowAvatar","avatarBorder","rowData","callOutRow","callOutIcon","stats","ExcludedSegmentEffortsItem","callOutDate","segmentEffortId","cov_2jswyjdg4s","segment_id","urlLabelWithCaret","linkWithCaret","urlCaret","sectionUrlAndLabel","useHamlGoalCreationModule","athleteRestricted","Popup","contents","urlLabel","notAllowed","click","upcomingGoal","segmentNotEligible","upcomingSegmentGoal","target_time","targetTime","segment_name","segmentName","endDate","cov_1a5jk7656j","sideBarProps","localLegendAthleteId","localLegendEffortCount","komAthleteId","komEffortId","qomAthleteId","qomEffortId","overallEffortId","overallAthleteId","prEffortId","segmentEffortCount","localLegend","mayorEffortCount","fastestTimes","viewingAthlete","fastest_times","kom_effort_id","kom_athlete_id","qom_athlete_id","qom_effort_id","overall_effort_id","overall_athlete_id","local_legend","efforts_count","your_stats","pr_effort_id","segment_effort_count","icon","AchievementsKomHighlightedXsmall","sectionComponents","AvatarWithDataRow","AchievementsLocalLegendNormalXsmall","sideBarEntryData","viewingAthleteStats","localLegendStats","fastestTimesStats","CardActionsSection","cov_12mihayw7d","TOGGLE_SEGMENT_STAR_SUCCESS","TOGGLE_SEGMENT_STAR_FAILURE","toggleSegmentStar","isActive","active","cov_psd56l9dv","segmentStarReducer","cov_v2cbiyjh7","StarToggleComponent","handleClick","toggleSegmentStarAction","bindActionCreators","cov_29jke2ff09","StarredSegment","StarToggle","cov_1g935cv5ml","activityTypeTitle","verifiedBadge","cov_2g64tc0gfv","cov_1x15befylp","HEIGHT_REPORTED","SETTING_COLLAPSED","SETTING_EXPANDED","valueSaveFailure","optionIndex","cov_2162siab6u","optionHeight","isExpanded","selectedOptionIndex","savedOptionIndex","selectedOptionHeight","isSubmittable","cov_gjbvot8h7","FocusableElement","timeoutID","refFocusable","cov_15ebx957d9","onOk","cov_15r8ibsg8s","settingCollapsed","handleValueSave","Controls","cov_v3i8rdlrb","NotVisibleStyle","visibility","isVisible","analyticsReporter","refSelected","sizeMe","monitorWidth","monitorHeight","cov_12ypbv7lpg","handleHeightReport","heightReported","newHeight","onSize","settingName","cov_10agcww0e5","who_can_see","ExpandableOptionList","handleSettingCollapse","blur","handleSettingExpand","formTagNameRegex","match","settingExpanded","valueSaved","optionValue","styleContainer","InitialOptionHeightPx","PaddingPx","styleMenu","total","optionListID","whoCanSeeClasses","Footer","valueSaveSuccess","cov_zu2db3boi","VisibilitySetting","selectedValue","analytics","getIndexOfOption","logMessage","cov_nv4dujpxo","numPrivateLocations","defaultActivityMapVisibility","mapsHidden","setMapsHidden","toggleSwitchState","setToggleSwitchState","updateMapVisibility","callback","map_visibility","athleteSettings","default_activity_map_visibility","prevMapsHidden","SvgActivityDistanceNormalMedium","hideAddress","SvgActionsGlobalNormalMedium","hideAnywhere","SvgActionsVisibleDisabledNormalMedium","onSwitchClick","prevSwitchState","cov_1c1he1wlkt","cov_xjmnev7gv","setMentionInputStyles","inputHeight","highlighter","lineHeight","pointerEvents","overflow","boxSizing","fontFamily","suggestions","listStyleType","cov_29nfz0rjeg","sortAndFilter","mentionableAthletes","viewingAthleteId","sortByDisplayName","Set","String","cov_cu20vdwm9","fetchMentionableEntities","surfaceType","devLog","cov_2paz1nre18","placeHolder","suggestionLimit","clubMentionsEnabled","clearInputToggle","inputName","analyticsFields","onInputClickAnalytics","useSafeState","mentionableEntities","setMentionableEntities","setInputValue","firstRender","mentionInputStyles","mentionables","MentionsInput","allowSpaceInQuery","mentions","mentions__highlighter","mentions__suggestions","mentions__suggestions__list","suggestionList","newPlainTextValue","filtered","a11ySuggestionsListLabel","Mention","appendSpaceOnAdd","query","displayTransform","filteredEntity","markup","renderSuggestion","avatarStyle","marginRight","suggestion","member_type","element_source","metaContainer","entityName","locationDivider","mentionedEntity","onAdd","numericId","split","entityType","mentioned_athlete_id","mentioned_club_id","cov_21nhaudj8n","cov_t5nneb5ok","MentionableComment","handleSubmitCommentComplete","handleSubmitCommentFail","ev","cleanValue","textAreaClasses","buttonClasses","buttonText","useButtonText","StravaMentionsInput","mentions__input","cov_2m6v4g5e85","cov_1rwhzw62o9","cov_13v3n0s87u","cov_9awhnm8dp","cov_1rrry8gbmk","Portal","portalNode","isMounted","createElement","setAttribute","appendChild","removeChild","ReactDOM","cov_1wuobkrnmw","handleShow","handleHide","tooltipClassName","toolTipClasses","placement","Manager","Reference","onMouseOver","Popper","dataPlacement","arrowProps","cov_2op8spcedi","containerClassName","InfoIcon","cov_2qsxcdcxp3","PerceivedExertionInput","sliderDomain","showToggle","hasValue","perceivedExertion","preferPerceivedExertion","containerRef","handleReset","outer","handleSliderUpdate","handleSliderChange","handlePreferPerceivedExertionToggle","getExertionKey","getHintBodyText","exertionKey","node","showToggleEvent","toggleName","RPESlider","Toggle","cov_5c8m3jwyh","otherProps","cov_17h71vw1vm","NoAccess","Placeholder","cov_28mqzo48vs","scaleLinear","cov_1gjwzdx4r1","HasAccess","cov_1tr29iag2y","hasAccess","cov_1jmh3ttt40","onContinueClick","cov_1nu4q96r1v","getGraphicSrc","lowEffortImage","moderateEffortImage","highEffortImage","subscriptionUrl","isTrialEligible","IntensityKey","getIntensityKey","cov_1eo78wcnal","handleRetry","refreshIcon","cov_17rwtb02e4","WeekInsightText","activityWeekDate","cov_19w9d20m18","stat","statValue","statLabel","round","cov_1xglby5x6c","defaultWeekIndex","interval","cov_2l58jxf2vs","cov_j5ko7gxra","onSelectedWeekIndexUpdate","DateRange","WeekInsightStats","cov_2g3vtik7a6","ProgressGoalsRelativeEffortTab","hasLoadingError","num_weeks","handleFetchComplete","handleFetchError","handleFetchRetry","handleSelectedWeekIndexUpdate","renderContent","LoadingState","LoadingError","cov_2ag98unhg0","breadcrumbs","first","crumbs","last","Link","cov_qrhc273vv","SINGLE_SELECT","MULTI_SELECT","selectedValues","setSelectedValues","prevValues","cov_13w4g9vvy5","screenName","screen_name","euWebLink","questions","handleCancelProp","useHistory","selections","q","handleCTA","externalPath","cov_18xueupchv","surveyKey","survey_key","questionType","question_type","freeformInput","freeform_input","freeformValue","setFreeformValue","canSubmit","freeformText","max_characters","rows","cov_20d6tfl5fk","FeedbackApp","originPath","origin_path","response_text","redirectOnSuccessPath","redirect_on_success_path","submitPath","submit_path","surveys","redirectPath","selectedSurvey","survey","submitData","alert","footnote_title","footnote_description","originalName","origin_name","eu_web_link","external_path","_ref7","Breadcrumbs","SurveyStep","SurveyLanding","_ref8","cov_22ywqoefky","cov_3b9lfbqv8","SvgActionsRefreshNormalLarge","cov_fct0cr4c5","FetchInProgress","cov_m5eonlf4v","cov_2059p4pzuo","cov_17een8x686","cov_oyg8hcycw","canvasWidth","canvasHeight","iconProportion","outerCircleProportion","innerCircleProportion","incompleteProgressLimit","tau","PI","outerRadius","innerRadius","hasProgress","iconWidth","iconHeight","progressAngle","calculateProgressFill","backgroundArc","arc","startAngle","endAngle","progressArc","only","transform","cov_rx4jgh1lq","primaryProgress","secondaryProgress","progressBarHeight","secondaryHorizontalOffset","secondaryVerticalOffset","primaryProgressFill","points","cov_1pd1w3ogtt","goal","circularChartCanvasSize","period","threshold","goalType","goal_type","activityTypes","activity_types","percentYearComplete","year_percent_complete","noGoal","isAnnualGoal","relativeAnnualProgress","annualProgressKey","formatValue","valueType","goalValue","includeScalarUnit","formatShort","abbreviatedNoTags","formattedLabels","formatLabels","secondary","formatted_completed_value","annual","goalRemaining","goalSecondaryFormatted","formatted_current_value","formatted_goal_amount","goalPrimaryFormatted","formatted_remaining_value","goalAnnualFormatted","formatted_value","abs","CircularProgressChart","HorizontalProgressChart","cov_ol2bigywo","goals","periodName","ProgressGoalDisplay","cov_13axh6bn1l","displayStates","NO_ACCESS","LOADING","FETCH_SUCCESS","FETCH_ERROR","periodRenderOrder","unitPreference","showFooter","displayState","setDisplayState","goalsByPeriod","setGoalsByPeriod","grouped","acc","gl","goalDisplay","FetchError","ProgressGoalPeriodList","cov_1ql12e0t25","tabLocalStorageKey","defaultTabName","tabIndexMapping","relativeEffortSubscriptionUrl","tabStateStore","localStorage","tabStorageData","JSON","parse","getItem","idx","selectedTabName","setTabIndex","setItem","stringify","RelativeEffortTabIcon","ProgressGoalsTabIcon","TabPanels","ProgressGoalsSidebar","cov_1kqyak7gux","activityDescription","cleanDescription","setDescription","descriptionOnClick","cov_1onbmzk4hu","cov_39sbsl2du","Item","isInteractive","MediaListItemButton","MoreItem","MediaList","MediaListItem","VideoIndicator","ActionsVideoThumbnailNormalXsmall","isLoggedIn","items","viewableCount","thumbnailSize","profileType","selectedIndex","lightboxState","setLightboxState","itemsToDisplay","hasMoreItems","moreCount","adjustedItems","handleItemClick","urlParams","URLSearchParams","search","videoId","firstItem","isAdp","requested_athlete_id","activity_athlete_id","image_id","adpElement","profileElement","onMediaClick","cov_mrtjzim4u","cov_1wyjrcgd87","getButtonProps","ActionsVideoThumbnailNormalSmall","cov_h2ie8v6lr","cov_1ihu5l7d0f","EmbedModalWrapper","embedModalProps","setEmbedModalProps","handleOpenDialog","embedId","validEmbedTypes","embedType","validateEmbedModalProps","TranslationContext","getLanguage","EmbedModal","cov_2d0juknq5","isDismissed","setIsDismissed","showInfoBox","setShowInfoBox","cov_15agvisn5o","cov_2kygze6oqw","hasFailedToUpload","mediaType","uuid","setHighlightMedia","highlightMediaId","cov_2r29wssjg3","cov_2g8ai9c4ml","file","loadingStates","moveThumbnail","portraitOrientation","setPortraitOrientation","isPreviewError","setIsPreviewError","isPlaceHolderImage","preview","isPlaceHolder","setIsPlaceHolder","img","Image","onload","naturalWidth","h","naturalHeight","isPortrait","ItemTypes","THUMBNAIL","useDrop","accept","collect","monitor","handlerId","getHandlerId","hover","dragIndex","hoverIndex","dragElement","hoverBoundingRect","getBoundingClientRect","dragBoundingRect","hoverMiddleY","bottom","hoverMiddleX","clientOffset","getClientOffset","hoverClientY","hoverClientX","dragRight","dragLeft","dragUp","dragDown","drop","useDrag","isDragging","drag","thumbnailContainer","spinnerContainer","noThumbnail","noShow","contentsClassName","popupContents","singleButtonContents","PopupContents","flip","landscapeContainer","noLandscape","failedToUploadNoPreview","failedToUploadWithPreview","thumbnailImage","portrait","landscape","noImage","failedToUploadWithPreviewOpacity","placeholderImage","onError","portraitPlayIcon","landscapePlayIcon","landscapeIcon","CircularProgressbar","circleProgressBar","buildStyles","pathColor","NavigationWarningNormalSmall","ActionsPhotoNormalSmall","cov_2jzbgg3k97","cov_90pmwqt8d","FeatureEdInfoIcon","cov_1gv52ch855","cov_1oibbx3qf","ActionsPhotoNormalMedium","cov_2fm2y7mxbb","cov_1y5uohhnm8","normalizeId","unique_id","normalizeMediaType","getMediaType","getUuid","random","getVideoMetadata","URL","createObjectURL","preload","canvas","videoWidth","videoHeight","getContext","drawImage","toBlob","blob","previewUrl","play","isHEICFile","convertHEICFileToBlob","blobURL","fetch","blobRes","heic2any","default","getThumbnailPreviewUrl","loadFfmpeg","origin","ffmpeg","createFFmpeg","mainName","corePath","isLoaded","load","extractVideoHiddenMetadata","arrayBuffer","locationFileName","FS","Uint8Array","metadataCommand","run","Blob","buffer","File","parseTextFile","fileReader","FileReader","readAsText","stringFileArray","result","extractLocationData","locationLine","regex","iphoneRegex","androidRegex","splitStr","latLongSplit","locationData","parseFloat","getMediaUrl","exifr","latitude","longitude","additionalVideoMetadata","parsedTextArray","taken_at","lastModified","debug","storeMedia","onProgress","uri","onUploadProgress","progressEvent","loaded","trimVideo","trimDuration","trimFileName","trimCommand","copyCommand","cov_ww71c8y6s","steps","toProgressStrings","setShowTooltip","stepNumber","setStepNumber","cov_1ewyuvd38n","cov_124kko0870","defaultPhotoId","viewFeatureEdData","files","setFiles","setLoadingStates","setHighlightMediaId","firstThumbnail","showTooltip","hasSeenFeatureEd","setHasSeenFeatureEd","canViewFeatureEd","processFile","transparentGifPlaceholder","tempFile","newBlob","newUrl","tempArrayElement","mediaUrl","fileToUpload","processEnd","useDropzone","onDrop","acceptedFiles","videoCount","countPhotoAndVideoFiles","stage","num_media","maxSize","getRootProps","getInputProps","isDragAccept","newId","newFiles","assign","urls","revokeObjectURL","thumb","FeatureEdInfoBox","FeatureEdPopup","arrowClassName","isOpenOverride","canClick","DndProvider","backend","HTML5Backend","Thumbnail","AddMediaThumbnail","cov_1du1tyct3n","cov_1tu5v6kyqv","showFeatureEdPopup","setShowFeatureEdPopup","gotItButton","popup","arrow","offset","ActionsEditNormalSmall","cov_ew2bqksjc","cov_1hnvxfny3f","reactionListData","reactionCount","otherCommentReactors","avatar_url","cov_2pgeqfprfr","setName","handleNameChange","targetName","cov_2qg372syrw","cov_pnaj946zn","OPEN_MODAL_COMMENTS_TAB","OPEN_MODAL_KUDOS_TAB","OPEN_MODAL_ACHIEVEMENTS_TAB","OPEN_MODAL_OTHER_ATHLETES_TAB","CLOSE_MODAL","OPEN_COMMENT_REACTION_LIST","CLOSE_COMMENT_REACTION_LIST","ADD_KUDO","DELETE_COMMENT_CANCEL","DELETE_COMMENT_COMPLETE","DELETE_COMMENT_START","ADD_COMMENT_START","ADD_COMMENT_COMPLETE","ADD_COMMENT_FAILED","ADD_COMMENT_REACTION","UNDO_COMMENT_REACTION","cov_dhm1mfvy9","FEED_ENTRY_TYPES","fancyPromo","performanceGoalCreated","simplePromo","suggestedActivity","cov_24o3qdgfkp","updateKudosEndpoint","snakeCase","cov_1u2iaqqb5a","KudosAndCommentsContext","useKudosAndCommentsContext","context","cov_1dgmgyo66u","buildInitialKudosAndCommentsState","overrides","parentEntityId","openKudosCommentModal","selectedTabIndex","kudoPosted","newComment","openCommentDeleteDialog","isViewingCommentReactionsList","selectedComment","cov_vs71rpulh","initKudosAndCommentsState","kudosAndCommentsReducer","selectedEntityId","entityComments","isSubmittingComment","commentReactionPosted","recentlyReactedCommentId","recentlyUnReactedCommentId","reactions_summary","has_reacted","reaction_count","cov_wssvezwnm","useKudosAndCommentsReducer","useReducer","kudosAndCommentsEntityState","cov_cv1ozx09k","handleKudosAndCommentsNotificationLinkNavigation","cov_1lqdnwz3kg","uiToken","viewBox","xmlns","cov_20139efxw7","cov_2qs380nwfn","canCommentReactStatus","HeartIconUnfilled","HeartIconFilled","cov_1zocpe73k6","hasReacted","commentReactionCount","analyticsProps","setCanCommentReactStatus","setReactionCount","prevReactionCount","buttonElement","CommentReactionIcon","listElement","cov_4abw5pu6e","cov_1vjo7tax8y","athleteMetaData","rowContent","showCommentReactions","entryId","commentReactionAnalytics","activityName","activity_link","spacer","avatarAndMeta","meta","CommentReaction","cov_230fbnj9pv","cov_1ljqo5myi2","cov_2fh95ngorl","parent","setComment","setClearInputToggle","placeHolderProp","buttonTextProp","entityEndpoint","commentEntry","formattedTokens","token","parseComment","surface","cov_b3z0gb1q7","cov_mwmlogh84","cov_2owribv2xu","segAndBestEffortAchievements","hasOtherAthletes","entityOwner","kudosCount","commentsEnabled","hasAchievements","isEmpty","correctedTabIndex","tabIndexFromReducer","setIndex","groupedActivityData","setGroupedActivityData","setHover","isOwner","kudosable","kudoData","setKudosData","commentReactionListData","setCommentReactionListData","followRequestApprovalStatusMap","setAthleteFollowRequestMap","isViewingCommentReactionList","setIsViewingReactionList","fetchKudoList","fetchCommentReactionList","selectedCommentId","isOtherAthletesTab","isKudosTab","fetchOtherAthletes","toggleHover","postKudo","viewAthleteKudoData","is_following","isRecentlyFollowedAthlete","kudoDataRow","requestApprovalStatus","isRecentlyRequestedAthlete","leaveAthleteGroup","buildFollowButton","followButtonAttributes","is_private","processFollowButtonAttributes","kudoserId","followId","following_id","follower_id","approved","follow_id","onKudoDataRowButtonClick","followBtn","entriesFromFetchedData","dataList","AvatarAndMeta","allowedCommentReactionEntities","ModalWithTabs","displayImage","profileUrl","replaceState","kudosAndCommentsModal","ModalTabs","selectedTab","ModalTabList","ModalTab","commentReactionListBackButton","commentReactionListBackButtonChildren","SvgActionsArrowLeftNormalSmall","hidden","ModalTabPanels","ModalTabPanel","CommentReactionList","tabContent","buildKudoList","kudoAllowed","kudoEntries","noResults","footer","footerActionBtn","buildCommentList","thread","timeAgoTimestamp","timestampParsed","DOMParser","parseFromString","querySelector","getAttribute","timeToReplace","innerHTML","timeAgo","timeago","buildTimeAgoTimestamp","timestampAndCommentActions","commentActions","actionLinkButton","commentsForm","MentionableCommentForm","buildAchievementList","sprite","SILVER","GOLD","BRONZE","AchievementsKomHighlightedSmall","AchievementsTrophy02Small","AchievementsTrophy03Small","AchievementsTrophy04Small","AchievementsTrophy05Small","AchievementsTrophy06Small","AchievementsTrophy07Small","AchievementsTrophy08Small","AchievementsTrophy09Small","AchievementsTrophy10Small","AchievementsMedalPrSmall","AchievementsMedal02Small","AchievementsMedal03Small","AchievementsBadgeHighlightedSmall","legacySpriteToStravaUiIcon","achievementRow","id_string","elapsedTime","buildOtherAthleteList","groupAthletesEntries","cov_napkpk233","CommentDeleteAlertDialog","close","cov_23f4ir7wml","cov_x11c7lcgy","onClickKudoSuccessful","cov_2rq49sm892","canKudo","ownerName","ownerAvatarUrl","ownerAthleteId","ownedByCurrentAthlete","canKudoStatus","setCanKudoStatus","currentKudoCount","setCurrentKudoCount","hasKudoed","setHasKudoed","providerState","entityStateComments","handleHashChange","SvgActionsKudoNormalXsmall","SvgActionsKudoHighlightedXsmall","SvgActionsCommentNormalXsmall","KudosCommentsAndAchievementsModal","cov_2kv1qfbe9h","isDeleteModalOpen","setIsDeleteModalOpen","entityParentType","clubOrAthleteId","redirectionURL","cov_kupifs5gz","editPostPath","postEditable","authorAvatarUrl","authorDisplayName","isDeletable","parent_type","kudosAndCommentsContainer","kudosContainer","kudoIconButton","SvgActionsKudoNormalSmall","SvgActionsKudoHighlightedSmall","kudoedIcon","kudoIcon","kudoCountBtn","commentsContainer","commentsButton","SvgActionsCommentNormalSmall","commentIcon","commentsCount","optionsMenu","actionBtn","SvgNavigationMoreHighlightedSmall","DropdownList","EntityDeleteAlertDialog","parent_id","cov_2pj1qrsr38","ReactComponentMounter","register","ActivityDescriptionEdit","ActivityEditMapVisibilityApp","ActivityTruncate","RelativeEffort","ExcludedEfforts","CorrectDistance","CorrectElevation","PartnerIntegrationsApp","HideAddressApp","HideAnywhereApp","SegmentDetailsSideBar","VerifiedSegmentModal","ActivityDetailsMapWrapper","MapVisibilityControls","MapVisModal","LimitedProfileEntry","FollowsList","Microfrontend","LcLBespokeSegmentProgress","ProgressGoalsSidebarTabContainer","MediaThumbnailList","AthleteProfileHeaderMediaGrid","AthleteName","ADPKudosAndComments","MediaUploader","PostsKudosAndComments","EditActivityButton"],"sourceRoot":""}