{"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}>﹀</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":""}