{"version":3,"file":"4287.bundle.d4f07f87d74e4278cb8d.js","mappings":"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","sources":["webpack://fieldlevel.app/./app-core/components/Alert.jsx","webpack://fieldlevel.app/./app-core/components/CommitmentSnippet.jsx","webpack://fieldlevel.app/./app-core/components/EmptyPageLoadingError.jsx","webpack://fieldlevel.app/./app-core/components/PageTitle.jsx","webpack://fieldlevel.app/./app-core/components/Responsive/Responsive.module.css","webpack://fieldlevel.app/./app-core/components/Responsive/Responsive.jsx","webpack://fieldlevel.app/./app-core/components/UnsupportedPlaybookIcon/UnsupportedPlaybookIcon.jsx","webpack://fieldlevel.app/./app-core/components/UnsupportedPlaybookIcon/UnsupportedPlaybookIcon.module.css","webpack://fieldlevel.app/./app-core/components/athlete/AthleteDetailsDisplay.jsx","webpack://fieldlevel.app/./app-core/hooks/routeTools/useURLParams/useURLParams.js","webpack://fieldlevel.app/./app-core/hooks/useAnalytics.js","webpack://fieldlevel.app/./app-core/routes/commitments/components/CommitmentsDetailDisplay/CommitmentStory/CommitmentStory.jsx","webpack://fieldlevel.app/./app-core/routes/commitments/components/CommitmentsDetailDisplay/CommitmentTeams.jsx","webpack://fieldlevel.app/./app-core/components/SocialShareLink.jsx","webpack://fieldlevel.app/./app-core/routes/commitments/components/CommitmentsDetailDisplay/CommitmentsDetailDisplayLoadingSkeleton.jsx","webpack://fieldlevel.app/./app-core/routes/commitments/components/CommitmentsDetailDisplay/CommitmentStoryHeader/CommitmentStoryHeader.jsx","webpack://fieldlevel.app/./app-core/routes/commitments/components/CommitmentsDetailDisplay/CommitmentStoryHeader/CommitmentStoryHeader.module.css","webpack://fieldlevel.app/./app-core/routes/commitments/components/CommitmentsDetailDisplay/CommitmentsDetailDisplay.jsx","webpack://fieldlevel.app/./app-core/utility/clipboard.js"],"sourcesContent":["import cx from 'classnames';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Stack, Icon, InformationMinor, ErrorMinor } from '@fieldlevel/playbook';\r\n\r\nconst icons = {\r\n base: <Icon source={InformationMinor} color=\"current\" />,\r\n critical: <Icon source={ErrorMinor} color=\"critical\" />,\r\n warning: <Icon source={ErrorMinor} color=\"warning\" />,\r\n highlight: <Icon source={InformationMinor} color=\"highlight\" />\r\n};\r\n\r\nconst backgroundClasses = {\r\n base: 'bg-background-base',\r\n critical: 'bg-background-critical',\r\n warning: 'bg-background-warning',\r\n highlight: 'bg-background-highlight'\r\n};\r\n\r\nconst titleClasses = {\r\n base: 'text-base',\r\n critical: 'text-critical',\r\n warning: 'text-warning',\r\n higlight: 'text-highlight'\r\n};\r\n\r\nconst bodyClasses = {\r\n base: 'text-base',\r\n critical: 'text-critical',\r\n warning: 'text-warning',\r\n highlight: 'text-highlight'\r\n};\r\n\r\nconst Alert = ({ variant = 'base', title, children }) => {\r\n const backgroundClass = backgroundClasses[variant];\r\n const icon = icons[variant];\r\n const titleClass = titleClasses[variant];\r\n const bodyClass = bodyClasses[variant];\r\n\r\n return (\r\n <div className={cx('rounded-md p-4 max-w-xl', backgroundClass)}>\r\n <Stack noWrap>\r\n <Stack.Item>{icon}</Stack.Item>\r\n <Stack.Item fill>\r\n <Stack vertical spacing=\"tight\">\r\n {title ? <div className={cx('font-bold', titleClass)}>{title}</div> : null}\r\n {children ? <div className={bodyClass}>{children}</div> : null}\r\n </Stack>\r\n </Stack.Item>\r\n </Stack>\r\n </div>\r\n );\r\n};\r\n\r\nAlert.propTypes = {\r\n variant: PropTypes.oneOf(['base', 'critical', 'warning', 'highlight']),\r\n title: PropTypes.string,\r\n children: PropTypes.node.isRequired\r\n};\r\n\r\nexport default Alert;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport TeamDetailsDisplay from '@appCore/components/TeamDetailsDisplay';\r\n\r\nconst CommitmentSnippet = ({ team, commitmentLevel, urlBuilder, teamProfileLinkProps }) => {\r\n const options = {\r\n showAthleticAssociation: true,\r\n urlBuilder: urlBuilder,\r\n teamProfileLinkProps: teamProfileLinkProps\r\n };\r\n\r\n return (\r\n <TeamDetailsDisplay team={team} options={options}>\r\n <div className=\"text-muted text-body-sm\">{commitmentLevel.Label}</div>\r\n </TeamDetailsDisplay>\r\n );\r\n};\r\n\r\nCommitmentSnippet.propTypes = {\r\n team: PropTypes.shape({\r\n OrganizationName: PropTypes.string.isRequired,\r\n SportEnum: PropTypes.object.isRequired,\r\n ShortName: PropTypes.string,\r\n AthleticAssociationEnum: PropTypes.object,\r\n TeamId: PropTypes.number\r\n }).isRequired,\r\n commitmentLevel: PropTypes.shape({\r\n Label: PropTypes.string.isRequired,\r\n Value: PropTypes.string.isRequired,\r\n Id: PropTypes.number.isRequired\r\n }),\r\n urlBuilder: PropTypes.func\r\n};\r\n\r\nexport default CommitmentSnippet;\r\n","import { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Alert from '@appCore/components/Alert';\r\n\r\nconst EmptyPageLoadingError = props => {\r\n const { error } = props;\r\n\r\n useEffect(() => {\r\n if (error?.status === 404) {\r\n // redirect to special 404 page?\r\n }\r\n // Report error somewhere?\r\n }, []);\r\n\r\n return (\r\n <div className=\"flex items-center justify-center mt-4 md:mt-0\">\r\n <Alert variant=\"critical\">There was an error processing your request. We have been notified.</Alert>\r\n </div>\r\n );\r\n};\r\n\r\nEmptyPageLoadingError.propTypes = {\r\n error: PropTypes.object.isRequired\r\n};\r\n\r\nexport default EmptyPageLoadingError;\r\n","import { useEffect, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\n/**\r\n * This component is intended to set the document's title element programmatically. It's reactive to any\r\n * changes to the passed-in title, but it's otherwise simple in that it has no awareness of other components\r\n * that may be interacting with the document. It's recommended to keep things simple and use sparingly.\r\n *\r\n * NOTE: Due to its design, it'll automatically apply the most deeply nested usage last\r\n * (allowing children to override a parent), but if multiple components are setting titles dynamically,\r\n * there's no mechanism to prevent a parent component from \"retaking\" control.\r\n */\r\nconst PageTitle = props => {\r\n const { title } = props;\r\n const isMountedRef = useRef(false);\r\n const currentTitleRef = useRef(null);\r\n const setPageTitle = () => {\r\n if (title && typeof title === 'string' && document.title !== title && currentTitleRef.current !== title) {\r\n document.title = title;\r\n currentTitleRef.current = title;\r\n }\r\n };\r\n setPageTitle();\r\n\r\n useEffect(() => {\r\n if (!isMountedRef.current) {\r\n isMountedRef.current = true;\r\n return;\r\n }\r\n setPageTitle();\r\n }, [title]);\r\n\r\n return null;\r\n};\r\n\r\nPageTitle.propTypes = {\r\n title: PropTypes.string\r\n};\r\n\r\nexport default PageTitle;\r\n","// extracted by mini-css-extract-plugin\nvar _1 = \"FL-Responsive__lg\";\nvar _2 = \"FL-Responsive__md\";\nvar _3 = \"FL-Responsive__sm\";\nvar _4 = \"FL-Responsive__xl\";\nvar _5 = \"FL-Responsive__xs\";\nvar _6 = \"FL-Responsive__xxl\";\nexport { _1 as \"lg\", _2 as \"md\", _3 as \"sm\", _4 as \"xl\", _5 as \"xs\", _6 as \"xxl\" }\n","import PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\n\r\nimport * as styles from './Responsive.module.css';\r\n\r\nconst breakpoints = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\r\n\r\nconst Responsive = ({ showAt, hideAt, children }) => {\r\n if (showAt == undefined && hideAt == undefined) {\r\n console.error('You must define either the showAt or hideAt prop.');\r\n }\r\n\r\n const showAtIndex = showAt == undefined ? 0 : breakpoints.findIndex(x => x == showAt);\r\n const hideAtIndex = hideAt == undefined ? breakpoints.length : breakpoints.findIndex(x => x == hideAt);\r\n\r\n const classes = breakpoints.reduce((acc, val, index) => {\r\n if (index >= showAtIndex && index < hideAtIndex) {\r\n acc.push(styles[val]);\r\n }\r\n return acc;\r\n }, []);\r\n\r\n return <div className={cx(classes)}>{children}</div>;\r\n};\r\n\r\nResponsive.propTypes = {\r\n showAt: PropTypes.oneOf(breakpoints),\r\n hideAt: PropTypes.oneOf(breakpoints),\r\n children: PropTypes.node.isRequired\r\n};\r\n\r\nexport default Responsive;\r\n","import PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\n\r\nimport * as styles from './UnsupportedPlaybookIcon.module.css';\r\n\r\nconst colorStyles = {\r\n offWhite: styles.offWhite,\r\n twitter: styles.Twitter,\r\n facebook: styles.Facebook,\r\n premium: styles.Premium,\r\n active: styles.Active\r\n};\r\n\r\nconst UnsupportedPlaybookIcon = ({ source, color }) => {\r\n const className = cx(styles.Icon, color && colorStyles[color]);\r\n const SourceComponent = source;\r\n\r\n return (\r\n <span className={className}>\r\n <SourceComponent className={styles.Svg} />\r\n </span>\r\n );\r\n};\r\n\r\nUnsupportedPlaybookIcon.propTypes = {\r\n source: PropTypes.func,\r\n color: PropTypes.string\r\n};\r\n\r\nexport default UnsupportedPlaybookIcon;\r\n","// extracted by mini-css-extract-plugin\nvar _1 = \"FL-UnsupportedPlaybookIcon__Active\";\nvar _2 = \"FL-UnsupportedPlaybookIcon__Facebook\";\nvar _3 = \"FL-UnsupportedPlaybookIcon__Icon\";\nvar _4 = \"FL-UnsupportedPlaybookIcon__Premium\";\nvar _5 = \"FL-UnsupportedPlaybookIcon__Svg\";\nvar _6 = \"FL-UnsupportedPlaybookIcon__Twitter\";\nvar _7 = \"FL-UnsupportedPlaybookIcon__offWhite\";\nexport { _1 as \"Active\", _2 as \"Facebook\", _3 as \"Icon\", _4 as \"Premium\", _5 as \"Svg\", _6 as \"Twitter\", _7 as \"offWhite\" }\n","import React from 'react';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\n\r\nimport AthleteHeadshot from './AthleteHeadshot/AthleteHeadshot';\r\n\r\n/** @typedef {import('@appCore/components/WiredLink').WiredLinkPropTypes} WiredLinkPropTypes */\r\n/** @typedef {import('@appCore/components/athlete/AthleteHeadshot/useAthleteHeadshot').AthleteHeadshotSize} AthleteHeadshotSize */\r\n\r\n/**\r\n * @typedef {'details' | 'short'} AthleteDetailsDisplayMode\r\n */\r\n\r\nconst DISPLAY_MODES = {\r\n details: 'details',\r\n short: 'short'\r\n};\r\n\r\nconst AthleteProfileLinkWrapper = ({ athleteProfileLinkProps, children }) => {\r\n if (athleteProfileLinkProps) {\r\n return <WiredLink {...athleteProfileLinkProps}>{children}</WiredLink>;\r\n }\r\n return children;\r\n};\r\n\r\nconst AthleteDetailsUI = ({\r\n athleteDisplayName,\r\n athleteCity,\r\n athleteState,\r\n\r\n athleteProfileLinkProps,\r\n\r\n headshotRendering,\r\n\r\n detailsRendering,\r\n displayMode\r\n}) => (\r\n <div className=\"flex items-center\">\r\n <div className=\"mr-4\">\r\n <AthleteProfileLinkWrapper athleteProfileLinkProps={athleteProfileLinkProps}>\r\n {headshotRendering}\r\n </AthleteProfileLinkWrapper>\r\n </div>\r\n <div>\r\n <div className=\"font-bold text-body-lg text-base\">\r\n <AthleteProfileLinkWrapper athleteProfileLinkProps={athleteProfileLinkProps}>\r\n {athleteDisplayName}\r\n </AthleteProfileLinkWrapper>\r\n </div>\r\n <div className=\"text-base\">{detailsRendering}</div>\r\n {displayMode !== DISPLAY_MODES.short && (\r\n <div className=\"text-muted\">\r\n {athleteCity ? `${athleteCity}, ` : ''}\r\n {athleteState}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n);\r\n\r\nfunction buildDetails(athlete, isShort, showMetric, metric) {\r\n const gradYear = `HS ${athlete.HighSchoolGraduationYear}`;\r\n const metricDisplay = showMetric ? ` / ${metric}` : '';\r\n const committed =\r\n (athlete.CommitmentLevelEnum && athlete.CommitmentLevelEnum.Id > 0 && !isShort && ' Committed') || '';\r\n const positions = (athlete.Positions && ` / ${athlete.Positions}`) || '';\r\n const gpa = (athlete.Gpa && ` / ${athlete.Gpa.toFixed(2)} GPA`) || '';\r\n\r\n return `${gradYear}${metricDisplay}${committed}${positions}${gpa}`;\r\n}\r\n\r\n/**\r\n * @typedef {object} AthleteDetailsAthletePropTypes\r\n * @property {string} Username\r\n * @property {string} DisplayName\r\n * @property {string} [City]\r\n * @property {string} [State]\r\n * @property {number} HighSchoolGraduationYear\r\n * @property {string} [Positions]\r\n * @property {number} Gpa\r\n * @property {object} CommitmentLevelEnum\r\n */\r\n\r\n/**\r\n * @typedef {object} AthleteDetailsHeadshotOptionsPropTypes\r\n * @property {AthleteHeadshotSize} [size]\r\n * @property {boolean} [lazy]\r\n * @property {boolean} [isAnonymous]\r\n * @property {boolean} [showPremiumBadge]\r\n */\r\n\r\n/**\r\n * @typedef {object} AthleteDetailsDisplayPropTypes\r\n * @property {AthleteDetailsAthletePropTypes} athlete - The athlete to display details for\r\n * @property {string} [displayedMetric] - A \"sports metric\" to show in the details\r\n * @property {WiredLinkPropTypes} [athleteProfileLinkProps] - Props to be passed to WiredLink for the athlete profile page\r\n * @property {AthleteDetailsHeadshotOptionsPropTypes} [headshotOptions] - A subset of options to pass to AthleteHeadshot\r\n * @property {AthleteDetailsDisplayMode} [mode] - The display mode for the UI\r\n */\r\n\r\n/**\r\n * @type {import('react').NamedExoticComponent<AthleteDetailsDisplayPropTypes>} AthleteDetailsDisplay\r\n * @returns {import('react').JSX.Element}\r\n */\r\nconst AthleteDetailsDisplay = React.memo(\r\n ({ athlete, displayedMetric, athleteProfileLinkProps, headshotOptions, mode = DISPLAY_MODES.details }) => {\r\n const details = buildDetails(athlete, mode === DISPLAY_MODES.short, !!displayedMetric, displayedMetric);\r\n\r\n return (\r\n <AthleteDetailsUI\r\n athleteDisplayName={athlete.DisplayName}\r\n athleteCity={athlete.City}\r\n athleteState={athlete.State}\r\n athleteProfileLinkProps={athleteProfileLinkProps}\r\n headshotRendering={<AthleteHeadshot username={athlete.Username} {...headshotOptions} />}\r\n detailsRendering={details}\r\n displayMode={mode}\r\n />\r\n );\r\n }\r\n);\r\n\r\nexport default AthleteDetailsDisplay;\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 { useEffect } from 'react';\r\n\r\nimport * as GoogleAnalytics from '@appCore/utility/googleAnalytics';\r\n\r\nconst useAnalytics = (category, name, options, autoLogImpression = true) => {\r\n useEffect(() => {\r\n if (autoLogImpression) {\r\n logImpression();\r\n }\r\n }, []);\r\n\r\n const logEvent = action => {\r\n if (!category) {\r\n console.warn('useAnalytics :: No category provided for logEvent');\r\n return;\r\n }\r\n\r\n if (!action) {\r\n console.warn('useAnalytics :: No action provided for logEvent');\r\n return;\r\n }\r\n\r\n GoogleAnalytics.logEvent(action, category, options);\r\n };\r\n\r\n const logImpression = () => {\r\n if (!category) {\r\n return;\r\n }\r\n\r\n let mergedOptions = Object.assign({ isNonInteraction: true }, options);\r\n GoogleAnalytics.logImpression(`${name} Viewed`, category, mergedOptions);\r\n };\r\n\r\n function logClick() {\r\n logEvent(`${name} Clicked`);\r\n }\r\n\r\n return {\r\n logClick,\r\n logImpression,\r\n logEvent\r\n };\r\n};\r\n\r\nexport default useAnalytics;\r\n","import { Fragment, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { TextInput, Button, ButtonGroup } from '@fieldlevel/playbook';\r\n\r\nimport CommitmentSnippet from '@appCore/components/CommitmentSnippet';\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport { hisOrHer, singularOrPlural } from '@appCore/utility/grammar';\r\nimport { formatDate } from '@appCore/utility/dateUtils';\r\nimport useValidatedForm from '@appCore/hooks/useValidatedForm';\r\n\r\nfunction separator(index, totalCount) {\r\n if (index > 0 && index == totalCount - 1) {\r\n return totalCount == 2 ? ' and ' : ', and ';\r\n }\r\n\r\n if (index > 0) {\r\n return ', ';\r\n }\r\n}\r\n\r\nconst NullSafeLinkWrapper = ({ linkProps, children }) =>\r\n linkProps ? <WiredLink {...linkProps}>{children}</WiredLink> : <>{children}</>;\r\n\r\nfunction formatPromoterTeams(promoterTeams, linkPropsGenerator) {\r\n return (\r\n <>\r\n {promoterTeams.map((team, index) => (\r\n <Fragment key={team.TeamId}>\r\n {separator(index, promoterTeams.length)}\r\n <NullSafeLinkWrapper linkProps={linkPropsGenerator(team)}>\r\n {team.OrganizationName}\r\n {team.TeamName && ` ${team.TeamName}`}\r\n </NullSafeLinkWrapper>\r\n </Fragment>\r\n ))}\r\n </>\r\n );\r\n}\r\n\r\n/**\r\n * PersonalNoteForm\r\n */\r\nconst PersonalNoteForm = ({ note, showCancel, onSave, onCancel }) => {\r\n const { values, errors, handleChange, handleSubmit } = useValidatedForm(save, validate, note);\r\n\r\n function validate(values) {\r\n let errors = {};\r\n\r\n if (!values.Note) {\r\n errors.note = 'You must enter a note.';\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n function save() {\r\n onSave(values);\r\n }\r\n\r\n return (\r\n <form onSubmit={handleSubmit} noValidate>\r\n <TextInput rows={3} name=\"Note\" value={values.Note || ''} onChange={handleChange} />\r\n <div className=\"mt-3\">\r\n <ButtonGroup>\r\n <Button variant=\"primary\" submit>\r\n Save\r\n </Button>\r\n {showCancel && (\r\n <Button variant=\"secondary\" onClick={onCancel}>\r\n Cancel\r\n </Button>\r\n )}\r\n </ButtonGroup>\r\n </div>\r\n {errors.note && (\r\n <>\r\n <span className=\"inline-block ml-4 text-critical\">{errors.note}</span>\r\n </>\r\n )}\r\n </form>\r\n );\r\n};\r\n\r\n/**\r\n * EditPersonalNoteForm\r\n */\r\nconst EditPersonalNoteForm = ({ note, onRemove, onSave }) => {\r\n const [edit, setEdit] = useState(false);\r\n\r\n function handleSave(values) {\r\n setEdit(false);\r\n onSave(values);\r\n }\r\n\r\n return (\r\n <div className=\"my-4\">\r\n {!edit && (\r\n <div>\r\n <Button variant=\"plain\" onClick={() => setEdit(true)}>\r\n Edit Note\r\n </Button>\r\n <span className=\"inline-block ml-4\">\r\n <Button variant=\"plain\" onClick={() => onRemove(note)}>\r\n Remove Note\r\n </Button>\r\n </span>\r\n </div>\r\n )}\r\n {edit && (\r\n <PersonalNoteForm note={note} showCancel={true} onSave={handleSave} onCancel={() => setEdit(false)} />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * CommitmentStory\r\n */\r\n\r\nconst CommitmentStory = ({ commitment, linkPropsGenerators, viewer, onRemoveNote, onSaveNote, privacyPreferences }) => {\r\n const { Athlete: athlete, PromoterTeams: promoterTeams, RecruiterTeam: recruiterTeam, Count: counts } = commitment;\r\n\r\n const gender = commitment.GenderEnum.Value;\r\n const showAddNoteForm =\r\n viewer.IsConnectedCoach &&\r\n commitment.PersonalNotes.findIndex(function (note) {\r\n return note.AuthoredByUserId == viewer.UserId;\r\n }) == -1;\r\n\r\n function formatLocation() {\r\n let location = `${athlete.City}, ${athlete.State}`;\r\n\r\n if (privacyPreferences && !privacyPreferences.Hometown) {\r\n location = athlete.StateLongName;\r\n }\r\n\r\n return location;\r\n }\r\n\r\n function formatHeight() {\r\n let height = athlete.Height;\r\n\r\n if (privacyPreferences && !privacyPreferences.HeightWeight) {\r\n height = '';\r\n }\r\n\r\n return height;\r\n }\r\n\r\n return (\r\n <>\r\n <div className=\"flex justify-between border-b pb-6 sm:border-b-0 sm:pb-0\">\r\n <CommitmentSnippet\r\n team={recruiterTeam}\r\n commitmentLevel={athlete.CommitmentLevelEnum}\r\n teamProfileLinkProps={linkPropsGenerators.teamPage(recruiterTeam)}\r\n />\r\n <div className=\"hidden md:block\">\r\n <span className=\"text-muted\">\r\n {formatDate(commitment.CommitmentDateUtc, { format: 'numeric' })}\r\n </span>\r\n </div>\r\n </div>\r\n <div className=\"text-body-lg md:text-body\">\r\n <div className=\"mt-8\">\r\n {formatLocation()}, {formatDate(commitment.CommitmentDateUtc)}.{' '}\r\n <NullSafeLinkWrapper\r\n linkProps={linkPropsGenerators.athleteProfile({\r\n athlete,\r\n sportEnum: recruiterTeam.SportEnum.Value.toLowerCase()\r\n })}\r\n >\r\n {athlete.DisplayName}\r\n </NullSafeLinkWrapper>\r\n , a {formatHeight()} {athlete.Positions ? athlete.Positions : 'student-athlete'} in the{' '}\r\n {athlete.HighSchoolGraduationYear} Class\r\n {promoterTeams.length > 0 && (\r\n <> from {formatPromoterTeams(promoterTeams, linkPropsGenerators.teamPage)},</>\r\n )}{' '}\r\n has committed to \r\n <NullSafeLinkWrapper linkProps={linkPropsGenerators.teamPage(recruiterTeam)}>\r\n {recruiterTeam.OrganizationName}\r\n </NullSafeLinkWrapper>\r\n {recruiterTeam.SportEnum.Label.toLowerCase()}.\r\n </div>\r\n <div className=\"mt-4\">\r\n Since joining FieldLevel on {formatDate(commitment.JoinedDateUtc)}, {athlete.FirstName} worked with{' '}\r\n {hisOrHer(gender)} coaches to target {counts.TargetSchoolCount}{' '}\r\n {singularOrPlural(counts.TargetSchoolCount, 'school', 'different schools')} and received the\r\n following activity from college coaches:\r\n </div>\r\n <div className=\"my-4\">\r\n Search Appearances: {counts.SearchResultCount}\r\n <br />\r\n Profile Views: {counts.ProfileViewCount}\r\n <br />\r\n Video Views: {counts.HighlightViewCount}\r\n <br />\r\n Followers: {counts.FollowerCount}\r\n </div>\r\n </div>\r\n {commitment.PersonalNotes.map(note => (\r\n <div className=\"mb-4 text-body-lg md:text-body\" key={note.AuthoredByUserId}>\r\n <div>\r\n Coach {note.CoachName}, had this to say about {athlete.LastName}'s recruitment to{' '}\r\n {recruiterTeam.OrganizationName}, \"{note.Note}\".\r\n </div>\r\n {note.AuthUserCanEditNote && (\r\n <EditPersonalNoteForm note={note} onSave={onSaveNote} onRemove={onRemoveNote} />\r\n )}\r\n </div>\r\n ))}\r\n\r\n {showAddNoteForm && (\r\n <>\r\n <hr />\r\n <div className=\"mt-2\">\r\n Coach {viewer.DisplayName}, {viewer.Headline}, had this to say about {athlete.LastName}'s\r\n recruitment to {recruiterTeam.OrganizationName}, \"<-- your personal note will appear\r\n here-->\"\r\n </div>\r\n\r\n <div className=\"mt-4\">Add Personal Note:</div>\r\n <div className=\"mb-2\">\r\n <PersonalNoteForm note={{ Note: '' }} onSave={onSaveNote} />\r\n </div>\r\n <hr />\r\n </>\r\n )}\r\n <div className=\"mt-8 mb-6 text-body-lg md:text-body\">\r\n To read more commitment stories like {athlete.FirstName}'s, click here:{' '}\r\n <WiredLink {...linkPropsGenerators.commitmentsList()}>Commitment Stories</WiredLink>.\r\n </div>\r\n </>\r\n );\r\n};\r\nCommitmentStory.propTypes = {\r\n commitment: PropTypes.object.isRequired,\r\n viewer: PropTypes.object,\r\n onRemoveNote: PropTypes.func,\r\n onSaveNote: PropTypes.func,\r\n privacyPreferences: PropTypes.object,\r\n linkPropsGenerators: PropTypes.exact({\r\n athleteProfile: PropTypes.func.isRequired,\r\n commitmentsList: PropTypes.func.isRequired,\r\n teamPage: PropTypes.func.isRequired\r\n }).isRequired\r\n};\r\n\r\nexport default CommitmentStory;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport { Title } from '@fieldlevel/playbook';\r\n\r\nimport AthleteDetailsDisplay from '@appCore/components/athlete/AthleteDetailsDisplay';\r\nimport { WiredLinkPropTypes } from '@appCore/components/WiredLink';\r\n\r\nconst CommitmentTeams = ({\r\n athlete,\r\n promoterTeams,\r\n athleteProfileLinkProps,\r\n renderTeamDetails,\r\n privacyPreferences\r\n}) => {\r\n return (\r\n <div className=\"py-8 px-6 bg-[#f4f6f7]\">\r\n <div className=\"mb-6\">\r\n <Title size=\"small\">{athlete.FirstName}'s Team</Title>\r\n </div>\r\n <AthleteDetailsDisplay\r\n athlete={athlete}\r\n athleteProfileLinkProps={athleteProfileLinkProps}\r\n headshotOptions={{ hideHeadshot: privacyPreferences && !privacyPreferences.ProfilePicture }}\r\n mode=\"short\"\r\n />\r\n <div className=\"mt-8\">\r\n {promoterTeams.map(team => (\r\n <div className=\"mb-6\" key={team.TeamId}>\r\n {renderTeamDetails({ team })}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nCommitmentTeams.propTypes = {\r\n athlete: PropTypes.shape({\r\n DisplayName: PropTypes.string.isRequired,\r\n Username: PropTypes.string.isRequired,\r\n Positions: PropTypes.string,\r\n City: PropTypes.string,\r\n State: PropTypes.string,\r\n HighSchoolGraduationYear: PropTypes.number.isRequired,\r\n Height: PropTypes.string,\r\n Weight: PropTypes.number\r\n }).isRequired,\r\n promoterTeams: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n OrganizationName: PropTypes.string.isRequired,\r\n SportEnum: PropTypes.object.isRequired,\r\n ShortName: PropTypes.string,\r\n TeamId: PropTypes.number.isRequired,\r\n AthleticAssociationEnum: PropTypes.object\r\n })\r\n ).isRequired,\r\n athleteProfileLinkProps: PropTypes.exact(WiredLinkPropTypes),\r\n renderTeamDetails: PropTypes.func.isRequired,\r\n privacyPreferences: PropTypes.object\r\n};\r\n\r\nexport default CommitmentTeams;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport { FACEBOOK_APP_ID } from '@appCore/constants/system';\r\nimport TwitterMajor from '@appCore/icons/TwitterMajor';\r\nimport FacebookMajor from '@appCore/icons/FacebookMajor';\r\nimport UnsupportedPlaybookIcon from '@appCore/components/UnsupportedPlaybookIcon/UnsupportedPlaybookIcon';\r\n\r\nconst providerTypes = {\r\n twitter: 'Twitter',\r\n facebook: 'Facebook'\r\n};\r\n\r\nconst windowFeatures = `height=600,width=500,top=${(window.innerHeight - 600) / 2},left=${\r\n (window.innerWidth - 500) / 2\r\n}`;\r\n\r\nconst SocialShareLink = ({ url, provider, text, via = 'FieldLevel' }) => {\r\n const onShareClick = e => {\r\n e.preventDefault();\r\n\r\n if (provider === providerTypes.twitter) {\r\n window.open(\r\n `https://www.twitter.com/intent/tweet?text=${encodeURIComponent(text)}&via=${encodeURIComponent(\r\n via\r\n )}&url=${encodeURIComponent(url)}`,\r\n provider,\r\n windowFeatures\r\n );\r\n } else if (provider === providerTypes.facebook) {\r\n window.open(\r\n `https://www.facebook.com/dialog/feed?app_id=${encodeURIComponent(\r\n FACEBOOK_APP_ID\r\n )}&link=${encodeURIComponent(url)}`,\r\n provider,\r\n windowFeatures\r\n );\r\n } else {\r\n throw new Error('Unknown share link');\r\n }\r\n };\r\n\r\n const selectProviderIcon = () => {\r\n if (provider === providerTypes.twitter) {\r\n return {\r\n icon: TwitterMajor,\r\n color: 'twitter',\r\n ariaLabel: 'Share on Twitter'\r\n };\r\n } else if (provider === providerTypes.facebook) {\r\n return {\r\n icon: FacebookMajor,\r\n color: 'facebook',\r\n ariaLabel: 'Share on Facebook'\r\n };\r\n } else {\r\n throw new Error('Unknown provider icon provided');\r\n }\r\n };\r\n\r\n const icon = selectProviderIcon();\r\n\r\n return (\r\n <button onClick={onShareClick} aria-label={icon.ariaLabel}>\r\n <UnsupportedPlaybookIcon source={icon.icon} color={icon.color} />\r\n </button>\r\n );\r\n};\r\n\r\nSocialShareLink.propTypes = {\r\n url: PropTypes.string.isRequired,\r\n provider: PropTypes.oneOf(Object.values(providerTypes)).isRequired,\r\n text: PropTypes.string,\r\n via: PropTypes.string\r\n};\r\n\r\nexport default SocialShareLink;\r\n","import { Card } from '@fieldlevel/playbook';\r\n\r\nimport SkeletonBody from '@appCore/components/skeletons/SkeletonBody';\r\nconst CommitmentsDetailDisplayLoadingSkeleton = ({}) => {\r\n return (\r\n <div className=\"mb-10 lg:flex\">\r\n <div className=\"w-full lg:w-2/3 md:mr-4\">\r\n <Card>\r\n <SkeletonBody height={4} width=\"full\" />\r\n <SkeletonBody height={5} width=\"full\" />\r\n </Card>\r\n </div>\r\n <div className=\"w-full mt-10 lg:mt-0 lg:w-1/3\">\r\n <SkeletonBody height={4} width=\"full\" />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nCommitmentsDetailDisplayLoadingSkeleton.propTypes = {};\r\n\r\nexport default CommitmentsDetailDisplayLoadingSkeleton;\r\n","import PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\n\r\nimport { Title } from '@fieldlevel/playbook';\r\n\r\nimport imageSrcManager from '@appCore/services/imageSrcManager';\r\n\r\nimport * as styles from './CommitmentStoryHeader.module.css';\r\n\r\nconst CommitmentStoryHeader = ({ athlete, recruiterTeam, privacyPreferences }) => {\r\n const isAnonymous = privacyPreferences && !privacyPreferences.ProfilePicture;\r\n const imgSize = 650;\r\n const componentSize = imgSize / 2;\r\n const athleteHeadshotUrl = imageSrcManager.getAthleteHeadshotSrc({\r\n username: athlete.Username,\r\n componentSize,\r\n isAnonymous\r\n });\r\n\r\n const header = `${athlete.DisplayName} Announces Commitment to ${recruiterTeam.OrganizationName} ${\r\n recruiterTeam.SportEnum.Label\r\n }`;\r\n\r\n return (\r\n <div>\r\n <Title>{header}</Title>\r\n <div className=\"mt-6 flex w-full justify-center\">\r\n <img\r\n className=\"flex-none w-[325px] h-[325px]\"\r\n width={imgSize}\r\n height={imgSize}\r\n src={athleteHeadshotUrl}\r\n alt={`${athlete.DisplayName}'s profile image`}\r\n />\r\n\r\n <div\r\n className={cx(\r\n styles.TextContainer,\r\n 'hidden py-0 px-8 bg-cover bg-center w-full sm:flex sm:items-center sm:justify-center'\r\n )}\r\n >\r\n <div className=\"text-on-dark text-center\">\r\n <div className=\"text-[28px] font-[800] uppercase\">{recruiterTeam.OrganizationName}</div>\r\n <div className=\"text-[24px] font-[300]\">{athlete.HighSchoolGraduationYear} COMMIT</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nCommitmentStoryHeader.propTypes = {\r\n athlete: PropTypes.shape({\r\n DisplayName: PropTypes.string.isRequired,\r\n Username: PropTypes.string.isRequired,\r\n Positions: PropTypes.string,\r\n City: PropTypes.string,\r\n State: PropTypes.string,\r\n HighSchoolGraduationYear: PropTypes.number.isRequired,\r\n Height: PropTypes.string,\r\n Weight: PropTypes.number\r\n }).isRequired,\r\n recruiterTeam: PropTypes.shape({\r\n OrganizationName: PropTypes.string.isRequired,\r\n SportEnum: PropTypes.object.isRequired,\r\n ShortName: PropTypes.string,\r\n TeamId: PropTypes.number.isRequired,\r\n AthleticAssociationEnum: PropTypes.object\r\n }).isRequired,\r\n privacyPreferences: PropTypes.object\r\n};\r\n\r\nexport default CommitmentStoryHeader;\r\n","// extracted by mini-css-extract-plugin\nvar _1 = \"FL-CommitmentStoryHeader__TextContainer\";\nexport { _1 as \"TextContainer\" }\n","import { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { BackMinor, Button, Card, Icon, ShareMajor, Stack, Title } from '@fieldlevel/playbook';\r\n\r\nimport Responsive from '@appCore/components/Responsive/Responsive';\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport EmptyPageLoadingError from '@appCore/components/EmptyPageLoadingError';\r\nimport SocialShareLink from '@appCore/components/SocialShareLink';\r\nimport { formatDate } from '@appCore/utility/dateUtils';\r\n\r\nimport CommitmentsDetailDisplayLoadingSkeleton from './CommitmentsDetailDisplayLoadingSkeleton';\r\nimport CommitmentStoryHeader from './CommitmentStoryHeader/CommitmentStoryHeader';\r\n\r\nconst CommitmentsDetailDisplay = props => {\r\n const {\r\n isLoading,\r\n error,\r\n\r\n navRendering,\r\n commitmentStoryRendering,\r\n commitmentTeamsRendering,\r\n signUpPromoRendering,\r\n\r\n commitmentStoryData,\r\n privacyPreferencesData,\r\n socialGraphData,\r\n\r\n commitmentsFeedLinkProps,\r\n joinPageLinkProps,\r\n\r\n onShareCopyToClipboard\r\n } = props;\r\n\r\n const socialGraphUtility = useMemo(() => {\r\n if (socialGraphData) {\r\n return {\r\n ...socialGraphData,\r\n ...['Twitter', 'Facebook'].reduce(\r\n (acc, platform) => ({\r\n ...acc,\r\n [platform]: {\r\n ShareUrl: `${socialGraphData.OpenGraphUrl}?flShare=${platform}`\r\n }\r\n }),\r\n {}\r\n )\r\n };\r\n }\r\n }, [socialGraphData]);\r\n\r\n if (isLoading) {\r\n return <CommitmentsDetailDisplayLoadingSkeleton />;\r\n }\r\n\r\n if (error) {\r\n return <EmptyPageLoadingError error={error} />;\r\n }\r\n\r\n const isValidCommit = commitmentStoryData.Athlete !== null;\r\n\r\n return (\r\n <>\r\n {navRendering}\r\n <Responsive showAt=\"md\">\r\n <div className=\"flex mb-2\">\r\n <WiredLink {...commitmentsFeedLinkProps} unstyled>\r\n <Stack align=\"center\" spacing=\"tight\">\r\n <Stack.Item>\r\n <Icon source={BackMinor} />\r\n </Stack.Item>\r\n <Stack.Item>\r\n <span>Back to commitments</span>\r\n </Stack.Item>\r\n </Stack>\r\n </WiredLink>\r\n </div>\r\n </Responsive>\r\n {!isValidCommit && (\r\n <div className=\"p-6 border bg-foreground-base rounded-sm\">\r\n <Title>This content has been removed or set to private by this member.</Title>\r\n <div className=\"mt-4 mb-8\">\r\n Sign up or Log in to FieldLevel to contact this member directly or view their private content.\r\n </div>\r\n <WiredLink {...joinPageLinkProps}>Join Now For Free</WiredLink>\r\n </div>\r\n )}\r\n {isValidCommit && (\r\n <div className=\"mb-10\">\r\n <div className=\"lg:flex\">\r\n <div className=\"lg:mr-4 lg:w-2/3\">\r\n <Card spacing=\"loose\">\r\n <div className=\"pt-4 pb-10\">\r\n <CommitmentStoryHeader\r\n athlete={commitmentStoryData.Athlete}\r\n recruiterTeam={commitmentStoryData.RecruiterTeam}\r\n privacyPreferences={privacyPreferencesData}\r\n />\r\n </div>\r\n <div className=\"flex flex-col md:flex-row\">\r\n <div className=\"mb-8 flex justify-between items-center md:!items-stretch md:mb-0\">\r\n <div className=\"flex items-center md:!block md:pr-6 md:border-r md:border-[#eaeaea]\">\r\n <div className=\"mr-4 md:mr-0 md:mb-4\">\r\n <SocialShareLink\r\n url={socialGraphUtility.Twitter.ShareUrl}\r\n provider=\"Twitter\"\r\n text={socialGraphUtility.TwitterDescription}\r\n />\r\n </div>\r\n <div className=\"mr-4 md:mr-0\">\r\n <SocialShareLink\r\n url={socialGraphUtility.Facebook.ShareUrl}\r\n provider=\"Facebook\"\r\n />\r\n </div>\r\n <Responsive hideAt=\"md\">\r\n <Button variant=\"plain\" onClick={onShareCopyToClipboard}>\r\n <Icon source={ShareMajor} color=\"highlight\" />\r\n </Button>\r\n </Responsive>\r\n </div>\r\n <Responsive hideAt=\"md\">\r\n {formatDate(commitmentStoryData.CommitmentDateUtc, { format: 'numeric' })}\r\n </Responsive>\r\n </div>\r\n <div className=\"md:pl-6\">{commitmentStoryRendering}</div>\r\n </div>\r\n </Card>\r\n </div>\r\n <div className=\"mt-10 lg:mt-0 lg:w-1/3\">\r\n {commitmentTeamsRendering}\r\n {signUpPromoRendering && <div className=\"mt-4\">{signUpPromoRendering}</div>}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nCommitmentsDetailDisplay.propTypes = {\r\n isLoading: PropTypes.bool,\r\n error: PropTypes.object,\r\n navRendering: PropTypes.node,\r\n commitmentStoryRendering: PropTypes.node,\r\n commitmentTeamsRendering: PropTypes.node,\r\n signUpPromoRendering: PropTypes.node,\r\n commitmentStoryData: PropTypes.object,\r\n privacyPreferencesData: PropTypes.object,\r\n socialGraphData: PropTypes.object,\r\n\r\n commitmentsFeedLinkProps: PropTypes.object,\r\n joinPageLinkProps: PropTypes.object,\r\n\r\n onShareCopyToClipboard: PropTypes.func\r\n};\r\n\r\nexport default CommitmentsDetailDisplay;\r\n","function isOS() {\r\n return navigator.userAgent.match(/ipad|iphone/i);\r\n}\r\n\r\nexport function copyToClipboard(text) {\r\n let range;\r\n let selection;\r\n let textArea;\r\n\r\n // copy action has to be on an element within the current user focus for some browsers.\r\n // this is undocumented and was a total pain in the ass to figure out.\r\n // if we have an active element, use it as the parent so this works inside modals with focus.\r\n let parent = document.activeElement || document.body;\r\n textArea = document.createElement('textArea');\r\n textArea.value = text;\r\n textArea.readOnly = true; // prevents iOS from trying to scroll to the dummy textArea\r\n textArea.style.position = 'absolute';\r\n textArea.style.top = '-1000px';\r\n textArea.style.left = '-1000px';\r\n parent.appendChild(textArea);\r\n\r\n if (isOS()) {\r\n range = document.createRange();\r\n range.selectNodeContents(textArea);\r\n selection = window.getSelection();\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n textArea.setSelectionRange(0, 999999);\r\n } else {\r\n textArea.select();\r\n }\r\n\r\n document.execCommand('copy');\r\n parent.removeChild(textArea);\r\n}\r\n"],"names":["icons","base","_jsx","Icon","source","InformationMinor","color","critical","ErrorMinor","warning","highlight","backgroundClasses","titleClasses","higlight","bodyClasses","Alert","_ref","variant","title","children","backgroundClass","icon","titleClass","bodyClass","className","cx","_jsxs","Stack","noWrap","Item","fill","vertical","spacing","propTypes","PropTypes","isRequired","CommitmentSnippet","team","commitmentLevel","urlBuilder","teamProfileLinkProps","options","showAthleticAssociation","TeamDetailsDisplay","Label","OrganizationName","SportEnum","ShortName","AthleticAssociationEnum","TeamId","Value","Id","EmptyPageLoadingError","props","error","useEffect","status","PageTitle","isMountedRef","useRef","currentTitleRef","setPageTitle","document","current","_1","_2","_3","_4","_5","_6","breakpoints","Responsive","showAt","hideAt","undefined","console","showAtIndex","findIndex","x","hideAtIndex","length","classes","reduce","acc","val","index","push","styles","colorStyles","offWhite","twitter","facebook","premium","active","UnsupportedPlaybookIcon","SourceComponent","DISPLAY_MODES","details","short","AthleteProfileLinkWrapper","athleteProfileLinkProps","WiredLink","AthleteDetailsUI","_ref2","athleteDisplayName","athleteCity","athleteState","headshotRendering","detailsRendering","displayMode","concat","AthleteDetailsDisplay","React","_ref3","athlete","displayedMetric","headshotOptions","mode","isShort","showMetric","metric","gradYear","HighSchoolGraduationYear","metricDisplay","committed","CommitmentLevelEnum","positions","Positions","gpa","Gpa","toFixed","buildDetails","DisplayName","City","State","AthleteHeadshot","username","Username","useURLParams","routeTools","useRouteTools","useMemo","urlParams","category","name","autoLogImpression","arguments","logImpression","logEvent","action","GoogleAnalytics","warn","mergedOptions","Object","assign","isNonInteraction","logClick","separator","totalCount","NullSafeLinkWrapper","linkProps","_Fragment","formatPromoterTeams","promoterTeams","linkPropsGenerator","map","Fragment","TeamName","PersonalNoteForm","note","showCancel","onSave","onCancel","values","errors","handleChange","handleSubmit","useValidatedForm","Note","onSubmit","noValidate","TextInput","rows","value","onChange","ButtonGroup","Button","submit","onClick","EditPersonalNoteForm","onRemove","edit","setEdit","useState","CommitmentStory","_ref4","commitment","linkPropsGenerators","viewer","onRemoveNote","onSaveNote","privacyPreferences","Athlete","PromoterTeams","RecruiterTeam","recruiterTeam","Count","counts","gender","GenderEnum","showAddNoteForm","IsConnectedCoach","PersonalNotes","AuthoredByUserId","UserId","teamPage","formatDate","CommitmentDateUtc","format","location","Hometown","StateLongName","formatLocation","athleteProfile","sportEnum","toLowerCase","height","Height","HeightWeight","formatHeight","JoinedDateUtc","FirstName","hisOrHer","TargetSchoolCount","singularOrPlural","SearchResultCount","ProfileViewCount","HighlightViewCount","FollowerCount","CoachName","LastName","AuthUserCanEditNote","Headline","commitmentsList","CommitmentTeams","renderTeamDetails","Title","size","hideHeadshot","ProfilePicture","Weight","WiredLinkPropTypes","providerTypes","windowFeatures","window","innerHeight","innerWidth","SocialShareLink","url","provider","text","via","selectProviderIcon","TwitterMajor","ariaLabel","FacebookMajor","Error","e","preventDefault","open","encodeURIComponent","FACEBOOK_APP_ID","CommitmentsDetailDisplayLoadingSkeleton","Card","SkeletonBody","width","CommitmentStoryHeader","isAnonymous","athleteHeadshotUrl","imageSrcManager","getAthleteHeadshotSrc","componentSize","imgSize","header","src","alt","CommitmentsDetailDisplay","isLoading","navRendering","commitmentStoryRendering","commitmentTeamsRendering","signUpPromoRendering","commitmentStoryData","privacyPreferencesData","socialGraphData","commitmentsFeedLinkProps","joinPageLinkProps","onShareCopyToClipboard","socialGraphUtility","platform","ShareUrl","OpenGraphUrl","isValidCommit","unstyled","align","BackMinor","Twitter","TwitterDescription","Facebook","ShareMajor","copyToClipboard","range","selection","textArea","parent","activeElement","body","createElement","readOnly","style","position","top","left","appendChild","navigator","userAgent","match","createRange","selectNodeContents","getSelection","removeAllRanges","addRange","setSelectionRange","select","execCommand","removeChild"],"sourceRoot":""}