{"version":3,"file":"5546.bundle.4ca63e740cffb6aa61b7.js","mappings":"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","sources":["webpack://fieldlevel.app/./app-core/components/DefaultLogo.jsx","webpack://fieldlevel.app/./app-core/components/SearchFilters/layouts/ListWithFilters/ListWithFilters.jsx","webpack://fieldlevel.app/./app-core/components/SearchFilters/layouts/ListWithFilters/ListWithFilters.module.css","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/skeletons/SkeletonFilter.jsx","webpack://fieldlevel.app/./app-core/icons/PrimeBadgeIcon.jsx","webpack://fieldlevel.app/./app-core/propTypes/requiredIf.js","webpack://fieldlevel.app/./app-core/services/enumHelper.js","webpack://fieldlevel.app/./app-core/utility/grammar.js","webpack://fieldlevel.app/./app-core/utility/lookupEnumLabel.js","webpack://fieldlevel.app/./app-core/routes/teams/components/TeamsListDisplay.jsx","webpack://fieldlevel.app/./app-public/shared/api/teamApi.js","webpack://fieldlevel.app/./app-public/routes/teams/TeamsList/useFetchTeamSearchOptions.js","webpack://fieldlevel.app/./app-public/routes/teams/TeamsList/useFetchTeamSearchResults.js","webpack://fieldlevel.app/./app-public/routes/teams/TeamsList/useFilterTools.js","webpack://fieldlevel.app/./app-public/routes/teams/TeamsList/TeamsList.jsx","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","webpack://fieldlevel.app/./app-public/shared/utility/urlGeneration.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","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\n\r\nimport { Button, Select, Title, Icon, Heading } from '@fieldlevel/playbook';\r\n\r\nimport requiredIf from '@appCore/propTypes/requiredIf';\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport PagingControls from '@appCore/components/PagingControls/PagingControls';\r\nimport SkeletonBody from '@appCore/components/skeletons/SkeletonBody';\r\nimport SkeletonFilter from '@appCore/components/skeletons/SkeletonFilter';\r\nimport SearchFilters from '@appCore/components/SearchFilters/SearchFilters';\r\nimport { singularOrPlural } from '@appCore/utility/grammar';\r\n\r\nimport * as styles from './ListWithFilters.module.css';\r\n\r\nconst ActionWrapper = ({ children }) => <div className=\"whitespace-nowrap\">{children}</div>;\r\nconst ButtonActionDisplay = ({ isPrimary, ...restProps }) => (\r\n <Button {...restProps} variant={isPrimary ? 'primary' : undefined} />\r\n);\r\n\r\nexport const LinkAction = ({ label, linkProps, icon, isPrimary }) => (\r\n <ActionWrapper>\r\n <WiredLink {...linkProps}>\r\n <ButtonActionDisplay icon={icon} isPrimary={isPrimary}>\r\n {label}\r\n </ButtonActionDisplay>\r\n </WiredLink>\r\n </ActionWrapper>\r\n);\r\n\r\nLinkAction.propTypes = {\r\n label: PropTypes.node.isRequired,\r\n linkProps: PropTypes.exact(WiredLink.propTypes).isRequired,\r\n isPrimary: PropTypes.bool\r\n};\r\nexport const ButtonAction = ({ label, onClick, icon, isPrimary }) => (\r\n <ActionWrapper>\r\n <ButtonActionDisplay onClick={onClick} icon={icon} isPrimary={isPrimary}>\r\n {label}\r\n </ButtonActionDisplay>\r\n </ActionWrapper>\r\n);\r\n\r\nButtonAction.propTypes = {\r\n label: PropTypes.node.isRequired,\r\n onClick: PropTypes.func.isRequired,\r\n isPrimary: PropTypes.bool\r\n};\r\n\r\nexport const Actions = props => (\r\n <div className=\"flex justify-between gap-4 flex-wrap xs:flex-nowrap\">\r\n {React.Children.map(props.children, (child, idx) =>\r\n React.cloneElement(child, { isPrimary: idx + 1 === React.Children.count(props.children) })\r\n )}\r\n </div>\r\n);\r\n\r\nexport const ListCount = ({ count, itemNameSingular, itemNamePlural, supplementalContentRendering }) => {\r\n return (\r\n <span>\r\n {count.toLocaleString()} {singularOrPlural(count, itemNameSingular, itemNamePlural)}\r\n {supplementalContentRendering && (\r\n <>\r\n . <span className=\"text-body-sm text-muted\">{supplementalContentRendering}</span>{' '}\r\n </>\r\n )}\r\n </span>\r\n );\r\n};\r\n\r\nListCount.propTypes = {\r\n count: PropTypes.number.isRequired,\r\n itemNameSingular: PropTypes.string.isRequired,\r\n itemNamePlural: PropTypes.string.isRequired\r\n};\r\n\r\nexport const ListPagingControls = ({ buildLinkProps, currentPage, totalPages }) => (\r\n <PagingControls buildLinkProps={buildLinkProps} currentPage={currentPage} totalPages={totalPages} />\r\n);\r\n\r\nListPagingControls.propTypes = PagingControls.propTypes;\r\n\r\nexport const ListEmptyState = ({\r\n actionsRendering,\r\n headingText,\r\n descriptionText,\r\n supplementalContentRendering,\r\n iconSrc\r\n}) => (\r\n <div className=\"min-h-[450px] max-w-[560px] mx-auto py-12 p-4 text-center\">\r\n {iconSrc && (\r\n <div className=\"mb-2\">\r\n <Icon source={iconSrc} />\r\n </div>\r\n )}\r\n {headingText && <Title size=\"small\">{headingText}</Title>}\r\n {descriptionText && <p className=\"mt-2 text-body text-muted\">{descriptionText}</p>}\r\n {supplementalContentRendering}\r\n {actionsRendering && (\r\n <div className=\"flex flex-col gap-2 justify-center mt-6 sm:flex-row\">{actionsRendering}</div>\r\n )}\r\n </div>\r\n);\r\n\r\nListEmptyState.propTypes = {\r\n headingText: PropTypes.string.isRequired,\r\n descriptionText: PropTypes.string,\r\n actionsRendering: PropTypes.node,\r\n iconSrc: PropTypes.func\r\n};\r\n\r\nexport const DefaultListEmptyState = ({ actionLabel, actionLinkProps }) => (\r\n <ListEmptyState\r\n headingText=\"No matches found\"\r\n descriptionText=\"Removing filters will generally provide the results you are expecting.\"\r\n actionsRendering={<ListEmptyStateLinkAction label={actionLabel} linkProps={actionLinkProps} />}\r\n />\r\n);\r\n\r\nDefaultListEmptyState.propTypes = {\r\n actionLabel: PropTypes.string.isRequired,\r\n actionLinkProps: PropTypes.exact(WiredLink.propTypes).isRequired\r\n};\r\n\r\nexport const ListEmptyStateButtonAction = ButtonAction;\r\nexport const ListEmptyStateLinkAction = LinkAction;\r\n\r\nexport const IndentedListItem = ({ headerContent, bodyContent }) => (\r\n <div className=\"space-y-6 p-6 border-b border-b-muted last:border-b-0\">\r\n {headerContent}\r\n <div className=\"sm:pl-8\">{bodyContent}</div>\r\n </div>\r\n);\r\n\r\nIndentedListItem.propTypes = {\r\n headerContent: PropTypes.node.isRequired,\r\n bodyContent: PropTypes.node.isRequired\r\n};\r\n\r\nexport const TwoColumnListItem = ({ col1Content, col2Content }) => (\r\n <div className=\"grid grid-cols-4 gap-6 p-6 border-b border-b-muted last:border-b-0\">\r\n <div className=\"col-span-4 sm:col-span-2\">{col1Content}</div>\r\n <div className=\"col-span-4 pl-8 sm:col-span-2 sm:pl-0\">{col2Content}</div>\r\n </div>\r\n);\r\n\r\nTwoColumnListItem.propTypes = {\r\n col1Content: PropTypes.node.isRequired,\r\n col2Content: PropTypes.node.isRequired\r\n};\r\n\r\nexport const List = ({ children }) => <div className=\"bg-foreground-base rounded-b\">{children}</div>;\r\n\r\nList.propTypes = {\r\n children: PropTypes.node\r\n};\r\n\r\nexport const ListWithNoBackgroundAndSpaceBetweenItems = ({ children }) => (\r\n <div className=\"mt-4 rounded-b space-y-4\">{children}</div>\r\n);\r\n\r\nexport const DefaultIndentedListItemLoadingSkeleton = (\r\n <List>\r\n {[0, 1, 2, 3, 4].map(idx => (\r\n <IndentedListItem\r\n key={idx}\r\n headerContent={\r\n <div className=\"w-[175px] h-[55px]\">\r\n <SkeletonBody width=\"full\" height=\"full\" />\r\n </div>\r\n }\r\n bodyContent={\r\n <div className=\"w-full max-w-[435px] h-[125px]\">\r\n <SkeletonBody width=\"full\" height=\"full\" />\r\n </div>\r\n }\r\n />\r\n ))}\r\n </List>\r\n);\r\n\r\nexport const DefaultTwoColumnListItemLoadingSkeleton = (\r\n <List>\r\n {[0, 1, 2, 3, 4].map(idx => (\r\n <TwoColumnListItem\r\n key={idx}\r\n col1Content={\r\n <div className=\"w-[175px] h-[105px]\">\r\n <SkeletonBody width=\"full\" height=\"full\" />\r\n </div>\r\n }\r\n col2Content={\r\n <div className=\"w-full max-w-[475px] h-[85px]\">\r\n <SkeletonBody width=\"full\" height=\"full\" />\r\n </div>\r\n }\r\n />\r\n ))}\r\n </List>\r\n);\r\n\r\n/**\r\n * The intent of the ListWithFilters layout is to provide a uniform presentation of list pages with\r\n * filterable content. It handles some of the presentational logic around loading states, but in general\r\n * is agnostic towards state processing and business logic. Instead, it provides \"outlets\" for various\r\n * pieces of content that may be passed in, which align with the named exports in this file as outlined below.\r\n *\r\n * - actionsRendering --> Actions, LinkAction, ButtonAction - The actions rendering should be composed of <Actions> with nested\r\n * \"Actions\" (either <LinkAction> or <ButtonAction>) as children. The last \"Action\" to be passed in will\r\n * be styled as \"primary\" automatically.\r\n * - navRendering --> TBD\r\n * - listRendering --> List, IndentedListItem, TwoColumnListItem, ListEmptyState - A list rendering should be composed of a <List> with nested\r\n * \"ListItems\" (either <IndentedListItem> or <TwoColumnListItem>) as children. If your list has an empty state (e.g. no results), use <ListEmptyState />\r\n * or <DefaultListEmptyState /> (inside a <List>) to display it.\r\n * - listSkeletonRendering --> List, IndentedListItem, TwoColumnListItem - Default loadingSkeleton exports are provided for each \"ListItem\" type\r\n * but if you want a tighter integration for a given list, you may build a custom implementation and pass it in. It should follow\r\n * the rules for listRendering above.\r\n * - listCountRendering --> ListCount\r\n * - pagingControlsRendering --> ListPagingControls\r\n */\r\nconst ListWithFilters = props => {\r\n const {\r\n heading,\r\n actionsRendering,\r\n navRendering,\r\n filterProps,\r\n filterPropsIsLoading,\r\n listRendering,\r\n listSkeletonRendering,\r\n listIsLoading,\r\n listCountRendering,\r\n pagingControlsRendering,\r\n headingContainerClassName,\r\n portalClassName,\r\n onSecondaryDropdownOpen\r\n } = props;\r\n\r\n return (\r\n <div className=\"pb-12\">\r\n {navRendering ??\r\n (heading && (\r\n <div className={headingContainerClassName}>\r\n <div\r\n className={cx(\r\n 'px-4 mb-4 space-y-4 md:px-0 sm:space-y-0',\r\n actionsRendering && 'sm:flex sm:items-center sm:justify-between'\r\n )}\r\n >\r\n <Heading>{heading}</Heading>\r\n {actionsRendering}\r\n </div>\r\n </div>\r\n ))}\r\n <div className=\"p-4 bg-foreground-base md:rounded-t\">\r\n {filterPropsIsLoading ? (\r\n <div className=\"flex flex-wrap gap-2\">\r\n <div className=\"w-full h-10 sm:w-[260px]\">\r\n <SkeletonBody width=\"full\" height=\"full\" />\r\n </div>\r\n <div className=\"w-[90px]\">\r\n <SkeletonFilter width=\"full\" height=\"full\" iconStyle=\"dropdown\" />\r\n </div>\r\n <div className=\"w-[90px]\">\r\n <SkeletonFilter width=\"full\" height=\"full\" iconStyle=\"dropdown\" />\r\n </div>\r\n </div>\r\n ) : (\r\n <SearchFilters\r\n {...filterProps}\r\n portalClassName={portalClassName}\r\n onSecondaryDropdownOpen={onSecondaryDropdownOpen}\r\n />\r\n )}\r\n </div>\r\n {(listIsLoading || listCountRendering) && (\r\n <div className=\"flex justify-between items-center p-4 bg-background-base\">\r\n {listIsLoading ? (\r\n <div className=\"h-[20px] w-[85px]\">\r\n <SkeletonBody theme=\"light\" width=\"full\" height=\"full\" />\r\n </div>\r\n ) : (\r\n <>\r\n {listCountRendering}\r\n {listCountRendering && filterProps?.filterDef.sort && (\r\n <div className={styles.SortSelectWrapper}>\r\n <Select\r\n disabled={filterProps.filterDef.sort.disabled}\r\n options={filterProps.filterDef.sort.options}\r\n placeholder={{ label: 'Sort by', value: '' }}\r\n name=\"sort\"\r\n onChange={val => filterProps.onChange({ key: 'sort', value: val })}\r\n value={filterProps.values.sort}\r\n />\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n )}\r\n {listIsLoading ? listSkeletonRendering : listRendering}\r\n <div className=\"my-6\">{!listIsLoading && pagingControlsRendering}</div>\r\n </div>\r\n );\r\n};\r\n\r\nListWithFilters.propTypes = {\r\n heading: PropTypes.string,\r\n actionRendering: PropTypes.node,\r\n navRendering: PropTypes.node,\r\n filterProps: requiredIf(\r\n PropTypes.exact(SearchFilters.propTypes),\r\n ({ filterPropsIsLoading }) => !filterPropsIsLoading\r\n ),\r\n filterPropsIsLoading: PropTypes.bool.isRequired,\r\n listCountRendering: PropTypes.node,\r\n listRendering: requiredIf(PropTypes.node, ({ listIsLoading }) => !listIsLoading),\r\n listIsLoading: PropTypes.bool.isRequired,\r\n listSkeletonRendering: PropTypes.node.isRequired,\r\n pagingControlsRendering: PropTypes.node,\r\n headingContainerClassName: PropTypes.string\r\n};\r\n\r\nexport default ListWithFilters;\r\n","// extracted by mini-css-extract-plugin\nvar _1 = \"FL-ListWithFilters__SortSelectWrapper\";\nexport { _1 as \"SortSelectWrapper\" }\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 PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\n\r\nimport { Icon, DownMinor, SelectMinor } from '@fieldlevel/playbook';\r\n\r\nconst widthClasses = {\r\n 1: 'w-1/6',\r\n 2: 'w-2/6',\r\n 3: 'w-3/6',\r\n 4: 'w-4/6',\r\n 5: 'w-5/6',\r\n full: 'w-full'\r\n};\r\n\r\nconst THEMES = {\r\n light: 'light',\r\n dark: 'dark'\r\n};\r\n\r\nconst ICON_STYLES = {\r\n select: 'select',\r\n dropdown: 'dropdown'\r\n};\r\n\r\nconst SkeletonFilter = props => {\r\n const { width = 'full', theme = THEMES.dark, iconStyle = ICON_STYLES.select } = props;\r\n const widthClass = widthClasses[width];\r\n\r\n return (\r\n <div\r\n className={cx(\r\n 'border-2 rounded-md h-9 pr-4 animate-pulse flex items-center justify-end text-muted',\r\n theme === THEMES.dark ? 'bg-foreground-dark' : 'bg-foreground-base',\r\n widthClass\r\n )}\r\n >\r\n <span>\r\n <Icon source={iconStyle === ICON_STYLES.select ? SelectMinor : DownMinor} color=\"current\" />\r\n </span>\r\n </div>\r\n );\r\n};\r\n\r\nSkeletonFilter.propTypes = {\r\n width: PropTypes.oneOf(\r\n Object.keys(widthClasses).map(key => (Number.isFinite(parseInt(key)) ? parseInt(key) : key))\r\n ),\r\n theme: PropTypes.oneOf(Object.values(THEMES)),\r\n iconStyle: PropTypes.oneOf(Object.values(ICON_STYLES))\r\n};\r\n\r\nexport default SkeletonFilter;\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","/**\r\n * This propType allows you to declare props as \"conditionally required\" based on the values of\r\n * other props.\r\n *\r\n * Ex:\r\n *\r\n * MyComponent.propTypes = {\r\n * a: PropTypes.bool.isRequired,\r\n * b: requiredIf(PropTypes.bool, props => props.a === true) // <-- only required if a === true\r\n * }\r\n *\r\n * <MyComponent a={false} /> // <-- Okay!\r\n * <MyComponent a={true} /> // <-- Warning, failed PropType declaration!\r\n *\r\n * @param {object} propDef\r\n * @param {Function} checkingFunc\r\n */\r\nexport default function requiredIf(propDef, checkingFunc) {\r\n return (props, propName, componentName, ...rest) => {\r\n const isRequired = checkingFunc(props);\r\n const propType = isRequired ? propDef.isRequired : propDef;\r\n const propTypeCheck = propType(props, propName, componentName, ...rest);\r\n if (propTypeCheck instanceof Error) {\r\n return propTypeCheck;\r\n }\r\n };\r\n}\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","const MALE = 'male';\r\nconst FEMALE = 'female';\r\n\r\nexport function heOrShe(gender) {\r\n return gender.toLowerCase() === MALE ? 'he' : 'she';\r\n}\r\n\r\nexport function himOrHer(gender) {\r\n return gender.toLowerCase() === MALE ? 'him' : 'her';\r\n}\r\n\r\nexport function hisOrHer(gender) {\r\n return gender.toLowerCase() === MALE ? 'his' : 'her';\r\n}\r\n\r\nexport function sportEnumToGender(sportEnum) {\r\n if (sportEnum.toLowerCase().indexOf('women') !== -1 || sportEnum.toLowerCase() === 'softball') {\r\n return 'Female';\r\n }\r\n\r\n return 'Male';\r\n}\r\n\r\nexport function singularOrPlural(count, singular, plural) {\r\n return count == 1 ? singular : plural;\r\n}\r\n\r\nexport function aOrAn(string) {\r\n if (['a', 'e', 'i', 'o', 'u'].includes(string.charAt(0).toLowerCase())) {\r\n return 'an';\r\n }\r\n return 'a';\r\n}\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 { useState, Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { List, TwoColumnListItem } from '@appCore/components/SearchFilters/layouts/ListWithFilters/ListWithFilters';\r\nimport TeamDetailsDisplay from '@appCore/components/TeamDetailsDisplay';\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport { isSmallAndUp } from '@appCore/utility/viewport';\r\n\r\nexport const TeamsListItem = props => {\r\n const {\r\n teamItem,\r\n teamProfileLinkProps,\r\n teamProfileRosterLinkProps,\r\n teamProfileAlumniLinkProps,\r\n shouldLazyLoadLogos\r\n } = props;\r\n\r\n return (\r\n <TwoColumnListItem\r\n col1Content={\r\n <TeamDetailsDisplay\r\n team={teamItem.Team}\r\n options={{\r\n teamProfileLinkProps,\r\n lazyLoadLogo: shouldLazyLoadLogos\r\n }}\r\n />\r\n }\r\n col2Content={\r\n <div className=\"grid grid-cols-12 gap-4 items-center sm:gap-0\">\r\n <div className=\"col-span-6 sm:col-span-4 text-center text-body-lg\">\r\n <p className=\"font-bold\">\r\n {teamProfileRosterLinkProps ? (\r\n <WiredLink {...teamProfileRosterLinkProps}>{teamItem.RosterCount}</WiredLink>\r\n ) : (\r\n 'n/a'\r\n )}\r\n </p>\r\n <p>Roster</p>\r\n </div>\r\n <div className=\"col-span-6 sm:col-span-4 text-center text-body-lg\">\r\n <WiredLink {...teamProfileAlumniLinkProps}>\r\n <p className=\"font-bold\">{teamItem.AlumniCount}</p>\r\n </WiredLink>\r\n <p>Alumni</p>\r\n </div>\r\n </div>\r\n }\r\n />\r\n );\r\n};\r\n\r\nTeamsListItem.propTypes = {\r\n teamItem: PropTypes.shape({\r\n Team: PropTypes.object.isRequired,\r\n RosterCount: PropTypes.number,\r\n AlumniCount: PropTypes.number.isRequired\r\n }).isRequired,\r\n teamProfileLinkProps: PropTypes.exact(WiredLink.propTypes).isRequired,\r\n teamProfileRosterLinkProps: PropTypes.exact(WiredLink.propTypes),\r\n teamProfileAlumniLinkProps: PropTypes.exact(WiredLink.propTypes).isRequired,\r\n shouldLazyLoadLogos: PropTypes.bool.isRequired\r\n};\r\n\r\nconst TeamsListDisplay = props => {\r\n const { teams, emptyStateRendering, renderTeamsListItem } = props;\r\n\r\n const [isScreenSmallAndUpAtStart] = useState(isSmallAndUp);\r\n\r\n return (\r\n <List>\r\n {!teams.length\r\n ? emptyStateRendering\r\n : teams.map((teamItem, idx) => (\r\n <Fragment key={teamItem.Team.TeamId}>\r\n {renderTeamsListItem({\r\n teamItem,\r\n shouldLazyLoadLogos: isScreenSmallAndUpAtStart ? idx > 9 : idx > 4\r\n })}\r\n </Fragment>\r\n ))}\r\n </List>\r\n );\r\n};\r\n\r\nTeamsListDisplay.propTypes = {\r\n teams: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Team: PropTypes.shape({\r\n TeamId: PropTypes.number.isRequired\r\n }).isRequired\r\n })\r\n ).isRequired,\r\n emptyStateRendering: PropTypes.node.isRequired,\r\n renderTeamsListItem: PropTypes.func.isRequired\r\n};\r\n\r\nexport default TeamsListDisplay;\r\n","import http from '@appCore/services/http';\r\n\r\nconst baseUrl = '/api/teamapi';\r\n\r\nexport const GetTeamSearchOptions = () => {\r\n return http.get(`${baseUrl}/searchOptions`);\r\n};\r\n\r\nexport const GetTeamSearchResults = ({ athleticAssociation, conference, query, sportEnum, state, page }) => {\r\n return http.get(`${baseUrl}/search`, { athleticAssociation, conference, query, sport: sportEnum, state, page });\r\n};\r\n","import { useQuery } from '@tanstack/react-query';\r\n\r\nimport { GetTeamSearchOptions } from '@appPublic/shared/api/teamApi';\r\nimport { PATH_PATTERNS } from '@appPublic/routes/teams/shared/constants';\r\n\r\nconst useFetchTeamSearchOptions = ({ options } = {}) =>\r\n useQuery(\r\n [`${PATH_PATTERNS.teamsList}_fetchTeamSearchOptions`],\r\n async () => {\r\n const resp = await GetTeamSearchOptions();\r\n\r\n return {\r\n ...resp,\r\n StateOptions: [...resp.StateOptions.US, ...resp.StateOptions.CA].map(item => ({\r\n ...item,\r\n Value: item.Value.toLowerCase()\r\n }))\r\n };\r\n },\r\n options\r\n );\r\n\r\nexport default useFetchTeamSearchOptions;\r\n","import { useQuery } from '@tanstack/react-query';\r\n\r\nimport EnumHelper from '@appCore/services/enumHelper';\r\n\r\nimport { GetTeamSearchResults } from '@appPublic/shared/api/teamApi';\r\nimport { PATH_PATTERNS } from '@appPublic/routes/teams/shared/constants';\r\n\r\nconst useFetchTeamSearchResults = ({\r\n params: { athleticAssociation, conference, query, sportEnum, state, page } = {},\r\n options\r\n} = {}) =>\r\n useQuery(\r\n [\r\n `${PATH_PATTERNS.teamsList}_fetchTeamSearchResults`,\r\n {\r\n athleticAssociation: `${athleticAssociation}`,\r\n conference: `${conference}`,\r\n query: `${query}`,\r\n sportEnum: `${sportEnum}`,\r\n state: `${state}`,\r\n page: `${page}`\r\n }\r\n ],\r\n async () => {\r\n const resp = await GetTeamSearchResults({ athleticAssociation, conference, query, sportEnum, state, page });\r\n\r\n resp.Page.Results = resp.Page.Results.map(item => {\r\n const sport = EnumHelper.toSportEnum(item.TeamPlaysSportId);\r\n return {\r\n AlumniCount: item.AlumniCount,\r\n RosterCount: item.RosterCount,\r\n Team: {\r\n TeamId: item.TeamId,\r\n OrganizationName: item.Name,\r\n ShortName: item.ShortName,\r\n TeamsInSportCount: item.TeamsInSportCount,\r\n AthleticAssociationEnum: {\r\n Label: item.AthleticAssociation,\r\n Id: item.AthleticAssociationEnum\r\n },\r\n SportEnum: {\r\n Id: sport.Value,\r\n Value: sport.EnumName,\r\n Label: sport.Label\r\n },\r\n IsFourYear: item.IsFourYear,\r\n IsPromoter: !item.IsRecruiter,\r\n IsVerified: true,\r\n City: item.City,\r\n State: item.State,\r\n TeamName: item.TeamName\r\n }\r\n };\r\n });\r\n return resp;\r\n },\r\n options\r\n );\r\n\r\nexport default useFetchTeamSearchResults;\r\n","import useParamTools from '@appCore/components/SearchFilters/useParamTools';\r\n\r\nimport { useTeamsUrlBuilder } from '@appPublic/routes/teams/urlBuilder';\r\n\r\nconst useFilterTools = ({ searchOptions }) => {\r\n const teamsUrlBuilder = useTeamsUrlBuilder();\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: '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: 'State',\r\n selectionType: 'singleSelect',\r\n options: searchOptions.StateOptions.map(opt => ({ label: opt.Label, value: `${opt.Value}` })),\r\n searchParamKey: 'state',\r\n requestParamKey: 'state'\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 team 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 teamsUrlBuilder\r\n .teamsList({ searchParams: deriveSearchParamsOnValuesChange({ values: { [key]: value } }) })\r\n .go();\r\n },\r\n onChangeMany: ({ values }) => {\r\n teamsUrlBuilder.teamsList({ searchParams: deriveSearchParamsOnValuesChange({ values }) }).go();\r\n },\r\n values\r\n },\r\n requestParams\r\n };\r\n};\r\n\r\nexport default useFilterTools;\r\n","import { useEffect, useState } from 'react';\r\n\r\nimport useURLParams from '@appCore/hooks/routeTools/useURLParams/useURLParams';\r\nimport ListWithFilters, {\r\n ListCount,\r\n DefaultListEmptyState,\r\n ListPagingControls,\r\n DefaultTwoColumnListItemLoadingSkeleton\r\n} from '@appCore/components/SearchFilters/layouts/ListWithFilters/ListWithFilters';\r\nimport TeamsListDisplay, { TeamsListItem } from '@appCore/routes/teams/components/TeamsListDisplay';\r\nimport PageTitle from '@appCore/components/PageTitle';\r\n\r\nimport { useTeamsUrlBuilder } from '@appPublic/routes/teams/urlBuilder';\r\nimport { publicTeamPage } from '@appPublic/shared/utility/urlGeneration';\r\nimport crossAppUrlBuilder from '@appPublic/shared/services/crossAppUrlBuilder';\r\nimport ContentWrapper from '@appPublic/shared/components/layouts/ContentWrapper';\r\nimport { ScrollRestorationSignal } from '@appPublic/shared/components/UNSTABLE_ScrollRestoration';\r\nimport { useCanonicalListPage } from '@appPublic/shared/hooks/useCanonical';\r\nimport { UNSTABLE_useContentHeight } from '@appPublic/shared/components/layouts/Layout';\r\n\r\nimport useFetchTeamSearchOptions from './useFetchTeamSearchOptions';\r\nimport useFetchTeamSearchResults from './useFetchTeamSearchResults';\r\nimport useFilterTools from './useFilterTools';\r\n\r\nconst TeamsList = props => {\r\n const searchParams = useURLParams().search;\r\n const teamsUrlBuilder = useTeamsUrlBuilder();\r\n\r\n useCanonicalListPage();\r\n UNSTABLE_useContentHeight({ className: 'min-h-[3850px] sm:min-h-[2500px]' });\r\n\r\n // Once we've loaded the teams count once, just keep it around\r\n const [teamsCount, setTeamsCount] = useState(null);\r\n\r\n const { data: searchOptionsData, isLoading: searchOptionsIsLoading } = useFetchTeamSearchOptions({\r\n options: {\r\n useErrorBoundary: true\r\n }\r\n });\r\n\r\n const { filterProps, requestParams } = useFilterTools({\r\n searchOptions: searchOptionsData\r\n });\r\n const derivedSearchOptionsIsLoading = !!(searchOptionsIsLoading || !filterProps);\r\n\r\n const { data: searchResultsData, isLoading: searchResultsIsLoading } = useFetchTeamSearchResults({\r\n params: requestParams && { ...requestParams, conference: requestParams.conference?.replaceAll('-', '') },\r\n options: { enabled: !!requestParams, useErrorBoundary: true }\r\n });\r\n\r\n useEffect(() => {\r\n if (!teamsCount && searchResultsData) {\r\n setTeamsCount(searchResultsData.TotalTeams);\r\n }\r\n }, [searchResultsData]);\r\n\r\n const pageTitle = (() => {\r\n if (!filterProps) {\r\n return;\r\n }\r\n if (\r\n ['sportEnum', 'athleticAssociation', 'conference', 'state'].every(\r\n searchParamKey => !searchParams[searchParamKey]\r\n )\r\n ) {\r\n return `Explore Teams`;\r\n }\r\n\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 sportString = searchParams.sportEnum\r\n ? filterProps.filterDef.primary.options.find(opt => opt.value === searchParams.sportEnum).label\r\n : '';\r\n const stateString = searchParams.state\r\n ? filterProps.filterDef.secondary\r\n .find(({ searchParamKey }) => searchParamKey === 'state')\r\n .options.find(opt => opt.value === searchParams.state).label\r\n : '';\r\n\r\n return `${conferenceString && conferenceString + ' '}${levelString && levelString + ' '}${\r\n sportString && sportString + ' '\r\n }Teams${stateString && ' in ' + stateString}`;\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=\"Teams\"\r\n filterPropsIsLoading={derivedSearchOptionsIsLoading}\r\n filterProps={filterProps}\r\n listCountRendering={\r\n searchResultsData && (\r\n <ListCount\r\n count={searchResultsData.Page.TotalResultCount}\r\n itemNameSingular=\"Team\"\r\n itemNamePlural=\"Teams\"\r\n />\r\n )\r\n }\r\n listIsLoading={searchResultsIsLoading}\r\n listSkeletonRendering={DefaultTwoColumnListItemLoadingSkeleton}\r\n listRendering={\r\n searchResultsData && (\r\n <TeamsListDisplay\r\n teams={searchResultsData.Page.Results}\r\n emptyStateRendering={\r\n <DefaultListEmptyState\r\n actionLabel=\"Clear all filters\"\r\n // We only intend for this to clear \"secondary\" filters\r\n actionLinkProps={\r\n teamsUrlBuilder.teamsList({\r\n searchParams: searchParams.sportEnum\r\n ? { sportEnum: searchParams.sportEnum }\r\n : undefined\r\n }).wiredLinkProps\r\n }\r\n />\r\n }\r\n renderTeamsListItem={({ teamItem, shouldLazyLoadLogos }) => (\r\n <TeamsListItem\r\n teamItem={teamItem}\r\n teamProfileLinkProps={publicTeamPage(\r\n {\r\n teamShortName: teamItem.Team.ShortName,\r\n teamSportEnum: teamItem.Team.SportEnum.Value.toLowerCase()\r\n },\r\n !teamItem.Team.IsFourYear\r\n )}\r\n teamProfileRosterLinkProps={\r\n teamItem.Team.IsPromoter\r\n ? crossAppUrlBuilder.publicTeamPageRoster({\r\n pathParams: {\r\n teamShortName: teamItem.Team.ShortName,\r\n teamSportEnum: teamItem.Team.SportEnum.Value.toLowerCase()\r\n },\r\n searchParams:\r\n teamItem.Team.TeamsInSportCount > 1\r\n ? { teamId: teamItem.Team.TeamId }\r\n : {}\r\n }).wiredLinkProps\r\n : undefined\r\n }\r\n teamProfileAlumniLinkProps={\r\n crossAppUrlBuilder.publicTeamPageAlumni({\r\n pathParams: {\r\n teamShortName: teamItem.Team.ShortName,\r\n teamSportEnum: teamItem.Team.SportEnum.Value.toLowerCase()\r\n }\r\n }).wiredLinkProps\r\n }\r\n shouldLazyLoadLogos={shouldLazyLoadLogos}\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 teamsUrlBuilder.teamsList({\r\n searchParams: { ...searchParams, page }\r\n }).wiredLinkProps;\r\n }}\r\n currentPage={searchResultsData.Page.Page}\r\n totalPages={searchResultsData.Page.TotalPageCount}\r\n />\r\n )\r\n }\r\n />\r\n </ContentWrapper>\r\n </>\r\n );\r\n};\r\n\r\nexport default TeamsList;\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","import crossAppUrlBuilder from '@appPublic/shared/services/crossAppUrlBuilder';\r\n\r\nexport const publicTeamPage = (pathParams, isPromoter) => {\r\n pathParams.teamSportEnum = pathParams?.teamSportEnum?.toLowerCase();\r\n\r\n return isPromoter\r\n ? crossAppUrlBuilder.publicTeamPagePlacements({\r\n pathParams: pathParams\r\n }).wiredLinkProps\r\n : crossAppUrlBuilder.publicTeamPageRecruitment({\r\n pathParams: pathParams\r\n }).wiredLinkProps;\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","ActionWrapper","children","className","ButtonActionDisplay","_ref2","isPrimary","restProps","Button","variant","undefined","LinkAction","_ref3","label","linkProps","icon","WiredLink","isRequired","ButtonAction","_ref4","onClick","ListCount","_ref5","count","itemNameSingular","itemNamePlural","supplementalContentRendering","_jsxs","toLocaleString","singularOrPlural","_Fragment","ListPagingControls","_ref6","buildLinkProps","currentPage","totalPages","PagingControls","ListEmptyState","_ref7","actionsRendering","headingText","descriptionText","iconSrc","Icon","Title","DefaultListEmptyState","_ref8","actionLabel","actionLinkProps","ListEmptyStateLinkAction","IndentedListItem","_ref9","headerContent","bodyContent","TwoColumnListItem","_ref10","col1Content","col2Content","List","_ref11","DefaultIndentedListItemLoadingSkeleton","map","idx","SkeletonBody","width","height","DefaultTwoColumnListItemLoadingSkeleton","ListWithFilters","props","heading","navRendering","filterProps","filterPropsIsLoading","listRendering","listSkeletonRendering","listIsLoading","listCountRendering","pagingControlsRendering","headingContainerClassName","portalClassName","onSecondaryDropdownOpen","cx","Heading","SkeletonFilter","iconStyle","SearchFilters","theme","filterDef","sort","Select","disabled","options","placeholder","value","name","onChange","val","key","values","actionRendering","requiredIf","_ref13","_ref14","searchParams","useURLParams","search","prevSearchParams","useRef","current","pageSearchParamKey","page","searchParamKey","pageRequestParamKey","requestParamKey","deriveValues","getSecondaryValue","secondaryDef","selectionType","SELECTION_TYPES","multiSelect","multiSelectValue","Array","isArray","every","find","opt","singleSelect","secondary","reduce","acc","secondaryDefIdx","keyPrefix","deriveSecondaryKey","group","groupAcc","groupItemDef","groupItemDefIdx","primary","defaultValue","text","requestParams","newParams","getIsEmptyValue","getIsSecondaryKey","getIndexFromSecondaryKey","groupDefKey","UNSTABLE_getGroupIndexFromDependentSelectGroupKey","groupDef","UNSTABLE_getGroupIndexFromCheckboxGroupKey","deriveRequestParams","deriveSearchParamsOnValuesChange","_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","config","IS_DEV_MODE","legacyUrlBuilderObj","call","TeamProfileLinkWrapper","href","url","target","AthleticAssociationEnum","showSport","SportEnum","Id","logoSize","breakCache","Stack","noWrap","align","Item","unstyled","TeamLogo","shortName","ShortName","sportEnum","Value","teamId","TeamId","isPremium","IsPremium","OrganizationName","fill","TeamName","Label","City","State","TeamDetailsProps","Sizes","isBlurred","sportName","getSport","ENUM_SPORT","logoSrc","size1x","getSizeInPixels","src1x","imageSrcManager","getTeamLogoSrc","size2x","src2x","sourceSet","PrimeBadgeIcon","widthClasses","full","THEMES","light","dark","ICON_STYLES","select","dropdown","widthClass","SelectMinor","DownMinor","color","Number","isFinite","parseInt","uniqueGradientId","Math","round","random","viewBox","xmlns","rx","d","id","x1","y1","x2","y2","gradientUnits","stopColor","offset","fillRule","clipRule","stroke","propDef","checkingFunc","propName","componentName","propType","_len","arguments","rest","_key","propTypeCheck","Error","isString","String","isNumber","isUndefined","enumHelper","toSportEnum","sport","item","EnumName","toAthleticAssociationEnum","athleticAssociation","ENUM_ATHLETIC_ASSOCIATION","toCommitmentLevelEnum","commitmentLevel","ENUM_COMMITMENT_LEVEL","enumIntToName","intVal","enumStructure","isInteger","hasOwnProperty","toEnumViewModel","enumValue","toEnumLabel","enumType","lookupEnumLabel","MALE","hisOrHer","gender","sportEnumToGender","indexOf","singular","plural","enums","CompetitionLevelEnum","CompetitionLevelEnumLong","SportEnumNoGender","FamilyMemberRelationshipTypeEnum","SchoolType","AthleteProfileActivityTypeEnum","AthletePlanEnum","CommitmentLevelEnum","MatchStrengthEnum","InstitutionOfInterestStatusEnum","ENUM_INSTITUTION_OF_INTEREST_STATUS","replace","ENUM_SCHOOL_TYPE","ENUM_ATHLETE_PROFILE_ACTIVITY_TYPE","ENUM_ATHLETE_PLAN","theEnumType","notFoundLabel","TeamsListItem","teamItem","teamProfileRosterLinkProps","teamProfileAlumniLinkProps","shouldLazyLoadLogos","Team","RosterCount","AlumniCount","TeamsListDisplay","teams","emptyStateRendering","renderTeamsListItem","isScreenSmallAndUpAtStart","useState","isSmallAndUp","Fragment","baseUrl","useQuery","PATH_PATTERNS","teamsList","async","resp","http","get","StateOptions","US","CA","params","conference","query","state","GetTeamSearchResults","Page","Results","EnumHelper","TeamPlaysSportId","Name","TeamsInSportCount","AthleticAssociation","IsFourYear","IsPromoter","IsRecruiter","IsVerified","searchOptions","teamsUrlBuilder","useTeamsUrlBuilder","derivedFilterDef","SportOptions","AthleticAssociationOptions","ConferenceOptions","paramTools","useParamTools","go","onChangeMany","_requestParams$confer","useCanonicalListPage","UNSTABLE_useContentHeight","teamsCount","setTeamsCount","data","searchOptionsData","isLoading","searchOptionsIsLoading","useFetchTeamSearchOptions","useErrorBoundary","useFilterTools","derivedSearchOptionsIsLoading","searchResultsData","searchResultsIsLoading","useFetchTeamSearchResults","replaceAll","enabled","TotalTeams","pageTitle","conferenceString","levelString","sportString","stateString","ScrollRestorationSignal","PageTitle","title","ContentWrapper","TotalResultCount","wiredLinkProps","publicTeamPage","teamShortName","teamSportEnum","crossAppUrlBuilder","publicTeamPageRoster","pathParams","publicTeamPageAlumni","TotalPageCount","useCanonicalNoSearchParams","useCanonical","getHref","currentURL","URL","window","location","pageParam","parsed","delete","removeExistingCanonicalTag","existing","document","querySelector","remove","link","createElement","setAttribute","head","appendChild","addCanonicalTag","useLocation","crossAppRouteService","reactRouterPathPattern","reactRouterGetDerivedPath","sameDomainPathReload","newPath","builderFactory","generateURLBuilderFactory","service","reloadPage","applyUrlBuilderFactoryToConfig","factory","publicPrivacyPolicy","publicSignInPage","searchParamKeys","publicSignUpPage","publicTeamPagePlacements","publicTeamPageRecruitment","publicTermsAndConditions","isPromoter","_pathParams$teamSport"],"sourceRoot":""}