{"version":3,"file":"1096.bundle.932a9164ba127520d5ba.js","mappings":"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","sources":["webpack://fieldlevel.app/./app-core/components/DropdownMenu/DropdownMenu.jsx","webpack://fieldlevel.app/./app-core/components/PageTitle.jsx","webpack://fieldlevel.app/./app-core/components/PreventOrphanText.jsx","webpack://fieldlevel.app/./app-core/hooks/useValidatedForm.js","webpack://fieldlevel.app/./app-core/services/enumHelper.js","webpack://fieldlevel.app/./app-core/utility/lookupEnumLabel.js","webpack://fieldlevel.app/./app-public/routes/profile/shared/queries/useFetchAthleteProfilePrivacyPreferences.js","webpack://fieldlevel.app/./app-public/shared/api/profilePrivacyPreferencesApi.js","webpack://fieldlevel.app/./app-core/routes/profile/components/SignUpFormModalDisplay.jsx","webpack://fieldlevel.app/./app-public/shared/components/SignUpFormModal.jsx","webpack://fieldlevel.app/./app-core/components/FlagContentModalDisplay.jsx","webpack://fieldlevel.app/./app-public/shared/components/FlagContentModal/FlagContentModal.jsx","webpack://fieldlevel.app/./app-public/shared/components/VideoContextMenu.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"],"sourcesContent":["import React, { useRef, useLayoutEffect, useState, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport * as DropdownMenuRadix from '@radix-ui/react-dropdown-menu';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\n\r\nconst portalContainerCtx = React.createContext(null);\r\n\r\nconst usePortalContainer = () => useContext(portalContainerCtx);\r\n\r\n/**\r\n * The PortalContainerProvider is a workaround for z-index/layering issues with DropdownMenuRadix. The portal\r\n * that's exposed by the primitive (e.g. DropdownMenuRadix.Portal) doesn't allow you to set styles/classname(s)\r\n * directly on the wrapper (which is oddly inconsistent with the default \"Portal\" utility element they provide), but\r\n * they DO allow you to specify an alternate container for the portal instead of document.body, which of course you\r\n * can style any way you wish. So, this provider is intended to be imported and rendered towards the top of the\r\n * React tree, and when used in conjunction with PortalContainerConfig, will produce a <div> to serve as the\r\n * portal container.\r\n */\r\nexport const PortalContainerProvider = ({ children }) => {\r\n const [elementState, setElementState] = useState(null);\r\n const [renderContainer, setRenderContainer] = useState(null);\r\n const ref = useRef();\r\n useLayoutEffect(() => {\r\n // If the ref were to ever be mounted, and then subsequently unmounted, it will become null. For this\r\n // use-case, it's simpler to just standardize nullish values to undefined\r\n setElementState(ref.current ?? undefined);\r\n }, [renderContainer]);\r\n\r\n return (\r\n <>\r\n {renderContainer?.({ ref })}\r\n <portalContainerCtx.Provider value={{ element: elementState, setRenderContainer }} children={children} />\r\n </>\r\n );\r\n};\r\n\r\nconst PortalContainerConfig = ({ className }) => {\r\n const { setRenderContainer } = usePortalContainer();\r\n useLayoutEffect(() => {\r\n // Since we're trying to set the state to a function, we need to use the functional api of setState\r\n setRenderContainer(prev => ({ ref }) => <div className={className} ref={ref} />);\r\n return () => setRenderContainer(null);\r\n }, [className]);\r\n return null;\r\n};\r\n\r\nconst DropdownButton = ({ matchButtonWidth, children }) => {\r\n return (\r\n <DropdownMenuRadix.Trigger asChild>\r\n <span role=\"button\" className={matchButtonWidth && 'w-full'}>\r\n {children}\r\n </span>\r\n </DropdownMenuRadix.Trigger>\r\n );\r\n};\r\n\r\nconst DropdownMenuItem = ({ onSelect, disabled, children }) => {\r\n return (\r\n <DropdownMenuRadix.Item\r\n onSelect={onSelect}\r\n disabled={disabled}\r\n className={cx(\r\n 'hover:outline-none hover:border-none',\r\n !disabled\r\n ? 'hover:bg-background-highlight focus:bg-background-highlight cursor-pointer'\r\n : 'text-muted bg-background-muted cursor-not-allowed'\r\n )}\r\n >\r\n {children}\r\n </DropdownMenuRadix.Item>\r\n );\r\n};\r\n\r\nDropdownMenuItem.propTypes = {\r\n onSelect: PropTypes.func,\r\n disabled: PropTypes.bool,\r\n children: PropTypes.node\r\n};\r\n\r\nconst DropdownMenuLink = ({ href, target, onSelect, children, linkProps }) => {\r\n const contentRendering = (\r\n <div className=\"hover:bg-background-highlight focus:bg-background-highlight\">{children}</div>\r\n );\r\n\r\n return (\r\n <DropdownMenuRadix.Item asChild>\r\n {linkProps ? (\r\n <WiredLink {...linkProps} unstyled>\r\n {contentRendering}\r\n </WiredLink>\r\n ) : (\r\n <a\r\n className=\"no-underline hover:no-underline focus:no-underline text-[color:inherit] hover:text-[color:inherit] focus:text-[color:inherit]\"\r\n href={href}\r\n target={target}\r\n onClick={onSelect}\r\n >\r\n {contentRendering}\r\n </a>\r\n )}\r\n </DropdownMenuRadix.Item>\r\n );\r\n};\r\n\r\nDropdownMenuLink.propTypes = {\r\n href: PropTypes.string,\r\n target: PropTypes.string,\r\n onSelect: PropTypes.func,\r\n linkProps: PropTypes.exact(WiredLink.propTypes),\r\n children: PropTypes.node\r\n};\r\n\r\nconst DropdownMenu = ({ onOpen, buttonRendering, listRendering, matchButtonWidth, portalClassName }) => {\r\n // Since PortalContainerProvider is (hopefully) a short-term workaround, we don't intend to use\r\n // it in every app that imports DropdownMenu. So, in case the context is null, we default to\r\n // an empty object.\r\n const { element } = usePortalContainer() ?? {};\r\n\r\n return (\r\n <>\r\n {portalClassName && <PortalContainerConfig className={portalClassName} />}\r\n <DropdownMenuRadix.Root onOpenChange={isOpen => isOpen && onOpen?.()} modal={false}>\r\n <DropdownButton matchButtonWidth={matchButtonWidth}>{buttonRendering}</DropdownButton>\r\n <DropdownMenuRadix.Portal container={element}>\r\n <DropdownMenuRadix.Content\r\n side=\"bottom\"\r\n align=\"start\"\r\n className={cx(\r\n 'bg-foreground-base shadow-md border rounded-sm',\r\n matchButtonWidth && 'w-[var(--radix-dropdown-menu-trigger-width)]'\r\n )}\r\n >\r\n {listRendering}\r\n </DropdownMenuRadix.Content>\r\n </DropdownMenuRadix.Portal>\r\n </DropdownMenuRadix.Root>\r\n </>\r\n );\r\n};\r\n\r\nDropdownMenu.propTypes = {\r\n onOpen: PropTypes.func,\r\n buttonRendering: PropTypes.node.isRequired,\r\n listRendering: PropTypes.node.isRequired,\r\n matchButtonWidth: PropTypes.bool\r\n};\r\n\r\nexport { DropdownMenu, DropdownMenuItem, DropdownMenuLink };\r\n","import { useEffect, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\n/**\r\n * This component is intended to set the document's title element programmatically. It's reactive to any\r\n * changes to the passed-in title, but it's otherwise simple in that it has no awareness of other components\r\n * that may be interacting with the document. It's recommended to keep things simple and use sparingly.\r\n *\r\n * NOTE: Due to its design, it'll automatically apply the most deeply nested usage last\r\n * (allowing children to override a parent), but if multiple components are setting titles dynamically,\r\n * there's no mechanism to prevent a parent component from \"retaking\" control.\r\n */\r\nconst PageTitle = props => {\r\n const { title } = props;\r\n const isMountedRef = useRef(false);\r\n const currentTitleRef = useRef(null);\r\n const setPageTitle = () => {\r\n if (title && typeof title === 'string' && document.title !== title && currentTitleRef.current !== title) {\r\n document.title = title;\r\n currentTitleRef.current = title;\r\n }\r\n };\r\n setPageTitle();\r\n\r\n useEffect(() => {\r\n if (!isMountedRef.current) {\r\n isMountedRef.current = true;\r\n return;\r\n }\r\n setPageTitle();\r\n }, [title]);\r\n\r\n return null;\r\n};\r\n\r\nPageTitle.propTypes = {\r\n title: PropTypes.string\r\n};\r\n\r\nexport default PageTitle;\r\n","import { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst PreventOrphanText = ({ text }) => {\r\n const input = text || '';\r\n const words = input.split(' ');\r\n if (words.length < 2) {\r\n return words;\r\n }\r\n\r\n let lastTwo = words.slice(-2);\r\n let firstPart = words.slice(0, words.length - 2);\r\n\r\n return (\r\n <Fragment>\r\n {firstPart.join(' ')} <span className=\"whitespace-nowrap break-all\">{lastTwo.join(' ')}</span>\r\n </Fragment>\r\n );\r\n};\r\n\r\nPreventOrphanText.propTypes = {\r\n text: PropTypes.string.isRequired\r\n};\r\n\r\nexport default PreventOrphanText;\r\n","import { useEffect, useState } from 'react';\r\n\r\n// Note: When providing defaultValues to this hook, it is important to \"stabilize\" (guarantee reference\r\n// equality) the passed-in object throughout the lifetime of the implementing component, or your form will automatically\r\n// update its values to any newly provided \"defaultValues\". useMemo() is not a good candidate for this\r\n// because it does not guarantee it will \"remember\" values over time. https://reactjs.org/docs/hooks-reference.html#usememo.\r\n// As an alternative, useState() should suffice.\r\n\r\nconst useValidatedForm = (callback, validate, defaultValues) => {\r\n const [values, setValues] = useState(defaultValues || {});\r\n const [errors, setErrors] = useState({});\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const [hasSubmit, setHasSubmit] = useState(false);\r\n\r\n useEffect(() => {\r\n const hasNoErrors = Object.keys(errors).length === 0;\r\n if (isSubmitting && hasNoErrors) {\r\n callback(values);\r\n }\r\n }, [errors]);\r\n\r\n useEffect(() => {\r\n defaultValues && setValues(defaultValues);\r\n }, [defaultValues]);\r\n\r\n const handleSubmit = event => {\r\n if (event) event.preventDefault();\r\n setIsSubmitting(true);\r\n setHasSubmit(true);\r\n setErrors(validate(values));\r\n };\r\n\r\n // This handles both change events that pass the original input change event and\r\n // the new Playbook form inputs that have a (value, name) callback. Eventually we\r\n // can clean this up when we no longer have forms that pass the event.\r\n const handleChange = (event, inputName) => {\r\n let name = inputName;\r\n let value = event;\r\n\r\n if (event.target) {\r\n if (event.target.type == 'file') {\r\n name = event.target.name;\r\n value = event.target.files[0];\r\n } else {\r\n name = event.target.name;\r\n value = event.target.value;\r\n }\r\n }\r\n\r\n const newValues = { ...values, [name]: value };\r\n\r\n if (event.target) {\r\n event.persist();\r\n }\r\n setValues(newValues);\r\n hasSubmit && setErrors(validate(newValues));\r\n setIsSubmitting(false);\r\n };\r\n\r\n const handleChanges = newInputValues => {\r\n const newValues = { ...values, ...newInputValues };\r\n\r\n setValues(newValues);\r\n hasSubmit && setErrors(validate(newValues));\r\n setIsSubmitting(false);\r\n };\r\n\r\n const resetForm = () => {\r\n setHasSubmit(false);\r\n setIsSubmitting(false);\r\n };\r\n\r\n return {\r\n handleChange,\r\n handleSubmit,\r\n resetForm,\r\n values,\r\n errors,\r\n handleChanges\r\n };\r\n};\r\n\r\nexport const useValidatedPostForm = (validate, defaultValues, onSubmit) => {\r\n const [values, setValues] = useState({});\r\n const [errors, setErrors] = useState({});\r\n const [hasSubmit, setHasSubmit] = useState(false);\r\n\r\n useEffect(() => {\r\n defaultValues && setValues(defaultValues);\r\n }, [defaultValues]);\r\n\r\n const handleSubmit = event => {\r\n setHasSubmit(true);\r\n const errors = validate(values);\r\n const hasErrors = Object.keys(errors).length > 0;\r\n\r\n if (hasErrors) {\r\n event && event.preventDefault();\r\n setErrors(errors);\r\n } else {\r\n onSubmit && onSubmit();\r\n }\r\n };\r\n\r\n const handleChange = event => {\r\n const newValues = { ...values, [event.target.name]: event.target.value };\r\n event.persist();\r\n setValues(newValues);\r\n hasSubmit && setErrors(validate(newValues));\r\n };\r\n\r\n const resetForm = () => {\r\n setHasSubmit(false);\r\n };\r\n\r\n return {\r\n handleChange,\r\n handleSubmit,\r\n resetForm,\r\n values,\r\n errors\r\n };\r\n};\r\n\r\nexport default useValidatedForm;\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 { useQuery } from '@tanstack/react-query';\r\n\r\nimport { GetPreferences } from '@appPublic/shared/api/profilePrivacyPreferencesApi';\r\n\r\nconst useFetchAthleteProfilePrivacyPreferences = ({ params: { athleteProfileId }, options } = {}) =>\r\n useQuery(\r\n [`profile_fetchAthleteProfilePrivacyPreferences`, { athleteProfileId: `${athleteProfileId}` }],\r\n () => GetPreferences({ profileId: athleteProfileId }),\r\n options\r\n );\r\n\r\nexport default useFetchAthleteProfilePrivacyPreferences;\r\n","import http from '@appCore/services/http';\r\n\r\nconst baseUrl = '/api/profileprivacypreferences';\r\n\r\nexport const GetPreferences = ({ profileId }) => {\r\n return http.get(`${baseUrl}/GetProfilePrivacyPreferences/${profileId}`);\r\n};\r\n","import { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\n\r\nimport { Icon, DownMinor, Button, Heading } from '@fieldlevel/playbook';\r\n\r\nimport { useValidatedPostForm } from '@appCore/hooks/useValidatedForm';\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport useAnalytics from '@appCore/hooks/useAnalytics';\r\nimport Separator from '@appCore/components/Separator';\r\nimport PreventOrphanText from '@appCore/components/PreventOrphanText';\r\n\r\n/**\r\n * SignUpForm\r\n */\r\n\r\nconst deriveSharedInputClassname = ({ hasError }) =>\r\n cx('w-full py-4 px-6 border rounded-sm', hasError && 'border-[#E57373]');\r\n\r\nconst SignUpSelect = ({ hasError, ...otherProps }) => (\r\n <select className={cx(deriveSharedInputClassname({ hasError }), 'appearance-none')} {...otherProps} />\r\n);\r\nconst SignUpInput = ({ hasError, ...otherProps }) => (\r\n <input className={deriveSharedInputClassname({ hasError })} {...otherProps} />\r\n);\r\n\r\nconst Error = ({ children }) => <span className=\"block mt-1 mb-2 text-[#E57373]\" children={children} />;\r\n\r\nconst initialValues = {\r\n 'FormData.SignUpAs': null,\r\n 'FormData.Name': null,\r\n 'FormData.Email': null,\r\n 'FormData.Password': null\r\n};\r\n\r\nconst SignUpForm = ({ onClick, returnUrl, termsAndConditionsLinkProps, privacyPolicyLinkProps }) => {\r\n const { values, errors, handleChange, handleSubmit } = useValidatedPostForm(validate, initialValues, onClick);\r\n\r\n function validate(values) {\r\n let errors = {};\r\n\r\n if (!values['FormData.SignUpAs']) {\r\n errors.signUpAs = 'Please select a value';\r\n }\r\n\r\n if (!values['FormData.Name']) {\r\n errors.name = 'Please enter your name';\r\n } else {\r\n // validation used by signup formdata\r\n const regex = /\\s*([^\\s]+)\\s*(.*)/;\r\n const matches = values['FormData.Name'].match(regex);\r\n if (!matches || !matches[2]) {\r\n errors.name = 'Please enter a first and last name';\r\n }\r\n }\r\n\r\n if (!values['FormData.Email']) {\r\n errors.email = 'Please enter an email';\r\n }\r\n\r\n if (!values['FormData.Password']) {\r\n errors.password = 'Please enter a password';\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n return (\r\n <form action=\"/join\" method=\"post\" onSubmit={handleSubmit}>\r\n <div className=\"space-y-4\">\r\n <div>\r\n <div className=\"relative\">\r\n <SignUpSelect\r\n hasError={errors.signUpAs}\r\n name=\"FormData.SignUpAs\"\r\n aria-label=\"I am a...\"\r\n onChange={handleChange}\r\n selected={values['FormData.SignUpAs']}\r\n >\r\n <option value=\"\">I am a...</option>\r\n <option value=\"Coach\">I am a coach</option>\r\n <option value=\"Athlete\">I am an athlete</option>\r\n </SignUpSelect>\r\n <span className=\"absolute top-[18px] right-[25px] flex items-center pointer-events-none\">\r\n <Icon source={DownMinor} color=\"muted\" />\r\n </span>\r\n </div>\r\n {errors.signUpAs && <Error>{errors.signUpAs}</Error>}\r\n </div>\r\n <div>\r\n <SignUpInput\r\n hasError={errors.name}\r\n name=\"FormData.Name\"\r\n type=\"text\"\r\n autoComplete=\"off\"\r\n autoCorrect=\"off\"\r\n placeholder=\"First and Last Name\"\r\n aria-label=\"First and Last Name\"\r\n spellCheck=\"false\"\r\n onChange={handleChange}\r\n value={values['FormData.Name'] || ''}\r\n />\r\n {errors.name && <Error>{errors.name}</Error>}\r\n </div>\r\n <div>\r\n <SignUpInput\r\n hasError={errors.email}\r\n name=\"FormData.Email\"\r\n type=\"email\"\r\n placeholder=\"Email\"\r\n aria-label=\"Email\"\r\n spellCheck=\"false\"\r\n onChange={handleChange}\r\n value={values['FormData.Email'] || ''}\r\n />\r\n {errors.email && <Error>{errors.email}</Error>}\r\n </div>\r\n <div>\r\n <SignUpInput\r\n hasError={errors.password}\r\n name=\"FormData.Password\"\r\n type=\"password\"\r\n placeholder=\"Password\"\r\n aria-label=\"Password\"\r\n onChange={handleChange}\r\n value={values['FormData.Password'] || ''}\r\n />\r\n {errors.password && <Error>{errors.password}</Error>}\r\n </div>\r\n <div>\r\n {returnUrl && <input type=\"hidden\" name=\"FormData.ReturnUrl\" value={returnUrl} />}\r\n <Button variant=\"primary\" fullWidth submit>\r\n Sign Up\r\n </Button>\r\n </div>\r\n </div>\r\n <div className=\"text-center mt-2 text-body-sm\">\r\n By clicking Sign Up, you agree to our <WiredLink {...termsAndConditionsLinkProps}>Terms</WiredLink> and\r\n our <WiredLink {...privacyPolicyLinkProps}>Privacy Policy</WiredLink>\r\n </div>\r\n </form>\r\n );\r\n};\r\n\r\n/**\r\n * SignUpFormModal\r\n */\r\nconst SignUpFormModalDisplay = ({\r\n heading,\r\n returnUrl,\r\n elem,\r\n disabled,\r\n signInPageLinkProps,\r\n privacyPolicyLinkProps,\r\n termsAndConditionsLinkProps\r\n}) => {\r\n useAnalytics(disabled ? '' : 'Public Profile Interaction', 'Signup Form Modal');\r\n const { logClick: logLoginClick } = useAnalytics(\r\n disabled ? '' : 'Public Profile Interaction',\r\n 'Signup Form Modal Log In'\r\n );\r\n const { logClick: logSignUpClick } = useAnalytics(\r\n disabled ? '' : 'Public Profile Interaction',\r\n 'Signup Form Modal Sign Up'\r\n );\r\n\r\n useEffect(() => {\r\n let el = document.querySelector('#' + elem);\r\n el.style.filter = 'blur(8px)';\r\n el.style.opacity = '0.5';\r\n el.style.overflow = 'hidden';\r\n\r\n return function cleanup() {\r\n el.style.filter = '';\r\n el.style.opacity = '';\r\n el.style.overflow = '';\r\n };\r\n });\r\n\r\n return (\r\n <div className=\"absolute top-0 bottom-0 left-0 right-0 z-[9] p-4 pt-[40px]\">\r\n <div className=\"relative max-w-[400px] m-auto py-8 px-6 bg-foreground-base rounded-sm shadow\">\r\n <div className=\"text-center\">\r\n <Heading>\r\n <PreventOrphanText text={heading} />\r\n </Heading>\r\n </div>\r\n <div className=\"mt-4\">\r\n <SignUpForm\r\n onClick={logSignUpClick}\r\n returnUrl={returnUrl}\r\n privacyPolicyLinkProps={privacyPolicyLinkProps}\r\n termsAndConditionsLinkProps={termsAndConditionsLinkProps}\r\n />\r\n </div>\r\n <div className=\"my-8\">\r\n <Separator />\r\n </div>\r\n <div className=\"text-center text-body\">\r\n Already have an account?{' '}\r\n <WiredLink {...signInPageLinkProps} onClick={logLoginClick}>\r\n Log In\r\n </WiredLink>\r\n </div>\r\n {disabled && <div className=\"absolute top-0 bottom-0 left-0 right-0 opacity-20 bg-foreground-dark\" />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nSignUpFormModalDisplay.propTypes = {\r\n heading: PropTypes.string.isRequired,\r\n returnUrl: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n elem: PropTypes.string,\r\n signInPageLinkProps: PropTypes.exact(WiredLink.propTypes).isRequired,\r\n privacyPolicyLinkProps: PropTypes.exact(WiredLink.propTypes).isRequired,\r\n termsAndConditionsLinkProps: PropTypes.exact(WiredLink.propTypes).isRequired\r\n};\r\n\r\nexport default SignUpFormModalDisplay;\r\n","import SignUpFormModalDisplay from '@appCore/routes/profile/components/SignUpFormModalDisplay';\r\n\r\nimport crossAppUrlBuilder from '@appPublic/shared/services/crossAppUrlBuilder';\r\n\r\nconst SignUpFormModal = props => {\r\n const { returnUrl } = props;\r\n\r\n return (\r\n <SignUpFormModalDisplay\r\n {...props}\r\n termsAndConditionsLinkProps={crossAppUrlBuilder.publicTermsAndConditions().wiredLinkProps}\r\n privacyPolicyLinkProps={crossAppUrlBuilder.publicPrivacyPolicy().wiredLinkProps}\r\n signInPageLinkProps={crossAppUrlBuilder.publicSignInPage({ searchParams: { returnUrl } }).wiredLinkProps}\r\n />\r\n );\r\n};\r\n\r\nSignUpFormModal.propTypes = { ...SignUpFormModalDisplay.propTypes };\r\ndelete SignUpFormModal.propTypes.termsAndConditionsLinkProps;\r\ndelete SignUpFormModal.propTypes.privacyPolicyLinkProps;\r\ndelete SignUpFormModal.propTypes.signInPageLinkProps;\r\nexport default SignUpFormModal;\r\n","import { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Modal, ChoiceGroup } from '@fieldlevel/playbook';\r\n\r\nexport const FLAG_CONTENT_MODAL_DISPLAY_VARIANTS = {\r\n default: 'default',\r\n signIn: 'signIn'\r\n};\r\n\r\nconst FlagContentModalDisplay = ({\r\n isOpen,\r\n onDismiss,\r\n onFlagContent,\r\n onSignIn,\r\n isSaving,\r\n variant = FLAG_CONTENT_MODAL_DISPLAY_VARIANTS.default\r\n}) => {\r\n const [selectedOption, setSelectedOption] = useState(null);\r\n\r\n const isDefaultVariant = variant === FLAG_CONTENT_MODAL_DISPLAY_VARIANTS.default;\r\n const formSubmitAction = {\r\n content: 'Report',\r\n onAction: () => {\r\n onFlagContent({ reasonEnum: selectedOption });\r\n },\r\n disabled: isSaving || selectedOption === null\r\n };\r\n const signInAction = { content: 'Sign in', onAction: onSignIn };\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onDismiss={onDismiss}\r\n title=\"Report Video\"\r\n primaryAction={isDefaultVariant ? formSubmitAction : signInAction}\r\n secondaryAction={{ content: 'Cancel', onAction: onDismiss, disabled: isSaving }}\r\n >\r\n <div className=\"pt-4\">\r\n {isDefaultVariant ? (\r\n <ChoiceGroup\r\n spacing=\"loose\"\r\n choices={[\r\n { label: 'Explicit or inappropriate content', value: 0 },\r\n { label: 'Violent or repulsive content', value: 1 },\r\n { label: 'Hateful or abusive content', value: 2 },\r\n { label: 'Other', value: 3 }\r\n ]}\r\n onChange={selected => setSelectedOption(selected)}\r\n selected={selectedOption}\r\n />\r\n ) : (\r\n <div className=\"font-bold text-body-lg\">Please sign in to report video.</div>\r\n )}\r\n </div>\r\n </Modal>\r\n );\r\n};\r\n\r\nFlagContentModalDisplay.propTypes = {\r\n isOpen: PropTypes.bool.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n onFlagContent: PropTypes.func,\r\n onSignIn: PropTypes.func,\r\n isSaving: PropTypes.bool,\r\n variant: PropTypes.oneOf(Object.values(FLAG_CONTENT_MODAL_DISPLAY_VARIANTS))\r\n};\r\n\r\nexport default FlagContentModalDisplay;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport FlagContentModalDisplay, {\r\n FLAG_CONTENT_MODAL_DISPLAY_VARIANTS\r\n} from '@appCore/components/FlagContentModalDisplay';\r\n\r\nconst FlagContentModal = ({ isOpen, onDismiss, onSignIn }) => {\r\n return (\r\n <FlagContentModalDisplay\r\n isOpen={isOpen}\r\n onDismiss={onDismiss}\r\n variant={FLAG_CONTENT_MODAL_DISPLAY_VARIANTS.signIn}\r\n onSignIn={onSignIn}\r\n />\r\n );\r\n};\r\n\r\nFlagContentModal.propTypes = {\r\n isOpen: PropTypes.bool.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n onSignIn: PropTypes.func\r\n};\r\n\r\nexport default FlagContentModal;\r\n","import { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { ShareMinor } from '@fieldlevel/playbook';\r\n\r\nimport FlagMinor from '@appCore/icons/FlagMinor';\r\nimport { ShareControl } from '@appCore/components/ShareControl/ShareControl';\r\nimport { ContextMenu, ContextMenuItem } from '@appCore/components/ContextMenu/ContextMenu';\r\n\r\nimport FlagContentModal from '@appPublic/shared/components/FlagContentModal/FlagContentModal';\r\n\r\nconst VideoContextMenu = ({ verticalButton = true, athleteComponent, shareService, onSignIn }) => {\r\n const [hasFlaggedVideo, setHasFlaggedVideo] = useState(false);\r\n const [showShareModal, setShowShareModal] = useState(false);\r\n const [showFlagModal, setShowFlagModal] = useState(false);\r\n const shareHeading = `Share ${athleteComponent.FirstName}'s Video`;\r\n\r\n return (\r\n <div>\r\n {!hasFlaggedVideo && (\r\n <ContextMenu verticalButton={verticalButton}>\r\n <ContextMenuItem iconSource={ShareMinor} onSelect={() => setShowShareModal(true)}>\r\n Share\r\n </ContextMenuItem>\r\n <ContextMenuItem iconSource={FlagMinor} onSelect={() => setShowFlagModal(true)}>\r\n Report\r\n </ContextMenuItem>\r\n </ContextMenu>\r\n )}\r\n\r\n <ShareControl\r\n heading={shareHeading}\r\n show={showShareModal}\r\n shareService={shareService}\r\n onDismiss={() => setShowShareModal(false)}\r\n />\r\n <FlagContentModal isOpen={showFlagModal} onDismiss={() => setShowFlagModal(false)} onSignIn={onSignIn} />\r\n </div>\r\n );\r\n};\r\n\r\nVideoContextMenu.propTypes = {\r\n verticalButton: PropTypes.bool,\r\n athleteComponent: PropTypes.object.isRequired,\r\n onSignIn: PropTypes.func\r\n};\r\n\r\nexport default VideoContextMenu;\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":["portalContainerCtx","React","usePortalContainer","useContext","PortalContainerConfig","_ref2","className","setRenderContainer","useLayoutEffect","prev","_ref3","ref","_jsx","DropdownButton","_ref4","matchButtonWidth","children","DropdownMenuRadix","asChild","role","DropdownMenuItem","_ref5","onSelect","disabled","cx","propTypes","PropTypes","DropdownMenuLink","_ref6","href","target","linkProps","contentRendering","WiredLink","unstyled","onClick","DropdownMenu","_ref7","_usePortalContainer","onOpen","buttonRendering","listRendering","portalClassName","element","_jsxs","_Fragment","onOpenChange","isOpen","modal","container","side","align","isRequired","PageTitle","props","title","isMountedRef","useRef","currentTitleRef","setPageTitle","document","current","useEffect","PreventOrphanText","_ref","text","words","split","length","lastTwo","slice","firstPart","Fragment","join","useValidatedPostForm","validate","defaultValues","onSubmit","values","setValues","useState","errors","setErrors","hasSubmit","setHasSubmit","handleChange","event","newValues","name","value","persist","handleSubmit","Object","keys","preventDefault","resetForm","useValidatedForm","callback","isSubmitting","setIsSubmitting","hasNoErrors","inputName","type","files","handleChanges","newInputValues","isString","String","isNumber","isFinite","isUndefined","enumHelper","toSportEnum","sport","ENUM_SPORT","filter","item","Value","EnumName","toLowerCase","toAthleticAssociationEnum","athleticAssociation","ENUM_ATHLETIC_ASSOCIATION","toCommitmentLevelEnum","commitmentLevel","ENUM_COMMITMENT_LEVEL","enumIntToName","intVal","enumStructure","Number","isInteger","i","hasOwnProperty","toEnumViewModel","enumValue","Label","Id","toEnumLabel","enumType","lookupEnumLabel","enums","CompetitionLevelEnum","CompetitionLevelEnumLong","AthleticAssociationEnum","SportEnum","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","val","theEnumType","notFoundLabel","undefined","params","athleteProfileId","options","arguments","useQuery","concat","GetPreferences","profileId","http","get","deriveSharedInputClassname","hasError","SignUpSelect","otherProps","SignUpInput","Error","initialValues","SignUpForm","returnUrl","termsAndConditionsLinkProps","privacyPolicyLinkProps","signUpAs","regex","matches","match","email","password","action","method","onChange","selected","Icon","source","DownMinor","color","autoComplete","autoCorrect","placeholder","spellCheck","Button","variant","fullWidth","submit","SignUpFormModalDisplay","heading","elem","signInPageLinkProps","useAnalytics","logClick","logLoginClick","logSignUpClick","el","querySelector","style","opacity","overflow","Heading","Separator","SignUpFormModal","crossAppUrlBuilder","publicTermsAndConditions","wiredLinkProps","publicPrivacyPolicy","publicSignInPage","searchParams","FLAG_CONTENT_MODAL_DISPLAY_VARIANTS","default","signIn","FlagContentModalDisplay","onDismiss","onFlagContent","onSignIn","isSaving","selectedOption","setSelectedOption","isDefaultVariant","formSubmitAction","content","onAction","reasonEnum","signInAction","Modal","open","primaryAction","secondaryAction","ChoiceGroup","spacing","choices","label","FlagContentModal","VideoContextMenu","verticalButton","athleteComponent","shareService","hasFlaggedVideo","setHasFlaggedVideo","showShareModal","setShowShareModal","showFlagModal","setShowFlagModal","shareHeading","FirstName","ContextMenu","ContextMenuItem","iconSource","ShareMinor","FlagMinor","ShareControl","show","useCanonicalNoSearchParams","useCanonical","getHref","currentURL","URL","window","location","search","useCanonicalListPage","pageParam","parsed","parseInt","delete","removeExistingCanonicalTag","existing","remove","link","createElement","setAttribute","head","appendChild","addCanonicalTag","useLocation","crossAppRouteService","reactRouterPathPattern","pathParams","reactRouterGetDerivedPath","go","sameDomainPathReload","newPath","builderFactory","generateURLBuilderFactory","service","url","reloadPage","config","applyUrlBuilderFactoryToConfig","factory","searchParamKeys","publicSignUpPage","publicTeamPage","publicTeamPageAlumni","publicTeamPagePlacements","publicTeamPageRecruitment","publicTeamPageRoster"],"sourceRoot":""}