{"version":3,"file":"3444.bundle.194d234a3caf0b4cccd9.js","mappings":"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","sources":["webpack://fieldlevel.app/./app-core/components/DefaultLogo.jsx","webpack://fieldlevel.app/./app-core/components/PremiumBadge/GoldPremiumBadgeSvg.jsx","webpack://fieldlevel.app/./app-core/components/PremiumBadge/GoldPremiumBadgeNoChevronSvg.jsx","webpack://fieldlevel.app/./app-core/components/PremiumBadge/GoldPremiumBadgeNoBackgroundSvg.jsx","webpack://fieldlevel.app/./app-core/components/PremiumBadge/PremiumBadge.jsx","webpack://fieldlevel.app/./app-core/components/SearchFilters/useParamTools.js","webpack://fieldlevel.app/./app-core/components/TeamDetailsDisplay.jsx","webpack://fieldlevel.app/./app-core/components/TeamLogo.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteDetailsDisplay.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteHeadshot/AthleteHeadshot.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteHeadshot/useAthleteHeadshot.js","webpack://fieldlevel.app/./app-core/icons/PrimeBadgeIcon.jsx","webpack://fieldlevel.app/./app-core/services/enumHelper.js","webpack://fieldlevel.app/./app-core/utility/lookupEnumLabel.js","webpack://fieldlevel.app/./app-core/routes/commitments/components/CommitmentsListDisplay.jsx","webpack://fieldlevel.app/./app-public/shared/api/commitmentApi.js","webpack://fieldlevel.app/./app-public/routes/commitments/CommitmentsList/useFetchCommitmentsFilterOptions.js","webpack://fieldlevel.app/./app-public/routes/commitments/CommitmentsList/useFetchCommitments.js","webpack://fieldlevel.app/./app-public/routes/commitments/CommitmentsList/useFilterTools.js","webpack://fieldlevel.app/./app-public/routes/commitments/CommitmentsList/CommitmentsList.jsx","webpack://fieldlevel.app/./app-public/routes/profile/urlBuilder.js","webpack://fieldlevel.app/./app-public/shared/hooks/useCanonical.js","webpack://fieldlevel.app/./app-core/utility/makeCrossAppUrlBuilder.js","webpack://fieldlevel.app/./app-public/shared/services/crossAppUrlBuilder.js"],"sourcesContent":["import { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Logo } from '@fieldlevel/playbook';\r\n\r\nimport { DEFAULT_TEAM_LOGO_URL_COLLEGE, DEFAULT_TEAM_LOGO_URL_HS } from '@appCore/constants/system';\r\nimport { generateDeprecationNotice } from '@appCore/utility/consoleUtils';\r\n\r\nconst Sizes = {\r\n small: 32,\r\n base: 40,\r\n large: 60\r\n};\r\n\r\nconst DefaultLogo = ({ useHighSchool = true, size = 'base', organizationName, lazy }) => {\r\n const sizeLowercase = size?.toLowerCase();\r\n\r\n // Generate deprecation notice for uppercase strings\r\n useEffect(() => {\r\n if (size !== sizeLowercase) {\r\n generateDeprecationNotice({\r\n message: `DefaultLogo - The usage of '${size}' for props.size has been deprecated. Please use lowercase strings instead.`\r\n });\r\n }\r\n }, [size, sizeLowercase]);\r\n\r\n const srcUrl = useHighSchool ? DEFAULT_TEAM_LOGO_URL_HS : DEFAULT_TEAM_LOGO_URL_COLLEGE;\r\n\r\n return <Logo size={sizeLowercase} source={srcUrl} alt={organizationName} lazy={lazy} />;\r\n};\r\n\r\nDefaultLogo.propTypes = {\r\n useHighSchool: PropTypes.bool,\r\n size: PropTypes.oneOf([...Object.keys(Sizes), 'Small', 'Base', 'Large']),\r\n organizationName: PropTypes.string,\r\n lazy: PropTypes.bool\r\n};\r\n\r\nexport default DefaultLogo;\r\n","const GoldPremiumBadgeSvg = props => {\r\n const uniqueGradientId = `gradient_${Math.round(Math.random() * 100000)}`;\r\n return (\r\n <svg width=\"60\" height=\"16\" viewBox=\"0 0 60 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\r\n <rect width=\"60\" height=\"16\" rx=\"4\" fill={`url('#${uniqueGradientId}')`} />\r\n <path\r\n d=\"M17.2734 8.97266H19.0078C19.4036 8.97266 19.75 8.89323 20.0469 8.73438C20.3438 8.57552 20.5742 8.35156 20.7383 8.0625C20.9049 7.77344 20.9883 7.4349 20.9883 7.04688V7.03906C20.9883 6.65365 20.9049 6.31641 20.7383 6.02734C20.5742 5.73828 20.3438 5.51432 20.0469 5.35547C19.75 5.19401 19.4036 5.11328 19.0078 5.11328H17.2734V6.04688H18.7188C19.0573 6.04688 19.3203 6.13281 19.5078 6.30469C19.6979 6.47656 19.793 6.72266 19.793 7.04297V7.05078C19.793 7.37109 19.6979 7.61849 19.5078 7.79297C19.3203 7.96484 19.0573 8.05078 18.7188 8.05078H17.2734V8.97266ZM16.6836 10.75H17.8633V5.11328H16.6836V10.75ZM22.0742 10.75H23.2539V8.6875H24.1641C24.1719 8.6875 24.181 8.6875 24.1914 8.6875C24.2018 8.6875 24.2109 8.6875 24.2188 8.6875L25.2695 10.75H26.6055L25.418 8.51172C25.7409 8.38411 25.9909 8.17708 26.168 7.89062C26.3477 7.60156 26.4375 7.27604 26.4375 6.91406V6.90625C26.4375 6.53646 26.3581 6.21745 26.1992 5.94922C26.043 5.68099 25.8138 5.47526 25.5117 5.33203C25.2122 5.1862 24.849 5.11328 24.4219 5.11328H22.0742V10.75ZM23.2539 7.82812V6.03516H24.2773C24.5742 6.03516 24.8073 6.11589 24.9766 6.27734C25.1458 6.4388 25.2305 6.65625 25.2305 6.92969V6.9375C25.2305 7.21615 25.1471 7.4349 24.9805 7.59375C24.8164 7.75 24.5872 7.82812 24.293 7.82812H23.2539ZM27.6289 10.75H31.3633V9.77734H28.8086V8.35156H31.2188V7.44531H28.8086V6.08594H31.3633V5.11328H27.6289V10.75ZM32.6055 10.75H33.6562V6.91406H34.2383L33.1172 5.26953L35.1797 10.75H35.918L37.9844 5.26953L36.8594 6.91406H37.4414V10.75H38.4922V5.11328H37.1406L35.5859 9.23828H35.5156L33.957 5.11328H32.6055V10.75ZM39.8633 10.75H41.043V5.11328H39.8633V10.75ZM44.7695 10.8945C45.2539 10.8945 45.6719 10.8073 46.0234 10.6328C46.3776 10.4583 46.6497 10.2148 46.8398 9.90234C47.0326 9.58724 47.1289 9.22135 47.1289 8.80469V5.11328H45.9492V8.69922C45.9492 9.0638 45.8477 9.35417 45.6445 9.57031C45.4414 9.78646 45.1497 9.89453 44.7695 9.89453C44.3919 9.89453 44.1003 9.78646 43.8945 9.57031C43.6888 9.35417 43.5859 9.0638 43.5859 8.69922V5.11328H42.4062V8.80469C42.4062 9.22396 42.5026 9.58984 42.6953 9.90234C42.8906 10.2148 43.1641 10.4583 43.5156 10.6328C43.8698 10.8073 44.2878 10.8945 44.7695 10.8945ZM48.4961 10.75H49.5469V6.91406H50.1289L49.0078 5.26953L51.0703 10.75H51.8086L53.875 5.26953L52.75 6.91406H53.332V10.75H54.3828V5.11328H53.0312L51.4766 9.23828H51.4062L49.8477 5.11328H48.4961V10.75Z\"\r\n fill=\"white\"\r\n />\r\n <path\r\n fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M8.50189 8.05306L6.57806 4.69918L10.4495 4.69828L12.3571 8.04466L12.3581 8.04466L12.3576 8.04558L12.3584 8.047L12.3568 8.04701L10.4585 11.4009L6.59204 11.417L8.502 8.05306L8.50189 8.05306Z\"\r\n fill=\"#C3AA59\"\r\n />\r\n <path\r\n fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M6.57757 4.69918L8.50141 8.05306L12.3579 8.047L10.449 4.69828L6.57757 4.69918Z\"\r\n fill=\"#DAC785\"\r\n />\r\n <path\r\n d=\"M10.3169 4.43652H6.40234L8.35964 7.95965L6.40234 11.2871H10.5127L12.47 7.95965L10.3169 4.43652Z\"\r\n stroke=\"white\"\r\n />\r\n <defs>\r\n <linearGradient id={uniqueGradientId} x1=\"30\" y1=\"0\" x2=\"30\" y2=\"16\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stopColor=\"#DAC785\" />\r\n <stop offset=\"1\" stopColor=\"#AA944C\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n );\r\n};\r\n\r\nexport default GoldPremiumBadgeSvg;\r\n","const GoldPremiumBadgeNoChevronSvg = props => {\r\n const uniqueGradientId = `gradient_${Math.round(Math.random() * 100000)}`;\r\n return (\r\n <svg width=\"40\" height=\"12\" viewBox=\"0 0 40 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\r\n <rect width=\"40\" height=\"12\" rx=\"4\" fill={`url('#${uniqueGradientId}')`} />\r\n <path\r\n d=\"M4.11426 6.94482H5.63184C5.97819 6.94482 6.28125 6.87533 6.54102 6.73633C6.80078 6.59733 7.00244 6.40137 7.146 6.14844C7.29183 5.89551 7.36475 5.59928 7.36475 5.25977V5.25293C7.36475 4.91569 7.29183 4.62061 7.146 4.36768C7.00244 4.11475 6.80078 3.91878 6.54102 3.77979C6.28125 3.63851 5.97819 3.56787 5.63184 3.56787H4.11426V4.38477H5.37891C5.67513 4.38477 5.90527 4.45996 6.06934 4.61035C6.23568 4.76074 6.31885 4.97607 6.31885 5.25635V5.26318C6.31885 5.54346 6.23568 5.75993 6.06934 5.9126C5.90527 6.06299 5.67513 6.13818 5.37891 6.13818H4.11426V6.94482ZM3.59814 8.5H4.63037V3.56787H3.59814V8.5ZM8.31494 8.5H9.34717V6.69531H10.1436C10.1504 6.69531 10.1584 6.69531 10.1675 6.69531C10.1766 6.69531 10.1846 6.69531 10.1914 6.69531L11.1108 8.5H12.2798L11.2407 6.5415C11.5233 6.42985 11.742 6.2487 11.897 5.99805C12.0542 5.74512 12.1328 5.46029 12.1328 5.14355V5.13672C12.1328 4.81315 12.0633 4.53402 11.9243 4.29932C11.7876 4.06462 11.5871 3.8846 11.3228 3.75928C11.0607 3.63167 10.7428 3.56787 10.3691 3.56787H8.31494V8.5ZM9.34717 5.94336V4.37451H10.2427C10.5024 4.37451 10.7064 4.44515 10.8545 4.58643C11.0026 4.7277 11.0767 4.91797 11.0767 5.15723V5.16406C11.0767 5.40788 11.0037 5.59928 10.8579 5.73828C10.7144 5.875 10.5138 5.94336 10.2563 5.94336H9.34717ZM13.1753 8.5H16.4429V7.64893H14.2075V6.40137H16.3164V5.6084H14.2075V4.41895H16.4429V3.56787H13.1753V8.5ZM17.5298 8.5H18.4492V5.14355H18.9585L17.9775 3.70459L19.7822 8.5H20.4282L22.2363 3.70459L21.252 5.14355H21.7612V8.5H22.6807V3.56787H21.498L20.1377 7.17725H20.0762L18.7124 3.56787H17.5298V8.5ZM23.8804 8.5H24.9126V3.56787H23.8804V8.5ZM28.1733 8.62646C28.5972 8.62646 28.9629 8.55013 29.2705 8.39746C29.5804 8.24479 29.8185 8.03174 29.9849 7.7583C30.1535 7.48258 30.2378 7.16243 30.2378 6.79785V3.56787H29.2056V6.70557C29.2056 7.02458 29.1167 7.27865 28.939 7.46777C28.7612 7.6569 28.506 7.75146 28.1733 7.75146C27.8429 7.75146 27.5877 7.6569 27.4077 7.46777C27.2277 7.27865 27.1377 7.02458 27.1377 6.70557V3.56787H26.1055V6.79785C26.1055 7.16471 26.1898 7.48486 26.3584 7.7583C26.5293 8.03174 26.7686 8.24479 27.0762 8.39746C27.3861 8.55013 27.7518 8.62646 28.1733 8.62646ZM31.4341 8.5H32.3535V5.14355H32.8628L31.8818 3.70459L33.6865 8.5H34.3325L36.1406 3.70459L35.1562 5.14355H35.6655V8.5H36.585V3.56787H35.4023L34.042 7.17725H33.9805L32.6167 3.56787H31.4341V8.5Z\"\r\n fill=\"white\"\r\n />\r\n <defs>\r\n <linearGradient id={uniqueGradientId} x1=\"20\" y1=\"0\" x2=\"20\" y2=\"12\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stopColor=\"#DAC785\" />\r\n <stop offset=\"1\" stopColor=\"#B79F50\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n );\r\n};\r\n\r\nexport default GoldPremiumBadgeNoChevronSvg;\r\n","const GoldPremiumBadgeNoBackgroundSvg = props => {\r\n return (\r\n <svg width=\"97\" height=\"23\" viewBox=\"0 0 97 23\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\r\n <path\r\n d=\"M25.2285 12.8896H28.2637C28.9564 12.8896 29.5625 12.7507 30.082 12.4727C30.6016 12.1947 31.0049 11.8027 31.292 11.2969C31.5837 10.791 31.7295 10.1986 31.7295 9.51953V9.50586C31.7295 8.83138 31.5837 8.24121 31.292 7.73535C31.0049 7.22949 30.6016 6.83757 30.082 6.55957C29.5625 6.27702 28.9564 6.13574 28.2637 6.13574H25.2285V7.76953H27.7578C28.3503 7.76953 28.8105 7.91992 29.1387 8.2207C29.4714 8.52148 29.6377 8.95215 29.6377 9.5127V9.52637C29.6377 10.0869 29.4714 10.5199 29.1387 10.8252C28.8105 11.126 28.3503 11.2764 27.7578 11.2764H25.2285V12.8896ZM24.1963 16H26.2607V6.13574H24.1963V16ZM33.6299 16H35.6943V12.3906H37.2871C37.3008 12.3906 37.3167 12.3906 37.335 12.3906C37.3532 12.3906 37.3691 12.3906 37.3828 12.3906L39.2217 16H41.5596L39.4814 12.083C40.0465 11.8597 40.484 11.4974 40.7939 10.9961C41.1084 10.4902 41.2656 9.92057 41.2656 9.28711V9.27344C41.2656 8.6263 41.1266 8.06803 40.8486 7.59863C40.5752 7.12923 40.1742 6.76921 39.6455 6.51855C39.1214 6.26335 38.4857 6.13574 37.7383 6.13574H33.6299V16ZM35.6943 10.8867V7.74902H37.4854C38.0049 7.74902 38.4128 7.8903 38.709 8.17285C39.0052 8.4554 39.1533 8.83594 39.1533 9.31445V9.32812C39.1533 9.81576 39.0075 10.1986 38.7158 10.4766C38.4287 10.75 38.0277 10.8867 37.5127 10.8867H35.6943ZM43.3506 16H49.8857V14.2979H45.415V11.8027H49.6328V10.2168H45.415V7.83789H49.8857V6.13574H43.3506V16ZM52.0596 16H53.8984V9.28711H54.917L52.9551 6.40918L56.5645 16H57.8564L61.4727 6.40918L59.5039 9.28711H60.5225V16H62.3613V6.13574H59.9961L57.2754 13.3545H57.1523L54.4248 6.13574H52.0596V16ZM64.7607 16H66.8252V6.13574H64.7607V16ZM73.3467 16.2529C74.1943 16.2529 74.9258 16.1003 75.541 15.7949C76.1608 15.4896 76.637 15.0635 76.9697 14.5166C77.307 13.9652 77.4756 13.3249 77.4756 12.5957V6.13574H75.4111V12.4111C75.4111 13.0492 75.2334 13.5573 74.8779 13.9355C74.5225 14.3138 74.012 14.5029 73.3467 14.5029C72.6859 14.5029 72.1755 14.3138 71.8154 13.9355C71.4554 13.5573 71.2754 13.0492 71.2754 12.4111V6.13574H69.2109V12.5957C69.2109 13.3294 69.3796 13.9697 69.7168 14.5166C70.0586 15.0635 70.5371 15.4896 71.1523 15.7949C71.7721 16.1003 72.5036 16.2529 73.3467 16.2529ZM79.8682 16H81.707V9.28711H82.7256L80.7637 6.40918L84.373 16H85.665L89.2812 6.40918L87.3125 9.28711H88.3311V16H90.1699V6.13574H87.8047L85.084 13.3545H84.9609L82.2334 6.13574H79.8682V16Z\"\r\n fill=\"#927827\"\r\n />\r\n <path\r\n fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M9.90087 11.2648L5.14109 2.96689L14.7194 2.96469L19.439 11.244L19.4416 11.244L19.4403 11.2462L19.4423 11.2498L19.4383 11.2498L14.7417 19.5476L5.17567 19.5875L9.90112 11.2648L9.90087 11.2648Z\"\r\n fill=\"#C3AA59\"\r\n />\r\n <path\r\n fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M5.21929 3.01666L9.84793 11.3478L19.3632 11.1997L14.7711 2.88106L5.21929 3.01666Z\"\r\n fill=\"#DAC785\"\r\n />\r\n <path\r\n d=\"M14.3921 2.31689H4.70703L9.54959 11.0335L4.70703 19.2659H14.8764L19.719 11.0335L14.3921 2.31689Z\"\r\n stroke=\"white\"\r\n />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default GoldPremiumBadgeNoBackgroundSvg;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport GoldPremiumBadgeSvg from './GoldPremiumBadgeSvg';\r\nimport GoldPremiumBadgeNoChevronSvg from './GoldPremiumBadgeNoChevronSvg';\r\nimport GoldPremiumBadgeNoBackgroundSvg from './GoldPremiumBadgeNoBackgroundSvg';\r\n\r\nconst sizes = {\r\n small: { width: 32, height: 9 },\r\n base: { width: 40, height: 12 },\r\n large: { width: 60, height: 16 },\r\n extraLarge: { width: 97, height: 23 }\r\n};\r\n\r\nconst PremiumBadge = ({ size = 'base', variant }) => {\r\n const { width, height } = sizes[size];\r\n const isBaseOrSmall = size === 'base' || size === 'small';\r\n\r\n if (variant === 'noBackground' && isBaseOrSmall) {\r\n console.warn('Currently no small or base size for the noBackground PremiumBadge variant');\r\n return null;\r\n }\r\n\r\n if (variant === 'noBackground') {\r\n return <GoldPremiumBadgeNoBackgroundSvg width={width} height={height} />;\r\n }\r\n\r\n return isBaseOrSmall ? (\r\n <GoldPremiumBadgeNoChevronSvg width={width} height={height} />\r\n ) : (\r\n <GoldPremiumBadgeSvg width={width} height={height} />\r\n );\r\n};\r\n\r\nPremiumBadge.propTypes = {\r\n variant: PropTypes.oneOf(['noBackground']),\r\n size: PropTypes.oneOf(['small', 'base', 'large', 'extraLarge'])\r\n};\r\n\r\nexport default PremiumBadge;\r\n","import { useEffect, useRef } from 'react';\r\n\r\nimport useURLParams from '@appCore/hooks/routeTools/useURLParams/useURLParams';\r\n\r\nimport {\r\n deriveSecondaryKey,\r\n getIndexFromSecondaryKey,\r\n getIsEmptyValue,\r\n getIsSecondaryKey,\r\n SELECTION_TYPES,\r\n UNSTABLE_getGroupIndexFromCheckboxGroupKey,\r\n UNSTABLE_getGroupIndexFromDependentSelectGroupKey\r\n} from './utility';\r\n\r\n/**\r\n * This hook attempts to encapsulate some of the more commonly used functionality when working with\r\n * SearchFilters. It accepts a SearchFilters FilterDefinition and returns three functions (deriveValues(),\r\n * deriveRequestParams(), and deriveSearchParamsOnValuesChange()) which can be used to manage filter state on\r\n * any given page.\r\n *\r\n * In particular, it handles:\r\n * - Automatically parsing filter values from searchParams/defaults when configured in the filterDef\r\n * - Automatically parsing request params from given values when configured in the filterDef\r\n * - Automatically resetting filters when the primary filter changes\r\n * - Automatically resetting page-tracking filters when any filters change\r\n */\r\nconst useParamTools = ({ filterDef }) => {\r\n const searchParams = useURLParams().search;\r\n const prevSearchParams = useRef(searchParams);\r\n\r\n useEffect(() => {\r\n if (prevSearchParams.current !== searchParams) {\r\n prevSearchParams.current = searchParams;\r\n }\r\n }, [searchParams]);\r\n\r\n if (!filterDef) {\r\n return null;\r\n }\r\n\r\n const pageSearchParamKey = 'page' in filterDef ? filterDef.page.searchParamKey : 'page';\r\n const pageRequestParamKey = 'page' in filterDef ? filterDef.page.requestParamKey : 'page';\r\n\r\n const deriveValues = () => {\r\n const getPrimaryValue = () => {\r\n if (filterDef.primary.disabled) {\r\n return '';\r\n }\r\n return searchParams[filterDef.primary.searchParamKey] || filterDef.primary.defaultValue || '';\r\n };\r\n\r\n const getSecondaryValue = ({ secondaryDef }) => {\r\n if (secondaryDef.disabled) {\r\n return secondaryDef.selectionType === SELECTION_TYPES.multiSelect ? [] : '';\r\n }\r\n if (secondaryDef.selectionType === SELECTION_TYPES.multiSelect) {\r\n if (!searchParams[secondaryDef.searchParamKey]) {\r\n return [];\r\n }\r\n const multiSelectValue = Array.isArray(searchParams[secondaryDef.searchParamKey])\r\n ? searchParams[secondaryDef.searchParamKey]\r\n : [searchParams[secondaryDef.searchParamKey]];\r\n\r\n if (!multiSelectValue.every(val => !!secondaryDef.options.find(opt => opt.value === val))) {\r\n return [];\r\n }\r\n return multiSelectValue;\r\n }\r\n if (secondaryDef.selectionType === SELECTION_TYPES.singleSelect) {\r\n if (!secondaryDef.options.find(opt => opt.value === searchParams[secondaryDef.searchParamKey])) {\r\n return '';\r\n }\r\n return searchParams[secondaryDef.searchParamKey] || '';\r\n }\r\n if (secondaryDef.selectionType === 'checkbox') {\r\n return searchParams[secondaryDef.searchParamKey] === 'true' ? true : '';\r\n }\r\n return searchParams[secondaryDef.searchParamKey] || '';\r\n };\r\n\r\n const getTextValue = () => {\r\n if (filterDef.text.disabled) {\r\n return '';\r\n }\r\n return searchParams[filterDef.text.searchParamKey] || '';\r\n };\r\n\r\n const getSortValue = () => {\r\n if (filterDef.sort.disabled) {\r\n return '';\r\n }\r\n return searchParams[filterDef.sort.searchParamKey] || filterDef.sort.defaultValue || '';\r\n };\r\n\r\n const values = {\r\n ...filterDef.secondary.reduce((acc, secondaryDef, secondaryDefIdx) => {\r\n if (secondaryDef.selectionType === 'unstable_dependentSelectGroup') {\r\n const keyPrefix = deriveSecondaryKey({ idx: secondaryDefIdx });\r\n return secondaryDef.group.reduce(\r\n (groupAcc, groupItemDef, groupItemDefIdx) => ({\r\n ...groupAcc,\r\n [`${keyPrefix}.${groupItemDefIdx}`]: getSecondaryValue({ secondaryDef: groupItemDef })\r\n }),\r\n acc\r\n );\r\n }\r\n\r\n if (secondaryDef.selectionType === 'unstable_checkboxGroup') {\r\n const keyPrefix = deriveSecondaryKey({ idx: secondaryDefIdx });\r\n return secondaryDef.group.reduce(\r\n (groupAcc, groupItemDef, groupItemDefIdx) => ({\r\n ...groupAcc,\r\n [`${keyPrefix}.${groupItemDefIdx}`]: getSecondaryValue({ secondaryDef: groupItemDef })\r\n }),\r\n acc\r\n );\r\n }\r\n\r\n return {\r\n ...acc,\r\n [deriveSecondaryKey({ idx: secondaryDefIdx })]: getSecondaryValue({ secondaryDef })\r\n };\r\n }, {})\r\n };\r\n\r\n // Only attach a value for 'primary', 'text', and 'sort' if they exist in the definition (they're optional)\r\n if (filterDef.primary) {\r\n values.primary = getPrimaryValue();\r\n }\r\n if (filterDef.text) {\r\n values.text = getTextValue();\r\n }\r\n if (filterDef.sort) {\r\n values.sort = getSortValue();\r\n }\r\n\r\n return values;\r\n };\r\n\r\n const deriveRequestParams = ({ values }) => {\r\n const newParams = Object.keys(values).reduce((acc, key) => {\r\n // Don't account for empty values\r\n if (getIsEmptyValue(values[key])) {\r\n return acc;\r\n }\r\n if (getIsSecondaryKey({ key })) {\r\n const secondaryDefIdx = getIndexFromSecondaryKey({ key });\r\n const secondaryDef = filterDef.secondary[secondaryDefIdx];\r\n\r\n if (secondaryDef.selectionType === 'unstable_dependentSelectGroup') {\r\n const groupDefKey = UNSTABLE_getGroupIndexFromDependentSelectGroupKey({ key });\r\n const groupDef = secondaryDef.group[groupDefKey];\r\n if (groupDef.disabled) {\r\n return acc;\r\n }\r\n acc[groupDef.requestParamKey] = values[key];\r\n return acc;\r\n }\r\n\r\n if (secondaryDef.selectionType === 'unstable_checkboxGroup') {\r\n const groupDefKey = UNSTABLE_getGroupIndexFromCheckboxGroupKey({ key });\r\n const groupDef = secondaryDef.group[groupDefKey];\r\n if (groupDef.disabled) {\r\n return acc;\r\n }\r\n acc[groupDef.requestParamKey] = values[key];\r\n return acc;\r\n }\r\n\r\n // Don't derive requestParams from disabled secondary filters\r\n if (secondaryDef.disabled) {\r\n return acc;\r\n }\r\n acc[secondaryDef.requestParamKey] = values[key];\r\n return acc;\r\n }\r\n // Don't derive requestParams from disabled text/alt filters\r\n if (filterDef[key].disabled) {\r\n return acc;\r\n }\r\n acc[filterDef[key].requestParamKey] = values[key];\r\n return acc;\r\n }, {});\r\n\r\n if (pageSearchParamKey && pageRequestParamKey && searchParams[pageSearchParamKey]) {\r\n newParams[pageRequestParamKey] = searchParams[pageSearchParamKey];\r\n }\r\n\r\n return newParams;\r\n };\r\n\r\n const deriveSearchParamsOnValuesChange = ({ values }) => {\r\n const mergedParams = {\r\n ...searchParams,\r\n\r\n // Here we take special care in handling \"dependent select groups\", making sure that we only propagate\r\n // values that pass the specified dependency condition.\r\n ...filterDef.secondary?.reduce((acc, secondaryDef, secondaryDefIdx) => {\r\n if (secondaryDef.selectionType !== 'unstable_dependentSelectGroup') {\r\n return acc;\r\n }\r\n const secondaryKey = deriveSecondaryKey({ idx: secondaryDefIdx });\r\n const groupValues = Object.keys(values)\r\n .filter(valKey => valKey.startsWith(`${secondaryKey}.`))\r\n .reduce(\r\n (groupValAcc, groupValKey) => ({\r\n ...groupValAcc,\r\n [groupValKey]: values[groupValKey]\r\n }),\r\n {}\r\n );\r\n\r\n const validSearchParamKeys = {};\r\n for (let i = 0; i < secondaryDef.group.length; i++) {\r\n const groupDef = secondaryDef.group[i];\r\n const groupDefKey = `${secondaryKey}.${i}`;\r\n\r\n // If the current values change doesn't include these keys, don't update them!\r\n if (!Object.hasOwn(values, groupDefKey)) {\r\n continue;\r\n }\r\n\r\n if (!groupDef.dependencyCondition || groupDef.dependencyCondition({ groupValues })) {\r\n validSearchParamKeys[groupDef.searchParamKey] = values[groupDefKey];\r\n } else if (!Object.hasOwn(validSearchParamKeys, groupDef.searchParamKey)) {\r\n validSearchParamKeys[groupDef.searchParamKey] =\r\n groupDef.selectionType === SELECTION_TYPES.multiSelect ? [] : '';\r\n }\r\n }\r\n\r\n return {\r\n ...acc,\r\n ...validSearchParamKeys\r\n };\r\n }, {}),\r\n\r\n ...Object.keys(values).reduce((acc, key) => {\r\n if (getIsSecondaryKey({ key })) {\r\n const secondaryDefIdx = getIndexFromSecondaryKey({ key });\r\n const secondaryDef = filterDef.secondary[secondaryDefIdx];\r\n\r\n // We already handled this above\r\n if (secondaryDef.selectionType === 'unstable_dependentSelectGroup') {\r\n return acc;\r\n }\r\n\r\n if (secondaryDef.selectionType === 'unstable_checkboxGroup') {\r\n const groupIdx = UNSTABLE_getGroupIndexFromCheckboxGroupKey({ key });\r\n const groupDef = secondaryDef.group[groupIdx];\r\n acc[groupDef.searchParamKey] = values[key] && 'true';\r\n return acc;\r\n }\r\n\r\n acc[secondaryDef.searchParamKey] = values[key];\r\n return acc;\r\n }\r\n\r\n acc[filterDef[key].searchParamKey] = values[key];\r\n return acc;\r\n }, {})\r\n };\r\n\r\n // Now delete any empty keys\r\n Object.keys(mergedParams).forEach(key => {\r\n if (getIsEmptyValue(mergedParams[key])) {\r\n delete mergedParams[key];\r\n }\r\n });\r\n\r\n // Find the changed param keys from the previous\r\n const changedParams = Array.from(\r\n new Set([...Object.keys(mergedParams), ...Object.keys(prevSearchParams.current)])\r\n ).reduce((acc, key) => {\r\n if (mergedParams[key] !== prevSearchParams.current[key]) {\r\n acc.push(key);\r\n }\r\n return acc;\r\n }, []);\r\n\r\n // If the primary key changed, reset all filters\r\n if (filterDef.primary && changedParams.includes(filterDef.primary.searchParamKey)) {\r\n // Check to see if the primaryKey actually has a value here (it's possible it 'changed' because it was reset to ''), and if so, return the custom object. Otherwise return empty\r\n return mergedParams[filterDef.primary.searchParamKey]\r\n ? { [filterDef.primary.searchParamKey]: mergedParams[filterDef.primary.searchParamKey] }\r\n : {};\r\n }\r\n\r\n // If anything other than 'page' changed, reset page\r\n if (pageSearchParamKey && changedParams.some(key => key !== pageSearchParamKey)) {\r\n delete mergedParams[pageSearchParamKey];\r\n }\r\n\r\n return mergedParams;\r\n };\r\n\r\n const values = deriveValues();\r\n\r\n return {\r\n values,\r\n requestParams: deriveRequestParams({ values }),\r\n deriveSearchParamsOnValuesChange\r\n };\r\n};\r\n\r\nexport default useParamTools;\r\n","import PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\n\r\nimport { Stack } from '@fieldlevel/playbook';\r\n\r\nimport TeamLogo from '@appCore/components/TeamLogo';\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport { generateDeprecationNotice } from '@appCore/utility/consoleUtils';\r\nimport { IS_DEV_MODE } from '@appCore/constants/environment';\r\n\r\nconst ORIENTATION_TYPES = {\r\n horizontal: 'horizontal',\r\n vertical: 'vertical'\r\n};\r\n\r\nconst PRESENTATION_MODE_TYPES = {\r\n details: 'details',\r\n short: 'short'\r\n};\r\n\r\nconst defaultConfig = {\r\n orientation: ORIENTATION_TYPES.horizontal,\r\n showAthleticAssociation: true,\r\n showSportLabel: true,\r\n urlBuilder: null,\r\n generateTeamProfileLinkProps: null,\r\n teamProfileLinkProps: null,\r\n mode: PRESENTATION_MODE_TYPES.details,\r\n useHighSchoolDefaultLogo: true,\r\n lazyLoadLogo: false\r\n};\r\n\r\nconst TeamDetailsDisplay = ({ team, onClick, options, children }) => {\r\n const config = { ...defaultConfig, ...options };\r\n\r\n // Generate a deprecation notice for uppercase config settings\r\n if (['Short', 'Details'].includes(config.mode)) {\r\n if (IS_DEV_MODE) {\r\n generateDeprecationNotice({\r\n message: `TeamDetailsDisplay - usage of 'Short' or 'Details' for config.mode has been deprecated. Please use lowercase strings instead.`\r\n });\r\n }\r\n config.mode = config.mode.toLowerCase();\r\n }\r\n\r\n if (['Horizontal', 'Vertical'].includes(config.orientation)) {\r\n if (IS_DEV_MODE) {\r\n generateDeprecationNotice({\r\n message: `TeamDetailsDisplay - usage of 'Horizontal' or 'Vertical' for config.orientation has been deprecated. Please use lowercase strings instead.`\r\n });\r\n }\r\n config.orientation = config.orientation.toLowerCase();\r\n }\r\n\r\n if (IS_DEV_MODE && (config.urlBuilder || config.generateTeamProfileLinkProps)) {\r\n generateDeprecationNotice({\r\n message: `TeamDetailsDisplay - config.urlBuilder and config.generateTeamProfileLinkProps have been deprecated. Please use config.teamProfileLinkProps instead`\r\n });\r\n }\r\n\r\n const legacyUrlBuilderObj = config.urlBuilder && config.urlBuilder(team);\r\n const linkProps = config.teamProfileLinkProps || config.generateTeamProfileLinkProps?.(team);\r\n\r\n const TeamProfileLinkWrapper = (() => {\r\n if (legacyUrlBuilderObj?.href) {\r\n return props => (\r\n <WiredLink\r\n url={legacyUrlBuilderObj.href}\r\n target={legacyUrlBuilderObj.target}\r\n onClick={onClick}\r\n {...props}\r\n />\r\n );\r\n }\r\n if (linkProps) {\r\n return props => <WiredLink {...linkProps} {...props} />;\r\n }\r\n return props => <>{props.children}</>;\r\n })();\r\n\r\n const showAthleticAssociation = config.showAthleticAssociation && team.AthleticAssociationEnum;\r\n const showSport = team.SportEnum.Id != 0 && config.showSportLabel;\r\n const logoSize = config.mode === PRESENTATION_MODE_TYPES.short ? 'base' : 'large';\r\n const breakCache = config.breakCache || false;\r\n\r\n return (\r\n <Stack noWrap align=\"center\" vertical={config.orientation === ORIENTATION_TYPES.vertical}>\r\n <Stack.Item>\r\n <div className=\"relative flex flex-col items-center\">\r\n <div className=\"flex-none\">\r\n <TeamProfileLinkWrapper unstyled>\r\n <TeamLogo\r\n shortName={team.ShortName || ''}\r\n sportEnum={team.SportEnum.Value}\r\n size={logoSize}\r\n teamId={team.TeamId}\r\n breakCache={breakCache}\r\n isPremium={team.IsPremium}\r\n organizationName={team.OrganizationName}\r\n useHighSchoolDefaultLogo={config.useHighSchoolDefaultLogo}\r\n lazy={config.lazyLoadLogo}\r\n />\r\n </TeamProfileLinkWrapper>\r\n </div>\r\n </div>\r\n </Stack.Item>\r\n <Stack.Item fill>\r\n <div className={cx(config.orientation === ORIENTATION_TYPES.vertical && 'text-center')}>\r\n <div className=\"font-bold text-body-lg text-base\">\r\n <TeamProfileLinkWrapper>\r\n {team.OrganizationName} {team.TeamName}\r\n </TeamProfileLinkWrapper>\r\n </div>\r\n {(showAthleticAssociation || showSport) && (\r\n <div className=\"text-body-sm text-base\">\r\n {showAthleticAssociation && <>{team.AthleticAssociationEnum.Label}</>}\r\n {showAthleticAssociation && showSport && <> - </>}\r\n {showSport && team.SportEnum.Label}\r\n </div>\r\n )}\r\n\r\n {config.mode !== PRESENTATION_MODE_TYPES.short && (\r\n <>\r\n {children}\r\n {!children && (\r\n <div className=\"text-body-sm text-muted\">\r\n {team.City}, {team.State}\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n </Stack.Item>\r\n </Stack>\r\n );\r\n};\r\n\r\nexport const TeamDetailsProps = {\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 City: PropTypes.string,\r\n State: PropTypes.string,\r\n TeamId: PropTypes.number\r\n }).isRequired,\r\n options: PropTypes.shape({\r\n showAthleticAssociation: PropTypes.bool,\r\n showSportLabel: PropTypes.bool,\r\n orientation: PropTypes.oneOf(['Horizontal', 'Vertical', ...Object.values(ORIENTATION_TYPES)]),\r\n urlBuilder: PropTypes.func,\r\n generateTeamProfileLinkProps: PropTypes.func,\r\n teamProfileLinkProps: PropTypes.exact(WiredLink.propTypes),\r\n mode: PropTypes.oneOf(['Details', 'Short', ...Object.values(PRESENTATION_MODE_TYPES)]),\r\n breakCache: PropTypes.bool,\r\n useHighSchoolDefaultLogo: PropTypes.bool,\r\n lazyLoadLogo: PropTypes.bool\r\n }),\r\n onClick: PropTypes.func,\r\n children: PropTypes.node\r\n};\r\n\r\nTeamDetailsDisplay.propTypes = TeamDetailsProps;\r\n\r\nexport default TeamDetailsDisplay;\r\n","import { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Logo } from '@fieldlevel/playbook';\r\n\r\nimport { getSport } from '@appCore/utility/apiUtils';\r\nimport { generateDeprecationNotice } from '@appCore/utility/consoleUtils';\r\nimport imageSrcManager from '@appCore/services/imageSrcManager';\r\nimport { ENUM_SPORT } from '@appCore/constants/system';\r\nimport PrimeBadgeIcon from '@appCore/icons/PrimeBadgeIcon';\r\nimport DefaultLogo from '@appCore/components/DefaultLogo';\r\n\r\nconst Sizes = {\r\n small: 32,\r\n base: 40,\r\n large: 60\r\n};\r\n\r\nconst getSizeInPixels = size => {\r\n return Sizes[size];\r\n};\r\n\r\nconst TeamLogo = ({\r\n shortName,\r\n sportEnum,\r\n organizationName,\r\n size = 'base',\r\n breakCache,\r\n isBlurred,\r\n teamId,\r\n lazy,\r\n isPremium,\r\n useHighSchoolDefaultLogo\r\n}) => {\r\n const sizeLowercase = size?.toLowerCase();\r\n\r\n // Generate deprecation notice for uppercase strings\r\n useEffect(() => {\r\n if (size !== sizeLowercase) {\r\n generateDeprecationNotice({\r\n message: `TeamLogo - The usage of '${size}' for props.size has been deprecated. Please use lowercase strings instead.`\r\n });\r\n }\r\n }, [size, sizeLowercase]);\r\n\r\n let sportName = sportEnum;\r\n\r\n if (typeof sportEnum === 'number') {\r\n sportName = getSport(sportEnum, ENUM_SPORT);\r\n }\r\n\r\n const logoSrc =\r\n shortName &&\r\n (() => {\r\n const size1x = getSizeInPixels(sizeLowercase);\r\n const src1x = imageSrcManager.getTeamLogoSrc({\r\n shortName,\r\n sportEnum: sportName,\r\n size: size1x,\r\n breakCache,\r\n isBlurred,\r\n teamId\r\n });\r\n const size2x = size1x * 2;\r\n const src2x = imageSrcManager.getTeamLogoSrc({\r\n shortName,\r\n sportEnum: sportName,\r\n size: size2x,\r\n breakCache,\r\n isBlurred,\r\n teamId\r\n });\r\n return {\r\n source: src2x,\r\n sourceSet: `${src1x} 1x, ${src2x} 2x`\r\n };\r\n })();\r\n\r\n return (\r\n <div className=\"relative flex justify-center\">\r\n {logoSrc ? (\r\n <>\r\n <Logo\r\n size={sizeLowercase}\r\n alt={organizationName}\r\n source={logoSrc.source}\r\n sourceSet={logoSrc.sourceSet}\r\n lazy={lazy}\r\n />\r\n {isPremium && (\r\n <span className=\"absolute bottom-[-10px] flex items-center max-w-full\">\r\n <PrimeBadgeIcon size={sizeLowercase} />\r\n </span>\r\n )}\r\n </>\r\n ) : (\r\n <DefaultLogo\r\n useHighSchool={useHighSchoolDefaultLogo}\r\n size={sizeLowercase}\r\n organizationName={organizationName}\r\n lazy={lazy}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nTeamLogo.propTypes = {\r\n shortName: PropTypes.string,\r\n sportEnum: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n teamId: PropTypes.number,\r\n organizationName: PropTypes.string,\r\n size: PropTypes.oneOf([...Object.keys(Sizes), 'Small', 'Base', 'Large']),\r\n breakCache: PropTypes.bool,\r\n isBlurred: PropTypes.bool,\r\n lazy: PropTypes.bool,\r\n isPremium: PropTypes.bool,\r\n useHighSchoolDefaultLogo: PropTypes.bool\r\n};\r\n\r\nexport default TeamLogo;\r\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 { Avatar } from '@fieldlevel/playbook';\r\n\r\nimport PremiumBadge from '@appCore/components/PremiumBadge/PremiumBadge';\r\nimport { IS_DEV_MODE } from '@appCore/constants/environment';\r\nimport { generateDeprecationNotice } from '@appCore/utility/consoleUtils';\r\n\r\nimport useAthleteHeadshot, { useLegacyAthleteHeadshot } from './useAthleteHeadshot';\r\n\r\n/** @typedef {import('@appCore/components/athlete/AthleteHeadshot/useAthleteHeadshot').AthleteHeadshotSize} AthleteHeadshotSize */\r\n\r\nconst HeadshotUI = ({ avatarSize, avatarAlt = 'Profile image', imgSrc, lazy, showPremiumBadge }) => (\r\n <div className=\"relative\">\r\n <Avatar size={avatarSize} source={imgSrc} lazy={lazy} alt={avatarAlt} />\r\n {showPremiumBadge && (\r\n <div className=\"absolute -bottom-1\">\r\n <PremiumBadge size={avatarSize} />\r\n </div>\r\n )}\r\n </div>\r\n);\r\n\r\n/**\r\n * @param {object} props\r\n * @param {string} [props.username] - The athlete's username. Required if props.isAnonymous = false\r\n * @param {'Small'|'Base'|'Large'} [props.size] - The size of the headshot\r\n * @param {boolean} [props.isAnonymous] - Whether the headshot should be anonymous or show the actual athlete\r\n * @param {boolean} [props.lazy] - Whether to lazy load the image of the headshot\r\n * @param {boolean} [props.liveUpdate] - Whether to listen for updates to the image and auto load\r\n * @param {boolean} [props.showPremiumBadge] - Whether to show the premium badge for the athlete\r\n * @returns {import('react').JSX.Element}\r\n */\r\nexport const LegacyAthleteHeadshot = ({\r\n username,\r\n size,\r\n isAnonymous = false,\r\n lazy = false,\r\n liveUpdate = false,\r\n showPremiumBadge = false\r\n}) => {\r\n if (IS_DEV_MODE) {\r\n generateDeprecationNotice({\r\n message: `LegacyAthleteHeadshot has been deprecated. Please use AthleteHeadshot instead.`\r\n });\r\n }\r\n\r\n const { imgSrc, avatarSize } = useLegacyAthleteHeadshot({ username, isAnonymous, size, liveUpdate });\r\n return <HeadshotUI imgSrc={imgSrc} avatarSize={avatarSize} lazy={lazy} showPremiumBadge={showPremiumBadge} />;\r\n};\r\n\r\n/**\r\n * @param {object} props\r\n * @param {string} [props.username] - The athlete's username. Required if props.isAnonymous = false\r\n * @param {AthleteHeadshotSize} [props.size] - The size of the headshot\r\n * @param {boolean} [props.isAnonymous] - Whether the headshot should be anonymous or show the actual athlete\r\n * @param {boolean} [props.lazy] - Whether to lazy load the image of the headshot\r\n * @param {boolean} [props.liveUpdate] - Whether to listen for updates to the image and auto load\r\n * @param {boolean} [props.showPremiumBadge] - Whether to show the premium badge for the athlete\r\n * @param {string} [props.imgAlt]\r\n * @returns {import('react').JSX.Element}\r\n */\r\nconst AthleteHeadshot = ({\r\n username,\r\n size,\r\n isAnonymous = false,\r\n lazy = false,\r\n liveUpdate = false,\r\n showPremiumBadge = false,\r\n imgAlt\r\n}) => {\r\n const { imgSrc, avatarSize } = useAthleteHeadshot({ username, size, isAnonymous, liveUpdate });\r\n return (\r\n <HeadshotUI\r\n imgSrc={imgSrc}\r\n avatarSize={avatarSize}\r\n lazy={lazy}\r\n showPremiumBadge={showPremiumBadge}\r\n avatarAlt={imgAlt}\r\n />\r\n );\r\n};\r\n\r\nexport default AthleteHeadshot;\r\n","import { useEffect, useState } from 'react';\r\n\r\nimport imageSrcManager from '@appCore/services/imageSrcManager';\r\nimport { IS_DEV_MODE } from '@appCore/constants/environment';\r\nimport { generateDeprecationNotice } from '@appCore/utility/consoleUtils';\r\n\r\n/**\r\n * @typedef {'small' | 'base' | 'large' } AthleteHeadshotSize\r\n */\r\n\r\nconst ATHLETE_HEADSHOT_SIZES = {\r\n small: 'small',\r\n base: 'base',\r\n large: 'large'\r\n};\r\n\r\nconst LEGACY_ATHLETE_HEADSHOT_SIZES = {\r\n Small: 'Small',\r\n Base: 'Base',\r\n Large: 'Large'\r\n};\r\n\r\nconst LEGACY_SIZE_TO_SIZE_MAP = {\r\n [LEGACY_ATHLETE_HEADSHOT_SIZES.Small]: ATHLETE_HEADSHOT_SIZES.small,\r\n [LEGACY_ATHLETE_HEADSHOT_SIZES.Base]: ATHLETE_HEADSHOT_SIZES.base,\r\n [LEGACY_ATHLETE_HEADSHOT_SIZES.Large]: ATHLETE_HEADSHOT_SIZES.large\r\n};\r\n\r\nconst ATHLETE_HEADSHOT_SIZES_TO_HEADSHOT_SRC_COMPONENT_SIZE_MAP = {\r\n [ATHLETE_HEADSHOT_SIZES.small]: 32,\r\n [ATHLETE_HEADSHOT_SIZES.base]: 40,\r\n [ATHLETE_HEADSHOT_SIZES.large]: 60\r\n};\r\n\r\nconst ATHLETE_HEADSHOT_SIZES_TO_AVATAR_SIZE_MAP = {\r\n [ATHLETE_HEADSHOT_SIZES.small]: 'small',\r\n [ATHLETE_HEADSHOT_SIZES.large]: 'large'\r\n};\r\n\r\nexport const useLegacyAthleteHeadshot = props => {\r\n if (IS_DEV_MODE) {\r\n generateDeprecationNotice({\r\n message: `useLegacyAthleteHeadshot has been deprecated. Please use useAthleteHeadshot instead`\r\n });\r\n }\r\n\r\n const { username, isAnonymous = false, size = LEGACY_ATHLETE_HEADSHOT_SIZES.Base, liveUpdate = false } = props;\r\n\r\n return useAthleteHeadshot({\r\n username,\r\n isAnonymous,\r\n size: LEGACY_SIZE_TO_SIZE_MAP[size],\r\n liveUpdate\r\n });\r\n};\r\n\r\nconst useAthleteHeadshot = ({ username, isAnonymous, size = ATHLETE_HEADSHOT_SIZES.base, liveUpdate = false }) => {\r\n const componentSize = ATHLETE_HEADSHOT_SIZES_TO_HEADSHOT_SRC_COMPONENT_SIZE_MAP[size];\r\n const avatarSize = ATHLETE_HEADSHOT_SIZES_TO_AVATAR_SIZE_MAP[size];\r\n\r\n const [imgSrc, setImgSrc] = useState(\r\n imageSrcManager.getAthleteHeadshotSrc({ username, componentSize, isAnonymous })\r\n );\r\n\r\n useEffect(() => {\r\n if (!liveUpdate) return;\r\n\r\n const onUpdated = () => {\r\n setImgSrc(imageSrcManager.getAthleteHeadshotSrc({ username, componentSize, isAnonymous }));\r\n };\r\n // Unsubscribe from the athleteHeadshotCache on dismount\r\n return imageSrcManager.subscribeToAthleteHeadshotCache(onUpdated);\r\n }, [liveUpdate]);\r\n\r\n return { imgSrc, avatarSize };\r\n};\r\n\r\nexport default useAthleteHeadshot;\r\n","import PropTypes from 'prop-types';\r\n\r\nconst PrimeBadgeIcon = ({ size = 'base' }) => {\r\n const uniqueGradientId = `gradient_${Math.round(Math.random() * 100000)}`;\r\n return (\r\n <>\r\n {size === 'small' && (\r\n <svg width=\"32\" height=\"10\" viewBox=\"0 0 32 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"10\" rx=\"2\" fill={`url(#${uniqueGradientId})`} />\r\n <path\r\n d=\"M7.80762 5.88916V5.19775H8.8916C9.14551 5.19775 9.34277 5.1333 9.4834 5.00439C9.62598 4.87354 9.69727 4.68799 9.69727 4.44775V4.44189C9.69727 4.20166 9.62598 4.01709 9.4834 3.88818C9.34277 3.75928 9.14551 3.69482 8.8916 3.69482H7.80762V2.99463H9.1084C9.40527 2.99463 9.66504 3.05518 9.8877 3.17627C10.1104 3.29541 10.2832 3.46338 10.4062 3.68018C10.5312 3.89697 10.5938 4.1499 10.5938 4.43896V4.44482C10.5938 4.73584 10.5312 4.98975 10.4062 5.20654C10.2832 5.42334 10.1104 5.59131 9.8877 5.71045C9.66504 5.82959 9.40527 5.88916 9.1084 5.88916H7.80762ZM7.36523 7.22217V2.99463H8.25V7.22217H7.36523ZM11.4082 7.22217V2.99463H13.1689C13.4893 2.99463 13.7617 3.04932 13.9863 3.15869C14.2129 3.26611 14.3848 3.42041 14.502 3.62158C14.6211 3.82275 14.6807 4.06201 14.6807 4.33936V4.34521C14.6807 4.6167 14.6133 4.86084 14.4785 5.07764C14.3457 5.29248 14.1582 5.44775 13.916 5.54346L14.8066 7.22217H13.8047L13.0166 5.67529C13.0107 5.67529 13.0039 5.67529 12.9961 5.67529C12.9883 5.67529 12.9814 5.67529 12.9756 5.67529H12.293V7.22217H11.4082ZM12.293 5.03076H13.0723C13.293 5.03076 13.4648 4.97217 13.5879 4.85498C13.7129 4.73584 13.7754 4.57178 13.7754 4.36279V4.35693C13.7754 4.15186 13.7119 3.98877 13.585 3.86768C13.458 3.74658 13.2832 3.68604 13.0605 3.68604H12.293V5.03076ZM15.5742 7.22217V2.99463H16.459V7.22217H15.5742ZM17.4844 7.22217V2.99463H18.498L19.667 6.08838H19.7197L20.8857 2.99463H21.8994V7.22217H21.1113V4.34521H20.6748L21.5186 3.11182L19.9688 7.22217H19.415L17.8682 3.11182L18.709 4.34521H18.2725V7.22217H17.4844ZM22.9277 7.22217V2.99463H25.7285V3.72412H23.8125V4.74365H25.6201V5.42334H23.8125V6.49268H25.7285V7.22217H22.9277Z\"\r\n fill=\"white\"\r\n />\r\n <defs>\r\n <linearGradient\r\n id={uniqueGradientId}\r\n x1=\"16\"\r\n y1=\"0\"\r\n x2=\"16\"\r\n y2=\"10\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n >\r\n <stop stopColor=\"#DAC785\" />\r\n <stop offset=\"1\" stopColor=\"#B39A4C\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n )}\r\n {size === 'base' && (\r\n <svg width=\"40\" height=\"12\" viewBox=\"0 0 40 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"40\" height=\"12\" rx=\"4\" fill={`url(#${uniqueGradientId})`} />\r\n <path\r\n d=\"M10.3589 6.94482V6.13818H11.6235C11.9198 6.13818 12.1499 6.06299 12.314 5.9126C12.4803 5.75993 12.5635 5.54346 12.5635 5.26318V5.25635C12.5635 4.97607 12.4803 4.76074 12.314 4.61035C12.1499 4.45996 11.9198 4.38477 11.6235 4.38477H10.3589V3.56787H11.8765C12.2228 3.56787 12.5259 3.63851 12.7856 3.77979C13.0454 3.91878 13.2471 4.11475 13.3906 4.36768C13.5365 4.62061 13.6094 4.91569 13.6094 5.25293V5.25977C13.6094 5.59928 13.5365 5.89551 13.3906 6.14844C13.2471 6.40137 13.0454 6.59733 12.7856 6.73633C12.5259 6.87533 12.2228 6.94482 11.8765 6.94482H10.3589ZM9.84277 8.5V3.56787H10.875V8.5H9.84277ZM14.5596 8.5V3.56787H16.6138C16.9875 3.56787 17.3053 3.63167 17.5674 3.75928C17.8317 3.8846 18.0322 4.06462 18.1689 4.29932C18.3079 4.53402 18.3774 4.81315 18.3774 5.13672V5.14355C18.3774 5.46029 18.2988 5.74512 18.1416 5.99805C17.9867 6.2487 17.7679 6.42985 17.4854 6.5415L18.5244 8.5H17.3555L16.436 6.69531C16.4292 6.69531 16.4212 6.69531 16.4121 6.69531C16.403 6.69531 16.395 6.69531 16.3882 6.69531H15.5918V8.5H14.5596ZM15.5918 5.94336H16.501C16.7585 5.94336 16.959 5.875 17.1025 5.73828C17.2484 5.59928 17.3213 5.40788 17.3213 5.16406V5.15723C17.3213 4.91797 17.2472 4.7277 17.0991 4.58643C16.951 4.44515 16.7471 4.37451 16.4873 4.37451H15.5918V5.94336ZM19.4199 8.5V3.56787H20.4521V8.5H19.4199ZM21.6484 8.5V3.56787H22.8311L24.1948 7.17725H24.2563L25.6167 3.56787H26.7993V8.5H25.8799V5.14355H25.3706L26.355 3.70459L24.5469 8.5H23.9009L22.0962 3.70459L23.0771 5.14355H22.5679V8.5H21.6484ZM27.999 8.5V3.56787H31.2666V4.41895H29.0312V5.6084H31.1401V6.40137H29.0312V7.64893H31.2666V8.5H27.999Z\"\r\n fill=\"white\"\r\n />\r\n <defs>\r\n <linearGradient\r\n id={uniqueGradientId}\r\n x1=\"20\"\r\n y1=\"0\"\r\n x2=\"20\"\r\n y2=\"12\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n >\r\n <stop stopColor=\"#DAC785\" />\r\n <stop offset=\"1\" stopColor=\"#B79F50\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n )}\r\n {size === 'large' && (\r\n <svg width=\"60\" height=\"16\" viewBox=\"0 0 60 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"60\" height=\"16\" rx=\"4\" fill={`url(#${uniqueGradientId})`} />\r\n <path\r\n fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M15.0021 7.55306L13.0783 4.19918L16.9497 4.19828L18.8573 7.54466L18.8584 7.54466L18.8578 7.54558L18.8586 7.547L18.857 7.54701L16.9587 10.9009L13.0923 10.917L15.0022 7.55306L15.0021 7.55306Z\"\r\n fill=\"#C3AA59\"\r\n />\r\n <path\r\n fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M13.0783 4.19918L15.0021 7.55306L18.8586 7.547L16.9497 4.19828L13.0783 4.19918Z\"\r\n fill=\"#DAC785\"\r\n />\r\n <path\r\n d=\"M16.8169 3.93677H12.9023L14.8596 7.4599L12.9023 10.7873H17.0127L18.97 7.4599L16.8169 3.93677Z\"\r\n stroke=\"white\"\r\n />\r\n <path\r\n d=\"M25.0996 8.89282V7.97095H26.5449C26.8835 7.97095 27.1465 7.88501 27.334 7.71313C27.5241 7.53866 27.6191 7.29126 27.6191 6.97095V6.96313C27.6191 6.64282 27.5241 6.39673 27.334 6.22485C27.1465 6.05298 26.8835 5.96704 26.5449 5.96704H25.0996V5.03345H26.834C27.2298 5.03345 27.5762 5.11418 27.873 5.27563C28.1699 5.43449 28.4004 5.65845 28.5645 5.94751C28.7311 6.23657 28.8145 6.57381 28.8145 6.95923V6.96704C28.8145 7.35506 28.7311 7.6936 28.5645 7.98267C28.4004 8.27173 28.1699 8.49569 27.873 8.65454C27.5762 8.8134 27.2298 8.89282 26.834 8.89282H25.0996ZM24.5098 10.6702V5.03345H25.6895V10.6702H24.5098ZM29.9004 10.6702V5.03345H32.248C32.6751 5.03345 33.0384 5.10636 33.3379 5.2522C33.64 5.39543 33.8691 5.60116 34.0254 5.86938C34.1842 6.13761 34.2637 6.45662 34.2637 6.82642V6.83423C34.2637 7.19621 34.1738 7.52173 33.9941 7.81079C33.8171 8.09725 33.5671 8.30428 33.2441 8.43188L34.4316 10.6702H33.0957L32.0449 8.60767C32.0371 8.60767 32.028 8.60767 32.0176 8.60767C32.0072 8.60767 31.998 8.60767 31.9902 8.60767H31.0801V10.6702H29.9004ZM31.0801 7.74829H32.1191C32.4134 7.74829 32.6426 7.67017 32.8066 7.51392C32.9733 7.35506 33.0566 7.13631 33.0566 6.85767V6.84985C33.0566 6.57642 32.972 6.35897 32.8027 6.19751C32.6335 6.03605 32.4004 5.95532 32.1035 5.95532H31.0801V7.74829ZM35.4551 10.6702V5.03345H36.6348V10.6702H35.4551ZM38.002 10.6702V5.03345H39.3535L40.9121 9.15845H40.9824L42.5371 5.03345H43.8887V10.6702H42.8379V6.83423H42.2559L43.3809 5.1897L41.3145 10.6702H40.5762L38.5137 5.1897L39.6348 6.83423H39.0527V10.6702H38.002ZM45.2598 10.6702V5.03345H48.9941V6.0061H46.4395V7.36548H48.8496V8.27173H46.4395V9.69751H48.9941V10.6702H45.2598Z\"\r\n fill=\"white\"\r\n />\r\n <defs>\r\n <linearGradient\r\n id={uniqueGradientId}\r\n x1=\"30\"\r\n y1=\"0\"\r\n x2=\"30\"\r\n y2=\"16\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n >\r\n <stop stopColor=\"#DAC785\" />\r\n <stop offset=\"1\" stopColor=\"#AA944C\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nPrimeBadgeIcon.propTypes = {\r\n size: PropTypes.oneOf(['small', 'base', 'large'])\r\n};\r\n\r\nexport default PrimeBadgeIcon;\r\n","import { ENUM_SPORT, ENUM_ATHLETIC_ASSOCIATION, ENUM_COMMITMENT_LEVEL } from '@appCore/constants/system';\r\nimport lookupEnumLabel from '@appCore/utility/lookupEnumLabel';\r\n\r\nfunction isString(value) {\r\n return typeof value === 'string' || value instanceof String;\r\n}\r\n\r\nfunction isNumber(value) {\r\n return typeof value === 'number' && isFinite(value);\r\n}\r\n\r\nfunction isUndefined(value) {\r\n return typeof value === 'undefined';\r\n}\r\n\r\nconst enumHelper = {\r\n toSportEnum: function (value) {\r\n let sport = null;\r\n if (isNumber(value)) {\r\n sport = ENUM_SPORT.filter(function (item) {\r\n return item.Value === value;\r\n })[0];\r\n }\r\n if (isString(value)) {\r\n sport = ENUM_SPORT.filter(function (item) {\r\n return item.EnumName.toLowerCase() === value.toLowerCase();\r\n })[0];\r\n }\r\n if (isUndefined(sport)) {\r\n sport = null;\r\n }\r\n\r\n return sport;\r\n },\r\n toAthleticAssociationEnum: function (value) {\r\n let athleticAssociation = null;\r\n if (isNumber(value)) {\r\n athleticAssociation = ENUM_ATHLETIC_ASSOCIATION.filter(function (item) {\r\n return item.Value === value;\r\n })[0];\r\n }\r\n if (isString(value)) {\r\n athleticAssociation = ENUM_ATHLETIC_ASSOCIATION.filter(function (item) {\r\n return item.EnumName.toLowerCase() === value.toLowerCase();\r\n })[0];\r\n }\r\n if (isUndefined(athleticAssociation)) {\r\n athleticAssociation = null;\r\n }\r\n\r\n return athleticAssociation;\r\n },\r\n toCommitmentLevelEnum: function (value) {\r\n let commitmentLevel = null;\r\n if (isNumber(value)) {\r\n commitmentLevel = ENUM_COMMITMENT_LEVEL.filter(function (item) {\r\n return item.Value === value;\r\n })[0];\r\n }\r\n if (isString(value)) {\r\n commitmentLevel = ENUM_COMMITMENT_LEVEL.filter(function (item) {\r\n return item.EnumName.toLowerCase() === value.toLowerCase();\r\n })[0];\r\n }\r\n if (isUndefined(commitmentLevel)) {\r\n commitmentLevel = null;\r\n }\r\n\r\n return commitmentLevel;\r\n },\r\n enumIntToName: function (intVal, enumStructure) {\r\n if (Number.isInteger(+intVal)) {\r\n for (let i in enumStructure) {\r\n if (\r\n enumStructure.hasOwnProperty(i) &&\r\n enumStructure[i].hasOwnProperty('Value') &&\r\n enumStructure[i].Value === intVal\r\n ) {\r\n return enumStructure[i].EnumName;\r\n }\r\n }\r\n }\r\n\r\n return intVal;\r\n },\r\n toEnumViewModel: function (enumValue) {\r\n return {\r\n Label: enumValue.Label,\r\n Value: enumValue.EnumName,\r\n Id: enumValue.Value\r\n };\r\n },\r\n toEnumLabel: function (enumValue, enumType) {\r\n return lookupEnumLabel(enumValue, enumType);\r\n }\r\n};\r\n\r\nexport default enumHelper;\r\n","import {\r\n ENUM_ATHLETIC_ASSOCIATION,\r\n ENUM_SPORT,\r\n ENUM_SCHOOL_TYPE,\r\n ENUM_ATHLETE_PROFILE_ACTIVITY_TYPE,\r\n ENUM_ATHLETE_PLAN,\r\n ENUM_COMMITMENT_LEVEL,\r\n ENUM_INSTITUTION_OF_INTEREST_STATUS\r\n} from '@appCore/constants/system';\r\n\r\n/*\r\n This utility method was originally written as a \"filter\" for Angular.js 1+. Its usage has spread\r\n beyond the original use-case so it's being maintained as a utility method moving forward.\r\n */\r\n\r\nconst lookupEnumLabel = (() => {\r\n let enums = {\r\n CompetitionLevelEnum: {\r\n 0: 'None',\r\n 1: 'Pro',\r\n 2: 'DI',\r\n 4: 'DII',\r\n 8: 'DIII',\r\n 16: 'NAIA',\r\n 32: 'JC',\r\n 64: 'HS',\r\n 128: 'Club',\r\n 256: 'MCLA'\r\n },\r\n CompetitionLevelEnumLong: {\r\n 0: 'None',\r\n 1: 'Professional',\r\n 2: 'NCAA DI',\r\n 4: 'NCAA DII',\r\n 8: 'NCAA DIII',\r\n 16: 'NAIA',\r\n 32: 'Junior College',\r\n 64: 'High School',\r\n 128: 'Club/Travel',\r\n 256: 'MCLA'\r\n },\r\n AthleticAssociationEnum: {},\r\n SportEnum: {},\r\n SportEnumNoGender: {},\r\n FamilyMemberRelationshipTypeEnum: {\r\n 0: 'Mother',\r\n 1: 'Father',\r\n 2: 'Grandmother',\r\n 3: 'Grandfather',\r\n 4: 'Legal Guardian',\r\n 5: 'Step Mother',\r\n 6: 'Step Father',\r\n 7: 'Uncle',\r\n 8: 'Aunt'\r\n },\r\n SchoolType: {},\r\n AthleteProfileActivityTypeEnum: {},\r\n AthletePlanEnum: {},\r\n CommitmentLevelEnum: {},\r\n MatchStrengthEnum: {\r\n '-1': 'None',\r\n 0: 'Low',\r\n 1: 'Medium',\r\n 2: 'High',\r\n 3: 'Excellent'\r\n },\r\n InstitutionOfInterestStatusEnum: {}\r\n };\r\n\r\n for (let i in ENUM_INSTITUTION_OF_INTEREST_STATUS) {\r\n if (ENUM_INSTITUTION_OF_INTEREST_STATUS.hasOwnProperty(i)) {\r\n enums.InstitutionOfInterestStatusEnum[ENUM_INSTITUTION_OF_INTEREST_STATUS[i].Value] =\r\n ENUM_INSTITUTION_OF_INTEREST_STATUS[i].Label;\r\n }\r\n }\r\n\r\n for (let i in ENUM_ATHLETIC_ASSOCIATION) {\r\n if (ENUM_ATHLETIC_ASSOCIATION.hasOwnProperty(i)) {\r\n enums.AthleticAssociationEnum[ENUM_ATHLETIC_ASSOCIATION[i].Value] = ENUM_ATHLETIC_ASSOCIATION[i].Label;\r\n }\r\n }\r\n\r\n for (let i in ENUM_SPORT) {\r\n if (ENUM_SPORT.hasOwnProperty(i)) {\r\n //ensure we are not looking at a prototype property\r\n enums.SportEnum[ENUM_SPORT[i].Value] = ENUM_SPORT[i].Label;\r\n enums.SportEnumNoGender[ENUM_SPORT[i].Value] = ENUM_SPORT[i].Label.replace(\"Men's\", '').replace(\r\n \"Women's\",\r\n ''\r\n );\r\n }\r\n }\r\n\r\n for (let i in ENUM_SCHOOL_TYPE) {\r\n if (ENUM_SCHOOL_TYPE.hasOwnProperty(i)) {\r\n enums.SchoolType[ENUM_SCHOOL_TYPE[i].Value] = ENUM_SCHOOL_TYPE[i].Label;\r\n }\r\n }\r\n\r\n for (let i in ENUM_ATHLETE_PROFILE_ACTIVITY_TYPE) {\r\n if (ENUM_ATHLETE_PROFILE_ACTIVITY_TYPE.hasOwnProperty(i)) {\r\n enums.AthleteProfileActivityTypeEnum[ENUM_ATHLETE_PROFILE_ACTIVITY_TYPE[i].Value] =\r\n ENUM_ATHLETE_PROFILE_ACTIVITY_TYPE[i].Label;\r\n }\r\n }\r\n\r\n for (let i in ENUM_ATHLETE_PLAN) {\r\n if (ENUM_ATHLETE_PLAN.hasOwnProperty(i)) {\r\n enums.AthletePlanEnum[ENUM_ATHLETE_PLAN[i].Value] = ENUM_ATHLETE_PLAN[i].Label;\r\n }\r\n }\r\n\r\n for (let i in ENUM_COMMITMENT_LEVEL) {\r\n if (ENUM_COMMITMENT_LEVEL.hasOwnProperty(i)) {\r\n enums.CommitmentLevelEnum[ENUM_COMMITMENT_LEVEL[i].Value] = ENUM_COMMITMENT_LEVEL[i].Label;\r\n }\r\n }\r\n\r\n for (let i in ENUM_INSTITUTION_OF_INTEREST_STATUS) {\r\n if (ENUM_INSTITUTION_OF_INTEREST_STATUS.hasOwnProperty(i)) {\r\n enums.InstitutionOfInterestStatusEnum[ENUM_INSTITUTION_OF_INTEREST_STATUS[i].Value] =\r\n ENUM_INSTITUTION_OF_INTEREST_STATUS[i].Label;\r\n }\r\n }\r\n\r\n return function (val, theEnumType, notFoundLabel) {\r\n if (val !== undefined) {\r\n return enums[theEnumType] && enums[theEnumType][val] ? enums[theEnumType][val] : notFoundLabel;\r\n }\r\n return null;\r\n };\r\n})();\r\n\r\nexport default lookupEnumLabel;\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { fromNowVerbose } from '@appCore/utility/dateUtils';\r\nimport useWindowResize from '@appCore/hooks/useWindowResize';\r\nimport { isMediumAndUp, isSmallAndUp } from '@appCore/utility/viewport';\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport { List, TwoColumnListItem } from '@appCore/components/SearchFilters/layouts/ListWithFilters/ListWithFilters';\r\nimport AthleteDetailsDisplay from '@appCore/components/athlete/AthleteDetailsDisplay';\r\nimport TeamDetailsDisplay from '@appCore/components/TeamDetailsDisplay';\r\n\r\nexport const CommitmentsListItem = props => {\r\n const screenWidth = useWindowResize()[0];\r\n const isScreenMediumAndUp = isMediumAndUp({ screenWidth });\r\n\r\n const {\r\n commitmentItem,\r\n shouldLazyLoadLogos,\r\n commitmentsDetailLinkProps,\r\n athleteProfileLinkProps,\r\n teamProfileLinkProps\r\n } = props;\r\n\r\n return (\r\n <TwoColumnListItem\r\n col1Content={\r\n <AthleteDetailsDisplay\r\n athlete={commitmentItem.Athlete}\r\n headshotOptions={{ lazy: shouldLazyLoadLogos, size: 'large' }}\r\n athleteProfileLinkProps={athleteProfileLinkProps}\r\n />\r\n }\r\n col2Content={\r\n <div className=\"space-y-6 items-center\">\r\n <div>\r\n <TeamDetailsDisplay\r\n team={commitmentItem.Commitment.CommittedToTeam}\r\n options={{\r\n mode: isScreenMediumAndUp ? 'details' : 'short',\r\n lazyLoadLogo: shouldLazyLoadLogos,\r\n teamProfileLinkProps\r\n }}\r\n />\r\n </div>\r\n <div className=\"text-body-sm\">\r\n <WiredLink {...commitmentsDetailLinkProps}>\r\n {commitmentItem.Commitment.CommitmentLevel} {fromNowVerbose(commitmentItem.DateUtc)}\r\n </WiredLink>\r\n </div>\r\n </div>\r\n }\r\n />\r\n );\r\n};\r\n\r\nCommitmentsListItem.propTypes = {\r\n commitmentItem: PropTypes.shape({\r\n Athlete: PropTypes.object.isRequired,\r\n SportEnum: PropTypes.shape({\r\n Value: PropTypes.string.isRequired\r\n }),\r\n Commitment: PropTypes.shape({\r\n CommittedToTeam: PropTypes.object.isRequired,\r\n CommitmentLevel: PropTypes.string.isRequired\r\n }).isRequired,\r\n DateUtc: PropTypes.string.isRequired\r\n }),\r\n shouldLazyLoadLogos: PropTypes.bool,\r\n commitmentsDetailLinkProps: PropTypes.exact(WiredLink.propTypes).isRequired,\r\n athleteProfileLinkProps: PropTypes.exact(WiredLink.propTypes).isRequired,\r\n teamProfileLinkProps: PropTypes.exact(WiredLink.propTypes)\r\n};\r\n\r\nconst CommitmentsListDisplay = props => {\r\n const { commitments, renderCommitmentsListItem, emptyStateRendering } = props;\r\n\r\n const [isScreenSmallAndUpAtStart] = useState(isSmallAndUp);\r\n\r\n return (\r\n <List>\r\n {!commitments.length\r\n ? emptyStateRendering\r\n : commitments.map((commitmentItem, idx) => (\r\n <React.Fragment key={commitmentItem.Commitment.CommitmentHistoryId}>\r\n {renderCommitmentsListItem({\r\n commitmentItem,\r\n shouldLazyLoadLogos: isScreenSmallAndUpAtStart ? idx > 9 : idx > 4\r\n })}\r\n </React.Fragment>\r\n ))}\r\n </List>\r\n );\r\n};\r\n\r\nCommitmentsListDisplay.propTypes = {\r\n commitments: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Commitment: PropTypes.shape({\r\n CommitmentHistoryId: PropTypes.number.isRequired\r\n }).isRequired\r\n })\r\n ).isRequired,\r\n renderCommitmentsListItem: PropTypes.func.isRequired,\r\n emptyStateRendering: PropTypes.node.isRequired\r\n};\r\n\r\nexport default CommitmentsListDisplay;\r\n","import http from '@appCore/services/http';\r\n\r\nconst altBaseUrl = '/api/commitment';\r\n\r\nconst baseUrl = '/api/commitmentapi';\r\n\r\nexport const GetCommitment = ({ commitmentId }) => http.get(`${altBaseUrl}/get/${commitmentId}`);\r\n\r\nexport const GetCommitments = ({\r\n athleteState,\r\n athleticAssociation,\r\n conference,\r\n page,\r\n query,\r\n sportEnum,\r\n teamState,\r\n year\r\n}) =>\r\n http.get(`${baseUrl}/commitments`, {\r\n athleteState,\r\n athleticAssociation,\r\n conference,\r\n page,\r\n query,\r\n sport: sportEnum,\r\n teamState,\r\n year\r\n });\r\n\r\nexport const GetCommitmentsFilterOptions = ({ sportEnum }) => http.get(`${baseUrl}/filteroptions`, { sportEnum });\r\n","import { useQuery } from '@tanstack/react-query';\r\n\r\nimport { GetCommitmentsFilterOptions } from '@appPublic/shared/api/commitmentApi';\r\nimport { PATH_PATTERNS } from '@appPublic/routes/commitments/shared/constants';\r\n\r\nconst useFetchCommitmentsFilterOptions = ({ params: { sportEnum }, options } = {}) =>\r\n useQuery(\r\n [`${PATH_PATTERNS.commitmentsList}_fetchCommitmentsFilterOptions`, { sportEnum: `${sportEnum}` }],\r\n () => GetCommitmentsFilterOptions({ sportEnum }),\r\n options\r\n );\r\n\r\nexport default useFetchCommitmentsFilterOptions;\r\n","import { useQuery } from '@tanstack/react-query';\r\n\r\nimport EnumHelper from '@appCore/services/enumHelper';\r\n\r\nimport { GetCommitments } from '@appPublic/shared/api/commitmentApi';\r\nimport { PATH_PATTERNS } from '@appPublic/routes/commitments/shared/constants';\r\n\r\nconst useFetchCommitments = ({\r\n params: { athleteState, athleticAssociation, conference, page, query, sportEnum, teamState, year } = {},\r\n options\r\n} = {}) =>\r\n useQuery(\r\n [\r\n `${PATH_PATTERNS.commitmentsList}_fetchCommitments`,\r\n {\r\n athleteState: `${athleteState}`,\r\n athleticAssociation: `${athleticAssociation}`,\r\n conference: `${conference}`,\r\n page: `${page}`,\r\n query: `${query}`,\r\n sportEnum: `${sportEnum}`,\r\n teamState: `${teamState}`,\r\n year: `${year}`\r\n }\r\n ],\r\n async () => {\r\n const resp = await GetCommitments({\r\n athleteState,\r\n athleticAssociation,\r\n conference,\r\n page,\r\n query,\r\n sportEnum,\r\n teamState,\r\n year\r\n });\r\n\r\n return {\r\n ...resp.Page,\r\n TotalCommits: resp.TotalCommits,\r\n Results: resp.Page.Results.map(item => {\r\n let city,\r\n state = '';\r\n\r\n if (item.CityState && item.CityState.indexOf(',') !== -1) {\r\n [city, state] = item.CityState.split(',');\r\n }\r\n\r\n const sport = EnumHelper.toSportEnum(item.SportId);\r\n const commitmentLevel = EnumHelper.toCommitmentLevelEnum(item.CommitmentLevel);\r\n\r\n return {\r\n DateUtc: item.DateRecordedUtc,\r\n Athlete: {\r\n DisplayName: item.FirstName + ' ' + item.LastName,\r\n Username: item.Username,\r\n Positions: item.Positions,\r\n HighSchoolGraduationYear: parseInt(item.HighSchoolGraduationYear, 10),\r\n City: city,\r\n State: state\r\n },\r\n SportEnum: {\r\n Id: sport.Value,\r\n Value: sport.EnumName,\r\n Label: sport.Label\r\n },\r\n Commitment: {\r\n CommitmentHistoryId: item.AthleteCommitmentHistoryId,\r\n CommitmentLevel: commitmentLevel.Label.replace('Commit', 'commit'),\r\n CommittedToTeam: {\r\n TeamId: item.TeamId,\r\n OrganizationName: item.CommittedToSchoolName,\r\n ShortName: item.CommittedToShortName,\r\n AthleticAssociationEnum: {\r\n Label: item.CommittedToAthleticAssociationAsString,\r\n Id: item.CommittedToAthleticAssociation\r\n },\r\n SportEnum: {\r\n Id: sport.Value,\r\n Value: sport.EnumName,\r\n Label: sport.Label\r\n },\r\n IsPromoter: item.CommitedToSchoolIsPromoter,\r\n IsVerified: item.IsVerified,\r\n City: item.CommittedToCity,\r\n State: item.CommittedToState\r\n }\r\n }\r\n };\r\n })\r\n };\r\n },\r\n options\r\n );\r\n\r\nexport default useFetchCommitments;\r\n","import useParamTools from '@appCore/components/SearchFilters/useParamTools';\r\n\r\nimport { useCommitmentsUrlBuilder } from '@appPublic/routes/commitments/urlBuilder';\r\n\r\nconst useFilterTools = ({ searchOptions }) => {\r\n const commitmentsUrlBuilder = useCommitmentsUrlBuilder();\r\n\r\n const derivedFilterDef = searchOptions && {\r\n primary: {\r\n label: 'All sports',\r\n selectionType: 'singleSelect',\r\n options: [\r\n { label: 'All sports', value: '' },\r\n ...searchOptions.SportOptions.map(opt => ({ label: opt.Label, value: opt.Value }))\r\n ],\r\n searchParamKey: 'sportEnum',\r\n requestParamKey: 'sportEnum'\r\n },\r\n secondary: [\r\n {\r\n label: 'Year',\r\n selectionType: 'singleSelect',\r\n options: searchOptions.YearOptions.map(opt => ({\r\n label: opt.Label,\r\n value: `${opt.Value}`\r\n })),\r\n searchParamKey: 'year',\r\n requestParamKey: 'year'\r\n },\r\n {\r\n label: 'Athlete State',\r\n selectionType: 'singleSelect',\r\n options: searchOptions.StateOptions.map(opt => ({ label: opt.Label, value: `${opt.Value}` })),\r\n searchParamKey: 'athleteState',\r\n requestParamKey: 'athleteState'\r\n },\r\n {\r\n label: 'Level',\r\n selectionType: 'singleSelect',\r\n options: searchOptions.AthleticAssociationOptions.map(opt => ({\r\n label: opt.Label,\r\n value: `${opt.Value}`\r\n })),\r\n searchParamKey: 'athleticAssociation',\r\n requestParamKey: 'athleticAssociation'\r\n },\r\n {\r\n label: 'Team State',\r\n selectionType: 'singleSelect',\r\n options: searchOptions.StateOptions.map(opt => ({ label: opt.Label, value: `${opt.Value}` })),\r\n searchParamKey: 'teamState',\r\n requestParamKey: 'teamState'\r\n },\r\n {\r\n label: 'Conference',\r\n selectionType: 'singleSelect',\r\n options: searchOptions.ConferenceOptions.map(opt => ({ label: opt.Label, value: opt.Value })),\r\n searchParamKey: 'conference',\r\n requestParamKey: 'conference'\r\n }\r\n ],\r\n text: {\r\n placeholder: 'Search by athlete name',\r\n searchParamKey: 'query',\r\n requestParamKey: 'query'\r\n }\r\n };\r\n\r\n const paramTools = useParamTools({\r\n filterDef: derivedFilterDef\r\n });\r\n\r\n if (!paramTools) {\r\n return {};\r\n }\r\n\r\n const { deriveSearchParamsOnValuesChange, values, requestParams } = paramTools;\r\n\r\n return {\r\n filterProps: {\r\n filterDef: derivedFilterDef,\r\n onChange: ({ key, value }) => {\r\n commitmentsUrlBuilder\r\n .commitmentsList({ searchParams: deriveSearchParamsOnValuesChange({ values: { [key]: value } }) })\r\n .go();\r\n },\r\n onChangeMany: ({ values }) => {\r\n commitmentsUrlBuilder\r\n .commitmentsList({ searchParams: deriveSearchParamsOnValuesChange({ values }) })\r\n .go();\r\n },\r\n values\r\n },\r\n requestParams\r\n };\r\n};\r\n\r\nexport default useFilterTools;\r\n","import CommitmentsListDisplay, {\r\n CommitmentsListItem\r\n} from '@appCore/routes/commitments/components/CommitmentsListDisplay';\r\nimport useURLParams from '@appCore/hooks/routeTools/useURLParams/useURLParams';\r\nimport PageTitle from '@appCore/components/PageTitle';\r\nimport ListWithFilters, {\r\n DefaultTwoColumnListItemLoadingSkeleton,\r\n ListCount,\r\n DefaultListEmptyState,\r\n ListPagingControls\r\n} from '@appCore/components/SearchFilters/layouts/ListWithFilters/ListWithFilters';\r\n\r\nimport ContentWrapper from '@appPublic/shared/components/layouts/ContentWrapper';\r\nimport crossAppUrlBuilder from '@appPublic/shared/services/crossAppUrlBuilder';\r\nimport { useCommitmentsUrlBuilder } from '@appPublic/routes/commitments/urlBuilder';\r\nimport { useProfileUrlBuilder } from '@appPublic/routes/profile/urlBuilder';\r\nimport { ScrollRestorationSignal } from '@appPublic/shared/components/UNSTABLE_ScrollRestoration';\r\nimport { useCanonicalListPage } from '@appPublic/shared/hooks/useCanonical';\r\n\r\nimport useFetchCommitmentsFilterOptions from './useFetchCommitmentsFilterOptions';\r\nimport useFetchCommitments from './useFetchCommitments';\r\nimport useFilterTools from './useFilterTools';\r\n\r\nconst CommitmentsList = props => {\r\n const { search: searchParams } = useURLParams();\r\n\r\n useCanonicalListPage();\r\n\r\n const commitmentsUrlBuilder = useCommitmentsUrlBuilder();\r\n const profileUrlBuilder = useProfileUrlBuilder();\r\n\r\n const { data: searchOptions, isLoading: searchOptionsIsLoading } = useFetchCommitmentsFilterOptions({\r\n params: { sportEnum: searchParams.sportEnum },\r\n options: { useErrorBoundary: true }\r\n });\r\n\r\n const filterTools = useFilterTools({ searchOptions });\r\n\r\n const derivedSearchOptionsIsLoading = !filterTools.filterProps || searchOptionsIsLoading;\r\n\r\n const { data: searchResultsData, isLoading: searchResultsIsLoading } = useFetchCommitments({\r\n params: filterTools.requestParams && {\r\n ...filterTools.requestParams,\r\n conference: filterTools.requestParams.conference?.replaceAll('-', '')\r\n },\r\n options: {\r\n enabled: !!filterTools.requestParams,\r\n useErrorBoundary: true\r\n }\r\n });\r\n\r\n const pageTitle = (() => {\r\n const { filterProps } = filterTools;\r\n if (!filterProps) {\r\n return;\r\n }\r\n if (\r\n ['sportEnum', 'athleteState', 'athleticAssociation', 'conference', 'teamState', 'year'].every(\r\n searchParamKey => !searchParams[searchParamKey]\r\n )\r\n ) {\r\n return `Commitments`;\r\n }\r\n\r\n // First part\r\n const yearString = searchParams.year\r\n ? filterProps.filterDef.secondary\r\n .find(({ searchParamKey }) => searchParamKey === 'year')\r\n .options.find(opt => opt.value === searchParams.year).label\r\n : '';\r\n const athleteStateString = searchParams.athleteState\r\n ? filterProps.filterDef.secondary\r\n .find(({ searchParamKey }) => searchParamKey === 'athleteState')\r\n .options.find(opt => opt.value === searchParams.athleteState).label\r\n : '';\r\n const sportString = searchParams.sportEnum\r\n ? filterProps.filterDef.primary.options.find(opt => opt.value === searchParams.sportEnum).label\r\n : '';\r\n\r\n // Second part\r\n const conferenceString = searchParams.conference\r\n ? filterProps.filterDef.secondary\r\n .find(({ searchParamKey }) => searchParamKey === 'conference')\r\n .options.find(opt => opt.value === searchParams.conference).label\r\n : '';\r\n const levelString = searchParams.athleticAssociation\r\n ? filterProps.filterDef.secondary\r\n .find(({ searchParamKey }) => searchParamKey === 'athleticAssociation')\r\n .options.find(opt => opt.value === searchParams.athleticAssociation).label\r\n : '';\r\n const teamStateString = searchParams.teamState\r\n ? filterProps.filterDef.secondary\r\n .find(({ searchParamKey }) => searchParamKey === 'teamState')\r\n .options.find(opt => opt.value === searchParams.teamState).label\r\n : '';\r\n\r\n const firstPart = `${yearString && yearString + ' '}${\r\n athleteStateString && athleteStateString + ' '\r\n }${sportString && sportString + ' '}Commitments`;\r\n const secondPart = [conferenceString, levelString, teamStateString].some(string => !!string)\r\n ? ` to ${conferenceString && conferenceString + ' '}${\r\n levelString && levelString + ' '\r\n }Programs${teamStateString && ' in ' + teamStateString}`\r\n : '';\r\n\r\n return `${firstPart}${secondPart}`;\r\n })();\r\n\r\n return (\r\n <>\r\n {searchResultsData && <ScrollRestorationSignal />}\r\n <PageTitle title={pageTitle && `${pageTitle} | FieldLevel`} />\r\n <ContentWrapper>\r\n <ListWithFilters\r\n heading=\"Commitments\"\r\n filterPropsIsLoading={derivedSearchOptionsIsLoading}\r\n filterProps={filterTools.filterProps}\r\n listCountRendering={\r\n searchResultsData && (\r\n <ListCount\r\n count={searchResultsData.TotalResultCount}\r\n itemNamePlural=\"Commitments\"\r\n itemNameSingular=\"Commitment\"\r\n />\r\n )\r\n }\r\n listIsLoading={searchResultsIsLoading}\r\n listSkeletonRendering={DefaultTwoColumnListItemLoadingSkeleton}\r\n listRendering={\r\n searchResultsData && (\r\n <CommitmentsListDisplay\r\n commitments={searchResultsData.Results}\r\n emptyStateRendering={\r\n <DefaultListEmptyState\r\n actionLabel=\"Clear all filters\"\r\n actionLinkProps={\r\n commitmentsUrlBuilder.commitmentsList({\r\n searchParams: undefined\r\n }).wiredLinkProps\r\n }\r\n />\r\n }\r\n renderCommitmentsListItem={({ commitmentItem, shouldLazyLoadLogos }) => (\r\n <CommitmentsListItem\r\n commitmentItem={commitmentItem}\r\n shouldLazyLoadLogos={shouldLazyLoadLogos}\r\n commitmentsDetailLinkProps={\r\n commitmentsUrlBuilder.commitmentsDetail({\r\n pathParams: {\r\n username: commitmentItem.Athlete.Username,\r\n sport: commitmentItem.SportEnum.Value.toLowerCase(),\r\n id: commitmentItem.Commitment.CommitmentHistoryId\r\n }\r\n }).wiredLinkProps\r\n }\r\n athleteProfileLinkProps={\r\n profileUrlBuilder.profileDetail({\r\n pathParams: {\r\n id: commitmentItem.Athlete.Username,\r\n sportEnum: commitmentItem.SportEnum.Value.toLowerCase()\r\n }\r\n }).wiredLinkProps\r\n }\r\n teamProfileLinkProps={\r\n commitmentItem.Commitment.CommittedToTeam.ShortName &&\r\n commitmentItem.Commitment.CommittedToTeam.SportEnum.Value &&\r\n commitmentItem.Commitment.CommittedToTeam.IsVerified\r\n ? crossAppUrlBuilder.publicTeamPageRecruitment({\r\n pathParams: {\r\n teamShortName:\r\n commitmentItem.Commitment.CommittedToTeam.ShortName,\r\n teamSportEnum:\r\n commitmentItem.Commitment.CommittedToTeam.SportEnum.Value.toLowerCase()\r\n }\r\n }).wiredLinkProps\r\n : undefined\r\n }\r\n />\r\n )}\r\n />\r\n )\r\n }\r\n pagingControlsRendering={\r\n searchResultsData && (\r\n <ListPagingControls\r\n buildLinkProps={({ page }) => {\r\n return commitmentsUrlBuilder.commitmentsList({\r\n searchParams: { ...searchParams, page }\r\n }).wiredLinkProps;\r\n }}\r\n currentPage={searchResultsData.Page}\r\n totalPages={searchResultsData.TotalPageCount}\r\n />\r\n )\r\n }\r\n />\r\n </ContentWrapper>\r\n </>\r\n );\r\n};\r\n\r\nexport default CommitmentsList;\r\n","import useUrlBuilder from '@appCore/hooks/routeTools/useUrlBuilder';\r\n\r\nimport { PATH_PATTERNS } from './shared/constants';\r\n\r\n/** @typedef {import('@appCore/utility/routingUtils').UrlBuilderService} UrlBuilderService */\r\n/** @typedef {import('@appCore/utility/routingUtils').UrlBuilderOptions} UrlBuilderOptions */\r\n\r\n/**\r\n * @callback profileDetailBuilder\r\n * @param {{ pathParams: { id: string, sportEnum: string }, searchParams?: { tab?: string }, options?: UrlBuilderOptions }} params\r\n * @returns {UrlBuilderService}\r\n */\r\n\r\n/**\r\n * @callback profileVideosDetailBuilder\r\n * @param {{ pathParams: { id: string, sportEnum: string, videoId: string }, searchParams?: { t?: string }, options?: UrlBuilderOptions }} params\r\n * @returns {UrlBuilderService}\r\n */\r\n\r\n/**\r\n * @callback profileVideosListBuilder\r\n * @param {{ pathParams: { id: string, sportEnum: string }, options?: UrlBuilderOptions }} params\r\n * @returns {UrlBuilderService}\r\n */\r\n\r\n/**\r\n * @typedef {object} profileUrlBuilder\r\n * @property {profileDetailBuilder} profileDetail\r\n * @property {profileVideosDetailBuilder} profileVideosDetail\r\n * @property {profileVideosListBuilder} profileVideosList\r\n */\r\n\r\n/** */\r\nconst urlBuilderConfig = {\r\n profileDetail: {\r\n reactRouterPathPattern: PATH_PATTERNS.profileDetail,\r\n searchParamKeys: ['tab']\r\n },\r\n profileVideosDetail: {\r\n reactRouterPathPattern: PATH_PATTERNS.profile_videosDetail,\r\n searchParamKeys: ['t']\r\n },\r\n profileVideosList: {\r\n reactRouterPathPattern: PATH_PATTERNS.profile_videosList\r\n }\r\n};\r\n\r\n/**\r\n * @returns {profileUrlBuilder}\r\n */\r\nexport const useProfileUrlBuilder = () => useUrlBuilder(urlBuilderConfig);\r\n","import { useEffect } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\nconst removeExistingCanonicalTag = () => {\r\n const existing = document.querySelector('head link[rel=\"canonical\"]');\r\n existing?.remove();\r\n};\r\n\r\nconst addCanonicalTag = ({ href = window.location.href } = {}) => {\r\n const link = document.createElement('link');\r\n link.setAttribute('rel', 'canonical');\r\n link.setAttribute('href', href);\r\n document.head.appendChild(link);\r\n return () => link.remove();\r\n};\r\n\r\n/**\r\n * This hook is intended to capture the use-case where a page may have various tracking-related (or otherwise\r\n * content-agnostic) search params in its URL, so we remove them from the canonical tag.\r\n */\r\nexport const useCanonicalNoSearchParams = () =>\r\n useCanonical({\r\n getHref: () => {\r\n const currentURL = new URL(window.location.href);\r\n currentURL.search = '';\r\n return currentURL.href;\r\n }\r\n });\r\n\r\n/**\r\n * This hook is intended to capture the desired canonical tag for \"list\" pages in app-public. It preserves\r\n * the url as-is, with the exception of searchParams.page, which will only be included in the href if it's > 1\r\n */\r\nexport const useCanonicalListPage = () => {\r\n useCanonical({\r\n getHref: () => {\r\n // We want to canonicalize the url as-is, unless the 'page' searchParam is <= 1\r\n const currentURL = new URL(window.location.href);\r\n const pageParam = currentURL.searchParams.get('page');\r\n if (pageParam) {\r\n const parsed = parseInt(pageParam, 10);\r\n if (!Number.isFinite(parsed) || parsed <= 1) {\r\n currentURL.searchParams.delete('page');\r\n }\r\n }\r\n return currentURL.href;\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * This hook may be used to dynamically add a `<link rel=\"canonical\" />` tag to the `<head>` of the document.\r\n * By default, the link's href value will be `window.location.href`, but you may pass a getHref function to\r\n * return any value you choose.\r\n *\r\n * Usage notes:\r\n * - When the hook is mounted, if a canonical link tag already exists in document.head, it will be removed\r\n * - The hook will only ever add one link tag to the document. When unmounted, it will be removed.\r\n * - The hook will invoke getHref() any time the location changes, so you may reliably accommodate changes to the\r\n * url (e.g. when searchParams change with filters, etc.) within your getHref() function.\r\n *\r\n * @param {object} params\r\n * @param {Function} [params.getHref] - This function should return the desired value of the link's href attribute\r\n */\r\nconst useCanonical = ({ getHref = () => window.location.href } = {}) => {\r\n useEffect(() => {\r\n removeExistingCanonicalTag();\r\n return addCanonicalTag({ href: getHref() });\r\n }, [useLocation()]);\r\n};\r\n\r\nexport default useCanonical;\r\n","import {\r\n sameDomainPathReload,\r\n reactRouterGetDerivedPath,\r\n generateURLBuilderFactory,\r\n applyUrlBuilderFactoryToConfig\r\n} from '@appCore/utility/routingUtils';\r\n\r\nconst crossAppRouteService = {\r\n href: ({ reactRouterPathPattern, pathParams, searchParams }) =>\r\n reactRouterGetDerivedPath({ reactRouterPathPattern, pathParams, searchParams }),\r\n go: ({ reactRouterPathPattern, pathParams, searchParams, options }) =>\r\n sameDomainPathReload({\r\n newPath: reactRouterGetDerivedPath({ reactRouterPathPattern, pathParams, searchParams }),\r\n replace: options?.location === 'replace'\r\n })\r\n};\r\n\r\nconst builderFactory = generateURLBuilderFactory(crossAppRouteService, service => ({\r\n url: service.href,\r\n reloadPage: true\r\n}));\r\n\r\nconst makeCrossAppUrlBuilder = config => applyUrlBuilderFactoryToConfig({ config, factory: builderFactory });\r\n\r\nexport default makeCrossAppUrlBuilder;\r\n","import makeCrossAppUrlBuilder from '@appCore/utility/makeCrossAppUrlBuilder';\r\n\r\nconst PATHS = {\r\n publicPrivacyPolicy: '/policies/privacy',\r\n publicSignInPage: '/signin',\r\n publicSignUpPage: `/join`,\r\n publicTeamPage: `/:teamShortName/:teamSportEnum`,\r\n publicTeamPageAlumni: `/:teamShortName/:teamSportEnum/alumni`,\r\n publicTeamPagePlacements: `/:teamShortName/:teamSportEnum/placements`,\r\n publicTeamPageRecruitment: `/:teamShortName/:teamSportEnum/recruitment`,\r\n publicTeamPageRoster: `/:teamShortName/:teamSportEnum/roster`,\r\n publicTermsAndConditions: '/policies/terms'\r\n};\r\n\r\nexport default makeCrossAppUrlBuilder({\r\n publicPrivacyPolicy: {\r\n reactRouterPathPattern: PATHS.publicPrivacyPolicy\r\n },\r\n publicSignInPage: {\r\n reactRouterPathPattern: PATHS.publicSignInPage,\r\n searchParamKeys: ['returnUrl']\r\n },\r\n publicSignUpPage: {\r\n reactRouterPathPattern: PATHS.publicSignUpPage,\r\n searchParamKeys: ['returnUrl', 'signUpAs']\r\n },\r\n publicTeamPage: {\r\n reactRouterPathPattern: PATHS.publicTeamPage,\r\n searchParamKeys: ['teamId']\r\n },\r\n publicTeamPageAlumni: {\r\n reactRouterPathPattern: PATHS.publicTeamPageAlumni,\r\n searchParamKeys: ['teamId']\r\n },\r\n publicTeamPagePlacements: {\r\n reactRouterPathPattern: PATHS.publicTeamPagePlacements,\r\n searchParamKeys: ['teamId']\r\n },\r\n publicTeamPageRecruitment: {\r\n reactRouterPathPattern: PATHS.publicTeamPageRecruitment,\r\n searchParamKeys: ['teamId']\r\n },\r\n publicTeamPageRoster: {\r\n reactRouterPathPattern: PATHS.publicTeamPageRoster,\r\n searchParamKeys: ['teamId']\r\n },\r\n publicTermsAndConditions: {\r\n reactRouterPathPattern: PATHS.publicTermsAndConditions\r\n }\r\n});\r\n"],"names":["DefaultLogo","_ref","useHighSchool","size","organizationName","lazy","sizeLowercase","toLowerCase","useEffect","generateDeprecationNotice","message","concat","srcUrl","DEFAULT_TEAM_LOGO_URL_HS","DEFAULT_TEAM_LOGO_URL_COLLEGE","_jsx","Logo","source","alt","propTypes","PropTypes","Object","keys","small","base","large","props","uniqueGradientId","Math","round","random","_jsxs","width","height","viewBox","fill","xmlns","children","rx","d","fillRule","clipRule","stroke","id","x1","y1","x2","y2","gradientUnits","stopColor","offset","sizes","extraLarge","PremiumBadge","variant","isBaseOrSmall","console","warn","GoldPremiumBadgeNoBackgroundSvg","GoldPremiumBadgeNoChevronSvg","GoldPremiumBadgeSvg","filterDef","searchParams","useURLParams","search","prevSearchParams","useRef","current","pageSearchParamKey","page","searchParamKey","pageRequestParamKey","requestParamKey","values","deriveValues","getSecondaryValue","_ref2","secondaryDef","disabled","selectionType","SELECTION_TYPES","multiSelect","multiSelectValue","Array","isArray","every","val","options","find","opt","value","singleSelect","secondary","reduce","acc","secondaryDefIdx","keyPrefix","deriveSecondaryKey","idx","group","groupAcc","groupItemDef","groupItemDefIdx","primary","defaultValue","text","sort","requestParams","_ref3","newParams","key","getIsEmptyValue","getIsSecondaryKey","getIndexFromSecondaryKey","groupDefKey","UNSTABLE_getGroupIndexFromDependentSelectGroupKey","groupDef","UNSTABLE_getGroupIndexFromCheckboxGroupKey","deriveRequestParams","deriveSearchParamsOnValuesChange","_ref4","_filterDef$secondary","mergedParams","secondaryKey","groupValues","filter","valKey","startsWith","groupValAcc","groupValKey","validSearchParamKeys","i","length","hasOwn","dependencyCondition","groupIdx","forEach","changedParams","from","Set","push","includes","some","ORIENTATION_TYPES","horizontal","vertical","PRESENTATION_MODE_TYPES","details","short","defaultConfig","orientation","showAthleticAssociation","showSportLabel","urlBuilder","generateTeamProfileLinkProps","teamProfileLinkProps","mode","useHighSchoolDefaultLogo","lazyLoadLogo","TeamDetailsDisplay","_config$generateTeamP","team","onClick","config","IS_DEV_MODE","legacyUrlBuilderObj","linkProps","call","TeamProfileLinkWrapper","href","WiredLink","url","target","_Fragment","AthleticAssociationEnum","showSport","SportEnum","Id","logoSize","breakCache","Stack","noWrap","align","Item","className","unstyled","TeamLogo","shortName","ShortName","sportEnum","Value","teamId","TeamId","isPremium","IsPremium","OrganizationName","cx","TeamName","Label","City","State","TeamDetailsProps","isRequired","Sizes","isBlurred","sportName","getSport","ENUM_SPORT","logoSrc","size1x","getSizeInPixels","src1x","imageSrcManager","getTeamLogoSrc","size2x","src2x","sourceSet","PrimeBadgeIcon","DISPLAY_MODES","AthleteProfileLinkWrapper","athleteProfileLinkProps","AthleteDetailsUI","athleteDisplayName","athleteCity","athleteState","headshotRendering","detailsRendering","displayMode","AthleteDetailsDisplay","React","athlete","displayedMetric","headshotOptions","isShort","showMetric","metric","gradYear","HighSchoolGraduationYear","metricDisplay","committed","CommitmentLevelEnum","positions","Positions","gpa","Gpa","toFixed","buildDetails","DisplayName","AthleteHeadshot","username","Username","HeadshotUI","avatarSize","avatarAlt","imgSrc","showPremiumBadge","Avatar","isAnonymous","liveUpdate","imgAlt","useAthleteHeadshot","ATHLETE_HEADSHOT_SIZES","LEGACY_ATHLETE_HEADSHOT_SIZES","Small","Base","Large","ATHLETE_HEADSHOT_SIZES_TO_HEADSHOT_SRC_COMPONENT_SIZE_MAP","ATHLETE_HEADSHOT_SIZES_TO_AVATAR_SIZE_MAP","componentSize","setImgSrc","useState","getAthleteHeadshotSrc","subscribeToAthleteHeadshotCache","onUpdated","isString","String","isNumber","isFinite","isUndefined","enumHelper","toSportEnum","sport","item","EnumName","toAthleticAssociationEnum","athleticAssociation","ENUM_ATHLETIC_ASSOCIATION","toCommitmentLevelEnum","commitmentLevel","ENUM_COMMITMENT_LEVEL","enumIntToName","intVal","enumStructure","Number","isInteger","hasOwnProperty","toEnumViewModel","enumValue","toEnumLabel","enumType","lookupEnumLabel","enums","CompetitionLevelEnum","CompetitionLevelEnumLong","SportEnumNoGender","FamilyMemberRelationshipTypeEnum","SchoolType","AthleteProfileActivityTypeEnum","AthletePlanEnum","MatchStrengthEnum","InstitutionOfInterestStatusEnum","ENUM_INSTITUTION_OF_INTEREST_STATUS","replace","ENUM_SCHOOL_TYPE","ENUM_ATHLETE_PROFILE_ACTIVITY_TYPE","ENUM_ATHLETE_PLAN","theEnumType","notFoundLabel","undefined","CommitmentsListItem","screenWidth","useWindowResize","isScreenMediumAndUp","isMediumAndUp","commitmentItem","shouldLazyLoadLogos","commitmentsDetailLinkProps","TwoColumnListItem","col1Content","Athlete","col2Content","Commitment","CommittedToTeam","CommitmentLevel","fromNowVerbose","DateUtc","CommitmentsListDisplay","commitments","renderCommitmentsListItem","emptyStateRendering","isScreenSmallAndUpAtStart","isSmallAndUp","List","map","CommitmentHistoryId","baseUrl","params","arguments","useQuery","PATH_PATTERNS","commitmentsList","http","get","GetCommitmentsFilterOptions","conference","query","teamState","year","async","resp","GetCommitments","Page","TotalCommits","Results","city","state","CityState","indexOf","split","EnumHelper","SportId","DateRecordedUtc","FirstName","LastName","parseInt","AthleteCommitmentHistoryId","CommittedToSchoolName","CommittedToShortName","CommittedToAthleticAssociationAsString","CommittedToAthleticAssociation","IsPromoter","CommitedToSchoolIsPromoter","IsVerified","CommittedToCity","CommittedToState","searchOptions","commitmentsUrlBuilder","useCommitmentsUrlBuilder","derivedFilterDef","label","SportOptions","YearOptions","StateOptions","AthleticAssociationOptions","ConferenceOptions","placeholder","paramTools","useParamTools","filterProps","onChange","go","onChangeMany","_filterTools$requestP","useCanonicalListPage","profileUrlBuilder","useProfileUrlBuilder","data","isLoading","searchOptionsIsLoading","useFetchCommitmentsFilterOptions","useErrorBoundary","filterTools","useFilterTools","derivedSearchOptionsIsLoading","searchResultsData","searchResultsIsLoading","useFetchCommitments","replaceAll","enabled","pageTitle","yearString","athleteStateString","sportString","conferenceString","levelString","teamStateString","_ref5","firstPart","secondPart","string","ScrollRestorationSignal","PageTitle","title","ContentWrapper","ListWithFilters","heading","filterPropsIsLoading","listCountRendering","ListCount","count","TotalResultCount","itemNamePlural","itemNameSingular","listIsLoading","listSkeletonRendering","DefaultTwoColumnListItemLoadingSkeleton","listRendering","DefaultListEmptyState","actionLabel","actionLinkProps","wiredLinkProps","_ref6","commitmentsDetail","pathParams","profileDetail","crossAppUrlBuilder","publicTeamPageRecruitment","teamShortName","teamSportEnum","pagingControlsRendering","ListPagingControls","buildLinkProps","_ref7","currentPage","totalPages","TotalPageCount","urlBuilderConfig","reactRouterPathPattern","searchParamKeys","profileVideosDetail","profile_videosDetail","profileVideosList","profile_videosList","useUrlBuilder","useCanonicalNoSearchParams","useCanonical","getHref","currentURL","URL","window","location","pageParam","parsed","delete","removeExistingCanonicalTag","existing","document","querySelector","remove","link","createElement","setAttribute","head","appendChild","addCanonicalTag","useLocation","crossAppRouteService","reactRouterGetDerivedPath","sameDomainPathReload","newPath","builderFactory","generateURLBuilderFactory","service","reloadPage","applyUrlBuilderFactoryToConfig","factory","publicPrivacyPolicy","publicSignInPage","publicSignUpPage","publicTeamPage","publicTeamPageAlumni","publicTeamPagePlacements","publicTeamPageRoster","publicTermsAndConditions"],"sourceRoot":""}