{"version":3,"file":"1516.bundle.89f3fc40300f3691c209.js","mappings":"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","sources":["webpack://fieldlevel.app/./app-core/components/EditHeadshotBadge/EditHeadshotBadge.jsx","webpack://fieldlevel.app/./app-core/components/Separator.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/AboutDisplay.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/AboutSection.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/AboutSectionAcademics.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/AboutSectionAthletics.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/AboutSectionBasics.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/AboutSectionContact.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/AboutSectionEquipment.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/AboutSectionFamily.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/AboutSectionHobbies.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/AboutSectionTeams.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/AddressItem.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/EmailItem.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/HomePhoneItem.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/ItemActions.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/MobilePhoneItem.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/PhoneContextMenu.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/AboutDisplay/ProfileLabelValue.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/ContentComponents.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/HeaderDisplay/Background.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/HeaderDisplay/HeaderDisplay.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/ReferencesDisplay/ReferencesDisplay.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/AddPost.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/AnnounceCommitmentPost.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/CommitmentPreview.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/LinkPreview.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/PortalAnnouncementPost.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/PostForm.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/TimelineDisplay.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/TimelineItemCertification.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/TimelineItemCommitment.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/TimelineItemJoinedFieldLevel.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/TimelineItemJoinedTeam.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/TimelineItemLink.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/TimelineItemPerformanceUpdate.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/TimelineItemTransferPortal.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/TimelineItemVideo.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/TimelineDisplay/TimelineItemWriteup.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/VideoContainerDisplay/VideoContainerDisplay.jsx","webpack://fieldlevel.app/./app-core/components/video/PrivateVideo.jsx","webpack://fieldlevel.app/./app-core/hooks/routeTools/useURLParams/useURLParams.js","webpack://fieldlevel.app/./app-core/hooks/useCarousel.js","webpack://fieldlevel.app/./app-core/icons/AltLinkMajor.jsx","webpack://fieldlevel.app/./app-core/icons/CameraFilledIcon.jsx","webpack://fieldlevel.app/./app-core/icons/CommitmentMajor.jsx","webpack://fieldlevel.app/./app-core/icons/ExternalLinkIcon.jsx","webpack://fieldlevel.app/./app-core/icons/EyeIcon.jsx","webpack://fieldlevel.app/./app-core/icons/EyeOffIcon.jsx","webpack://fieldlevel.app/./app-core/icons/IDIcon.jsx","webpack://fieldlevel.app/./app-core/icons/MapPinIcon.jsx","webpack://fieldlevel.app/./app-core/icons/PortalAnnouncementMajor.jsx","webpack://fieldlevel.app/./app-core/icons/SquaresFilledIcon.jsx","webpack://fieldlevel.app/./app-core/icons/VideoMajor.jsx","webpack://fieldlevel.app/./app-core/utility/athleteContactAnalytics.js","webpack://fieldlevel.app/./app-core/utility/metricEnabledForSport.js","webpack://fieldlevel.app/./node_modules/lodash/_baseFlatten.js","webpack://fieldlevel.app/./node_modules/lodash/_isFlattenable.js","webpack://fieldlevel.app/./app-core/components/athlete/AthleteProfileDisplay/VideoContainerDisplay/VideoContainerDisplay.module.css"],"sourcesContent":["import PropTypes from 'prop-types';\r\n\r\nimport { Icon } from '@fieldlevel/playbook';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport CameraFilledIcon from '@appCore/icons/CameraFilledIcon';\r\n\r\nconst EditHeadshotBadge = ({ href = '#', linkProps }) => (\r\n <WiredLink unstyled url={href} {...linkProps}>\r\n <div className=\"flex justify-center items-center rounded-full bg-foreground-base border w-8 h-8\">\r\n <Icon source={CameraFilledIcon} />\r\n </div>\r\n </WiredLink>\r\n);\r\n\r\nEditHeadshotBadge.propTypes = {\r\n href: PropTypes.string\r\n};\r\n\r\nexport default EditHeadshotBadge;\r\n","const Separator = ({ props }) => <hr className=\"m-0 border-t\" {...props} />;\r\n\r\nexport default Separator;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport { Card } from '@fieldlevel/playbook';\r\n\r\nimport Separator from '@appCore/components/Separator';\r\n\r\nconst AboutDisplay = ({\r\n contactSectionRendering,\r\n basicsSectionRendering,\r\n teamsSectionRendering,\r\n athleticsSectionRendering,\r\n academicsSectionRendering,\r\n transcriptsSectionRendering,\r\n hobbiesSectionRendering,\r\n familySectionRendering,\r\n equipmentSectionRendering\r\n}) => {\r\n return (\r\n <Card>\r\n {contactSectionRendering}\r\n <Separator />\r\n {basicsSectionRendering}\r\n <Separator />\r\n {teamsSectionRendering}\r\n <Separator />\r\n {athleticsSectionRendering}\r\n <Separator />\r\n {academicsSectionRendering}\r\n <Separator />\r\n {transcriptsSectionRendering}\r\n <Separator />\r\n {hobbiesSectionRendering}\r\n <Separator />\r\n {familySectionRendering}\r\n <Separator />\r\n {equipmentSectionRendering}\r\n </Card>\r\n );\r\n};\r\n\r\nAboutDisplay.propTypes = {\r\n contactSectionRendering: PropTypes.node.isRequired,\r\n basicsSectionRendering: PropTypes.node.isRequired,\r\n teamsSectionRendering: PropTypes.node.isRequired,\r\n athleticsSectionRendering: PropTypes.node.isRequired,\r\n academicsSectionRendering: PropTypes.node.isRequired,\r\n transcriptsSectionRendering: PropTypes.node.isRequired,\r\n hobbiesSectionRendering: PropTypes.node.isRequired,\r\n familySectionRendering: PropTypes.node.isRequired,\r\n equipmentSectionRendering: PropTypes.node.isRequired\r\n};\r\n\r\nexport default AboutDisplay;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport { Heading } from '@fieldlevel/playbook';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\n\r\nconst AboutSectionHeader = ({ children, showEdit, editLinkProps }) => {\r\n return (\r\n <div className=\"flex justify-between\">\r\n <Heading>{children}</Heading>\r\n {showEdit && (\r\n <div>\r\n <WiredLink {...editLinkProps}>Edit</WiredLink>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nAboutSectionHeader.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n showEdit: PropTypes.bool,\r\n editLinkProps: PropTypes.exact(WiredLink.propTypes)\r\n};\r\n\r\nconst AboutSection = ({ contentRendering, headerRendering }) => {\r\n return (\r\n <div className=\"px-2 md:px-4\">\r\n {headerRendering}\r\n <div className=\"mt-6\">{contentRendering}</div>\r\n </div>\r\n );\r\n};\r\n\r\nAboutSection.propTypes = {\r\n headerRendering: PropTypes.node.isRequired,\r\n contentRendering: PropTypes.node.isRequired\r\n};\r\n\r\nexport { AboutSection, AboutSectionHeader };\r\n","import { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { WiredLinkPropTypes } from '@appCore/components/WiredLink';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\nimport {\r\n ABOUT_SECTION_ACADEMICS,\r\n SHOW,\r\n HIDE\r\n} from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { HiddenContent } from '@appCore/components/athlete/AthleteProfileDisplay/ContentComponents';\r\n\r\nimport { AboutSection, AboutSectionHeader } from './AboutSection';\r\nimport ProfileLabelValue from './ProfileLabelValue';\r\n\r\nfunction formatId(id) {\r\n let result = null;\r\n\r\n if (id && id.length) {\r\n if (id === 'Yes') {\r\n result = 'Yes( ********* )';\r\n } else {\r\n result = `Yes ( ${id} )`;\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction formatGpa(gpa, isWeightedGpa = false) {\r\n if (gpa) {\r\n return gpa.toFixed(2) + ` ${isWeightedGpa ? '(weighted)' : '(unweighted)'}`;\r\n }\r\n\r\n return gpa;\r\n}\r\n\r\nconst AboutSectionAcademics = ({ profileEditAcademicsLinkProps }) => {\r\n const {\r\n configContext,\r\n profile: { details, athlete }\r\n } = useContext(ProfileContext);\r\n const config = configTools(configContext).getConfig(ABOUT_SECTION_ACADEMICS);\r\n\r\n return (\r\n <AboutSection\r\n headerRendering={\r\n <AboutSectionHeader showEdit={config.edit === SHOW} editLinkProps={profileEditAcademicsLinkProps}>\r\n Academics\r\n </AboutSectionHeader>\r\n }\r\n contentRendering={\r\n <>\r\n {config.contents === SHOW && (\r\n <>\r\n <ProfileLabelValue label=\"GPA\" value={formatGpa(athlete.Gpa)} />\r\n {athlete.WeightedGpa && (\r\n <div className=\"mt-4\">\r\n <ProfileLabelValue label=\"\" value={formatGpa(athlete.WeightedGpa, true)} />\r\n </div>\r\n )}\r\n <div className=\"mt-4\">\r\n <ProfileLabelValue label=\"SAT\" value={details.Sat} />\r\n </div>\r\n <div className=\"mt-4\">\r\n <ProfileLabelValue label=\"ACT\" value={details.Act} />\r\n </div>\r\n <div className=\"mt-4\">\r\n <ProfileLabelValue label=\"Planned Major\" value={details.PlannedCollegeMajor} />\r\n </div>\r\n {details.NcaaId && (\r\n <div className=\"mt-4\">\r\n <ProfileLabelValue label=\"NCAA Eligible\" value={formatId(details.NcaaId)} />\r\n </div>\r\n )}\r\n {details.NaiaId && (\r\n <div className=\"mt-4\">\r\n <ProfileLabelValue label=\"NAIA Eligible\" value={formatId(details.NaiaId)} />\r\n </div>\r\n )}\r\n </>\r\n )}\r\n\r\n {config.contents === HIDE && <HiddenContent>{config.hiddenContentsLabel}</HiddenContent>}\r\n </>\r\n }\r\n />\r\n );\r\n};\r\nAboutSectionAcademics.propTypes = {\r\n profileEditAcademicsLinkProps: PropTypes.exact(WiredLinkPropTypes)\r\n};\r\n\r\nexport default AboutSectionAcademics;\r\n","import { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { WiredLinkPropTypes } from '@appCore/components/WiredLink';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\nimport { ABOUT_SECTION_ATHLETICS, SHOW } from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { GetSportPositionDisciplineContext } from '@appCore/utility/positionDisciplineSport';\r\n\r\nimport { AboutSection, AboutSectionHeader } from './AboutSection';\r\nimport ProfileLabelValue from './ProfileLabelValue';\r\n\r\nfunction getDominantSideValue(profile) {\r\n switch (profile.sportEnum.toLowerCase()) {\r\n case 'baseball':\r\n case 'softball':\r\n return profile.details.BattingStance.Value !== 'Unknown'\r\n ? `${profile.details.BattingStance.Label}/${profile.details.DominantSideValue.Value}`\r\n : '--';\r\n default:\r\n return profile.details.DominantSideValue.Value;\r\n }\r\n}\r\n\r\nconst AboutSectionAthletics = ({ profileEditAthleticsLinkProps }) => {\r\n const { configContext, profile } = useContext(ProfileContext);\r\n const config = configTools(configContext).getConfig(ABOUT_SECTION_ATHLETICS);\r\n const positionDisciplineText = GetSportPositionDisciplineContext({ sportEnum: profile.sportEnum });\r\n\r\n return (\r\n <AboutSection\r\n headerRendering={\r\n <AboutSectionHeader showEdit={config.edit === SHOW} editLinkProps={profileEditAthleticsLinkProps}>\r\n Athletics\r\n </AboutSectionHeader>\r\n }\r\n contentRendering={\r\n <>\r\n {!profile.details.IsPositionlessSport && (\r\n <div className=\"mb-4\">\r\n <ProfileLabelValue label={positionDisciplineText.cap} value={profile.athlete.Positions} />\r\n </div>\r\n )}\r\n\r\n {!profile.details.IsNonDominantSideSport && (\r\n <ProfileLabelValue\r\n label={profile.details.DominantSideValue.Label}\r\n value={getDominantSideValue(profile)}\r\n />\r\n )}\r\n </>\r\n }\r\n />\r\n );\r\n};\r\nAboutSectionAthletics.propTypes = {\r\n profileEditAthleticsLinkProps: PropTypes.exact(WiredLinkPropTypes)\r\n};\r\n\r\nexport default AboutSectionAthletics;\r\n","import { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { WiredLinkPropTypes } from '@appCore/components/WiredLink';\r\nimport { sportEnumToGender } from '@appCore/utility/grammar';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\nimport {\r\n ABOUT_SECTION_BASICS,\r\n SHOW,\r\n HIDE\r\n} from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\n\r\nimport { AboutSection, AboutSectionHeader } from './AboutSection';\r\nimport ProfileLabelValue from './ProfileLabelValue';\r\n\r\nfunction formatAgeValue(details, config) {\r\n let ageValue = details.Birthdate && `${details.Age} yrs (${details.Birthdate})`;\r\n\r\n if (config.age === HIDE) {\r\n ageValue = '** yrs (**/**/****)';\r\n }\r\n\r\n return ageValue;\r\n}\r\n\r\nfunction formatHometownValue(details, config) {\r\n if (!details.Address?.City) {\r\n return '--';\r\n }\r\n\r\n let hometownValue = details.Address && `${details.Address.City}, ${details.Address.State}`;\r\n if (hometownValue && config.hometown === HIDE) {\r\n hometownValue = `****, ${details.Address.State}`;\r\n }\r\n\r\n return hometownValue;\r\n}\r\n\r\nfunction formatHeightWeightValue(athlete, config, gender) {\r\n let heightWeightValue = `${athlete.Height}${athlete.Weight ? ', ' + athlete.Weight + 'lbs' : ''}`;\r\n if (config.heightWeight === HIDE) {\r\n heightWeightValue = '**';\r\n if (gender != 'Female') {\r\n heightWeightValue += ', *** lbs';\r\n }\r\n }\r\n return heightWeightValue;\r\n}\r\n\r\nconst AboutSectionBasics = ({ profileEditPersonalLinkProps }) => {\r\n const {\r\n configContext,\r\n profile: { athlete, details, sportEnum }\r\n } = useContext(ProfileContext);\r\n\r\n const config = configTools(configContext).getConfig(ABOUT_SECTION_BASICS);\r\n\r\n const gender = sportEnumToGender(sportEnum);\r\n const age = formatAgeValue(details, config);\r\n const hometown = formatHometownValue(details, config);\r\n const heightWeight = formatHeightWeightValue(athlete, config, gender);\r\n\r\n return (\r\n <AboutSection\r\n headerRendering={\r\n <AboutSectionHeader showEdit={config.edit === SHOW} editLinkProps={profileEditPersonalLinkProps}>\r\n Basics\r\n </AboutSectionHeader>\r\n }\r\n contentRendering={\r\n <div className=\"space-y-4\">\r\n <ProfileLabelValue label=\"Age\" value={age} />\r\n <ProfileLabelValue label=\"Hometown\" value={hometown} />\r\n <ProfileLabelValue label={gender === 'Male' ? 'Ht/Wt' : 'Ht'} value={heightWeight} />\r\n </div>\r\n }\r\n />\r\n );\r\n};\r\nAboutSectionBasics.propTypes = {\r\n profileEditPersonalLinkProps: PropTypes.exact(WiredLinkPropTypes)\r\n};\r\n\r\nexport default AboutSectionBasics;\r\n","import { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Heading } from '@fieldlevel/playbook';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport {\r\n ABOUT_SECTION_CONTACT,\r\n HIDE,\r\n SHOW,\r\n LOCK,\r\n PENDING\r\n} from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { HiddenContent } from '@appCore/components/athlete/AthleteProfileDisplay/ContentComponents';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\n\r\nimport { AboutSection, AboutSectionHeader } from './AboutSection';\r\nimport ProfileLabelValue from './ProfileLabelValue';\r\nimport EmailItem from './EmailItem';\r\nimport MobilePhoneItem from './MobilePhoneItem';\r\nimport HomePhoneItem from './HomePhoneItem';\r\nimport AddressItem from './AddressItem';\r\n\r\n/**\r\n * PendingContent\r\n */\r\nconst PendingContent = ({}) => {\r\n return <HiddenContent>Contact info is pending release. You will be notified when it is available.</HiddenContent>;\r\n};\r\n\r\n/**\r\n * LockedContent\r\n */\r\nconst LockedContent = ({ athlete, sportEnum, onClick, renderAddToMyRecruitsButton }) => {\r\n return (\r\n <div className=\"flex items-center\">\r\n {renderAddToMyRecruitsButton({ athlete, sportEnum, onClick })} to access contact info.\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * ContactInfoHeader\r\n */\r\nconst ContactInfoHeader = ({ label, value }) => {\r\n return (\r\n <>\r\n <Heading>{label}</Heading>\r\n <p className=\"mt-2 text-body-lg break-words\">{value}</p>\r\n </>\r\n );\r\n};\r\n\r\nContactInfoHeader.propTypes = {\r\n label: PropTypes.string.isRequired,\r\n value: PropTypes.string.isRequired\r\n};\r\n\r\nconst AboutSectionContact = ({ profileEditContactLinkProps, addressMappingLinkProps, renderAddToMyRecruitsButton }) => {\r\n const {\r\n configContext,\r\n profile: { athlete, details, sportEnum },\r\n onAction\r\n } = useContext(ProfileContext);\r\n const config = configTools(configContext).getConfig(ABOUT_SECTION_CONTACT);\r\n\r\n function handleMyRecruitsClick() {\r\n onAction('add-to-my-recruits');\r\n }\r\n\r\n function handleCopy(item) {\r\n onAction('contact-info-copy-click', { item });\r\n }\r\n\r\n return (\r\n <AboutSection\r\n headerRendering={\r\n <AboutSectionHeader showEdit={config.edit === SHOW} editLinkProps={profileEditContactLinkProps}>\r\n Contact Info\r\n </AboutSectionHeader>\r\n }\r\n contentRendering={\r\n <>\r\n {config.contents === SHOW && (\r\n <div className=\"flex flex-col gap-4\">\r\n <ProfileLabelValue\r\n align=\"start\"\r\n label=\"Email\"\r\n value={\r\n <EmailItem\r\n athlete={athlete}\r\n details={details}\r\n config={config}\r\n onCopy={handleCopy}\r\n />\r\n }\r\n />\r\n <ProfileLabelValue\r\n align=\"start\"\r\n label=\"Mobile\"\r\n value={\r\n <MobilePhoneItem\r\n athlete={athlete}\r\n details={details}\r\n config={config}\r\n onCopy={handleCopy}\r\n />\r\n }\r\n />\r\n <ProfileLabelValue\r\n align=\"start\"\r\n label=\"Home\"\r\n value={\r\n <HomePhoneItem\r\n athlete={athlete}\r\n details={details}\r\n config={config}\r\n onCopy={handleCopy}\r\n />\r\n }\r\n />\r\n <ProfileLabelValue\r\n align=\"start\"\r\n label=\"Address\"\r\n value={\r\n <AddressItem\r\n athlete={athlete}\r\n details={details}\r\n config={config}\r\n onCopy={handleCopy}\r\n addressMappingLinkProps={addressMappingLinkProps}\r\n />\r\n }\r\n />\r\n <ProfileLabelValue\r\n align=\"start\"\r\n label=\"X (Twitter)\"\r\n value={<div>{details.TwitterHandle ? details.TwitterHandle : '--'}</div>}\r\n />\r\n </div>\r\n )}\r\n {config.contents === LOCK && (\r\n <LockedContent\r\n athlete={athlete}\r\n sportEnum={sportEnum}\r\n onClick={handleMyRecruitsClick}\r\n renderAddToMyRecruitsButton={renderAddToMyRecruitsButton}\r\n />\r\n )}\r\n {config.contents === PENDING && <PendingContent />}\r\n {config.contents === HIDE && <HiddenContent>{config.hiddenContentsLabel}</HiddenContent>}\r\n </>\r\n }\r\n />\r\n );\r\n};\r\nAboutSectionContact.propTypes = {\r\n profileEditContactLinkProps: PropTypes.exact(WiredLink.propTypes),\r\n addressMappingLinkProps: PropTypes.exact(WiredLink.propTypes),\r\n renderAddToMyRecruitsButton: PropTypes.func\r\n};\r\n\r\nexport default AboutSectionContact;\r\n","import { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { WiredLinkPropTypes } from '@appCore/components/WiredLink';\r\nimport { EmptyContent, HiddenContent } from '@appCore/components/athlete/AthleteProfileDisplay/ContentComponents';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\nimport {\r\n SHOW,\r\n HIDE,\r\n ABOUT_SECTION_EQUIPMENT\r\n} from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\n\r\nimport { AboutSection, AboutSectionHeader } from './AboutSection';\r\nimport ProfileLabelValue from './ProfileLabelValue';\r\n\r\nconst AboutSectionEquipment = ({ profileEditEquipmentLinkProps }) => {\r\n const { configContext, profile } = useContext(ProfileContext);\r\n const { details } = profile;\r\n\r\n const config = configTools(configContext).getConfig(ABOUT_SECTION_EQUIPMENT);\r\n\r\n return (\r\n <AboutSection\r\n headerRendering={\r\n <AboutSectionHeader showEdit={config.edit === SHOW} editLinkProps={profileEditEquipmentLinkProps}>\r\n Equipment\r\n </AboutSectionHeader>\r\n }\r\n contentRendering={\r\n <>\r\n {config.contents === SHOW && (\r\n <>\r\n {details.EquipmentPreferences.map((pref, index) => (\r\n <div className=\"mb-4\" key={index}>\r\n <ProfileLabelValue label={pref.Label} value={pref.Answer} />\r\n </div>\r\n ))}\r\n </>\r\n )}\r\n {config.contents === SHOW && !details.EquipmentPreferences.length && (\r\n <EmptyContent>No equipment preferences added</EmptyContent>\r\n )}\r\n {config.contents === HIDE && <HiddenContent>{config.hiddenContentsLabel}</HiddenContent>}\r\n </>\r\n }\r\n />\r\n );\r\n};\r\nAboutSectionEquipment.propTypes = {\r\n profileEditEquipmentLinkProps: PropTypes.exact(WiredLinkPropTypes)\r\n};\r\n\r\nexport default AboutSectionEquipment;\r\n","import { useContext, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Link } from '@fieldlevel/playbook';\r\n\r\nimport { saveFamilyContactView } from '@appCore/utility/athleteContactAnalytics';\r\nimport { WiredLinkPropTypes } from '@appCore/components/WiredLink';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\nimport {\r\n ABOUT_SECTION_FAMILY,\r\n SHOW,\r\n HIDE,\r\n CLICK_TO_VIEW\r\n} from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { EmptyContent, HiddenContent } from '@appCore/components/athlete/AthleteProfileDisplay/ContentComponents';\r\n\r\nimport { AboutSection, AboutSectionHeader } from './AboutSection';\r\nimport ProfileLabelValue from './ProfileLabelValue';\r\n\r\nconst ContactInfo = props => <div className=\"font-normal\" {...props} />;\r\n\r\n/**\r\n * VisibleContact\r\n */\r\nconst VisibleContact = ({ person }) => {\r\n if (!person.CanContact) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n <ContactInfo>{person.PhoneMobile}</ContactInfo>\r\n <ContactInfo>{person.EmailAddress}</ContactInfo>\r\n </>\r\n );\r\n};\r\n\r\n/**\r\n * HiddenContact\r\n */\r\nconst HiddenContact = ({ person, athlete }) => {\r\n const [showContact, setShowContact] = useState(false);\r\n\r\n function handleShow() {\r\n saveFamilyContactView(athlete.ProfileId);\r\n setShowContact(true);\r\n }\r\n\r\n const hasContactInfo = person.EmailAddress || person.PhoneMobile;\r\n if (!person.CanContact || !hasContactInfo) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n {showContact ? (\r\n <VisibleContact person={person} />\r\n ) : (\r\n <Link\r\n url=\"#\"\r\n onClick={e => {\r\n e.preventDefault();\r\n handleShow();\r\n }}\r\n >\r\n See Contact\r\n </Link>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\n/**\r\n * AboutSectionFamily\r\n */\r\nfunction buildValue(athlete, person, config) {\r\n const name = <div>{person.DisplayName}</div>;\r\n\r\n let contactInfo;\r\n\r\n if (config.contactInfo === SHOW) {\r\n contactInfo = <VisibleContact person={person} />;\r\n }\r\n\r\n if (config.contactInfo === CLICK_TO_VIEW) {\r\n contactInfo = <HiddenContact person={person} athlete={athlete} />;\r\n }\r\n\r\n return (\r\n <div>\r\n {name}\r\n {contactInfo}\r\n </div>\r\n );\r\n}\r\n\r\nconst AboutSectionFamily = ({ profileEditFamilyLinkProps }) => {\r\n const {\r\n configContext,\r\n profile: { athlete, details }\r\n } = useContext(ProfileContext);\r\n const config = configTools(configContext).getConfig(ABOUT_SECTION_FAMILY);\r\n\r\n return (\r\n <AboutSection\r\n headerRendering={\r\n <AboutSectionHeader showEdit={config.edit === SHOW} editLinkProps={profileEditFamilyLinkProps}>\r\n Family\r\n </AboutSectionHeader>\r\n }\r\n contentRendering={\r\n <>\r\n {config.contents === SHOW &&\r\n details.FamilyMembers.map((person, index) => (\r\n <div className=\"mb-4\" key={index}>\r\n <ProfileLabelValue\r\n align=\"start\"\r\n label={person.RelationshipTypeEnum.Label}\r\n value={buildValue(athlete, person, config)}\r\n />\r\n </div>\r\n ))}\r\n {config.contents === SHOW && !details.FamilyMembers.length && (\r\n <EmptyContent>No parents/guardians added</EmptyContent>\r\n )}\r\n {config.contents === HIDE && <HiddenContent>{config.hiddenContentsLabel}</HiddenContent>}\r\n </>\r\n }\r\n />\r\n );\r\n};\r\nAboutSectionFamily.propTypes = {\r\n profileEditFamilyLinkProps: PropTypes.exact(WiredLinkPropTypes)\r\n};\r\n\r\nexport default AboutSectionFamily;\r\n","import { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { WiredLinkPropTypes } from '@appCore/components/WiredLink';\r\nimport { EmptyContent, HiddenContent } from '@appCore/components/athlete/AthleteProfileDisplay/ContentComponents';\r\nimport {\r\n SHOW,\r\n HIDE,\r\n ABOUT_SECTION_HOBBIES\r\n} from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\n\r\nimport { AboutSection, AboutSectionHeader } from './AboutSection';\r\n\r\nconst AboutSectionHobbies = ({ profileEditPersonalLinkProps }) => {\r\n const {\r\n configContext,\r\n profile: { details }\r\n } = useContext(ProfileContext);\r\n const config = configTools(configContext).getConfig(ABOUT_SECTION_HOBBIES);\r\n\r\n return (\r\n <AboutSection\r\n headerRendering={\r\n <AboutSectionHeader showEdit={config.edit === SHOW} editLinkProps={profileEditPersonalLinkProps}>\r\n Hobbies & Interests\r\n </AboutSectionHeader>\r\n }\r\n contentRendering={\r\n <>\r\n {config.contents === SHOW && details.HobbiesAndInterests && (\r\n <div className=\"whitespace-pre-line break-words\">\r\n <div className=\"text-body-lg\">{details.HobbiesAndInterests}</div>\r\n </div>\r\n )}\r\n {config.contents === SHOW && !details.HobbiesAndInterests && (\r\n <EmptyContent>No hobbies and interests added</EmptyContent>\r\n )}\r\n {config.contents === HIDE && <HiddenContent>{config.hiddenContentsLabel}</HiddenContent>}\r\n </>\r\n }\r\n />\r\n );\r\n};\r\nAboutSectionHobbies.propTypes = {\r\n profileEditPersonalLinkProps: PropTypes.exact(WiredLinkPropTypes)\r\n};\r\n\r\nexport default AboutSectionHobbies;\r\n","import { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { WiredLinkPropTypes } from '@appCore/components/WiredLink';\r\nimport TeamDetailsDisplay from '@appCore/components/TeamDetailsDisplay';\r\nimport { ABOUT_SECTION_TEAMS, SHOW } from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { EmptyContent } from '@appCore/components/athlete/AthleteProfileDisplay/ContentComponents';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\n\r\nimport { AboutSection, AboutSectionHeader } from './AboutSection';\r\n\r\nexport const TeamItem = ({ data, teamProfileLinkProps }) => {\r\n const { onAction } = useContext(ProfileContext);\r\n\r\n function handleClick(team) {\r\n onAction('log-team-click', team);\r\n }\r\n\r\n return (\r\n <TeamDetailsDisplay\r\n team={data.Team}\r\n options={{\r\n teamProfileLinkProps: teamProfileLinkProps,\r\n showAthleticAssociation: false,\r\n showSportLabel: false\r\n }}\r\n onClick={() => handleClick(data.Team)}\r\n >\r\n <div className=\"text-base\">\r\n {data.Team.AthleticAssociationEnum.Label} {data.Team.City && `in ${data.Team.City}, ${data.Team.State}`}\r\n </div>\r\n {data.StartDateUtc && (\r\n <div className=\"text-muted\">\r\n {new Date(data.StartDateUtc).toLocaleDateString('en-US', {\r\n month: 'short',\r\n year: 'numeric'\r\n })}{' '}\r\n {data.IsAlumni && data.EndDateUtc\r\n ? `- ${new Date(data.EndDateUtc).toLocaleDateString('en-US', {\r\n month: 'short',\r\n year: 'numeric'\r\n })}`\r\n : '- Present'}\r\n </div>\r\n )}\r\n {!data.StartDateUtc && <div className=\"text-muted\">{data.IsAlumni ? 'Alumni' : 'Active'}</div>}\r\n </TeamDetailsDisplay>\r\n );\r\n};\r\n\r\nTeamItem.propTypes = {\r\n data: PropTypes.shape({\r\n EndDateUtc: PropTypes.string,\r\n IsAlumni: PropTypes.bool,\r\n ProfileBackgroundId: PropTypes.number,\r\n StartDateUtc: PropTypes.string,\r\n Team: PropTypes.object\r\n }),\r\n teamProfileLinkProps: PropTypes.exact(WiredLinkPropTypes)\r\n};\r\n\r\nconst AboutSectionTeams = ({ profileEditAthleteTeamsLinkProps, teamItemsRendering }) => {\r\n const { configContext } = useContext(ProfileContext);\r\n const config = configTools(configContext).getConfig(ABOUT_SECTION_TEAMS);\r\n\r\n return (\r\n <AboutSection\r\n headerRendering={\r\n <AboutSectionHeader showEdit={config.edit === SHOW} editLinkProps={profileEditAthleteTeamsLinkProps}>\r\n Teams\r\n </AboutSectionHeader>\r\n }\r\n contentRendering={\r\n <>\r\n {teamItemsRendering.length > 0 ? (\r\n <div className=\"space-y-8\">{teamItemsRendering}</div>\r\n ) : (\r\n <EmptyContent>No teams added</EmptyContent>\r\n )}\r\n </>\r\n }\r\n />\r\n );\r\n};\r\nAboutSectionTeams.propTypes = {\r\n profileEditAthleteTeamsLinkProps: PropTypes.exact(WiredLinkPropTypes),\r\n teamItemsRendering: PropTypes.node\r\n};\r\n\r\nexport default AboutSectionTeams;\r\n","import { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Button, Icon } from '@fieldlevel/playbook';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport { saveAddressView, saveAddressCopy, saveAddressOpen } from '@appCore/utility/athleteContactAnalytics';\r\nimport { copyToClipboard } from '@appCore/utility/clipboard';\r\nimport MapPinIcon from '@appCore/icons/MapPinIcon';\r\nimport CopyIcon from '@appCore/icons/CopyIcon';\r\nimport { ContextMenu, ContextMenuItem, ContextMenuLink } from '@appCore/components/ContextMenu/ContextMenu';\r\nimport { SHOW, CLICK_TO_VIEW } from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\n\r\nimport ItemActions from './ItemActions';\r\n\r\nconst AddressContextMenu = ({ linkProps, onShow, onCopy, onOpen }) => {\r\n return (\r\n <ContextMenu\r\n buttonRendering={\r\n <Button variant=\"plain\" onClick={onShow} size=\"slim\">\r\n Show\r\n </Button>\r\n }\r\n >\r\n <ContextMenuItem onSelect={onCopy} label=\"Copy Address\" iconSource={CopyIcon} />\r\n <ContextMenuLink linkProps={linkProps} onSelect={onOpen} label=\"Open in Maps\" iconSource={MapPinIcon} />\r\n </ContextMenu>\r\n );\r\n};\r\n\r\nAddressContextMenu.propTypes = {\r\n linkProps: PropTypes.object.isRequired,\r\n onShow: PropTypes.func.isRequired,\r\n onCopy: PropTypes.func.isRequired,\r\n onOpen: PropTypes.func.isRequired\r\n};\r\n\r\nconst AddressItem = ({ athlete, details, config, onCopy, addressMappingLinkProps }) => {\r\n const [showAddress, setShowAddress] = useState(config.contactInfo === SHOW);\r\n\r\n const addressStreet = details.Address?.Street;\r\n const addressCityState = details.Address?.CityStateZip;\r\n const hasAddress = !!(addressStreet || addressCityState);\r\n\r\n function handleShow() {\r\n saveAddressView(athlete.ProfileId);\r\n setShowAddress(true);\r\n }\r\n\r\n function handleContextShow() {\r\n saveAddressView(athlete.ProfileId);\r\n }\r\n\r\n function handleCopy() {\r\n const fullAddress = `${addressStreet} ${addressCityState}`;\r\n saveAddressCopy(athlete.ProfileId);\r\n copyToClipboard(fullAddress);\r\n onCopy('Address');\r\n }\r\n\r\n function handleOpen() {\r\n saveAddressOpen(athlete.ProfileId);\r\n }\r\n\r\n if (!hasAddress) {\r\n return '--';\r\n }\r\n\r\n const obfuscatedStreet = '•••••••••••••••••••••••••';\r\n const displayedStreet = showAddress ? addressStreet : obfuscatedStreet;\r\n return (\r\n <>\r\n <div>\r\n <div>\r\n {addressStreet && <div>{displayedStreet}</div>}\r\n {addressCityState && (\r\n <div className=\"flex gap-1\">\r\n {addressCityState}\r\n {showAddress && (\r\n <WiredLink {...addressMappingLinkProps} onClick={handleOpen}>\r\n <Icon source={MapPinIcon} />\r\n </WiredLink>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {config.contactInfo === CLICK_TO_VIEW && (\r\n <ItemActions showing={showAddress} hideShow={!addressStreet} onShow={handleShow} onCopy={handleCopy}>\r\n <AddressContextMenu\r\n linkProps={addressMappingLinkProps}\r\n onShow={handleContextShow}\r\n onCopy={handleCopy}\r\n onOpen={handleOpen}\r\n />\r\n </ItemActions>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nAddressItem.propTypes = {\r\n athlete: PropTypes.object.isRequired,\r\n details: PropTypes.object,\r\n config: PropTypes.object,\r\n onCopy: PropTypes.func,\r\n addressMappingLinkProps: PropTypes.exact(WiredLink.propTypes)\r\n};\r\n\r\nexport default AddressItem;\r\n","import { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Button, EmailMinor } from '@fieldlevel/playbook';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport { ContextMenu, ContextMenuItem, ContextMenuLink } from '@appCore/components/ContextMenu/ContextMenu';\r\nimport { SHOW, CLICK_TO_VIEW } from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport CopyIcon from '@appCore/icons/CopyIcon';\r\nimport { copyToClipboard } from '@appCore/utility/clipboard';\r\nimport { saveEmailView, saveEmailCopy, saveEmailOpen } from '@appCore/utility/athleteContactAnalytics';\r\n\r\nimport ItemActions from './ItemActions';\r\n\r\nconst EmailContextMenu = ({ href, onShow, onCopy, onOpen }) => {\r\n return (\r\n <ContextMenu\r\n buttonRendering={\r\n <Button variant=\"plain\" onClick={onShow} size=\"slim\">\r\n Show\r\n </Button>\r\n }\r\n >\r\n <ContextMenuItem iconSource={CopyIcon} label=\"Copy Email\" onSelect={onCopy} />\r\n <ContextMenuLink iconSource={EmailMinor} label=\"Open in Mail\" href={href} onSelect={onOpen} />\r\n </ContextMenu>\r\n );\r\n};\r\n\r\nEmailContextMenu.propTypes = {\r\n href: PropTypes.string.isRequired,\r\n onShow: PropTypes.func.isRequired,\r\n onCopy: PropTypes.func.isRequired,\r\n onOpen: PropTypes.func.isRequired\r\n};\r\n\r\nconst EmailItem = ({ athlete, details, config, onCopy }) => {\r\n const [showEmail, setShowEmail] = useState(config.contactInfo === SHOW);\r\n const email = details.EmailAddress;\r\n const mailHref = `mailto:${email}`;\r\n\r\n function handleShow() {\r\n saveEmailView(athlete.ProfileId);\r\n setShowEmail(true);\r\n }\r\n\r\n function handleContextShow() {\r\n saveEmailView(athlete.ProfileId);\r\n }\r\n\r\n function handleCopy() {\r\n saveEmailCopy(athlete.ProfileId);\r\n copyToClipboard(email);\r\n onCopy('Email address');\r\n }\r\n\r\n function handleOpen() {\r\n saveEmailOpen(athlete.ProfileId);\r\n }\r\n\r\n function obfuscateEmail(value) {\r\n const firstChar = value.charAt(0);\r\n const parts = value.split('@');\r\n const domain = parts[1];\r\n return `${firstChar}••••••••@${domain}`;\r\n }\r\n\r\n if (!email) {\r\n return '--';\r\n }\r\n\r\n const emailLinkOrText =\r\n config.contactInfo === CLICK_TO_VIEW ? (\r\n <WiredLink url={mailHref} onClick={handleOpen}>\r\n {email}\r\n </WiredLink>\r\n ) : (\r\n email\r\n );\r\n const displayedEmail = showEmail ? emailLinkOrText : obfuscateEmail(email);\r\n\r\n return (\r\n <>\r\n <div>\r\n <div>{displayedEmail}</div>\r\n </div>\r\n {config.contactInfo === CLICK_TO_VIEW && (\r\n <ItemActions showing={showEmail} onShow={handleShow} onCopy={handleCopy}>\r\n <EmailContextMenu\r\n href={mailHref}\r\n onShow={handleContextShow}\r\n onCopy={handleCopy}\r\n onOpen={handleOpen}\r\n />\r\n </ItemActions>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nEmailItem.propTypes = {\r\n athlete: PropTypes.object.isRequired,\r\n details: PropTypes.object,\r\n config: PropTypes.object,\r\n onCopy: PropTypes.func\r\n};\r\n\r\nexport default EmailItem;\r\n","import { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport {\r\n saveHomePhoneView,\r\n saveHomePhoneCopy,\r\n saveHomePhoneText,\r\n saveHomePhoneCall\r\n} from '@appCore/utility/athleteContactAnalytics';\r\nimport { copyToClipboard } from '@appCore/utility/clipboard';\r\nimport { SHOW, CLICK_TO_VIEW } from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport { formatPhoneNumber } from '@appCore/utility/formatter';\r\n\r\nimport ItemActions from './ItemActions';\r\nimport PhoneContextMenu from './PhoneContextMenu';\r\n\r\nfunction getNumericPhone(number) {\r\n return number && number.replace(/\\D/g, '');\r\n}\r\n\r\nfunction obfuscateNumber(num) {\r\n const lastFour = num.substring(num.length - 4);\r\n return `(•••) •••-${lastFour}`;\r\n}\r\n\r\nconst HomePhoneItem = ({ athlete, details, config, onCopy }) => {\r\n const [showNumber, setShowNumber] = useState(config.contactInfo === SHOW);\r\n\r\n const number = details.PhoneHome;\r\n const numberOnly = getNumericPhone(number);\r\n\r\n function handleShow() {\r\n saveHomePhoneView(athlete.ProfileId);\r\n setShowNumber(true);\r\n }\r\n\r\n function handleContextShow() {\r\n saveHomePhoneView(athlete.ProfileId);\r\n }\r\n\r\n function handleCopy() {\r\n saveHomePhoneCopy(athlete.ProfileId);\r\n copyToClipboard(numberOnly);\r\n onCopy('Home number');\r\n }\r\n\r\n function handleText() {\r\n saveHomePhoneText(athlete.ProfileId);\r\n }\r\n\r\n function handleCall() {\r\n saveHomePhoneCall(athlete.ProfileId);\r\n }\r\n\r\n if (!number) {\r\n return '--';\r\n }\r\n\r\n const displayedNumber = showNumber ? formatPhoneNumber(number) : obfuscateNumber(number);\r\n return (\r\n <>\r\n <div>\r\n <div>{displayedNumber}</div>\r\n </div>\r\n {config.contactInfo === CLICK_TO_VIEW && (\r\n <ItemActions showing={showNumber} onShow={handleShow} onCopy={handleCopy}>\r\n <PhoneContextMenu\r\n label=\"Home Number\"\r\n number={formatPhoneNumber(number)}\r\n numberOnly={numberOnly}\r\n onShow={handleContextShow}\r\n onCopy={handleCopy}\r\n onCall={handleCall}\r\n onText={handleText}\r\n />\r\n </ItemActions>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nHomePhoneItem.propTypes = {\r\n athlete: PropTypes.object.isRequired,\r\n details: PropTypes.object,\r\n config: PropTypes.object,\r\n onCopy: PropTypes.func\r\n};\r\n\r\nexport default HomePhoneItem;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport { Button } from '@fieldlevel/playbook';\r\n\r\nimport Responsive from '@appCore/components/Responsive/Responsive';\r\n\r\nconst ItemActions = ({ showing, hideShow, onShow, onCopy, children }) => {\r\n return (\r\n <>\r\n <Responsive showAt=\"sm\">\r\n <div className=\"flex flex-none items-center gap-2 min-w-[100px] mt-2\">\r\n {!showing && !hideShow && (\r\n <>\r\n <Button variant=\"plain\" onClick={onShow} size=\"slim\">\r\n Show\r\n </Button>\r\n <div className=\"text-muted font-[300] text-[18px]\">|</div>\r\n </>\r\n )}\r\n {showing && !hideShow && (\r\n <>\r\n Show <div className=\"text-muted font-[300] text-[18px]\">|</div>\r\n </>\r\n )}\r\n <Button variant=\"plain\" onClick={onCopy} size=\"slim\">\r\n Copy\r\n </Button>\r\n </div>\r\n </Responsive>\r\n <Responsive hideAt=\"sm\">\r\n <div className=\"flex flex-none items-center gap-2 min-w-[100px] mt-2\">{!hideShow && children}</div>\r\n </Responsive>\r\n </>\r\n );\r\n};\r\n\r\nItemActions.propTypes = {\r\n showing: PropTypes.bool,\r\n hideShow: PropTypes.bool,\r\n onShow: PropTypes.func,\r\n onCopy: PropTypes.func,\r\n children: PropTypes.node\r\n};\r\n\r\nexport default ItemActions;\r\n","import { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport {\r\n saveMobilePhoneView,\r\n saveMobilePhoneCopy,\r\n saveMobilePhoneText,\r\n saveMobilePhoneCall\r\n} from '@appCore/utility/athleteContactAnalytics';\r\nimport { copyToClipboard } from '@appCore/utility/clipboard';\r\nimport { SHOW, CLICK_TO_VIEW } from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport { formatPhoneNumber } from '@appCore/utility/formatter';\r\n\r\nimport ItemActions from './ItemActions';\r\nimport PhoneContextMenu from './PhoneContextMenu';\r\n\r\nfunction getNumericPhone(number) {\r\n return number && formatPhoneNumber(number);\r\n}\r\n\r\nfunction obfuscateNumber(num) {\r\n const lastFour = num.substring(num.length - 4);\r\n return `(•••) •••-${lastFour}`;\r\n}\r\n\r\nconst MobilePhoneItem = ({ athlete, details, config, onCopy }) => {\r\n const [showNumber, setShowNumber] = useState(config.contactInfo === SHOW);\r\n\r\n const number = details.PhoneMobile;\r\n const numberOnly = getNumericPhone(number);\r\n\r\n function handleShow() {\r\n saveMobilePhoneView(athlete.ProfileId);\r\n setShowNumber(true);\r\n }\r\n\r\n function handleContextShow() {\r\n saveMobilePhoneView(athlete.ProfileId);\r\n }\r\n\r\n function handleCopy() {\r\n saveMobilePhoneCopy(athlete.ProfileId);\r\n copyToClipboard(numberOnly);\r\n onCopy('Mobile number');\r\n }\r\n\r\n function handleText() {\r\n saveMobilePhoneText(athlete.ProfileId);\r\n }\r\n\r\n function handleCall() {\r\n saveMobilePhoneCall(athlete.ProfileId);\r\n }\r\n\r\n if (!number) {\r\n return '--';\r\n }\r\n\r\n const displayedNumber = showNumber ? formatPhoneNumber(number) : obfuscateNumber(number);\r\n return (\r\n <>\r\n <div>\r\n <div>{displayedNumber}</div>\r\n </div>\r\n {config.contactInfo === CLICK_TO_VIEW && (\r\n <ItemActions showing={showNumber} onShow={handleShow} onCopy={handleCopy}>\r\n <PhoneContextMenu\r\n label=\"Mobile Number\"\r\n number={formatPhoneNumber(number)}\r\n numberOnly={numberOnly}\r\n onShow={handleContextShow}\r\n onCopy={handleCopy}\r\n onCall={handleCall}\r\n onText={handleText}\r\n />\r\n </ItemActions>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nMobilePhoneItem.propTypes = {\r\n athlete: PropTypes.object.isRequired,\r\n details: PropTypes.object,\r\n config: PropTypes.object,\r\n onCopy: PropTypes.func\r\n};\r\n\r\nexport default MobilePhoneItem;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport { Button } from '@fieldlevel/playbook';\r\n\r\nimport { ContextMenu, ContextMenuItem, ContextMenuLink } from '@appCore/components/ContextMenu/ContextMenu';\r\nimport PhoneCallIcon from '@appCore/icons/PhoneCallIcon';\r\nimport CopyIcon from '@appCore/icons/CopyIcon';\r\nimport MessageDotsIcon from '@appCore/icons/MessageDotsIcon';\r\n\r\nconst PhoneContextMenu = ({ label, number, numberOnly, onShow, onCopy, onCall, onText }) => {\r\n const telLink = `tel:${numberOnly}`;\r\n const textLink = `sms:${numberOnly}`;\r\n\r\n return (\r\n <ContextMenu\r\n buttonRendering={\r\n <Button variant=\"plain\" onClick={onShow} size=\"slim\">\r\n Show\r\n </Button>\r\n }\r\n >\r\n <ContextMenuItem onSelect={onCopy} iconSource={CopyIcon} label={`Copy ${label}`} />\r\n <ContextMenuLink\r\n href={textLink}\r\n onSelect={onText}\r\n iconSource={MessageDotsIcon}\r\n label={`Text - ${number}`}\r\n />\r\n <ContextMenuLink href={telLink} onSelect={onCall} iconSource={PhoneCallIcon} label={`Call - ${number}`} />\r\n </ContextMenu>\r\n );\r\n};\r\n\r\nPhoneContextMenu.propTypes = {\r\n label: PropTypes.string.isRequired,\r\n number: PropTypes.string.isRequired,\r\n numberOnly: PropTypes.string.isRequired,\r\n onShow: PropTypes.func.isRequired,\r\n onCopy: PropTypes.func.isRequired,\r\n onCall: PropTypes.func.isRequired,\r\n onText: PropTypes.func.isRequired\r\n};\r\n\r\nexport default PhoneContextMenu;\r\n","import cx from 'classnames';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ProfileLabelValueContainer = ({ orientation, align, ...otherProps }) => (\r\n <div\r\n {...otherProps}\r\n className={cx(\r\n 'flex',\r\n orientation === 'v' ? 'flex-col' : 'flex-row',\r\n align === 'center' && orientation !== 'v' ? 'items-center' : 'items-start'\r\n )}\r\n />\r\n);\r\n\r\nconst ProfileLabel = ({ orientation, ...otherProps }) => (\r\n <div\r\n {...otherProps}\r\n className={cx(\r\n 'min-w-[148px] sm:min-w-[168px]',\r\n orientation === 'v' ? 'first-of-type:mb-2 font-bold text-body-lg' : ''\r\n )}\r\n />\r\n);\r\n\r\nconst ProfileValue = ({ children }) => <div className=\"text-body-lg break-words flex-1\">{children}</div>;\r\n\r\nconst ProfileLabelValue = ({ label, value, orientation = 'h', align = 'center' }) => {\r\n return (\r\n <ProfileLabelValueContainer orientation={orientation} align={align}>\r\n <ProfileLabel orientation={orientation}>{label}</ProfileLabel>\r\n <ProfileValue>{value || '--'}</ProfileValue>\r\n </ProfileLabelValueContainer>\r\n );\r\n};\r\n\r\nProfileLabelValue.propTypes = {\r\n label: PropTypes.string.isRequired,\r\n value: PropTypes.node,\r\n orientation: PropTypes.oneOf(['v', 'h']),\r\n align: PropTypes.oneOf(['center', 'start'])\r\n};\r\n\r\nexport default ProfileLabelValue;\r\n","import PreventOrphanText from '@appCore/components/PreventOrphanText';\r\n\r\nfunction childrenToString(children) {\r\n return Array.isArray(children) ? children.join('') : children;\r\n}\r\n\r\n/**\r\n * Hidden Content\r\n */\r\n\r\nexport const HiddenContent = ({ children }) => {\r\n return (\r\n <span className=\"italic\">\r\n <PreventOrphanText text={childrenToString(children)} />\r\n </span>\r\n );\r\n};\r\n\r\n/**\r\n * EmptyContent\r\n */\r\nexport const EmptyContent = ({ children }) => {\r\n return (\r\n <span className=\"text-muted\">\r\n <PreventOrphanText text={childrenToString(children)} />\r\n </span>\r\n );\r\n};\r\n","import PropTypes from 'prop-types';\r\n\r\nimport requiredIf from '@appCore/propTypes/requiredIf';\r\nimport imageSrcManager from '@appCore/services/imageSrcManager';\r\nimport EditHeadshotBadge from '@appCore/components/EditHeadshotBadge/EditHeadshotBadge';\r\nimport { isSmallAndUp } from '@appCore/utility/viewport';\r\nimport { SHOW, HIDE } from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport { WiredLinkPropTypes } from '@appCore/components/WiredLink';\r\n\r\nconst Background = ({ athlete, config, editHeadshotLinkProps }) => {\r\n const isAnonymous = config.headshot === HIDE;\r\n\r\n const headshotUrl = imageSrcManager.getAthleteHeadshotSrc({\r\n username: athlete.Username,\r\n componentSize: !isSmallAndUp() ? 100 : 128,\r\n isAnonymous\r\n });\r\n\r\n const backgroundUrl = imageSrcManager.getAthleteHeadshotSrc({\r\n username: athlete.Username,\r\n componentSize: 1,\r\n isAnonymous\r\n });\r\n\r\n return (\r\n <div className=\"relative h-[104px] sm:h-[150px] bg-[#5d5d5d]\">\r\n {config.myRecruitsBadge === SHOW && (\r\n <div className=\"absolute bottom-4 right-6 z-[1] text-on-dark font-bold\">In My Recruits</div>\r\n )}\r\n <div className=\"absolute top-0 left-0 right-0 bottom-0 bg-no-repeat bg-scroll bg-center bg-[percentage:150%] \">\r\n <div\r\n className=\"w-full h-full bg-cover opacity-80\"\r\n style={{ backgroundImage: `url(${backgroundUrl}` }}\r\n />\r\n <div className=\"absolute left-6 bottom-[-55px] sm:bottom-[-69px]\">\r\n <div className=\"flex justify-center items-center rounded-full overflow-hidden bg-foreground-base border w-[110px] h-[110px] sm:w-[138px] sm:h-[138px]\">\r\n <img\r\n className=\"rounded-full flex-none w-[100px] h-[100px] sm:w-[128px] sm:h-[128px]\"\r\n src={headshotUrl}\r\n alt=\"Profile image\"\r\n />\r\n </div>\r\n {config.editHeadshot === SHOW && (\r\n <div className=\"absolute bottom-1 right-1 sm:bottom-2 sm:right-2\">\r\n <EditHeadshotBadge linkProps={editHeadshotLinkProps} />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nBackground.propTypes = {\r\n athlete: PropTypes.shape({\r\n Username: PropTypes.string.isRequired\r\n }).isRequired,\r\n config: PropTypes.object.isRequired,\r\n editHeadshotLinkProps: requiredIf(PropTypes.exact(WiredLinkPropTypes), ({ config }) => config.editHeadshot === SHOW)\r\n};\r\n\r\nexport default Background;\r\n","import { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Title } from '@fieldlevel/playbook';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport PremiumBadge from '@appCore/components/PremiumBadge/PremiumBadge';\r\nimport { HEADER_SECTION, SHOW } from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\n\r\nfunction buildDetails(athlete, config) {\r\n const details = [];\r\n\r\n if (athlete.Positions) {\r\n details.push(athlete.Positions);\r\n }\r\n\r\n if (athlete.Metric) {\r\n details.push(athlete.Metric);\r\n }\r\n\r\n if (config.heightWeight === SHOW) {\r\n let heightWeight = athlete.Height;\r\n if (athlete.Weight) {\r\n heightWeight += `, ${athlete.Weight}lbs`;\r\n }\r\n\r\n if (heightWeight) {\r\n details.push(heightWeight);\r\n }\r\n }\r\n\r\n if (config.gpa === SHOW && athlete.Gpa) {\r\n details.push(athlete.Gpa.toFixed(2) + ' GPA');\r\n }\r\n\r\n return details.join(' / ');\r\n}\r\n\r\nconst HeaderDisplay = ({\r\n accountPlansLinkProps,\r\n backgroundRendering,\r\n actionBarRendering,\r\n commitmentChipRendering,\r\n contactInfoRendering\r\n}) => {\r\n const { configContext, profile } = useContext(ProfileContext);\r\n const { athlete, commitment } = profile;\r\n const config = configTools(configContext).getConfig(HEADER_SECTION);\r\n\r\n return (\r\n <>\r\n <div className=\"bg-foreground-base\">\r\n {backgroundRendering}\r\n <div className=\"mt-4\">\r\n {actionBarRendering}\r\n <div className=\"flex flex-col pt-0 pb-8 px-6 mt-6 sm:flex-row sm:justify-between sm:items-center\">\r\n <div>\r\n {(configContext.data.IsViewingSelf || configContext.data.IsViewingAthleteOnTeam) &&\r\n profile.athlete.IsPremium &&\r\n (() => {\r\n const content = (\r\n <div className=\"mb-2\">\r\n <PremiumBadge variant=\"noBackground\" size=\"extraLarge\" />\r\n </div>\r\n );\r\n return (\r\n <div className=\"mt-4\">\r\n {accountPlansLinkProps ? (\r\n <WiredLink {...accountPlansLinkProps}>{content}</WiredLink>\r\n ) : (\r\n content\r\n )}\r\n </div>\r\n );\r\n })()}\r\n <Title>{athlete.DisplayName}</Title>\r\n <p className=\"text-muted\">\r\n HS {athlete.HighSchoolGraduationYear}{' '}\r\n {config.hometown === SHOW && athlete.City ? `from ${athlete.City}, ` : ''}\r\n {config.hometown === SHOW ? athlete.State : athlete.StateLongName || athlete.State}\r\n </p>\r\n <div className=\"mt-2\">{contactInfoRendering}</div>\r\n <p className=\"mt-4 text-body\">{buildDetails(athlete, config)}</p>\r\n </div>\r\n {commitment && commitment.CommitmentLevelEnum.Id > 0 && (\r\n <div className=\"mt-4\">{commitmentChipRendering}</div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nHeaderDisplay.propTypes = {\r\n accountPlansLinkProps: PropTypes.exact(WiredLink.propTypes),\r\n backgroundRendering: PropTypes.node,\r\n actionBarRendering: PropTypes.node,\r\n commitmentChipRendering: PropTypes.node,\r\n contactInfoRendering: PropTypes.node\r\n};\r\n\r\nexport default HeaderDisplay;\r\n","import { useContext, useState } from 'react';\r\n\r\nimport { Card, Stack, Icon, Button, Heading } from '@fieldlevel/playbook';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport ReadMoreText from '@appCore/components/ReadMoreText';\r\nimport EyeIcon from '@appCore/icons/EyeIcon';\r\nimport { getProjectionLevels } from '@appCore/utility/apiUtils';\r\nimport { fromNow } from '@appCore/utility/dateUtils';\r\nimport { removeLineBreaks } from '@appCore/utility/stringUtils';\r\nimport { SHOW, LOCK } from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\n\r\n/** @typedef {import('@appCore/components/WiredLink').WiredLinkPropTypes} WiredLinkPropTypes */\r\n\r\n/**\r\n * @param {object} props\r\n * @param {object} props.certification\r\n * @param {WiredLinkPropTypes} props.discussLinkProps\r\n * @param {WiredLinkPropTypes} props.certifyLinkProps\r\n * @param {import('react').ReactNode} props.coachDetailsRendering\r\n * @param {Function} props.onReadMore\r\n * @returns {import('react').JSX.Element}\r\n */\r\nexport const ReferenceEvaluation = ({\r\n certification,\r\n discussLinkProps,\r\n certifyLinkProps,\r\n coachDetailsRendering,\r\n onReadMore\r\n}) => {\r\n const [showWhitespace, setShowWhitespace] = useState(false);\r\n const { configContext, profile } = useContext(ProfileContext);\r\n const config = configTools(configContext).getCertificationConfig(certification);\r\n\r\n const handleReadMore = isAnonymized => {\r\n setShowWhitespace(true);\r\n onReadMore && onReadMore(certification, isAnonymized);\r\n };\r\n\r\n return (\r\n <div>\r\n {coachDetailsRendering}\r\n <div className=\"ml-[76px]\">\r\n <p className=\"mt-4 mb-1 text-muted\">Last updated {fromNow(certification.DateModifiedUtc)}</p>\r\n <p>\r\n <span className=\"inline-flex -translate-y-px scale-75 align-middle\">\r\n <Icon source={EyeIcon} color=\"muted\" />\r\n </span>\r\n \r\n <span className=\"text-muted\">Visible to colleges only</span>\r\n </p>\r\n\r\n <div className=\"mt-2\">\r\n <div className=\"mt-2 text-body \">\r\n {config.contents === SHOW && (\r\n <>\r\n Projected{' '}\r\n {getProjectionLevels(\r\n certification.ProjectedCompetitionLevels,\r\n certification.CompetitionLevels,\r\n profile.sportEnum\r\n )}\r\n .{' '}\r\n <ReadMoreText\r\n truncateAt={100}\r\n truncateLongerThan={125}\r\n onReadMore={() => handleReadMore(false)}\r\n >\r\n {certification.Assessment.length > 125 && !showWhitespace\r\n ? removeLineBreaks({ string: certification.Assessment, replaceValue: ' ' })\r\n : certification.Assessment}\r\n </ReadMoreText>\r\n </>\r\n )}\r\n\r\n {config.contents === LOCK && (\r\n <span className=\"[&_span]:blur-sm\">\r\n <ReadMoreText\r\n truncateAt={100}\r\n truncateLongerThan={125}\r\n showEllipsis={false}\r\n onReadMore={() => handleReadMore(true)}\r\n >\r\n {certification.Assessment.length > 125 && !showWhitespace\r\n ? removeLineBreaks({ string: certification.Assessment, replaceValue: ' ' })\r\n : certification.Assessment}\r\n </ReadMoreText>\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {config.discussAthlete === SHOW && (\r\n <div className=\"pt-6\">\r\n <WiredLink {...discussLinkProps} unstyled>\r\n <Button variant=\"basic\">Discuss athlete</Button>\r\n </WiredLink>\r\n </div>\r\n )}\r\n\r\n {config.updateEvaluation === SHOW && (\r\n <div className=\"pt-6\">\r\n <WiredLink {...certifyLinkProps} unstyled>\r\n <Button variant=\"basic\">Update evaluation</Button>\r\n </WiredLink>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * @param {object} props\r\n * @param {import('react').ReactNode} props.ctaRendering\r\n * @param {function(object): import('react').ReactNode} props.renderCertification\r\n * @returns {import('react').JSX.Element}\r\n */\r\nconst ReferencesDisplay = ({ ctaRendering, renderCertification }) => {\r\n const { profile } = useContext(ProfileContext);\r\n\r\n return (\r\n <Card>\r\n <div className=\"pt-0 pb-8 sm:px-8\">\r\n <Stack distribute=\"between\" align=\"center\">\r\n <Stack.Item>\r\n <Heading>References</Heading>\r\n </Stack.Item>\r\n <Stack.Item>{ctaRendering}</Stack.Item>\r\n </Stack>\r\n\r\n {profile.certifications.length > 0 && (\r\n <div className=\"mt-6\">\r\n {profile.certifications.map((item, index, row) => (\r\n <div className=\"mb-16 last:mb-0\" key={index}>\r\n {renderCertification({ certification: item })}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {profile.certifications.length === 0 && (\r\n <div className=\"mt-10\">\r\n No references for {profile.athlete.FirstName} yet. Current or past coach references will appear\r\n here once they're added.\r\n </div>\r\n )}\r\n </div>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default ReferencesDisplay;\r\n","import { useEffect, useState, useReducer, useContext } from 'react';\r\nimport { useInView } from 'react-intersection-observer';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Modal, Card, Icon, ButtonGroup, Button } from '@fieldlevel/playbook';\r\n\r\nimport CommitmentMajor from '@appCore/icons/CommitmentMajor';\r\nimport { logImpression, logEvent } from '@appCore/utility/googleAnalytics';\r\nimport AltLinkMajor from '@appCore/icons/AltLinkMajor';\r\nimport VideoMajor from '@appCore/icons/VideoMajor';\r\nimport PortalAnnouncementMajor from '@appCore/icons/PortalAnnouncementMajor';\r\nimport VideoUploadModal from '@appCore/components/VideoUploadModal/VideoUploadModal';\r\n\r\nimport AnnounceCommitmentPost from './AnnounceCommitmentPost';\r\nimport PortalAnnouncementPost from './PortalAnnouncementPost';\r\nimport { ProfileContext } from '../AthleteProfileDisplay';\r\nimport PostForm from './PostForm';\r\n\r\nconst AddPostButton = ({ onClick }) => (\r\n // use playbook classes to match styling but over ride text positioning until playbook can handle this with a property or override\r\n <button\r\n onClick={onClick}\r\n className=\"Playbook-Button__Button Playbook-Button__secondary Playbook-Button__fullWidth !justify-start\"\r\n >\r\n <span className=\"font-normal text-[#8e8e8e]\">Post to timeline</span>\r\n </button>\r\n);\r\n\r\nconst LinkModal = ({\r\n postType,\r\n isAthlete,\r\n postResponse,\r\n title,\r\n placeholder,\r\n dispatch,\r\n canPostTransferPortalAnnouncement\r\n}) => {\r\n const [show, setShow] = useState(true);\r\n\r\n const closeModal = () => {\r\n setShow(false);\r\n };\r\n\r\n const postLink = () => {\r\n logEvent('Post Option Clicked', 'Athlete Timeline', { label: linkLabel });\r\n dispatch({ type: 'post.link' });\r\n };\r\n\r\n const postPerformance = () => {\r\n logEvent('Post Option Clicked', 'Athlete Timeline', { label: performanceLabel });\r\n dispatch({ type: 'post.performance' });\r\n };\r\n\r\n const postVideo = () => {\r\n logEvent('Post Option Clicked', 'Athlete Timeline', { label: vidoeLabel });\r\n dispatch({ type: 'post.video' });\r\n };\r\n\r\n const postCommitment = () => {\r\n logEvent('Post Option Clicked', 'Athlete Timeline', { label: commitmentLabel });\r\n dispatch({ type: 'post.announceCommitment' });\r\n };\r\n\r\n const postPortalAnnouncement = () => {\r\n logEvent('Post Option Clicked', 'Athlete Timeline', { label: portalLabel });\r\n dispatch({ type: 'post.portalAnnouncement' });\r\n };\r\n\r\n useEffect(() => {\r\n if (!show) {\r\n setTimeout(() => {\r\n dispatch({ type: 'post.clear' });\r\n }, 500);\r\n }\r\n }, [show, dispatch]);\r\n\r\n return (\r\n <Modal open={show} title={title} onDismiss={closeModal}>\r\n <>\r\n {(postType === 'link' || postType === 'performance') && (\r\n <PostForm\r\n postType={postType}\r\n isAthlete={isAthlete}\r\n postResponse={postResponse}\r\n placeholder={placeholder}\r\n onSave={closeModal}\r\n />\r\n )}\r\n {postType === 'select' && (\r\n <div className=\"space-y-6\">\r\n <div className=\"flex items-center gap-2 cursor-pointer\" onClick={postVideo}>\r\n <span className=\"m-0\">\r\n <Icon source={VideoMajor} />\r\n </span>\r\n Add video\r\n </div>\r\n\r\n <div className=\"flex items-center gap-2 cursor-pointer\" onClick={postLink}>\r\n <span className=\"m-0\">\r\n <Icon source={AltLinkMajor} />\r\n </span>\r\n Add link\r\n </div>\r\n {canPostTransferPortalAnnouncement && (\r\n <div className=\"flex items-center gap-2 cursor-pointer\" onClick={postPortalAnnouncement}>\r\n <span className=\"m-0\">\r\n <Icon source={PortalAnnouncementMajor} />\r\n </span>\r\n Portal announcement\r\n </div>\r\n )}\r\n {!isAthlete && (\r\n <div className=\"flex items-center gap-2 cursor-pointer\" onClick={postPerformance}>\r\n <span className=\"m-0\">\r\n <Icon source={CommitmentMajor} />\r\n </span>\r\n Player update\r\n </div>\r\n )}\r\n <div className=\"flex items-center gap-2 cursor-pointer\" onClick={postCommitment}>\r\n <span className=\"m-0\">\r\n <Icon source={CommitmentMajor} />\r\n </span>\r\n Announce commitment\r\n </div>\r\n </div>\r\n )}\r\n </>\r\n </Modal>\r\n );\r\n};\r\n\r\nconst initialState = {\r\n postType: null\r\n};\r\n\r\nconst reducer = (state, action) => {\r\n switch (action.type) {\r\n case 'post.select':\r\n return { ...state, postType: 'select' };\r\n case 'post.link':\r\n return { ...state, postType: 'link' };\r\n case 'post.performance':\r\n return { ...state, postType: 'performance' };\r\n case 'post.video':\r\n return { ...state, postType: 'video' };\r\n case 'post.announceCommitment':\r\n return { ...state, postType: 'announceCommitment' };\r\n case 'post.previewCommitment':\r\n return { ...state, postType: 'previewCommitment' };\r\n case 'post.portalAnnouncement':\r\n return { ...state, postType: 'portalAnnouncement' };\r\n case 'post.previewPortalAnnouncement':\r\n return { ...state, postType: 'previewPortalAnnouncement' };\r\n case 'post.portalAnnouncementVideoSelect':\r\n return { ...state, postType: 'portalAnnouncementVideoSelect' };\r\n case 'post.clear':\r\n return { ...state, postType: null };\r\n default:\r\n throw new Error('Unknown reducer action type!');\r\n }\r\n};\r\n\r\nconst linkLabel = 'Website link/URL';\r\nconst performanceLabel = 'Player Update';\r\nconst vidoeLabel = 'Add video';\r\nconst commitmentLabel = 'Commitment post';\r\nconst portalLabel = 'Portal announcement';\r\n\r\nconst AddPost = ({\r\n isAthlete,\r\n postResponse,\r\n athlete,\r\n sportEnum,\r\n videoUploadConfig,\r\n renderAnnounceCommitmentModal,\r\n canPostTransferPortalAnnouncement,\r\n renderPortalAnnouncmentModal,\r\n postToTimelinePortalClick,\r\n postToTimelinePortalImpression\r\n}) => {\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n const { onAction } = useContext(ProfileContext);\r\n\r\n const [ref, inView] = useInView({ threshold: 1, triggerOnce: true });\r\n\r\n useEffect(() => {\r\n if (inView) {\r\n postToTimelinePortalImpression(athlete);\r\n }\r\n }, [inView]);\r\n\r\n useEffect(() => {\r\n logImpression('Post Button Viewed', 'Athlete Timeline');\r\n }, []);\r\n\r\n const handleUploadCancel = () => {\r\n dispatch({ type: 'post.clear' });\r\n };\r\n\r\n const handleUploadComplete = () => {\r\n dispatch({ type: 'post.clear' });\r\n onAction('timeline-refresh');\r\n };\r\n\r\n const postSelect = () => {\r\n dispatch({ type: 'post.select' });\r\n };\r\n\r\n const renderPostModal = type => {\r\n switch (type) {\r\n case 'select':\r\n return (\r\n <LinkModal\r\n postType={type}\r\n isAthlete={isAthlete}\r\n postResponse={postResponse}\r\n title=\"Post to timeline\"\r\n dispatch={dispatch}\r\n canPostTransferPortalAnnouncement={canPostTransferPortalAnnouncement}\r\n />\r\n );\r\n case 'link':\r\n case 'performance':\r\n const title = type === 'link' ? 'Website Link' : 'Player Update';\r\n const placeholder =\r\n type === 'link'\r\n ? 'Paste links to stats, articles, etc.'\r\n : 'Share an update with college coaches...';\r\n\r\n return (\r\n <LinkModal\r\n postType={type}\r\n isAthlete={isAthlete}\r\n postResponse={postResponse}\r\n title={title}\r\n placeholder={placeholder}\r\n dispatch={dispatch}\r\n />\r\n );\r\n case 'announceCommitment':\r\n case 'previewCommitment':\r\n return (\r\n <AnnounceCommitmentPost\r\n postType={type}\r\n dispatch={dispatch}\r\n sport={sportEnum}\r\n athlete={athlete}\r\n postResponse={postResponse}\r\n renderAnnounceCommitmentModal={renderAnnounceCommitmentModal}\r\n />\r\n );\r\n case 'portalAnnouncement':\r\n case 'previewPortalAnnouncement':\r\n case 'portalAnnouncementVideoSelect':\r\n return (\r\n <PortalAnnouncementPost\r\n dispatch={dispatch}\r\n postType={type}\r\n athlete={athlete}\r\n sport={sportEnum}\r\n postResponse={postResponse}\r\n renderPortalAnnouncmentModal={renderPortalAnnouncmentModal}\r\n />\r\n );\r\n case 'video':\r\n return (\r\n <VideoUploadModal\r\n profileId={athlete.ProfileId}\r\n sportEnum={sportEnum}\r\n maxDuration={videoUploadConfig.MaxDurationSec}\r\n maxFileSize={videoUploadConfig.MaxFileSizeBytes}\r\n onCancel={handleUploadCancel}\r\n onComplete={handleUploadComplete}\r\n />\r\n );\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n return (\r\n <Card>\r\n <Card.Section>\r\n <AddPostButton onClick={postSelect} />\r\n <div className=\"mt-4\">\r\n <ButtonGroup>\r\n <Button\r\n icon={VideoMajor}\r\n variant=\"plain\"\r\n size=\"slim\"\r\n onClick={() => dispatch({ type: 'post.video' })}\r\n >\r\n Video\r\n </Button>\r\n {canPostTransferPortalAnnouncement ? (\r\n <Button\r\n icon={PortalAnnouncementMajor}\r\n variant=\"plain\"\r\n size=\"slim\"\r\n onClick={() => {\r\n postToTimelinePortalClick(athlete);\r\n dispatch({ type: 'post.portalAnnouncement' });\r\n }}\r\n >\r\n <span className=\"flex\" ref={ref}>\r\n Portal <span className=\"hidden md:block\"> announcement</span>\r\n </span>\r\n </Button>\r\n ) : (\r\n <Button\r\n icon={AltLinkMajor}\r\n variant=\"plain\"\r\n size=\"slim\"\r\n onClick={() => dispatch({ type: 'post.link' })}\r\n >\r\n Link\r\n </Button>\r\n )}\r\n <Button\r\n icon={CommitmentMajor}\r\n variant=\"plain\"\r\n size=\"slim\"\r\n onClick={() => dispatch({ type: 'post.announceCommitment' })}\r\n >\r\n Commitment\r\n </Button>\r\n </ButtonGroup>\r\n </div>\r\n {renderPostModal(state.postType)}\r\n </Card.Section>\r\n </Card>\r\n );\r\n};\r\n\r\nAddPost.propTypes = {\r\n isAthlete: PropTypes.bool.isRequired,\r\n athlete: PropTypes.object,\r\n postResponse: PropTypes.object,\r\n sportEnum: PropTypes.string,\r\n videoUploadConfig: PropTypes.object,\r\n canPostTransferPortalAnnouncement: PropTypes.bool,\r\n postToTimelineClick: PropTypes.func,\r\n postToTimelinePortalImpression: PropTypes.func\r\n};\r\n\r\nexport default AddPost;\r\n","import { useState, useEffect, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { ProfileContext } from '../AthleteProfileDisplay';\r\n\r\nconst AnnounceCommitmentPost = ({\r\n postType,\r\n dispatch,\r\n sport,\r\n athlete,\r\n postResponse,\r\n renderAnnounceCommitmentModal\r\n}) => {\r\n const { postCommitmentView, onAction } = useContext(ProfileContext);\r\n const [open, setOpen] = useState(true);\r\n\r\n useEffect(() => {\r\n if (postResponse.success && !postResponse?.actionType?.length > 0) {\r\n closeModal();\r\n onAction('reset-post-response-state');\r\n }\r\n }, [postResponse]);\r\n\r\n const closeModal = () => {\r\n setOpen(false);\r\n };\r\n\r\n useEffect(() => {\r\n if (!open) {\r\n dispatch({ type: 'post.clear' });\r\n }\r\n }, [open]);\r\n\r\n const onPreview = () => {\r\n dispatch({ type: 'post.previewCommitment' });\r\n };\r\n\r\n const onBack = () => {\r\n dispatch({ type: 'post.announceCommitment' });\r\n };\r\n\r\n const onSubmit = values => {\r\n onAction('post-commitment', { values });\r\n };\r\n\r\n const modalActions = {\r\n onPreview: onPreview,\r\n onBack: onBack,\r\n onSubmit: onSubmit,\r\n onDismiss: closeModal\r\n };\r\n\r\n return renderAnnounceCommitmentModal({\r\n sport,\r\n athlete,\r\n open,\r\n postType,\r\n isDisabled: postResponse.isSaving,\r\n modalActions,\r\n commitmentView: postCommitmentView\r\n });\r\n};\r\n\r\nAnnounceCommitmentPost.propTypes = {\r\n postType: PropTypes.oneOf(['announceCommitment', 'previewCommitment']).isRequired,\r\n dispatch: PropTypes.func,\r\n sport: PropTypes.string.isRequired,\r\n athlete: PropTypes.object.isRequired,\r\n postResponse: PropTypes.object\r\n};\r\n\r\nexport default AnnounceCommitmentPost;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport { Icon, Heading } from '@fieldlevel/playbook';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport CommitmentMajor from '@appCore/icons/CommitmentMajor';\r\nimport TeamDetailsDisplay from '@appCore/components/TeamDetailsDisplay';\r\n\r\nimport { TimelineItemBasicLayout } from './TimelineItem';\r\n\r\nconst CommitmentPreview = ({ athlete, commitment, commitmentLinkProps, teamLinkProps }) => {\r\n const { CommittedToTeam: team } = commitment;\r\n\r\n return (\r\n <TimelineItemBasicLayout\r\n backgroundColor=\"#0369a1\"\r\n iconRendering={<Icon source={CommitmentMajor} color=\"onDark\" />}\r\n contentRendering={\r\n <div className=\"p-4\">\r\n <Heading>Committed</Heading>\r\n <div>\r\n {athlete.DisplayName} has committed to join the {team.SportEnum.Label.toLowerCase()} team at{' '}\r\n {team.OrganizationName}.\r\n <div className=\"mt-6 mb-4\">\r\n <TeamDetailsDisplay\r\n team={team}\r\n options={{\r\n showAthleticAssociation: false,\r\n showSportLabel: false,\r\n teamProfileLinkProps: teamLinkProps\r\n }}\r\n >\r\n <span className=\"text-body-sm\">\r\n {team.AthleticAssociationEnum.Label} in {team.City}, {team.State}\r\n </span>\r\n </TeamDetailsDisplay>\r\n </div>\r\n </div>\r\n {commitmentLinkProps && (\r\n <WiredLink {...commitmentLinkProps}>\r\n <div className=\"text-interactive-active mt-6\">\r\n View {athlete.FirstName}'s commitment story\r\n </div>\r\n </WiredLink>\r\n )}\r\n </div>\r\n }\r\n />\r\n );\r\n};\r\n\r\nCommitmentPreview.propTypes = {\r\n athlete: PropTypes.shape({\r\n DisplayName: PropTypes.string.isRequired,\r\n Username: PropTypes.string.isRequired\r\n }).isRequired,\r\n commitment: PropTypes.object.isRequired,\r\n commitmentLinkProps: PropTypes.exact(WiredLink.propTypes),\r\n teamLinkProps: PropTypes.exact(WiredLink.propTypes)\r\n};\r\n\r\nexport default CommitmentPreview;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport { Icon, Heading } from '@fieldlevel/playbook';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport ExternalLinkIcon from '@appCore/icons/ExternalLinkIcon';\r\nimport FileTextIcon from '@appCore/icons/FileTextIcon';\r\n\r\nimport { TimelineItemBasicLayout } from './TimelineItem';\r\n\r\nfunction getHost(linkUrl) {\r\n const url = new URL(linkUrl);\r\n return url.hostname;\r\n}\r\n\r\nconst LinkPreview = ({ link, onClick }) => {\r\n return (\r\n <WiredLink unstyled url={link.Url} onClick={onClick} target=\"_blank\">\r\n <TimelineItemBasicLayout\r\n iconRendering={\r\n link.ThumbnailUrl ? (\r\n <div\r\n className=\"absolute top-0 left-0 right-0 bottom-0 bg-cover bg-[#f4f6f7]\"\r\n style={{ backgroundImage: `url(${link.ThumbnailUrl})` }}\r\n />\r\n ) : (\r\n <span className=\"scale-[175%] text-base\">\r\n <Icon source={FileTextIcon} color=\"current\" />\r\n </span>\r\n )\r\n }\r\n contentRendering={\r\n <div className=\"flex flex-col justify-center min-w-0 pl-4 py-2\">\r\n <Heading>\r\n <span className=\"block overflow-hidden overflow-ellipsis whitespace-nowrap text-body\">\r\n {link.Title}\r\n </span>\r\n </Heading>\r\n <p className=\"max-h-[3em] mt-2 overflow-hidden text-body\">\r\n <span\r\n style={{\r\n display: '-webkit-box',\r\n WebkitLineClamp: '2',\r\n WebkitBoxOrient: 'vertical',\r\n overflow: 'hidden'\r\n }}\r\n >\r\n {link.Description}\r\n </span>\r\n </p>\r\n <div className=\"flex items-center mt-4 gap-2 text-body-sm text-interactive-active\">\r\n <span className=\"flex-none\">\r\n <Icon source={ExternalLinkIcon} color=\"current\" />\r\n </span>\r\n <span className=\"flex-none\">{getHost(link.Url)}</span>\r\n </div>\r\n </div>\r\n }\r\n />\r\n </WiredLink>\r\n );\r\n};\r\n\r\nLinkPreview.propTypes = {\r\n link: PropTypes.shape({\r\n LinkId: PropTypes.number.isRequired,\r\n DateUtc: PropTypes.string.isRequired,\r\n Title: PropTypes.string.isRequired,\r\n Description: PropTypes.string.isRequired,\r\n Url: PropTypes.string.isRequired,\r\n Guid: PropTypes.string.isRequired,\r\n ThumbnailUrl: PropTypes.string\r\n }),\r\n onClick: PropTypes.func\r\n};\r\n\r\nexport default LinkPreview;\r\n","import { useState, useEffect, useContext } from 'react';\r\n\r\nimport { ProfileContext } from '../AthleteProfileDisplay';\r\n\r\nconst PortalAnnouncementPost = ({ renderPortalAnnouncmentModal, dispatch, postType, athlete, sport, postResponse }) => {\r\n const { onAction } = useContext(ProfileContext);\r\n const [open, setOpen] = useState(true);\r\n\r\n useEffect(() => {\r\n if (postResponse.success && !postResponse?.actionType?.length > 0) {\r\n closeModal();\r\n onAction('reset-post-response-state');\r\n }\r\n }, [postResponse]);\r\n\r\n useEffect(() => {\r\n if (!open) {\r\n dispatch({ type: 'post.clear' });\r\n }\r\n }, [open]);\r\n\r\n const closeModal = () => {\r\n setOpen(false);\r\n };\r\n\r\n const onPreview = () => {\r\n dispatch({ type: 'post.previewPortalAnnouncement' });\r\n };\r\n\r\n const onBack = () => {\r\n dispatch({ type: 'post.portalAnnouncement' });\r\n };\r\n\r\n const selectVideo = () => {\r\n dispatch({ type: 'post.portalAnnouncementVideoSelect' });\r\n };\r\n\r\n const onSubmit = values => {\r\n onAction('post-portal-announcement', { values });\r\n };\r\n\r\n const modalActions = {\r\n onDismiss: closeModal,\r\n onPreview: onPreview,\r\n onBack: onBack,\r\n selectVideo: selectVideo,\r\n onSubmit: onSubmit\r\n };\r\n\r\n return renderPortalAnnouncmentModal({\r\n open,\r\n modalActions,\r\n postType,\r\n athlete,\r\n sport,\r\n dispatch,\r\n isDisabled: postResponse.isSaving\r\n });\r\n};\r\n\r\nPortalAnnouncementPost.propTypes = {};\r\n\r\nexport default PortalAnnouncementPost;\r\n","import React, { useEffect, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Button, Heading } from '@fieldlevel/playbook';\r\n\r\nimport useValidatedForm from '@appCore/hooks/useValidatedForm';\r\nimport { FilmTypeOptions } from '@appCore/constants/api';\r\n\r\nimport { ProfileContext } from '../AthleteProfileDisplay';\r\n\r\nconst legacyFormControlClassname =\r\n 'block w-full h-[34px] py-[6px] px-[12px] text-[14px] text-[#555] border rounded shadow bg-[#f4f6f7] focus:border-[#66afe9] focus:shadow-inner focus:shadow-[rgb(102,175,233)]/60 focus:outline-none';\r\n\r\nconst PostForm = ({ postType, isAthlete, postResponse, placeholder, onSave }) => {\r\n const { onAction } = useContext(ProfileContext);\r\n const { values, errors, handleChange, handleSubmit } = useValidatedForm(save, validate, null);\r\n\r\n const defaultPlaceholder = isAthlete\r\n ? 'Add a video link (YouTube/Hudl/etc) or article link here...'\r\n : 'Add a video link (YouTube/Hudl/etc), article link, or written update of your athlete...';\r\n\r\n function validate(values) {\r\n let errors = {};\r\n\r\n if (!values.item) {\r\n errors.item = 'Please enter a value.';\r\n } else if (postType == 'link') {\r\n let matches = values.item.match(/https?:/gi);\r\n if (isAthlete) {\r\n if (!matches) {\r\n errors.item = 'Please enter a valid url.';\r\n } else if (matches.length > 1) {\r\n errors.item = 'Please enter only one url.';\r\n }\r\n } else {\r\n if (matches && matches.length > 1) {\r\n errors.item = 'Please enter only one url.';\r\n }\r\n }\r\n\r\n if (\r\n (!errors.item && values.item.indexOf('youtube.com') != -1) ||\r\n values.item.indexOf('youtu.be') != -1 ||\r\n values.item.indexOf('hudl.com') != -1\r\n ) {\r\n if (!values.title) {\r\n errors.title = 'Please enter a caption.';\r\n }\r\n\r\n if (!values.filmTypeEnum) {\r\n errors.filmTypeEnum = 'Please select video type.';\r\n }\r\n }\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n function save() {\r\n onAction('timeline-post', values);\r\n onSave && onSave();\r\n }\r\n\r\n const textRef = React.createRef();\r\n\r\n useEffect(() => {\r\n if (postResponse.success) {\r\n textRef.current.value = '';\r\n values.item = '';\r\n }\r\n }, [postResponse]);\r\n\r\n let isVideoUrl = false;\r\n if (values.item) {\r\n const matches = values.item.match(/https?:/gi);\r\n if (matches && matches.length == 1) {\r\n isVideoUrl =\r\n values.item.indexOf('youtube.com') != -1 ||\r\n values.item.indexOf('youtu.be') != -1 ||\r\n values.item.indexOf('hudl.com') != -1;\r\n }\r\n }\r\n\r\n return (\r\n <form onSubmit={handleSubmit} noValidate>\r\n <textarea\r\n ref={textRef}\r\n className={legacyFormControlClassname}\r\n style={{ lineHeight: '1.42857143', height: 'auto' }}\r\n rows=\"3\"\r\n name=\"item\"\r\n value={values.item || ''}\r\n onChange={handleChange}\r\n placeholder={placeholder || defaultPlaceholder}\r\n />\r\n {errors.item && (\r\n <div className=\"mt-2\">\r\n <span className=\"text-critical\">{errors.item}</span>\r\n </div>\r\n )}\r\n {postType === 'link' && isVideoUrl && !errors.item && (\r\n <>\r\n <div className=\"mt-8 space-y-2\">\r\n <Heading size=\"Small\">Write a caption</Heading>\r\n <div>\r\n <input\r\n type=\"text\"\r\n ref={textRef}\r\n maxLength=\"75\"\r\n className={legacyFormControlClassname}\r\n name=\"title\"\r\n onChange={handleChange}\r\n value={values.title}\r\n placeholder=\"Describe the video briefly...\"\r\n />\r\n </div>\r\n {errors?.title && <div className=\"mt-2 text-critical\">{errors.title}</div>}\r\n </div>\r\n <div className=\"mt-8 space-y-2\">\r\n <Heading size=\"Small\">Select type of video</Heading>\r\n {FilmTypeOptions.map(option => (\r\n <div key={option.value}>\r\n <label className=\"flex items-center gap-2\">\r\n <input\r\n type=\"radio\"\r\n value={option.value}\r\n onChange={handleChange}\r\n name=\"filmTypeEnum\"\r\n checked={values.filmTypeEnum == option.value}\r\n />\r\n {option.label}\r\n </label>\r\n </div>\r\n ))}\r\n {errors?.filmTypeEnum && (\r\n <>\r\n <div className=\"text-critical\">{errors.filmTypeEnum}</div>\r\n </>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n <div className=\"mt-8 text-right\">\r\n <Button variant=\"primary\" submit disabled={!!Object.keys(errors).length || postResponse.isSaving}>\r\n Post\r\n </Button>\r\n </div>\r\n </form>\r\n );\r\n};\r\n\r\nPostForm.propTypes = {\r\n postType: PropTypes.oneOf(['link', 'performance']),\r\n isAthlete: PropTypes.bool.isRequired,\r\n postResponse: PropTypes.object,\r\n placeholder: PropTypes.string,\r\n onSave: PropTypes.func\r\n};\r\n\r\nexport default PostForm;\r\n","import React, { useContext, useReducer } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Card, Button } from '@fieldlevel/playbook';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport { TIMELINE_SECTION, SHOW, HIDE } from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\n\r\nimport PostForm from './PostForm';\r\nimport AddPost from './AddPost';\r\n\r\nexport const TimelineContext = React.createContext({});\r\n\r\nfunction initialState(onAction) {\r\n return {\r\n currentVideo: null,\r\n onAction: onAction\r\n };\r\n}\r\n\r\nfunction reducer(state, action) {\r\n switch (action.type) {\r\n case 'VIDEO_PLAY':\r\n return { ...state, currentVideo: action.item.Video };\r\n default:\r\n return { ...state };\r\n }\r\n}\r\n\r\nconst TimelineDisplay = ({\r\n signUpLinkProps,\r\n itemsRendering,\r\n renderAnnounceCommitmentModal,\r\n renderPortalAnnouncmentModal,\r\n postToTimelinePortalClick,\r\n postToTimelinePortalImpression\r\n}) => {\r\n const { configContext, profile, onAction, previewMode, postResponse } = useContext(ProfileContext);\r\n const config = configTools(configContext).getConfig(TIMELINE_SECTION);\r\n const [state, dispatch] = useReducer(reducer, initialState(onAction));\r\n const uploadConfig = configContext && configContext.data && configContext.data.VideoUploadConfig;\r\n const { timeline } = profile;\r\n\r\n const totalPages = Math.ceil(timeline.TotalResultCount / timeline.PageSize);\r\n // TODO - change when paging is put into place in-app\r\n const showMoreButton = !configContext.isAuthenticated && timeline.Page < totalPages;\r\n\r\n return (\r\n <TimelineContext.Provider value={{ state, dispatch }}>\r\n <div>\r\n {config.postForm === SHOW && (\r\n <div className=\"mb-4\">\r\n {uploadConfig.IsVideoUploadEnabled ? (\r\n <AddPost\r\n athlete={profile.athlete}\r\n isAthlete={configContext.data.IsViewingSelf}\r\n postResponse={postResponse}\r\n sportEnum={profile.sportEnum}\r\n videoUploadConfig={configContext.data.VideoUploadConfig}\r\n renderAnnounceCommitmentModal={renderAnnounceCommitmentModal}\r\n renderPortalAnnouncmentModal={renderPortalAnnouncmentModal}\r\n canPostTransferPortalAnnouncement={configContext.data.CanPostTransferPortalAnnouncement}\r\n postToTimelinePortalClick={postToTimelinePortalClick}\r\n postToTimelinePortalImpression={postToTimelinePortalImpression}\r\n />\r\n ) : (\r\n <Card>\r\n <PostForm isAthlete={configContext.data.IsViewingSelf} postResponse={postResponse} />\r\n </Card>\r\n )}\r\n </div>\r\n )}\r\n <div className=\"mb-10 space-y-4\">{itemsRendering}</div>\r\n {showMoreButton && (\r\n <div className=\"text-center\">\r\n {config.joinCTA === SHOW &&\r\n (previewMode ? (\r\n <Button>Join to View Full Timeline</Button>\r\n ) : (\r\n <WiredLink\r\n {...signUpLinkProps}\r\n onClick={() => {\r\n onAction('log-view-full-timeline-click');\r\n }}\r\n >\r\n <Button>Join to View Full Timeline</Button>\r\n </WiredLink>\r\n ))}\r\n {config.joinCTA === HIDE && <Button>View More</Button>}\r\n </div>\r\n )}\r\n </div>\r\n </TimelineContext.Provider>\r\n );\r\n};\r\n\r\nTimelineDisplay.propTypes = {\r\n signUpLinkProps: PropTypes.exact(WiredLink.propTypes),\r\n itemsRendering: PropTypes.node.isRequired,\r\n profileAnnounceCommitmentProps: PropTypes.object\r\n};\r\n\r\nexport default TimelineDisplay;\r\n","import { useContext } from 'react';\r\n\r\nimport { Icon, Heading } from '@fieldlevel/playbook';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport IDIcon from '@appCore/icons/IDIcon';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\nimport {\r\n TIMELINE_SECTION_CERTIFICATION,\r\n SHOW,\r\n HIDE\r\n} from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { HiddenContent } from '@appCore/components/athlete/AthleteProfileDisplay/ContentComponents';\r\n\r\nimport { TimelineItem, TimelineItemPostedBy, TimelineItemBasicLayout } from './TimelineItem';\r\n\r\nconst TimelineItemCertification = ({ item, profileCertificationsLinkProps }) => {\r\n const { configContext, profile } = useContext(ProfileContext);\r\n const config = configTools(configContext).getTimelineItemConfig(item, TIMELINE_SECTION_CERTIFICATION);\r\n const { athlete } = profile;\r\n\r\n return (\r\n <TimelineItem\r\n postedByRendering={<TimelineItemPostedBy item={item} />}\r\n contentRendering={\r\n <>\r\n {config.contents === SHOW &&\r\n (() => {\r\n const content = (\r\n <TimelineItemBasicLayout\r\n iconRendering={\r\n <span className=\"scale-[175%] text-base\">\r\n <Icon source={IDIcon} color=\"current\" />\r\n </span>\r\n }\r\n contentRendering={\r\n <div className=\"p-4\">\r\n <Heading>\r\n {item.PostedByCoach.DisplayName} updated {athlete.FirstName}'s\r\n evaluation\r\n </Heading>\r\n <div className=\"max-h-[2.7em] mt-1 overflow-hidden\">\r\n <span\r\n style={{\r\n display: '-webkit-box',\r\n WebkitLineClamp: '2',\r\n WebkitBoxOrient: 'vertical',\r\n overflow: 'hidden'\r\n }}\r\n >\r\n {item.Description}\r\n </span>\r\n </div>\r\n {profileCertificationsLinkProps && (\r\n <div className=\"mt-2 text-body-sm text-interactive-active\">\r\n Read more\r\n </div>\r\n )}\r\n </div>\r\n }\r\n />\r\n );\r\n return profileCertificationsLinkProps ? (\r\n <WiredLink {...profileCertificationsLinkProps} unstyled>\r\n {content}\r\n </WiredLink>\r\n ) : (\r\n content\r\n );\r\n })()}\r\n {config.contents === HIDE && (\r\n <div className=\"px-4 sm:px-6\">\r\n <HiddenContent>\r\n {athlete.FirstName}'s evaluation update is available to FieldLevel Coaches\r\n </HiddenContent>\r\n </div>\r\n )}\r\n </>\r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default TimelineItemCertification;\r\n","import { useContext, useState } from 'react';\r\n\r\nimport { Modal } from '@fieldlevel/playbook';\r\n\r\nimport { ContextMenu, ContextMenuItem } from '@appCore/components/ContextMenu/ContextMenu';\r\nimport {\r\n TIMELINE_SECTION_COMMITMENT,\r\n SHOW\r\n} from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\n\r\nimport CommitmentPreview from './CommitmentPreview';\r\nimport { TimelineItem, TimelineItemPostedBy } from './TimelineItem';\r\nimport { TimelineContext } from './TimelineDisplay';\r\n\r\nconst TimelineItemCommitment = ({ item, commitmentLinkProps, teamLinkProps }) => {\r\n const { dispatch } = useContext(TimelineContext);\r\n const { configContext, profile, urlBuilders, postResponse, onAction } = useContext(ProfileContext);\r\n const config = configTools(configContext).getTimelineItemConfig(item, TIMELINE_SECTION_COMMITMENT);\r\n\r\n const [open, setOpen] = useState(false);\r\n\r\n function handleClick() {\r\n onAction('log-timeline-commitment-click', item);\r\n }\r\n\r\n const handleRemoveCommitment = () => {\r\n const value = {\r\n id: item.Commitment.AthleteCommitmentHistoryId,\r\n username: profile.athlete.Username,\r\n sport: profile.sportEnum\r\n };\r\n\r\n onAction('delete-commitment', { value });\r\n };\r\n\r\n return (\r\n <>\r\n <TimelineItem\r\n postedByRendering={\r\n <TimelineItemPostedBy\r\n item={item}\r\n menuRendering={\r\n config.menu === SHOW && (\r\n <ContextMenu verticalButton={true}>\r\n <ContextMenuItem label=\"Delete\" onSelect={() => setOpen(true)} />\r\n </ContextMenu>\r\n )\r\n }\r\n />\r\n }\r\n contentRendering={\r\n <CommitmentPreview\r\n athlete={profile.athlete}\r\n commitment={item.Commitment}\r\n sportEnum={profile.sportEnum}\r\n urlBuilder={urlBuilders.commitmentStory}\r\n commitmentLinkProps={\r\n commitmentLinkProps ? { ...commitmentLinkProps, onClick: handleClick } : undefined\r\n }\r\n teamLinkProps={teamLinkProps ? teamLinkProps : undefined}\r\n />\r\n }\r\n />\r\n <Modal\r\n open={open}\r\n title=\"Delete announcement?\"\r\n primaryAction={{\r\n content: 'Yes, delete',\r\n destructive: true,\r\n onAction: handleRemoveCommitment,\r\n disabled: postResponse.isSaving\r\n }}\r\n secondaryAction={{\r\n content: 'No, keep',\r\n onAction: () => setOpen(false),\r\n disabled: postResponse.isSaving\r\n }}\r\n onDismiss={() => setOpen(false)}\r\n >\r\n <p>\r\n Your commimtent announcement will be removed from your timeline and your commitment story will be\r\n permanently deleted.\r\n </p>\r\n </Modal>\r\n </>\r\n );\r\n};\r\n\r\nexport default TimelineItemCommitment;\r\n","import { useContext } from 'react';\r\n\r\nimport { Heading } from '@fieldlevel/playbook';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\n\r\nimport { TimelineItem, TimelineItemPostedBy, TimelineItemBasicLayout } from './TimelineItem';\r\n\r\nconst TimelineItemJoinedFieldLevel = ({ item, previewMode, recruitingLinkProps }) => {\r\n const { profile, onAction } = useContext(ProfileContext);\r\n\r\n function handleClick() {\r\n onAction('log-joined-fl-click', item);\r\n }\r\n\r\n const content = (\r\n <TimelineItemBasicLayout\r\n iconRendering={<img src=\"assets/v5/img/fl-mark-only.svg\" width=\"40\" height=\"40\" alt=\"FieldLevel logo\" />}\r\n contentRendering={\r\n <div className=\"p-4\">\r\n <Heading>{profile.athlete.DisplayName} joined FieldLevel</Heading>\r\n <div className=\"mt-2 text-body-sm text-interactive-active\">Learn More</div>\r\n </div>\r\n }\r\n />\r\n );\r\n\r\n return (\r\n <TimelineItem\r\n postedByRendering={<TimelineItemPostedBy item={item} />}\r\n contentRendering={\r\n previewMode ? (\r\n content\r\n ) : (\r\n <WiredLink {...{ ...recruitingLinkProps, onClick: handleClick }} unstyled>\r\n {content}\r\n </WiredLink>\r\n )\r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default TimelineItemJoinedFieldLevel;\r\n","import { useContext } from 'react';\r\n\r\nimport { Heading, EditMinor } from '@fieldlevel/playbook';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport TeamLogo from '@appCore/components/TeamLogo';\r\nimport PreventOrphanText from '@appCore/components/PreventOrphanText';\r\nimport { ContextMenu, ContextMenuLink } from '@appCore/components/ContextMenu/ContextMenu';\r\nimport {\r\n TIMELINE_SECTION_JOINED_TEAM,\r\n SHOW\r\n} from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\n\r\nimport { TimelineItem, TimelineItemPostedBy, TimelineItemBasicLayout } from './TimelineItem';\r\n\r\nconst TimelineItemContentJoinedTeam = ({ athlete, team, teamProfileLinkProps }) => {\r\n const content = (\r\n <TimelineItemBasicLayout\r\n iconRendering={\r\n <TeamLogo\r\n shortName={team.ShortName}\r\n sportEnum={team.SportEnum.Value}\r\n teamId={team.TeamId}\r\n organizationName={team.OrganizationName}\r\n />\r\n }\r\n contentRendering={\r\n <div className=\"p-4\">\r\n <Heading>\r\n {athlete.DisplayName} joined the {team.SportEnum.Label.toLowerCase()} roster at{' '}\r\n <PreventOrphanText text={`${team.OrganizationName} ${team.TeamName}`} />\r\n </Heading>\r\n <div className=\"mt-2 text-body\">\r\n {team.AthleticAssociationEnum.Label} in {team.City}, {team.State}\r\n </div>\r\n </div>\r\n }\r\n />\r\n );\r\n\r\n return (\r\n <>\r\n {teamProfileLinkProps ? (\r\n <WiredLink {...teamProfileLinkProps} unstyled>\r\n {content}\r\n </WiredLink>\r\n ) : (\r\n <>{content}</>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst TimelineItemJoinedTeam = ({ item, teamProfileLinkProps, profileEditTeamsLinkProps }) => {\r\n const { profile, configContext, onAction } = useContext(ProfileContext);\r\n const config = configTools(configContext).getTimelineItemConfig(item, TIMELINE_SECTION_JOINED_TEAM);\r\n\r\n function handleClick() {\r\n onAction('log-joined-team-click', item);\r\n }\r\n\r\n return (\r\n <TimelineItem\r\n postedByRendering={\r\n <TimelineItemPostedBy\r\n item={item}\r\n menuRendering={\r\n config.menu === SHOW && (\r\n <ContextMenu verticalButton={true}>\r\n <ContextMenuLink\r\n linkProps={profileEditTeamsLinkProps}\r\n iconSource={EditMinor}\r\n label=\"Manage Teams\"\r\n />\r\n </ContextMenu>\r\n )\r\n }\r\n />\r\n }\r\n contentRendering={\r\n <TimelineItemContentJoinedTeam\r\n athlete={profile.athlete}\r\n team={item.Team}\r\n teamProfileLinkProps={\r\n teamProfileLinkProps ? { ...teamProfileLinkProps, onClick: handleClick } : undefined\r\n }\r\n onClick={handleClick}\r\n />\r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default TimelineItemJoinedTeam;\r\n","import { useContext, useState } from 'react';\r\n\r\nimport { Heading, Icon, Modal, CloseMinor } from '@fieldlevel/playbook';\r\n\r\nimport FileTextIcon from '@appCore/icons/FileTextIcon';\r\nimport { ContextMenu, ContextMenuItem } from '@appCore/components/ContextMenu/ContextMenu';\r\nimport {\r\n TIMELINE_SECTION_LINK,\r\n SHOW,\r\n HIDE\r\n} from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\n\r\nimport { TimelineItem, TimelineItemPostedBy, TimelineItemBasicLayout } from './TimelineItem';\r\nimport LinkPreview from './LinkPreview';\r\n\r\n/**\r\n * PrivateLink\r\n */\r\n\r\nconst PrivateLink = ({ athlete }) => {\r\n return (\r\n <TimelineItemBasicLayout\r\n iconRendering={\r\n <span className=\"scale-[175%] text-base\">\r\n <Icon source={FileTextIcon} color=\"current\" />\r\n </span>\r\n }\r\n contentRendering={\r\n <div className=\"min-w-0 pl-4 py-2 space-y-2\">\r\n <Heading>\r\n <span className=\"block overflow-hidden overflow-ellipsis whitespace-nowrap\">\r\n {athlete.DisplayName}'s Article/Link\r\n </span>\r\n </Heading>\r\n <div className=\"overflow-hidden\">\r\n <span\r\n style={{\r\n display: '-webkit-box',\r\n WebkitLineClamp: '2',\r\n WebkitBoxOrient: 'vertical',\r\n overflow: 'hidden'\r\n }}\r\n >\r\n {athlete.FirstName} has set articles/links to be viewed by FieldLevel Members only\r\n </span>\r\n </div>\r\n </div>\r\n }\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * TimelineItemLink\r\n */\r\nconst TimelineItemLink = ({ item }) => {\r\n const [showModal, setShowModal] = useState(false);\r\n const { configContext, profile, onAction } = useContext(ProfileContext);\r\n const config = configTools(configContext).getTimelineItemConfig(item, TIMELINE_SECTION_LINK);\r\n\r\n function handleClick() {\r\n onAction('log-link-click', item);\r\n }\r\n\r\n function handleDelete() {\r\n setShowModal(true);\r\n }\r\n\r\n function handleDeleteConfirmed() {\r\n setShowModal(false);\r\n onAction('delete-link-click', item);\r\n }\r\n\r\n function handleDeleteDismiss() {\r\n setShowModal(false);\r\n }\r\n\r\n return (\r\n <TimelineItem\r\n postedByRendering={\r\n <TimelineItemPostedBy\r\n item={item}\r\n menuRendering={\r\n config.menu === SHOW && (\r\n <ContextMenu verticalButton={true}>\r\n <ContextMenuItem onSelect={handleDelete} iconSource={CloseMinor} label=\"Delete Link\" />\r\n </ContextMenu>\r\n )\r\n }\r\n />\r\n }\r\n contentRendering={\r\n <>\r\n {config.contents === SHOW && <LinkPreview link={item.Link} onClick={handleClick} />}\r\n {config.contents === HIDE && <PrivateLink athlete={profile.athlete} />}\r\n {config.menu === SHOW && (\r\n <Modal\r\n open={showModal}\r\n onDismiss={handleDeleteDismiss}\r\n title=\"Delete Link?\"\r\n primaryAction={{\r\n content: 'Yes, Delete',\r\n onAction: handleDeleteConfirmed,\r\n destructive: true\r\n }}\r\n secondaryAction={{ content: 'Cancel', onAction: handleDeleteDismiss }}\r\n >\r\n <div>This action can not be undone.</div>\r\n </Modal>\r\n )}\r\n </>\r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default TimelineItemLink;\r\n","import { useContext, useState } from 'react';\r\n\r\nimport { Modal, CloseMinor } from '@fieldlevel/playbook';\r\n\r\nimport ReadMoreText from '@appCore/components/ReadMoreText';\r\nimport { ContextMenu, ContextMenuItem } from '@appCore/components/ContextMenu/ContextMenu';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\nimport {\r\n TIMELINE_SECTION_PERFORMANCE_UPDATE,\r\n SHOW,\r\n HIDE\r\n} from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { HiddenContent } from '@appCore/components/athlete/AthleteProfileDisplay/ContentComponents';\r\n\r\nimport { TimelineItem, TimelineItemPostedBy } from './TimelineItem';\r\nimport { TimelineContext } from './TimelineDisplay';\r\n\r\nconst TimelineItemPerformanceUpdate = ({ item }) => {\r\n const [showModal, setShowModal] = useState(false);\r\n const { dispatch } = useContext(TimelineContext);\r\n const { configContext, profile, onAction } = useContext(ProfileContext);\r\n const config = configTools(configContext).getTimelineItemConfig(item, TIMELINE_SECTION_PERFORMANCE_UPDATE);\r\n\r\n function handleDelete() {\r\n setShowModal(true);\r\n }\r\n\r\n function handleDeleteConfirmed() {\r\n setShowModal(false);\r\n onAction('delete-performance-update', item);\r\n }\r\n\r\n function handleDeleteDismiss() {\r\n setShowModal(false);\r\n }\r\n\r\n return (\r\n <TimelineItem\r\n postedByRendering={\r\n <TimelineItemPostedBy\r\n item={item}\r\n menuRendering={\r\n config.menu === SHOW && (\r\n <ContextMenu verticalButton={true}>\r\n <ContextMenuItem\r\n onSelect={handleDelete}\r\n iconSource={CloseMinor}\r\n label=\"Delete Update\"\r\n />\r\n </ContextMenu>\r\n )\r\n }\r\n />\r\n }\r\n contentRendering={\r\n <>\r\n <div className=\"whitespace-pre-line break-words px-4 sm:px-6\">\r\n {config.contents === SHOW && (\r\n <p className=\"text-body\">\r\n \"<ReadMoreText>{item.Description}</ReadMoreText>\"\r\n </p>\r\n )}\r\n {config.contents === HIDE && (\r\n <HiddenContent>\r\n {profile.athlete.FirstName}'s update is available to FieldLevel Coaches\r\n </HiddenContent>\r\n )}\r\n </div>\r\n {config.menu === SHOW && (\r\n <Modal\r\n open={showModal}\r\n onDismiss={handleDeleteDismiss}\r\n title=\"Delete Update?\"\r\n primaryAction={{\r\n content: 'Yes, Delete',\r\n onAction: handleDeleteConfirmed,\r\n destructive: true\r\n }}\r\n secondaryAction={{ content: 'Cancel', onAction: handleDeleteDismiss }}\r\n >\r\n <div>This action can not be undone.</div>\r\n </Modal>\r\n )}\r\n </>\r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default TimelineItemPerformanceUpdate;\r\n","import { useState, useContext, useEffect } from 'react';\r\nimport { useInView } from 'react-intersection-observer';\r\n\r\nimport { Modal, Icon, Heading } from '@fieldlevel/playbook';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport { VideoInteractionContextEnum } from '@appCore/utility/videoAnalytics';\r\nimport { ContextMenu, ContextMenuItem } from '@appCore/components/ContextMenu/ContextMenu';\r\nimport {\r\n TIMELINE_SECTION_TRANSFER_PORTAL,\r\n TIMELINE_SECTION_VIDEO,\r\n SHOW\r\n} from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\nimport { singularOrPlural } from '@appCore/utility/grammar';\r\nimport PortalAnnouncementMajor from '@appCore/icons/PortalAnnouncementMajor';\r\n\r\nimport { TimelineItem, TimelineItemPostedBy, TimelineItemBasicLayout } from './TimelineItem';\r\nimport { TimelineContext } from './TimelineDisplay';\r\n\r\nconst TimelineItemTransferPortal = ({ item, renderVideoPlayer, transferPortalDetailLinkProps, logNatsImpression }) => {\r\n const { state, dispatch } = useContext(TimelineContext);\r\n const { configContext, profile, postResponse, timeCodes, onAction } = useContext(ProfileContext);\r\n const config = configTools(configContext).getTimelineItemConfig(item, TIMELINE_SECTION_TRANSFER_PORTAL);\r\n const videoConfig = configTools(configContext).getTimelineItemConfig(item, TIMELINE_SECTION_VIDEO);\r\n\r\n const [open, setOpen] = useState(false);\r\n const [readMore, setReadMore] = useState(false);\r\n\r\n const [ref, inView] = useInView({ threshold: 1, triggerOnce: true });\r\n\r\n useEffect(() => {\r\n if (inView && configContext.data.IsVerifiedRecruiterInSport) {\r\n logNatsImpression && logNatsImpression(item);\r\n }\r\n }, [inView]);\r\n\r\n const handleRemovePortalAnnouncement = () => {\r\n const value = {\r\n id: item.TransferPortalAnnouncement.AthleteTransferPortalAnnouncementId,\r\n username: profile.athlete.Username,\r\n sport: profile.sportEnum\r\n };\r\n onAction('delete-portal-announcement', { value });\r\n };\r\n\r\n function handlePlay() {\r\n dispatch({ type: 'VIDEO_PLAY', item });\r\n }\r\n\r\n function handleInitialPlay(video) {\r\n dispatch({ type: 'VIDEO_INITIAL_PLAY', video });\r\n }\r\n\r\n const pauseVideo =\r\n state.currentVideo && state.currentVideo.VideoId != item.TransferPortalAnnouncement.Video.VideoId;\r\n\r\n const trimmedContent =\r\n item.TransferPortalAnnouncement.AnnouncementText.length > 30\r\n ? `${item.TransferPortalAnnouncement.AnnouncementText.slice(0, 30)}`\r\n : item.TransferPortalAnnouncement.AnnouncementText;\r\n\r\n return (\r\n <>\r\n <div ref={ref}>\r\n <TimelineItem\r\n postedByRendering={\r\n <TimelineItemPostedBy\r\n item={item}\r\n menuRendering={\r\n config.menu === SHOW && (\r\n <ContextMenu verticalButton={true}>\r\n <ContextMenuItem label=\"Delete\" onSelect={() => setOpen(true)} />\r\n </ContextMenu>\r\n )\r\n }\r\n />\r\n }\r\n contentRendering={\r\n <>\r\n <div className=\"px-4 sm:px-6 mb-4\">\r\n <p className=\"whitespace-pre-wrap\">\r\n {readMore ? (\r\n <>{item.TransferPortalAnnouncement.AnnouncementText}</>\r\n ) : (\r\n <>\r\n {trimmedContent}... \r\n <a\r\n href=\"#\"\r\n onClick={e => {\r\n e.preventDefault();\r\n setReadMore(true);\r\n }}\r\n >\r\n read more\r\n </a>\r\n </>\r\n )}\r\n </p>\r\n {readMore && item.TransferPortalAnnouncement.Video && videoConfig.contents === SHOW && (\r\n <div className=\"mt-4\">\r\n {renderVideoPlayer({\r\n video: item.TransferPortalAnnouncement.Video,\r\n onPlay: handlePlay,\r\n onInitialPlay: handleInitialPlay,\r\n pauseVideo,\r\n interactionContext: VideoInteractionContextEnum.AthleteProfile,\r\n showTitle: false,\r\n startAt: Math.round(\r\n timeCodes[item.TransferPortalAnnouncement.Video.VideoId]\r\n )\r\n })}\r\n </div>\r\n )}\r\n {readMore && (\r\n <div className=\"bg-[#F9FAFB] p-2 mt-4\">\r\n <span className=\"font-bold\">Eligibility left:</span>{' '}\r\n {item.TransferPortalAnnouncement.YearsOfEligibility}{' '}\r\n {singularOrPlural(\r\n item.TransferPortalAnnouncement.YearsOfEligibility,\r\n 'year',\r\n 'years'\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n <TimelineItemBasicLayout\r\n backgroundColor=\"#0369a1\"\r\n iconRendering={<Icon source={PortalAnnouncementMajor} color=\"onDark\" />}\r\n contentRendering={\r\n <div className=\"p-4\">\r\n <Heading>Open to transfer</Heading>\r\n <p className=\"mb-4\">\r\n {item.TransferPortalAnnouncement.Athlete.DisplayName} is exploring new\r\n opportunities in {item.SportEnum.Label}.{' '}\r\n </p>\r\n {transferPortalDetailLinkProps && (\r\n <WiredLink {...transferPortalDetailLinkProps}>\r\n View {item.TransferPortalAnnouncement.Athlete.FirstName}'s portal\r\n announcement\r\n </WiredLink>\r\n )}\r\n </div>\r\n }\r\n />\r\n </>\r\n }\r\n />\r\n </div>\r\n <Modal\r\n open={open}\r\n title=\"Delete portal announcement?\"\r\n primaryAction={{\r\n content: 'Yes, delete',\r\n destructive: true,\r\n onAction: handleRemovePortalAnnouncement,\r\n disabled: postResponse.isSaving\r\n }}\r\n secondaryAction={{\r\n content: 'No, keep',\r\n onAction: () => setOpen(false),\r\n disabled: postResponse.isSaving\r\n }}\r\n onDismiss={() => setOpen(false)}\r\n >\r\n <p>Your post will be removed from your timeline and your portal announcement deleted.</p>\r\n </Modal>\r\n </>\r\n );\r\n};\r\n\r\nexport default TimelineItemTransferPortal;\r\n","import { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { VideoInteractionContextEnum } from '@appCore/utility/videoAnalytics';\r\nimport PrivateVideo from '@appCore/components/video/PrivateVideo';\r\nimport {\r\n TIMELINE_SECTION_VIDEO,\r\n SHOW,\r\n HIDE\r\n} from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\n\r\nimport { TimelineItem, TimelineItemPostedBy } from './TimelineItem';\r\nimport { TimelineContext } from './TimelineDisplay';\r\n\r\nconst TimelineItemVideo = ({\r\n item,\r\n shareVideoService,\r\n videoDetailsLinkProps,\r\n signUpLinkProps,\r\n renderVideoPlayer,\r\n renderContextMenu\r\n}) => {\r\n const { state, dispatch } = useContext(TimelineContext);\r\n const { configContext, profile, previewMode, timeCodes, onAction } = useContext(ProfileContext);\r\n const config = configTools(configContext).getTimelineItemConfig(item, TIMELINE_SECTION_VIDEO);\r\n\r\n function handlePlay() {\r\n dispatch({ type: 'VIDEO_PLAY', item });\r\n }\r\n\r\n function handleInitialPlay(video) {\r\n onAction('log-video-play', video);\r\n }\r\n\r\n function handleClick() {\r\n onAction('log-private-video-click', { item });\r\n }\r\n\r\n const shareService =\r\n !previewMode && shareVideoService && item.Video\r\n ? shareVideoService({\r\n athleteDisplayName: profile.athlete.DisplayName,\r\n athleteIsCommitted: profile.athlete.CommitmentId > 0,\r\n sportEnum: profile.sportEnum,\r\n videoDetailsPath: videoDetailsLinkProps.url,\r\n viewerContext: configContext.isAuthenticated ? configContext.data : null\r\n })\r\n : {};\r\n\r\n const pauseVideo = state.currentVideo && state.currentVideo.VideoId != item.Video.VideoId;\r\n\r\n return (\r\n <TimelineItem\r\n postedByRendering={<TimelineItemPostedBy item={item} videoDetailsLinkProps={videoDetailsLinkProps} />}\r\n contentRendering={\r\n <>\r\n {config.contents === SHOW && (\r\n <>\r\n {renderVideoPlayer({\r\n video: item.Video,\r\n onPlay: handlePlay,\r\n onInitialPlay: handleInitialPlay,\r\n pauseVideo,\r\n interactionContext: VideoInteractionContextEnum.AthleteProfile,\r\n showTitle: false,\r\n startAt: Math.round(timeCodes[item.Video.VideoId])\r\n })}\r\n <div className=\"flex items-center justify-between p-4 pb-0\">\r\n <div>{item.Video.Title}</div>\r\n {config.shareControl == SHOW && (\r\n <>\r\n {renderContextMenu({\r\n video: item.Video,\r\n athlete: profile.athlete,\r\n shareService\r\n })}\r\n </>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n {config.contents === HIDE && (\r\n <PrivateVideo\r\n firstName={profile.athlete.FirstName}\r\n signUpLinkProps={signUpLinkProps ? { ...signUpLinkProps, onClick: handleClick } : undefined}\r\n />\r\n )}\r\n </>\r\n }\r\n />\r\n );\r\n};\r\n\r\nTimelineItemVideo.propTypes = {\r\n item: PropTypes.object.isRequired,\r\n shareVideoService: PropTypes.func,\r\n videoDetailsLinkProps: PropTypes.object,\r\n signUpLinkProps: PropTypes.object,\r\n renderVideoPlayer: PropTypes.func,\r\n renderContextMenu: PropTypes.func\r\n};\r\n\r\nexport default TimelineItemVideo;\r\n","import { useContext, useState } from 'react';\r\n\r\nimport { Modal, Icon, Heading, CloseMinor } from '@fieldlevel/playbook';\r\n\r\nimport { singularOrPlural } from '@appCore/utility/grammar';\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport FileTextIcon from '@appCore/icons/FileTextIcon';\r\nimport { ContextMenu, ContextMenuItem } from '@appCore/components/ContextMenu/ContextMenu';\r\nimport {\r\n SHOW,\r\n HIDE,\r\n TIMELINE_SECTION_WRITE_UP\r\n} from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\nimport { ProfileContext } from '@appCore/components/athlete/AthleteProfileDisplay/AthleteProfileDisplay';\r\n\r\nimport { TimelineItem, TimelineItemPostedBy, TimelineItemBasicLayout } from './TimelineItem';\r\n\r\n/**\r\n * PrivateWriteup\r\n */\r\nconst PrivateWriteup = ({ athlete, item }) => {\r\n return (\r\n <TimelineItemBasicLayout\r\n iconRendering={\r\n <span className=\"scale-[175%] text-base\">\r\n <Icon source={FileTextIcon} color=\"current\" />\r\n </span>\r\n }\r\n contentRendering={\r\n <div className=\"pl-4 py-2 min-w-0\">\r\n <Heading>\r\n <div className=\"overflow-hidden overflow-ellipsis whitespace-nowrap text-body\">\r\n {singularOrPlural(\r\n item.Quantity,\r\n 'Write-up by a college coach',\r\n `Write-ups by ${item.Quantity} college coaches`\r\n )}\r\n </div>\r\n </Heading>\r\n <div className=\"mt-2 overflow-hidden text-body\">\r\n <span\r\n className=\"overflow-hidden\"\r\n style={{ display: '-webkit-box', WebkitLineClamp: '2', WebkitBoxOrient: 'vertical' }}\r\n >\r\n {athlete.FirstName}'s Coach{' '}\r\n {singularOrPlural(item.Quantity, 'Write-up is', 'Write-ups are')} available to FieldLevel\r\n Members only\r\n </span>\r\n </div>\r\n </div>\r\n }\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * WriteupPreview\r\n */\r\nconst WriteupPreview = ({ item, writeUpLinkProps }) => {\r\n return (\r\n <WiredLink {...writeUpLinkProps} unstyled>\r\n <TimelineItemBasicLayout\r\n iconRendering={\r\n <span className=\"scale-[175%] text-base\">\r\n <Icon source={FileTextIcon} color=\"current\" />\r\n </span>\r\n }\r\n contentRendering={\r\n <div className=\"p-4 py-2 min-w-0\">\r\n <Heading>\r\n <div className=\"overflow-hidden overflow-ellipsis whitespace-nowrap text-body\">\r\n {singularOrPlural(\r\n item.Quantity,\r\n 'Write-up by a college coach',\r\n `Write-ups by ${item.Quantity} college coaches`\r\n )}\r\n </div>\r\n </Heading>\r\n <p className=\"mt-2 overflow-hidden text-body\">\r\n <span\r\n className=\"overflow-hidden\"\r\n style={{\r\n display: '-webkit-box',\r\n WebkitLineClamp: '2',\r\n WebkitBoxOrient: 'vertical'\r\n }}\r\n >\r\n \"{item.Evaluation}\"\r\n </span>\r\n </p>\r\n <div className=\"mt-4 text-body-sm text-interactive-active\">View Full Coach Write-up</div>\r\n </div>\r\n }\r\n />\r\n </WiredLink>\r\n );\r\n};\r\n\r\n/**\r\n * TimelineItemWriteup\r\n */\r\nconst TimelineItemWriteup = ({ item, writeUpLinkProps }) => {\r\n const [showModal, setShowModal] = useState(false);\r\n const { configContext, profile, onAction } = useContext(ProfileContext);\r\n const config = configTools(configContext).getTimelineItemConfig(item, TIMELINE_SECTION_WRITE_UP);\r\n\r\n function handleClick() {\r\n onAction('log-write-up-click', item);\r\n }\r\n\r\n function handleDelete() {\r\n setShowModal(true);\r\n }\r\n\r\n function handleDeleteConfirmed() {\r\n setShowModal(false);\r\n onAction('delete-write-up-click', item);\r\n }\r\n\r\n function handleDeleteDismiss() {\r\n setShowModal(false);\r\n }\r\n\r\n return (\r\n <TimelineItem\r\n postedByRendering={\r\n <TimelineItemPostedBy\r\n item={item}\r\n menuRendering={\r\n config.menu === SHOW && (\r\n <ContextMenu verticalButton>\r\n <ContextMenuItem\r\n onSelect={handleDelete}\r\n iconSource={CloseMinor}\r\n label=\"Remove Write-up\"\r\n />\r\n </ContextMenu>\r\n )\r\n }\r\n />\r\n }\r\n contentRendering={\r\n <>\r\n {config.contents === SHOW && (\r\n <WriteupPreview\r\n item={item}\r\n writeUpLinkProps={\r\n writeUpLinkProps ? { ...writeUpLinkProps, onClick: handleClick } : undefined\r\n }\r\n />\r\n )}\r\n {config.contents === HIDE && <PrivateWriteup athlete={profile.athlete} item={item} />}\r\n {config.menu === SHOW && (\r\n <Modal\r\n open={showModal}\r\n onDismiss={handleDeleteDismiss}\r\n title=\"Remove from your timeline?\"\r\n primaryAction={{\r\n content: 'Yes, Remove',\r\n onAction: handleDeleteConfirmed,\r\n destructive: true\r\n }}\r\n secondaryAction={{ content: 'Cancel', onAction: handleDeleteDismiss }}\r\n >\r\n <div>\r\n This will only remove the Coach Write-up from being posted on your timeline, it won't\r\n delete it from your account.\r\n </div>\r\n </Modal>\r\n )}\r\n </>\r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default TimelineItemWriteup;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport { Card, Heading, Button, ButtonGroup, Icon, ForwardMinor, BackMinor } from '@fieldlevel/playbook';\r\n\r\nimport useCarousel from '@appCore/hooks/useCarousel';\r\nimport PlayIconDesign from '@appCore/components/PlayIconDesign';\r\nimport VideoProgress from '@appCore/components/video/VideoProgress';\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport OptimizedVideoThumbnail from '@appCore/components/OptimizedVideoThumbnail/OptimizedVideoThumbnail';\r\nimport PinnedFilledIcon from '@appCore/icons/PinnedFilledIcon';\r\nimport EyeOffIcon from '@appCore/icons/EyeOffIcon';\r\nimport { VIDEO_SECTION, SHOW, HIDE } from '@appCore/components/athlete/AthleteProfileDisplay/utility/profileConfig';\r\nimport configTools from '@appCore/components/athlete/AthleteProfileDisplay/utility/configTools';\r\n\r\nimport * as styles from './VideoContainerDisplay.module.css';\r\n\r\nconst NoVideos = ({ localRenderAddVideo }) => {\r\n return (\r\n <Card>\r\n <div className={styles.AthleteNoVideos}>\r\n <Heading as=\"h2\">College Coaches Want to See Video</Heading>\r\n <p>Profiles with video have a better chance of being found by college coaches.</p>\r\n {localRenderAddVideo()}\r\n </div>\r\n </Card>\r\n );\r\n};\r\n\r\nexport const CarouselVideoItem = ({ video, onAction, timeCode, videoDetailsLinkProps, disableInteraction }) => {\r\n const content = (\r\n <div className={styles.CarouselVideoItem} style={{}}>\r\n <div className=\"absolute w-full h-full top-0 left-0\">\r\n <OptimizedVideoThumbnail imgSrc={video.ThumbnailUrl} variant={'variant2'} />\r\n </div>\r\n <div className={styles.CarouselVideoPlayIcon}>\r\n <PlayIconDesign size=\"small\" />\r\n </div>\r\n <div className={styles.CarouselVideoLabelPin}>\r\n {video.IsPinned && (\r\n <div className={styles.CarouselVideoPinned}>\r\n <Icon source={PinnedFilledIcon} />\r\n </div>\r\n )}\r\n <div className={styles.CarouselVideoLabel}>{video.FilmTypeEnum.Label}</div>\r\n </div>\r\n <VideoProgress duration={video.Duration} timeCode={timeCode} />\r\n </div>\r\n );\r\n\r\n // If interaction is disabled, just show the content\r\n if (disableInteraction) {\r\n return content;\r\n }\r\n\r\n // Otherwise, wrap with a link that's either configured with passed linkProps + onClick, or a hash + onClick\r\n const videoClickAction = () => onAction('video-click', { video });\r\n const linkProps = videoDetailsLinkProps\r\n ? { ...videoDetailsLinkProps, onClick: videoClickAction }\r\n : {\r\n url: '#',\r\n onClick: e => {\r\n e.preventDefault();\r\n videoClickAction();\r\n }\r\n };\r\n\r\n return <WiredLink {...linkProps}>{content}</WiredLink>;\r\n};\r\n\r\nCarouselVideoItem.propTypes = {\r\n video: PropTypes.shape({\r\n ThumbnailUrl: PropTypes.string,\r\n IsPinned: PropTypes.bool,\r\n FilmTypeEnum: PropTypes.shape({\r\n Label: PropTypes.string\r\n }).isRequired,\r\n Duration: PropTypes.number\r\n }),\r\n onAction: PropTypes.func,\r\n timeCode: PropTypes.number,\r\n videoDetailsLinkProps: PropTypes.exact(WiredLink.propTypes),\r\n disableInteraction: PropTypes.bool\r\n};\r\n\r\nexport const PrivateCarouselVideoItem = ({ disabled, signUpLinkProps }) => {\r\n const content = (\r\n <div className={styles.PrivateCarouselVideoItem}>\r\n <div className=\"text-on-dark\">\r\n <Icon source={EyeOffIcon} color=\"current\" />\r\n </div>\r\n <p className={styles.PrivateCarouselVideoItemText}>FieldLevel Members only</p>\r\n <Button disabled={disabled}>Join to View Video</Button>\r\n </div>\r\n );\r\n\r\n return <>{disabled ? content : <WiredLink {...signUpLinkProps}>{content}</WiredLink>}</>;\r\n};\r\n\r\nPrivateCarouselVideoItem.propTypes = {\r\n disabled: PropTypes.bool,\r\n signUpLinkProps: PropTypes.exact(WiredLink.propTypes)\r\n};\r\n\r\nconst VideoContainerDisplay = ({\r\n profile,\r\n configContext,\r\n pageLimit,\r\n onAction,\r\n previewMode,\r\n timeCodes,\r\n renderCarouselVideoItem,\r\n renderPrivateCarouselVideoItem,\r\n renderAddVideo,\r\n profileVideosLinkProps,\r\n disableViewAllVideosInteraction,\r\n flaggedVideos\r\n}) => {\r\n const config = configTools(configContext).getConfig(VIDEO_SECTION);\r\n\r\n const timelineVideos = profile.timeline.Results.filter(item => item.TimelineItemType === 7);\r\n const videos = movePin(timelineVideos);\r\n const { visibleItems, next, prev, isFirst, isLast } = useCarousel(videos, pageLimit);\r\n\r\n function movePin(items) {\r\n let newItems = items;\r\n // check if Video property isn't null. If public profile and videos off the Video prop will be null\r\n const hasPin = newItems.filter(item => item.Video && item.Video.IsPinned);\r\n // get index of pinned video and move to front of array\r\n const removePinnedFromList = newItems.indexOf(hasPin[0]);\r\n if (removePinnedFromList !== -1) {\r\n newItems.splice(removePinnedFromList, 1);\r\n newItems.unshift(hasPin[0]);\r\n }\r\n return newItems;\r\n }\r\n\r\n function onVideoUpload() {\r\n onAction('timeline-refresh');\r\n }\r\n\r\n const localRenderAddVideo = () =>\r\n renderAddVideo({\r\n viewerContext: configContext.data,\r\n athlete: profile.athlete,\r\n sportEnum: profile.sportEnum,\r\n onVideoUpload\r\n });\r\n\r\n return (\r\n <>\r\n {videos.length === 0 && config.emptyState === SHOW && (\r\n <div className=\"mb-6\">\r\n <NoVideos localRenderAddVideo={localRenderAddVideo} />\r\n </div>\r\n )}\r\n {videos.length > 0 && (\r\n <div className=\"mb-6\">\r\n <Card>\r\n <div>\r\n <div className={styles.VideoContainerHeader}>\r\n <Heading as=\"h2\">Videos</Heading>\r\n <ButtonGroup spacing=\"tight\">\r\n {config.addVideoCTA === SHOW && localRenderAddVideo()}\r\n {(() => {\r\n const buttonLabel = 'View all videos';\r\n // If explicitly disabled, just show the disabled button\r\n if (disableViewAllVideosInteraction) {\r\n return <Button disabled>{buttonLabel}</Button>;\r\n }\r\n const buttonOnClick = () => onAction('view-all-videos');\r\n // If we have a link (auth/public), create one but maintain the onClick\r\n if (profileVideosLinkProps) {\r\n return (\r\n <WiredLink {...profileVideosLinkProps} unstyled>\r\n <Button onClick={buttonOnClick}>{buttonLabel}</Button>\r\n </WiredLink>\r\n );\r\n }\r\n // In any other case (Marketplace), just attach the onClick handler\r\n return <Button onClick={buttonOnClick}>{buttonLabel}</Button>;\r\n })()}\r\n </ButtonGroup>\r\n </div>\r\n <div className={styles.CarouselVideoContainer}>\r\n {!isFirst && (\r\n <div className={styles.Prev} onClick={prev}>\r\n <Icon source={BackMinor} />\r\n </div>\r\n )}\r\n {config.contents === SHOW &&\r\n visibleItems.map(item => {\r\n return flaggedVideos?.includes(item.Video.VideoId) ? (\r\n <div key={item.Video.VideoId} className=\"relative pt-[56.25%]\">\r\n <div className=\"bg-background-base absolute top-0 left-0 w-full h-full flex justify-center items-center\">\r\n <div className=\"font-bold text-body\">Thank you for reporting</div>\r\n </div>\r\n </div>\r\n ) : (\r\n renderCarouselVideoItem({\r\n video: item.Video,\r\n timeCode:\r\n timeCodes[item.Video.VideoId] &&\r\n Math.round(timeCodes[item.Video.VideoId])\r\n })\r\n );\r\n })}\r\n {config.contents === HIDE &&\r\n visibleItems.map(item =>\r\n renderPrivateCarouselVideoItem({\r\n itemKey: item.PostedDateUtc,\r\n disabled: previewMode\r\n })\r\n )}\r\n {!isLast && videos.length > pageLimit && (\r\n <div className={styles.Next} onClick={next}>\r\n <Icon source={ForwardMinor} />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </Card>\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nVideoContainerDisplay.propTypes = {\r\n profile: PropTypes.shape({\r\n timeline: PropTypes.shape({\r\n Results: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n TimelineItemType: PropTypes.number\r\n })\r\n ).isRequired\r\n }).isRequired\r\n }).isRequired,\r\n configContext: PropTypes.shape({\r\n mapper: PropTypes.func.isRequired\r\n }).isRequired,\r\n pageLimit: PropTypes.number,\r\n onAction: PropTypes.func.isRequired,\r\n previewMode: PropTypes.bool,\r\n timeCodes: PropTypes.object.isRequired,\r\n renderCarouselVideoItem: PropTypes.func.isRequired,\r\n renderPrivateCarouselVideoItem: PropTypes.func.isRequired,\r\n renderAddVideo: PropTypes.func,\r\n profileVideosLinkProps: PropTypes.exact(WiredLink.propTypes),\r\n disableViewAllVideosInteraction: PropTypes.bool,\r\n flaggedVideos: PropTypes.arrayOf(PropTypes.number)\r\n};\r\n\r\nexport default VideoContainerDisplay;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport { Icon } from '@fieldlevel/playbook';\r\n\r\nimport EyeOffIcon from '@appCore/icons/EyeOffIcon';\r\nimport WiredLink from '@appCore/components/WiredLink';\r\n\r\nconst PrivateVideo = ({ firstName, signUpLinkProps }) => {\r\n const content = (\r\n <div className=\"relative flex flex-col items-center justify-center p-[10%] text-center bg-background-black\">\r\n <div className=\"scale-150 text-on-dark\">\r\n <Icon source={EyeOffIcon} color=\"onDark\" />\r\n </div>\r\n <p className=\"mt-4 text-on-dark text-body\">\r\n {firstName} has set highlight videos to be viewed by FieldLevel Members only\r\n </p>\r\n <button className=\"mt-6 px-4 py-2 text-on-dark border border-[#FFF] rounded-sm\" disabled={!signUpLinkProps}>\r\n Join To View Video\r\n </button>\r\n </div>\r\n );\r\n\r\n return (\r\n <>\r\n {!signUpLinkProps ? (\r\n content\r\n ) : (\r\n <WiredLink {...signUpLinkProps} unstyled>\r\n {content}\r\n </WiredLink>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nPrivateVideo.propTypes = {\r\n firstName: PropTypes.string.isRequired,\r\n signUpLinkProps: PropTypes.exact(WiredLink.propTypes)\r\n};\r\n\r\nexport default PrivateVideo;\r\n","import { useMemo } from 'react';\r\n\r\nimport useRouteTools from '../useRouteTools/useRouteTools';\r\n\r\nconst useURLParams = () => {\r\n const routeTools = useRouteTools();\r\n return useMemo(() => routeTools.urlParams, [routeTools.urlParams]);\r\n};\r\n\r\nexport default useURLParams;\r\n","import { useState, useEffect, useRef } from 'react';\r\n\r\nfunction getVisibleItems(items, index, number) {\r\n return items.slice(index, index + number);\r\n}\r\n\r\nfunction useCarousel(items, visibleNumber, wrapAround) {\r\n const maxIndex = items.length - visibleNumber;\r\n const minIndex = 0;\r\n const [visibleIndex, setVisibleIndex] = useState(0);\r\n const [visibleItems, setVisibleItems] = useState(getVisibleItems(items, 0, visibleNumber));\r\n const [isFirst, setIsFirst] = useState(true);\r\n const [isLast, setIsLast] = useState(visibleIndex == maxIndex);\r\n\r\n const isMountedRef = useRef(false);\r\n useEffect(() => {\r\n if (!isMountedRef.current) {\r\n isMountedRef.current = true;\r\n return;\r\n }\r\n // Note: This hook was historically non-reactive to any change in the \"items\" that were passed in. This meant\r\n // that if a user was working with a \"list\" and added/deleted items to/from it, the UI wouldn't update\r\n // to reflect those changes. This useEffect() hook corrects that issue by checking the length of the items\r\n // array being passed in, and then re-setting the state as if being initialized for the first time if it\r\n // had changed. Just note that the \"reset\" behavior is intended to be identical to the initialization\r\n // taking place above, so if that behavior changes for any reason, this should as well.\r\n setVisibleIndex(0);\r\n setVisibleItems(getVisibleItems(items, 0, visibleNumber));\r\n setIsFirst(true);\r\n setIsLast(0 === items.length - visibleNumber);\r\n }, [items.length, visibleNumber]);\r\n\r\n function next() {\r\n let nextIndex = visibleIndex + 1;\r\n if (nextIndex > maxIndex) {\r\n nextIndex = wrapAround ? minIndex : maxIndex;\r\n }\r\n setVariables(nextIndex);\r\n }\r\n\r\n function prev() {\r\n let nextIndex = visibleIndex - 1;\r\n if (nextIndex < minIndex) {\r\n nextIndex = wrapAround ? maxIndex : 0;\r\n }\r\n setVariables(nextIndex);\r\n }\r\n\r\n function setVariables(index) {\r\n setVisibleIndex(index);\r\n setVisibleItems(getVisibleItems(items, index, visibleNumber));\r\n setIsFirst(index === minIndex);\r\n setIsLast(index === maxIndex);\r\n }\r\n\r\n return { visibleItems, next, prev, isFirst, isLast, visibleIndex };\r\n}\r\n\r\nexport default useCarousel;\r\n","const AltLinkMajor = props => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" {...props}>\r\n <path d=\"M1 10C1 7.2375 3.2375 5 6 5H8C8.55312 5 9 5.44687 9 6C9 6.55313 8.55312 7 8 7H6C4.34375 7 3 8.34375 3 10C3 11.6562 4.34375 13 6 13H8C8.55312 13 9 13.4469 9 14C9 14.5531 8.55312 15 8 15H6C3.2375 15 1 12.7625 1 10ZM19 10C19 12.7625 16.7625 15 14 15H12C11.4469 15 11 14.5531 11 14C11 13.4469 11.4469 13 12 13H14C15.6562 13 17 11.6562 17 10C17 8.34375 15.6562 7 14 7H12C11.4469 7 11 6.55313 11 6C11 5.44687 11.4469 5 12 5H14C16.7625 5 19 7.2375 19 10ZM7 9H13C13.5531 9 14 9.44688 14 10C14 10.5531 13.5531 11 13 11H7C6.44688 11 6 10.5531 6 10C6 9.44688 6.44688 9 7 9Z\" />\r\n </svg>\r\n);\r\n\r\nexport default AltLinkMajor;\r\n","/**\r\n * MIT License\r\n *\r\n * Copyright (c) 2020-2023 Paweł Kuna\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n * SOFTWARE.\r\n *\r\n */\r\n\r\n/*\r\n This icon was copied from the Tabler-Icons library (tabler-icons.io), \"IconCameraFilled\"\r\n */\r\nconst CameraFilledIcon = props => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"2\"\r\n stroke=\"currentColor\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path\r\n d=\"M15 3a2 2 0 0 1 1.995 1.85l.005 .15a1 1 0 0 0 .883 .993l.117 .007h1a3 3 0 0 1 2.995 2.824l.005 .176v9a3 3 0 0 1 -2.824 2.995l-.176 .005h-14a3 3 0 0 1 -2.995 -2.824l-.005 -.176v-9a3 3 0 0 1 2.824 -2.995l.176 -.005h1a1 1 0 0 0 1 -1a2 2 0 0 1 1.85 -1.995l.15 -.005h6zm-3 7a3 3 0 0 0 -2.985 2.698l-.011 .152l-.004 .15l.004 .15a3 3 0 1 0 2.996 -3.15z\"\r\n strokeWidth=\"0\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default CameraFilledIcon;\r\n","const CommitmentMajor = props => {\r\n return (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" {...props}>\r\n <path d=\"M1.49966 1.50162C1.49966 1.10382 1.65768 0.722319 1.93896 0.441035C2.22025 0.159751 2.60175 0.00172774 2.99955 0.00172774C3.39734 0.00172774 3.77884 0.159751 4.06013 0.441035C4.34141 0.722319 4.49944 1.10382 4.49944 1.50162C4.49944 1.89941 4.34141 2.28092 4.06013 2.5622C3.77884 2.84348 3.39734 3.00151 2.99955 3.00151C2.60175 3.00151 2.22025 2.84348 1.93896 2.5622C1.65768 2.28092 1.49966 1.89941 1.49966 1.50162ZM20.9982 7.50118C20.9982 7.10338 21.1562 6.72188 21.4375 6.44059C21.7188 6.15931 22.1003 6.00129 22.4981 6.00129C22.8959 6.00129 23.2774 6.15931 23.5587 6.44059C23.84 6.72188 23.998 7.10338 23.998 7.50118C23.998 7.89897 23.84 8.28047 23.5587 8.56176C23.2774 8.84304 22.8959 9.00107 22.4981 9.00107C22.1003 9.00107 21.7188 8.84304 21.4375 8.56176C21.1562 8.28047 20.9982 7.89897 20.9982 7.50118ZM22.4981 19.5003C22.8959 19.5003 23.2774 19.6583 23.5587 19.9396C23.84 20.2209 23.998 20.6024 23.998 21.0002C23.998 21.398 23.84 21.7795 23.5587 22.0608C23.2774 22.3421 22.8959 22.5001 22.4981 22.5001C22.1003 22.5001 21.7188 22.3421 21.4375 22.0608C21.1562 21.7795 20.9982 21.398 20.9982 21.0002C20.9982 20.6024 21.1562 20.2209 21.4375 19.9396C21.7188 19.6583 22.1003 19.5003 22.4981 19.5003ZM7.82732 7.17308C7.38672 6.73248 7.38672 6.02004 7.82732 5.58413L8.21635 5.1951C8.99911 4.41234 9.49126 3.38585 9.61312 2.28437L9.75374 1.00009C9.82405 0.386074 10.3818 -0.0592053 11.0005 0.00641489C11.6192 0.0720351 12.0645 0.629807 11.9942 1.24851L11.8536 2.53279C11.6755 4.14049 10.9537 5.64038 9.80998 6.78404L9.42095 7.17308C8.98036 7.61367 8.26791 7.61367 7.832 7.17308H7.82732ZM16.8267 14.5788L17.211 14.1897C18.3547 13.0461 19.8546 12.3243 21.4623 12.1461L22.7465 12.0055C23.3652 11.9352 23.9183 12.3805 23.9886 12.9992C24.0589 13.6179 23.6137 14.171 22.995 14.2413L21.7107 14.3819C20.6092 14.5038 19.5827 14.9959 18.7999 15.7787L18.4203 16.1724C17.9797 16.613 17.2672 16.613 16.8313 16.1724C16.3954 15.7318 16.3908 15.0194 16.8313 14.5835L16.8267 14.5788ZM23.7308 0.400136C24.1339 0.873539 24.073 1.58599 23.5996 1.98439L23.1309 2.3828C22.4372 2.9687 21.5513 3.27805 20.6467 3.25461C19.8686 3.23587 19.2124 3.83582 19.1655 4.61389L19.0812 6.02004C18.964 8.01208 17.286 9.54946 15.294 9.4979C14.9377 9.48853 14.5909 9.6104 14.3237 9.84007L13.855 10.2385C13.3816 10.6416 12.6691 10.5806 12.2707 10.1072C11.8723 9.63383 11.9286 8.92138 12.402 8.52298L12.8707 8.12457C13.5644 7.53867 14.4503 7.22932 15.3549 7.25276C16.133 7.27151 16.7892 6.67155 16.836 5.89348L16.9204 4.48734C17.0376 2.49529 18.7156 0.957907 20.7076 1.00947C21.0638 1.01884 21.4107 0.896974 21.6779 0.667304L22.1466 0.268896C22.62 -0.1342 23.3324 -0.0732667 23.7308 0.400136ZM2.77925 21.2205L6.85239 19.6925L4.30726 17.1473L2.77925 21.2205ZM12.1582 17.7051L6.2993 11.8462L5.17907 14.8366L9.16784 18.8253L12.1582 17.7051ZM4.59787 9.96662C4.97284 8.96357 6.30399 8.67297 7.06331 9.43229L14.5721 16.9364C15.3315 17.6957 15.0408 19.0269 14.0378 19.4019L2.0293 23.9062C0.848141 24.3468 -0.347084 23.1563 0.0935089 21.9751L4.59787 9.96662Z\" />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default CommitmentMajor;\r\n","const ExternalLinkIcon = props => {\r\n return (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\r\n <polyline points=\"15 3 21 3 21 9\" />\r\n <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default ExternalLinkIcon;\r\n","/*\r\nThe MIT License (MIT)\r\nCopyright (c) 2013-2017 Cole Bemis\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n */\r\n\r\n/* This icon was copied from the Feather Icons library (https://feathericons.com/), \"Eye\" */\r\n\r\nconst EyeIcon = props => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\r\n </svg>\r\n);\r\n\r\nexport default EyeIcon;\r\n","/*\r\nThe MIT License (MIT)\r\n\r\nCopyright (c) 2013-2017 Cole Bemis\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n */\r\n\r\n/* This icon was copied from the Feather Icons library (https://feathericons.com/), \"Eye off\" */\r\n\r\nconst EyeOffIcon = props => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\r\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\r\n </svg>\r\n);\r\n\r\nexport default EyeOffIcon;\r\n","/**\r\n * MIT License\r\n *\r\n * Copyright (c) 2020-2023 Paweł Kuna\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n * SOFTWARE.\r\n *\r\n */\r\n\r\n/*\r\n This icon was copied from the Tabler-Icons library (tabler-icons.io), \"IconId\"\r\n */\r\nconst IDIcon = props => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"2\"\r\n stroke=\"currentColor\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path d=\"M3 4m0 3a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v10a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3z\" />\r\n <path d=\"M9 10m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0\" />\r\n <path d=\"M15 8l2 0\" />\r\n <path d=\"M15 12l2 0\" />\r\n <path d=\"M7 16l10 0\" />\r\n </svg>\r\n);\r\n\r\nexport default IDIcon;\r\n","const MapPinIcon = props => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\" />\r\n <circle cx=\"12\" cy=\"10\" r=\"3\" />\r\n </svg>\r\n);\r\n\r\nexport default MapPinIcon;\r\n","const PortalAnnouncementMajor = props => {\r\n return (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 14\" {...props}>\r\n <path d=\"M9.44367 12.3053C10.0583 12.3053 10.5548 11.8055 10.5548 11.1868C10.5548 10.5682 10.0583 10.0684 9.44367 10.0684H5.55478C4.9402 10.0684 4.44367 9.56862 4.44367 8.94999V4.47631H5.55478C6.0027 4.47631 6.40895 4.20369 6.58256 3.78428C6.75617 3.36487 6.65895 2.88605 6.34298 2.5645L4.12076 0.327662C3.68673 -0.109221 2.98187 -0.109221 2.54784 0.327662L0.325617 2.5645C0.00617282 2.88605 -0.0875772 3.36487 0.0860339 3.78428C0.259645 4.20369 0.662423 4.47631 1.11381 4.47631H2.22492V8.94999C2.22492 10.8024 3.71798 12.3053 5.55826 12.3053H9.44714H9.44367ZM10.5548 1.12104C9.9402 1.12104 9.44367 1.62084 9.44367 2.23946C9.44367 2.85809 9.9402 3.35788 10.5548 3.35788H14.4437C15.0583 3.35788 15.5548 3.85768 15.5548 4.47631V8.94999H14.4437C13.9958 8.94999 13.5895 9.2226 13.4159 9.64201C13.2423 10.0614 13.3395 10.5402 13.6555 10.8618L15.8777 13.0986C16.3117 13.5355 17.0166 13.5355 17.4506 13.0986L19.6728 10.8618C19.9923 10.5402 20.086 10.0614 19.9124 9.64201C19.7388 9.2226 19.336 8.94999 18.8846 8.94999H17.7735V4.47631C17.7735 2.62392 16.2805 1.12104 14.4402 1.12104H10.5548Z\" />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default PortalAnnouncementMajor;\r\n","/**\r\n * MIT License\r\n *\r\n * Copyright (c) 2020-2023 Paweł Kuna\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n * SOFTWARE.\r\n *\r\n */\r\n\r\n/*\r\n This icon was copied from the Tabler-Icons library (tabler-icons.io), \"IconSquaresFilled\"\r\n */\r\nconst SquaresFilledIcon = props => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"2\"\r\n stroke=\"currentColor\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path d=\"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z\" />\r\n <path d=\"M8 14.5l6.492 -6.492\" />\r\n <path d=\"M13.496 20l6.504 -6.504l-6.504 6.504z\" />\r\n <path d=\"M8.586 19.414l10.827 -10.827\" />\r\n <path d=\"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\" />\r\n </svg>\r\n);\r\n\r\nexport default SquaresFilledIcon;\r\n","const VideoMajor = props => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" {...props}>\r\n <path d=\"M2.22222 4.75C1.91667 4.75 1.66667 5.0125 1.66667 5.33333V14.6667C1.66667 14.9875 1.91667 15.25 2.22222 15.25H11.1111C11.4167 15.25 11.6667 14.9875 11.6667 14.6667V5.33333C11.6667 5.0125 11.4167 4.75 11.1111 4.75H2.22222ZM0 5.33333C0 4.04635 0.996528 3 2.22222 3H11.1111C12.3368 3 13.3333 4.04635 13.3333 5.33333V6.53646V13.4635V14.6667C13.3333 15.9536 12.3368 17 11.1111 17H2.22222C0.996528 17 0 15.9536 0 14.6667V5.33333ZM18.3333 13.9156V6.08802L14.4444 7.92188V6.00417L18.066 4.29427C18.2431 4.21042 18.434 4.16667 18.6285 4.16667C19.3854 4.16667 20 4.81198 20 5.60677V14.3932C20 15.188 19.3854 15.8333 18.6285 15.8333C18.434 15.8333 18.2431 15.7896 18.066 15.7057L14.4444 13.9958V12.0781L18.3333 13.9156Z\" />\r\n </svg>\r\n);\r\n\r\nexport default VideoMajor;\r\n","import http from '@appCore/services/http';\r\n\r\nexport const ContactTypeEnum = {\r\n Unknown: 0,\r\n EmailView: 1,\r\n EmailCopy: 2,\r\n EmailOpen: 3,\r\n MobilePhoneView: 4,\r\n MobilePhoneCopy: 5,\r\n MobilePhoneText: 6,\r\n MobilePhoneCall: 7,\r\n HomePhoneView: 8,\r\n HomePhoneCopy: 9,\r\n HomePhoneText: 10,\r\n HomePhoneCall: 11,\r\n AddressView: 12,\r\n AddressCopy: 13,\r\n AddressOpen: 14,\r\n FamilyContactView: 15\r\n};\r\n\r\nconst athleteContactApiSaveView = ({ ProfileId, TypeEnum }) => {\r\n return http.post('/api/AthleteContactViewApi/SaveView', { ProfileId, TypeEnum });\r\n};\r\n\r\nconst saveView = (profileId, typeEnum) => {\r\n athleteContactApiSaveView({ ProfileId: profileId, TypeEnum: typeEnum }).catch(e => {\r\n // log event, so silently catch the error\r\n console.log(e);\r\n });\r\n};\r\n\r\nexport const saveEmailView = profileId => {\r\n saveView(profileId, ContactTypeEnum.EmailView);\r\n};\r\n\r\nexport const saveEmailCopy = profileId => {\r\n saveView(profileId, ContactTypeEnum.EmailCopy);\r\n};\r\n\r\nexport const saveEmailOpen = profileId => {\r\n saveView(profileId, ContactTypeEnum.EmailOpen);\r\n};\r\n\r\nexport const saveMobilePhoneView = profileId => {\r\n saveView(profileId, ContactTypeEnum.MobilePhoneView);\r\n};\r\n\r\nexport const saveMobilePhoneCopy = profileId => {\r\n saveView(profileId, ContactTypeEnum.MobilePhoneCopy);\r\n};\r\n\r\nexport const saveMobilePhoneText = profileId => {\r\n saveView(profileId, ContactTypeEnum.MobilePhoneText);\r\n};\r\n\r\nexport const saveMobilePhoneCall = profileId => {\r\n saveView(profileId, ContactTypeEnum.MobilePhoneCall);\r\n};\r\n\r\nexport const saveHomePhoneView = profileId => {\r\n saveView(profileId, ContactTypeEnum.HomePhoneView);\r\n};\r\n\r\nexport const saveHomePhoneCopy = profileId => {\r\n saveView(profileId, ContactTypeEnum.HomePhoneCopy);\r\n};\r\n\r\nexport const saveHomePhoneText = profileId => {\r\n saveView(profileId, ContactTypeEnum.HomePhoneText);\r\n};\r\n\r\nexport const saveHomePhoneCall = profileId => {\r\n saveView(profileId, ContactTypeEnum.HomePhoneCall);\r\n};\r\n\r\nexport const saveAddressView = profileId => {\r\n saveView(profileId, ContactTypeEnum.AddressView);\r\n};\r\n\r\nexport const saveAddressCopy = profileId => {\r\n saveView(profileId, ContactTypeEnum.AddressCopy);\r\n};\r\n\r\nexport const saveAddressOpen = profileId => {\r\n saveView(profileId, ContactTypeEnum.AddressOpen);\r\n};\r\n\r\nexport const saveFamilyContactView = profileId => {\r\n saveView(profileId, ContactTypeEnum.FamilyContactView);\r\n};\r\n","import enumHelper from '@appCore/services/enumHelper';\r\nimport { METRICS_ENABLED_LIST } from '@appCore/constants/system';\r\n\r\nexport const IsMetricsEnabledForSport = ({ sportEnum }) => {\r\n const sport = enumHelper.toSportEnum(sportEnum);\r\n return METRICS_ENABLED_LIST.filter(sportId => sport.Value === sportId).length > 0;\r\n};\r\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","// extracted by mini-css-extract-plugin\nvar _1 = \"FL-VideoContainerDisplay__AthleteNoVideos\";\nvar _2 = \"FL-VideoContainerDisplay__CarouselVideoContainer\";\nvar _3 = \"FL-VideoContainerDisplay__CarouselVideoItem\";\nvar _4 = \"FL-VideoContainerDisplay__CarouselVideoLabel\";\nvar _5 = \"FL-VideoContainerDisplay__CarouselVideoLabelPin\";\nvar _6 = \"FL-VideoContainerDisplay__CarouselVideoPinned\";\nvar _7 = \"FL-VideoContainerDisplay__CarouselVideoPlayIcon\";\nvar _8 = \"FL-VideoContainerDisplay__Next\";\nvar _9 = \"FL-VideoContainerDisplay__Prev\";\nvar _a = \"FL-VideoContainerDisplay__PrivateCarouselVideoItem\";\nvar _b = \"FL-VideoContainerDisplay__PrivateCarouselVideoItemText\";\nvar _c = \"FL-VideoContainerDisplay__VideoContainerHeader\";\nexport { _1 as \"AthleteNoVideos\", _2 as \"CarouselVideoContainer\", _3 as \"CarouselVideoItem\", _4 as \"CarouselVideoLabel\", _5 as \"CarouselVideoLabelPin\", _6 as \"CarouselVideoPinned\", _7 as \"CarouselVideoPlayIcon\", _8 as \"Next\", _9 as \"Prev\", _a as \"PrivateCarouselVideoItem\", _b as \"PrivateCarouselVideoItemText\", _c as \"VideoContainerHeader\" }\n"],"names":["EditHeadshotBadge","_ref","href","linkProps","_jsx","WiredLink","unstyled","url","children","className","Icon","source","CameraFilledIcon","propTypes","PropTypes","props","AboutDisplay","contactSectionRendering","basicsSectionRendering","teamsSectionRendering","athleticsSectionRendering","academicsSectionRendering","transcriptsSectionRendering","hobbiesSectionRendering","familySectionRendering","equipmentSectionRendering","_jsxs","Card","Separator","isRequired","AboutSectionHeader","showEdit","editLinkProps","Heading","AboutSection","_ref2","contentRendering","headerRendering","formatId","id","result","length","concat","formatGpa","gpa","isWeightedGpa","arguments","undefined","toFixed","AboutSectionAcademics","profileEditAcademicsLinkProps","configContext","profile","details","athlete","useContext","ProfileContext","config","configTools","getConfig","ABOUT_SECTION_ACADEMICS","edit","SHOW","_Fragment","contents","ProfileLabelValue","label","value","Gpa","WeightedGpa","Sat","Act","PlannedCollegeMajor","NcaaId","NaiaId","HIDE","HiddenContent","hiddenContentsLabel","WiredLinkPropTypes","getDominantSideValue","sportEnum","toLowerCase","BattingStance","Value","Label","DominantSideValue","AboutSectionAthletics","profileEditAthleticsLinkProps","ABOUT_SECTION_ATHLETICS","positionDisciplineText","GetSportPositionDisciplineContext","IsPositionlessSport","cap","Positions","IsNonDominantSideSport","AboutSectionBasics","profileEditPersonalLinkProps","ABOUT_SECTION_BASICS","gender","sportEnumToGender","age","ageValue","Birthdate","Age","formatAgeValue","hometown","_details$Address","Address","City","hometownValue","State","formatHometownValue","heightWeight","heightWeightValue","Height","Weight","formatHeightWeightValue","PendingContent","LockedContent","onClick","renderAddToMyRecruitsButton","AboutSectionContact","_ref4","profileEditContactLinkProps","addressMappingLinkProps","onAction","ABOUT_SECTION_CONTACT","handleCopy","item","align","EmailItem","onCopy","MobilePhoneItem","HomePhoneItem","AddressItem","TwitterHandle","LOCK","PENDING","AboutSectionEquipment","profileEditEquipmentLinkProps","ABOUT_SECTION_EQUIPMENT","EquipmentPreferences","map","pref","index","Answer","EmptyContent","ContactInfo","VisibleContact","person","CanContact","PhoneMobile","EmailAddress","HiddenContact","showContact","setShowContact","useState","hasContactInfo","Link","e","preventDefault","saveFamilyContactView","ProfileId","buildValue","name","DisplayName","contactInfo","CLICK_TO_VIEW","AboutSectionFamily","_ref3","profileEditFamilyLinkProps","ABOUT_SECTION_FAMILY","FamilyMembers","RelationshipTypeEnum","AboutSectionHobbies","ABOUT_SECTION_HOBBIES","HobbiesAndInterests","TeamItem","data","teamProfileLinkProps","TeamDetailsDisplay","team","Team","options","showAthleticAssociation","showSportLabel","handleClick","AthleticAssociationEnum","StartDateUtc","Date","toLocaleDateString","month","year","IsAlumni","EndDateUtc","ProfileBackgroundId","AboutSectionTeams","profileEditAthleteTeamsLinkProps","teamItemsRendering","ABOUT_SECTION_TEAMS","AddressContextMenu","onShow","onOpen","ContextMenu","buttonRendering","Button","variant","size","ContextMenuItem","onSelect","iconSource","CopyIcon","ContextMenuLink","MapPinIcon","_details$Address2","showAddress","setShowAddress","addressStreet","Street","addressCityState","CityStateZip","fullAddress","saveAddressCopy","copyToClipboard","handleOpen","saveAddressOpen","displayedStreet","ItemActions","showing","hideShow","saveAddressView","EmailContextMenu","EmailMinor","showEmail","setShowEmail","email","mailHref","saveEmailCopy","saveEmailOpen","emailLinkOrText","displayedEmail","firstChar","charAt","domain","split","obfuscateEmail","saveEmailView","showNumber","setShowNumber","number","PhoneHome","numberOnly","replace","getNumericPhone","saveHomePhoneCopy","displayedNumber","formatPhoneNumber","num","lastFour","substring","obfuscateNumber","saveHomePhoneView","PhoneContextMenu","onCall","saveHomePhoneCall","onText","saveHomePhoneText","Responsive","showAt","hideAt","saveMobilePhoneCopy","saveMobilePhoneView","saveMobilePhoneCall","saveMobilePhoneText","telLink","textLink","MessageDotsIcon","PhoneCallIcon","ProfileLabelValueContainer","orientation","otherProps","cx","ProfileLabel","ProfileValue","childrenToString","Array","isArray","join","PreventOrphanText","text","Background","editHeadshotLinkProps","isAnonymous","headshot","headshotUrl","imageSrcManager","getAthleteHeadshotSrc","username","Username","componentSize","isSmallAndUp","backgroundUrl","myRecruitsBadge","style","backgroundImage","src","alt","editHeadshot","requiredIf","buildDetails","push","Metric","HeaderDisplay","accountPlansLinkProps","backgroundRendering","actionBarRendering","commitmentChipRendering","contactInfoRendering","commitment","HEADER_SECTION","IsViewingSelf","IsViewingAthleteOnTeam","IsPremium","content","PremiumBadge","Title","HighSchoolGraduationYear","StateLongName","CommitmentLevelEnum","Id","ReferenceEvaluation","certification","discussLinkProps","certifyLinkProps","coachDetailsRendering","onReadMore","showWhitespace","setShowWhitespace","getCertificationConfig","handleReadMore","isAnonymized","fromNow","DateModifiedUtc","EyeIcon","color","getProjectionLevels","ProjectedCompetitionLevels","CompetitionLevels","ReadMoreText","truncateAt","truncateLongerThan","Assessment","removeLineBreaks","string","replaceValue","showEllipsis","discussAthlete","updateEvaluation","ctaRendering","renderCertification","Stack","distribute","Item","certifications","row","FirstName","AddPostButton","LinkModal","postType","isAthlete","postResponse","title","placeholder","dispatch","canPostTransferPortalAnnouncement","show","setShow","closeModal","useEffect","setTimeout","type","Modal","open","onDismiss","PostForm","onSave","postVideo","logEvent","vidoeLabel","VideoMajor","postLink","linkLabel","AltLinkMajor","postPortalAnnouncement","portalLabel","PortalAnnouncementMajor","postPerformance","performanceLabel","CommitmentMajor","postCommitment","commitmentLabel","initialState","reducer","state","action","Error","AddPost","videoUploadConfig","renderAnnounceCommitmentModal","renderPortalAnnouncmentModal","postToTimelinePortalClick","postToTimelinePortalImpression","useReducer","ref","inView","useInView","threshold","triggerOnce","logImpression","handleUploadCancel","handleUploadComplete","Section","postSelect","ButtonGroup","icon","AnnounceCommitmentPost","sport","PortalAnnouncementPost","VideoUploadModal","profileId","maxDuration","MaxDurationSec","maxFileSize","MaxFileSizeBytes","onCancel","onComplete","renderPostModal","postToTimelineClick","postCommitmentView","setOpen","_postResponse$actionT","success","actionType","modalActions","onPreview","onBack","onSubmit","values","isDisabled","isSaving","commitmentView","CommitmentPreview","commitmentLinkProps","teamLinkProps","CommittedToTeam","TimelineItemBasicLayout","backgroundColor","iconRendering","SportEnum","OrganizationName","LinkPreview","link","Url","target","ThumbnailUrl","FileTextIcon","display","WebkitLineClamp","WebkitBoxOrient","overflow","Description","ExternalLinkIcon","linkUrl","URL","hostname","LinkId","DateUtc","Guid","selectVideo","legacyFormControlClassname","errors","handleChange","handleSubmit","useValidatedForm","matches","match","indexOf","filmTypeEnum","defaultPlaceholder","textRef","React","current","isVideoUrl","noValidate","lineHeight","height","rows","onChange","maxLength","FilmTypeOptions","option","checked","submit","disabled","Object","keys","TimelineContext","currentVideo","Video","TimelineDisplay","signUpLinkProps","itemsRendering","previewMode","TIMELINE_SECTION","uploadConfig","VideoUploadConfig","timeline","totalPages","Math","ceil","TotalResultCount","PageSize","showMoreButton","isAuthenticated","Page","Provider","postForm","IsVideoUploadEnabled","CanPostTransferPortalAnnouncement","joinCTA","profileAnnounceCommitmentProps","profileCertificationsLinkProps","getTimelineItemConfig","TIMELINE_SECTION_CERTIFICATION","TimelineItem","postedByRendering","TimelineItemPostedBy","IDIcon","PostedByCoach","urlBuilders","TIMELINE_SECTION_COMMITMENT","menuRendering","menu","verticalButton","Commitment","urlBuilder","commitmentStory","primaryAction","destructive","handleRemoveCommitment","AthleteCommitmentHistoryId","secondaryAction","recruitingLinkProps","width","TimelineItemContentJoinedTeam","TeamLogo","shortName","ShortName","teamId","TeamId","organizationName","TeamName","profileEditTeamsLinkProps","TIMELINE_SECTION_JOINED_TEAM","EditMinor","PrivateLink","showModal","setShowModal","TIMELINE_SECTION_LINK","handleDeleteDismiss","CloseMinor","TIMELINE_SECTION_PERFORMANCE_UPDATE","renderVideoPlayer","transferPortalDetailLinkProps","logNatsImpression","timeCodes","TIMELINE_SECTION_TRANSFER_PORTAL","videoConfig","TIMELINE_SECTION_VIDEO","readMore","setReadMore","IsVerifiedRecruiterInSport","pauseVideo","VideoId","TransferPortalAnnouncement","trimmedContent","AnnouncementText","slice","video","onPlay","onInitialPlay","interactionContext","VideoInteractionContextEnum","AthleteProfile","showTitle","startAt","round","YearsOfEligibility","singularOrPlural","Athlete","handleRemovePortalAnnouncement","AthleteTransferPortalAnnouncementId","TimelineItemVideo","shareVideoService","videoDetailsLinkProps","renderContextMenu","shareService","athleteDisplayName","athleteIsCommitted","CommitmentId","videoDetailsPath","viewerContext","shareControl","PrivateVideo","firstName","PrivateWriteup","Quantity","WriteupPreview","writeUpLinkProps","Evaluation","TIMELINE_SECTION_WRITE_UP","NoVideos","localRenderAddVideo","styles","as","CarouselVideoItem","timeCode","disableInteraction","OptimizedVideoThumbnail","imgSrc","PlayIconDesign","IsPinned","PinnedFilledIcon","FilmTypeEnum","VideoProgress","duration","Duration","videoClickAction","PrivateCarouselVideoItem","EyeOffIcon","VideoContainerDisplay","pageLimit","renderCarouselVideoItem","renderPrivateCarouselVideoItem","renderAddVideo","profileVideosLinkProps","disableViewAllVideosInteraction","flaggedVideos","VIDEO_SECTION","videos","items","newItems","hasPin","filter","removePinnedFromList","splice","unshift","movePin","Results","TimelineItemType","visibleItems","next","prev","isFirst","isLast","useCarousel","onVideoUpload","emptyState","spacing","addVideoCTA","buttonLabel","buttonOnClick","BackMinor","includes","itemKey","PostedDateUtc","ForwardMinor","mapper","useURLParams","routeTools","useRouteTools","useMemo","urlParams","getVisibleItems","visibleNumber","wrapAround","maxIndex","visibleIndex","setVisibleIndex","setVisibleItems","setIsFirst","setIsLast","isMountedRef","useRef","setVariables","nextIndex","xmlns","viewBox","d","strokeWidth","stroke","fill","strokeLinecap","strokeLinejoin","points","x1","y1","x2","y2","cy","r","ContactTypeEnum","saveView","typeEnum","TypeEnum","http","post","athleteContactApiSaveView","catch","console","log","IsMetricsEnabledForSport","enumHelper","toSportEnum","METRICS_ENABLED_LIST","sportId","arrayPush","isFlattenable","module","exports","baseFlatten","array","depth","predicate","isStrict","Symbol","isArguments","spreadableSymbol","isConcatSpreadable","_1","_2","_3","_4","_5","_6","_7","_8","_9","_a","_b","_c"],"sourceRoot":""}