{"version":3,"file":"6686.bundle.0a62d327337a55320620.js","mappings":"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","sources":["webpack://fieldlevel.app/./app-core/components/OptimizedVideoThumbnail/_OptimizedVideoThumbnail.jsx","webpack://fieldlevel.app/./app-core/components/PremiumBadge/GoldPremiumBadgeSvg.jsx","webpack://fieldlevel.app/./app-core/components/PremiumBadge/GoldPremiumBadgeNoChevronSvg.jsx","webpack://fieldlevel.app/./app-core/components/PremiumBadge/GoldPremiumBadgeNoBackgroundSvg.jsx","webpack://fieldlevel.app/./app-core/components/PremiumBadge/PremiumBadge.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteHeadshot/AthleteHeadshot.jsx","webpack://fieldlevel.app/./app-core/components/athlete/AthleteHeadshot/useAthleteHeadshot.js","webpack://fieldlevel.app/./app-core/utility/formatter.js","webpack://fieldlevel.app/./app-core/utility/googleAnalytics.js","webpack://fieldlevel.app/./app-core/utility/masquerading.js","webpack://fieldlevel.app/./app-public/routes/profile/urlBuilder.js","webpack://fieldlevel.app/./app-public/shared/api/videoApi.js"],"sourcesContent":["import PropTypes from 'prop-types';\r\n\r\nconst Image = ({ src, loading }) => (\r\n    <img\r\n        className=\"w-full h-full object-cover\"\r\n        src={src}\r\n        alt=\"Video image\"\r\n        loading={loading}\r\n        referrerPolicy=\"no-referrer\"\r\n    />\r\n);\r\n\r\nexport const getIsMuxThumbnail = ({ url }) => /https:\\/\\/image\\.mux\\.com\\//.test(url);\r\n\r\nconst getQueryString = ({ params = {} } = {}) =>\r\n    Object.keys(params).reduce(\r\n        (acc, key) => (typeof params[key] !== 'undefined' ? `${acc}${!acc ? '?' : '&'}${key}=${params[key]}` : acc),\r\n        ''\r\n    );\r\n\r\nexport const getMuxOptimizedUrl = ({ src, ext, muxParams }) => {\r\n    // getMuxOptimizedUrl() relies on mux url's being of the form 'https://image.mux.com/[id]/thumbnail.[ext]\r\n    const split = src.split('.');\r\n    split.splice(-1, 1, ext);\r\n    return `${split.join('.')}${getQueryString({ params: muxParams })}`;\r\n};\r\n\r\n/**\r\n * This component is intended to be used to generate optimized thumbnails for retrieval from Mux videos. Its api\r\n * is UNSTABLE so it shouldn't be used freely throughout the app.\r\n *\r\n * In general, the component will take a basic thumbnail url along with params supported by Mux's api and generate\r\n * a .webp-first <picture>/srcSet implementation. It will also take care of generating 1x/2x resolution options\r\n * for the browser if you provide either a width/height as a muxParam.\r\n *\r\n * Basic usage:\r\n *   <_OptimizedVideoThumbnail\r\n *      imgDef={{ src: 'https://image.mux.com/[id]/thumbnail.png', muxParams: {{ width: 400 }} }}\r\n *    />\r\n *\r\n *    // Yields\r\n *    <picture>\r\n *        <source type=\"image/webp\" srcSet=\"https://image.mux.com/[id]/thumbnail.webp?width=400 1x, https://image.mux.com/[id]/thumbnail.webp?width=800 2x\" />\r\n *        <source type=\"image/jpeg\" srcSet=\"https://image.mux.com/[id]/thumbnail.jpg?width=400 1x, https://image.mux.com/[id]/thumbnail.jpg?width=800 2x\" />\r\n *        <img src=\"https://image.mux.com/[id]/thumbnail.jpg?width=400\" />\r\n *    </picture\r\n *\r\n */\r\nconst _OptimizedVideoThumbnail = ({ imgDef, sourceDefs, includeHighRes = true }) => {\r\n    const { src, loading: imgLoading } = imgDef;\r\n\r\n    if (!getIsMuxThumbnail({ url: src })) {\r\n        return <Image loading={imgLoading} src={src} />;\r\n    }\r\n\r\n    const derivedSourceDefs = sourceDefs || [{ muxParams: imgDef.muxParams }];\r\n\r\n    // Build out the <source>/srcSet definitions for .webp images\r\n    const webPSourceDefs = derivedSourceDefs.map(({ media, muxParams = {} }) => {\r\n        const srcSetDefs = [getMuxOptimizedUrl({ src, ext: 'webp', muxParams })];\r\n\r\n        // If includeHighRes is specified, create 1x/2x variants to populate the srcSet\r\n        if (includeHighRes && (muxParams.width || muxParams.height)) {\r\n            srcSetDefs[0] += ` 1x`;\r\n            srcSetDefs.push(\r\n                getMuxOptimizedUrl({\r\n                    src,\r\n                    ext: 'webp',\r\n                    muxParams: {\r\n                        ...muxParams,\r\n                        height: muxParams.height && muxParams.height * 2,\r\n                        width: muxParams.width && muxParams.width * 2\r\n                    }\r\n                }) + ` 2x`\r\n            );\r\n        }\r\n        return {\r\n            media,\r\n            srcSetDefs\r\n        };\r\n    });\r\n\r\n    // If the webp sourceDefs either take advantage of media queries (responsive), or specify multiple resolutions,\r\n    // we'll want to build jpeg sourceDefs also for browsers that support <picture>/srcSet but not webp\r\n    const jpgSourceDefs = webPSourceDefs.some(({ srcSetDefs, media }) => srcSetDefs.length > 1 || media)\r\n        ? webPSourceDefs.map(sourceDef => ({\r\n              ...sourceDef,\r\n              srcSetDefs: sourceDef.srcSetDefs.map(def => def.replace('.webp', '.jpg'))\r\n          }))\r\n        : null;\r\n\r\n    return (\r\n        <picture>\r\n            {webPSourceDefs.map(def => {\r\n                const srcSet = def.srcSetDefs.join(', ');\r\n                return <source key={srcSet} type=\"image/webp\" media={def.media} srcSet={srcSet} />;\r\n            })}\r\n            {jpgSourceDefs?.map(def => {\r\n                const srcSet = def.srcSetDefs.join(', ');\r\n                return <source key={srcSet} type=\"image/jpeg\" media={def.media} srcSet={srcSet} />;\r\n            })}\r\n            {/* Fallback to jpeg by default*/}\r\n            <Image loading={imgLoading} src={getMuxOptimizedUrl({ src, ext: 'jpg', muxParams: imgDef.muxParams })} />\r\n        </picture>\r\n    );\r\n};\r\n\r\nconst muxParamsPropType = {\r\n    /* The time (in seconds) of the video timeline where the image should be pulled. Defaults to the middle of the original video. */\r\n    time: PropTypes.number, //\r\n    /* The width of the thumbnail (in pixels). Defaults to the width of the original video. */\r\n    width: PropTypes.number,\r\n    /* The height of the thumbnail (in pixels). Defaults to the height of the original video. */\r\n    height: PropTypes.number,\r\n    /* Rotate the image clockwise by the given number of degrees. Valid values are 90, 180, and 270. */\r\n    rotate: PropTypes.oneOf([90, 180, 270]),\r\n    /* How to fit a thumbnail within width + height. Valid values are preserve, stretch, crop, smartcrop, and pad (see below). */\r\n    /*\r\n        The fit_mode parameter can have the following values:\r\n\r\n        preserve :  By default, Mux will preserve the aspect ratio of the video, while fitting the image\r\n                    within the requested width and height. For example if the thumbnail width is 100, the\r\n                    height is 100, and the video's aspect ratio is 16:9, the delivered image will be\r\n                    100x56 (16:9).\r\n\r\n        stretch :   The thumbnail will exactly fill the requested width and height, even if it distorts the\r\n                    image. Requires both width and height to be set. (Not very popular.)\r\n\r\n        crop :      The video image will be scaled up or down until it fills the requested width and height box.\r\n                    Pixels then outside of the box will be cropped off. The crop is always centered on the image.\r\n                    Requires both width and height to be set.\r\n\r\n        smartcrop : An algorithm will attempt to find an area of interest in the image and center it within\r\n                    the crop, while fitting the requested width and height. Requires both width and\r\n                    height to be set.\r\n\r\n        pad :       Similar to preserve but Mux will \"letterbox\" or \"pillar box\" (add black padding to) the image\r\n                    to make it fit the requested width and height exactly. This is less efficient than preserve\r\n                    but allows for maintaining the aspect ratio while always getting thumbnails of the same size.\r\n                    Requires both width and height to be set.\r\n     */\r\n    fit_mode: PropTypes.oneOf(['preserve', 'stretch', 'crop', 'smartcrop', 'pad']),\r\n    /* Flip the image top-bottom after performing all other transformations. */\r\n    flip_v: PropTypes.bool,\r\n    /* Flip the image left-right after performing all other transformations. */\r\n    flip_h: PropTypes.bool\r\n};\r\n\r\n_OptimizedVideoThumbnail.propTypes = {\r\n    imgDef: PropTypes.exact({\r\n        src: PropTypes.string.isRequired,\r\n        loading: PropTypes.oneOf(['eager', 'lazy']),\r\n        muxParams: PropTypes.exact(muxParamsPropType)\r\n    }).isRequired,\r\n    sourceDefs: PropTypes.arrayOf(\r\n        PropTypes.exact({\r\n            media: PropTypes.string,\r\n            muxParams: PropTypes.exact(muxParamsPropType).isRequired\r\n        })\r\n    ),\r\n    /* If true and either muxParams.height or muxParams.width are provided, it will create \"2x\" sources by multiplying\r\n       each of the muxParams.height and muxParams.width by 2 */\r\n    includeHighRes: PropTypes.bool\r\n};\r\n\r\nexport default _OptimizedVideoThumbnail;\r\n","const GoldPremiumBadgeSvg = props => {\r\n    const uniqueGradientId = `gradient_${Math.round(Math.random() * 100000)}`;\r\n    return (\r\n        <svg width=\"60\" height=\"16\" viewBox=\"0 0 60 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\r\n            <rect width=\"60\" height=\"16\" rx=\"4\" fill={`url('#${uniqueGradientId}')`} />\r\n            <path\r\n                d=\"M17.2734 8.97266H19.0078C19.4036 8.97266 19.75 8.89323 20.0469 8.73438C20.3438 8.57552 20.5742 8.35156 20.7383 8.0625C20.9049 7.77344 20.9883 7.4349 20.9883 7.04688V7.03906C20.9883 6.65365 20.9049 6.31641 20.7383 6.02734C20.5742 5.73828 20.3438 5.51432 20.0469 5.35547C19.75 5.19401 19.4036 5.11328 19.0078 5.11328H17.2734V6.04688H18.7188C19.0573 6.04688 19.3203 6.13281 19.5078 6.30469C19.6979 6.47656 19.793 6.72266 19.793 7.04297V7.05078C19.793 7.37109 19.6979 7.61849 19.5078 7.79297C19.3203 7.96484 19.0573 8.05078 18.7188 8.05078H17.2734V8.97266ZM16.6836 10.75H17.8633V5.11328H16.6836V10.75ZM22.0742 10.75H23.2539V8.6875H24.1641C24.1719 8.6875 24.181 8.6875 24.1914 8.6875C24.2018 8.6875 24.2109 8.6875 24.2188 8.6875L25.2695 10.75H26.6055L25.418 8.51172C25.7409 8.38411 25.9909 8.17708 26.168 7.89062C26.3477 7.60156 26.4375 7.27604 26.4375 6.91406V6.90625C26.4375 6.53646 26.3581 6.21745 26.1992 5.94922C26.043 5.68099 25.8138 5.47526 25.5117 5.33203C25.2122 5.1862 24.849 5.11328 24.4219 5.11328H22.0742V10.75ZM23.2539 7.82812V6.03516H24.2773C24.5742 6.03516 24.8073 6.11589 24.9766 6.27734C25.1458 6.4388 25.2305 6.65625 25.2305 6.92969V6.9375C25.2305 7.21615 25.1471 7.4349 24.9805 7.59375C24.8164 7.75 24.5872 7.82812 24.293 7.82812H23.2539ZM27.6289 10.75H31.3633V9.77734H28.8086V8.35156H31.2188V7.44531H28.8086V6.08594H31.3633V5.11328H27.6289V10.75ZM32.6055 10.75H33.6562V6.91406H34.2383L33.1172 5.26953L35.1797 10.75H35.918L37.9844 5.26953L36.8594 6.91406H37.4414V10.75H38.4922V5.11328H37.1406L35.5859 9.23828H35.5156L33.957 5.11328H32.6055V10.75ZM39.8633 10.75H41.043V5.11328H39.8633V10.75ZM44.7695 10.8945C45.2539 10.8945 45.6719 10.8073 46.0234 10.6328C46.3776 10.4583 46.6497 10.2148 46.8398 9.90234C47.0326 9.58724 47.1289 9.22135 47.1289 8.80469V5.11328H45.9492V8.69922C45.9492 9.0638 45.8477 9.35417 45.6445 9.57031C45.4414 9.78646 45.1497 9.89453 44.7695 9.89453C44.3919 9.89453 44.1003 9.78646 43.8945 9.57031C43.6888 9.35417 43.5859 9.0638 43.5859 8.69922V5.11328H42.4062V8.80469C42.4062 9.22396 42.5026 9.58984 42.6953 9.90234C42.8906 10.2148 43.1641 10.4583 43.5156 10.6328C43.8698 10.8073 44.2878 10.8945 44.7695 10.8945ZM48.4961 10.75H49.5469V6.91406H50.1289L49.0078 5.26953L51.0703 10.75H51.8086L53.875 5.26953L52.75 6.91406H53.332V10.75H54.3828V5.11328H53.0312L51.4766 9.23828H51.4062L49.8477 5.11328H48.4961V10.75Z\"\r\n                fill=\"white\"\r\n            />\r\n            <path\r\n                fillRule=\"evenodd\"\r\n                clipRule=\"evenodd\"\r\n                d=\"M8.50189 8.05306L6.57806 4.69918L10.4495 4.69828L12.3571 8.04466L12.3581 8.04466L12.3576 8.04558L12.3584 8.047L12.3568 8.04701L10.4585 11.4009L6.59204 11.417L8.502 8.05306L8.50189 8.05306Z\"\r\n                fill=\"#C3AA59\"\r\n            />\r\n            <path\r\n                fillRule=\"evenodd\"\r\n                clipRule=\"evenodd\"\r\n                d=\"M6.57757 4.69918L8.50141 8.05306L12.3579 8.047L10.449 4.69828L6.57757 4.69918Z\"\r\n                fill=\"#DAC785\"\r\n            />\r\n            <path\r\n                d=\"M10.3169 4.43652H6.40234L8.35964 7.95965L6.40234 11.2871H10.5127L12.47 7.95965L10.3169 4.43652Z\"\r\n                stroke=\"white\"\r\n            />\r\n            <defs>\r\n                <linearGradient id={uniqueGradientId} x1=\"30\" y1=\"0\" x2=\"30\" y2=\"16\" gradientUnits=\"userSpaceOnUse\">\r\n                    <stop stopColor=\"#DAC785\" />\r\n                    <stop offset=\"1\" stopColor=\"#AA944C\" />\r\n                </linearGradient>\r\n            </defs>\r\n        </svg>\r\n    );\r\n};\r\n\r\nexport default GoldPremiumBadgeSvg;\r\n","const GoldPremiumBadgeNoChevronSvg = props => {\r\n    const uniqueGradientId = `gradient_${Math.round(Math.random() * 100000)}`;\r\n    return (\r\n        <svg width=\"40\" height=\"12\" viewBox=\"0 0 40 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\r\n            <rect width=\"40\" height=\"12\" rx=\"4\" fill={`url('#${uniqueGradientId}')`} />\r\n            <path\r\n                d=\"M4.11426 6.94482H5.63184C5.97819 6.94482 6.28125 6.87533 6.54102 6.73633C6.80078 6.59733 7.00244 6.40137 7.146 6.14844C7.29183 5.89551 7.36475 5.59928 7.36475 5.25977V5.25293C7.36475 4.91569 7.29183 4.62061 7.146 4.36768C7.00244 4.11475 6.80078 3.91878 6.54102 3.77979C6.28125 3.63851 5.97819 3.56787 5.63184 3.56787H4.11426V4.38477H5.37891C5.67513 4.38477 5.90527 4.45996 6.06934 4.61035C6.23568 4.76074 6.31885 4.97607 6.31885 5.25635V5.26318C6.31885 5.54346 6.23568 5.75993 6.06934 5.9126C5.90527 6.06299 5.67513 6.13818 5.37891 6.13818H4.11426V6.94482ZM3.59814 8.5H4.63037V3.56787H3.59814V8.5ZM8.31494 8.5H9.34717V6.69531H10.1436C10.1504 6.69531 10.1584 6.69531 10.1675 6.69531C10.1766 6.69531 10.1846 6.69531 10.1914 6.69531L11.1108 8.5H12.2798L11.2407 6.5415C11.5233 6.42985 11.742 6.2487 11.897 5.99805C12.0542 5.74512 12.1328 5.46029 12.1328 5.14355V5.13672C12.1328 4.81315 12.0633 4.53402 11.9243 4.29932C11.7876 4.06462 11.5871 3.8846 11.3228 3.75928C11.0607 3.63167 10.7428 3.56787 10.3691 3.56787H8.31494V8.5ZM9.34717 5.94336V4.37451H10.2427C10.5024 4.37451 10.7064 4.44515 10.8545 4.58643C11.0026 4.7277 11.0767 4.91797 11.0767 5.15723V5.16406C11.0767 5.40788 11.0037 5.59928 10.8579 5.73828C10.7144 5.875 10.5138 5.94336 10.2563 5.94336H9.34717ZM13.1753 8.5H16.4429V7.64893H14.2075V6.40137H16.3164V5.6084H14.2075V4.41895H16.4429V3.56787H13.1753V8.5ZM17.5298 8.5H18.4492V5.14355H18.9585L17.9775 3.70459L19.7822 8.5H20.4282L22.2363 3.70459L21.252 5.14355H21.7612V8.5H22.6807V3.56787H21.498L20.1377 7.17725H20.0762L18.7124 3.56787H17.5298V8.5ZM23.8804 8.5H24.9126V3.56787H23.8804V8.5ZM28.1733 8.62646C28.5972 8.62646 28.9629 8.55013 29.2705 8.39746C29.5804 8.24479 29.8185 8.03174 29.9849 7.7583C30.1535 7.48258 30.2378 7.16243 30.2378 6.79785V3.56787H29.2056V6.70557C29.2056 7.02458 29.1167 7.27865 28.939 7.46777C28.7612 7.6569 28.506 7.75146 28.1733 7.75146C27.8429 7.75146 27.5877 7.6569 27.4077 7.46777C27.2277 7.27865 27.1377 7.02458 27.1377 6.70557V3.56787H26.1055V6.79785C26.1055 7.16471 26.1898 7.48486 26.3584 7.7583C26.5293 8.03174 26.7686 8.24479 27.0762 8.39746C27.3861 8.55013 27.7518 8.62646 28.1733 8.62646ZM31.4341 8.5H32.3535V5.14355H32.8628L31.8818 3.70459L33.6865 8.5H34.3325L36.1406 3.70459L35.1562 5.14355H35.6655V8.5H36.585V3.56787H35.4023L34.042 7.17725H33.9805L32.6167 3.56787H31.4341V8.5Z\"\r\n                fill=\"white\"\r\n            />\r\n            <defs>\r\n                <linearGradient id={uniqueGradientId} x1=\"20\" y1=\"0\" x2=\"20\" y2=\"12\" gradientUnits=\"userSpaceOnUse\">\r\n                    <stop stopColor=\"#DAC785\" />\r\n                    <stop offset=\"1\" stopColor=\"#B79F50\" />\r\n                </linearGradient>\r\n            </defs>\r\n        </svg>\r\n    );\r\n};\r\n\r\nexport default GoldPremiumBadgeNoChevronSvg;\r\n","const GoldPremiumBadgeNoBackgroundSvg = props => {\r\n    return (\r\n        <svg width=\"97\" height=\"23\" viewBox=\"0 0 97 23\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\r\n            <path\r\n                d=\"M25.2285 12.8896H28.2637C28.9564 12.8896 29.5625 12.7507 30.082 12.4727C30.6016 12.1947 31.0049 11.8027 31.292 11.2969C31.5837 10.791 31.7295 10.1986 31.7295 9.51953V9.50586C31.7295 8.83138 31.5837 8.24121 31.292 7.73535C31.0049 7.22949 30.6016 6.83757 30.082 6.55957C29.5625 6.27702 28.9564 6.13574 28.2637 6.13574H25.2285V7.76953H27.7578C28.3503 7.76953 28.8105 7.91992 29.1387 8.2207C29.4714 8.52148 29.6377 8.95215 29.6377 9.5127V9.52637C29.6377 10.0869 29.4714 10.5199 29.1387 10.8252C28.8105 11.126 28.3503 11.2764 27.7578 11.2764H25.2285V12.8896ZM24.1963 16H26.2607V6.13574H24.1963V16ZM33.6299 16H35.6943V12.3906H37.2871C37.3008 12.3906 37.3167 12.3906 37.335 12.3906C37.3532 12.3906 37.3691 12.3906 37.3828 12.3906L39.2217 16H41.5596L39.4814 12.083C40.0465 11.8597 40.484 11.4974 40.7939 10.9961C41.1084 10.4902 41.2656 9.92057 41.2656 9.28711V9.27344C41.2656 8.6263 41.1266 8.06803 40.8486 7.59863C40.5752 7.12923 40.1742 6.76921 39.6455 6.51855C39.1214 6.26335 38.4857 6.13574 37.7383 6.13574H33.6299V16ZM35.6943 10.8867V7.74902H37.4854C38.0049 7.74902 38.4128 7.8903 38.709 8.17285C39.0052 8.4554 39.1533 8.83594 39.1533 9.31445V9.32812C39.1533 9.81576 39.0075 10.1986 38.7158 10.4766C38.4287 10.75 38.0277 10.8867 37.5127 10.8867H35.6943ZM43.3506 16H49.8857V14.2979H45.415V11.8027H49.6328V10.2168H45.415V7.83789H49.8857V6.13574H43.3506V16ZM52.0596 16H53.8984V9.28711H54.917L52.9551 6.40918L56.5645 16H57.8564L61.4727 6.40918L59.5039 9.28711H60.5225V16H62.3613V6.13574H59.9961L57.2754 13.3545H57.1523L54.4248 6.13574H52.0596V16ZM64.7607 16H66.8252V6.13574H64.7607V16ZM73.3467 16.2529C74.1943 16.2529 74.9258 16.1003 75.541 15.7949C76.1608 15.4896 76.637 15.0635 76.9697 14.5166C77.307 13.9652 77.4756 13.3249 77.4756 12.5957V6.13574H75.4111V12.4111C75.4111 13.0492 75.2334 13.5573 74.8779 13.9355C74.5225 14.3138 74.012 14.5029 73.3467 14.5029C72.6859 14.5029 72.1755 14.3138 71.8154 13.9355C71.4554 13.5573 71.2754 13.0492 71.2754 12.4111V6.13574H69.2109V12.5957C69.2109 13.3294 69.3796 13.9697 69.7168 14.5166C70.0586 15.0635 70.5371 15.4896 71.1523 15.7949C71.7721 16.1003 72.5036 16.2529 73.3467 16.2529ZM79.8682 16H81.707V9.28711H82.7256L80.7637 6.40918L84.373 16H85.665L89.2812 6.40918L87.3125 9.28711H88.3311V16H90.1699V6.13574H87.8047L85.084 13.3545H84.9609L82.2334 6.13574H79.8682V16Z\"\r\n                fill=\"#927827\"\r\n            />\r\n            <path\r\n                fillRule=\"evenodd\"\r\n                clipRule=\"evenodd\"\r\n                d=\"M9.90087 11.2648L5.14109 2.96689L14.7194 2.96469L19.439 11.244L19.4416 11.244L19.4403 11.2462L19.4423 11.2498L19.4383 11.2498L14.7417 19.5476L5.17567 19.5875L9.90112 11.2648L9.90087 11.2648Z\"\r\n                fill=\"#C3AA59\"\r\n            />\r\n            <path\r\n                fillRule=\"evenodd\"\r\n                clipRule=\"evenodd\"\r\n                d=\"M5.21929 3.01666L9.84793 11.3478L19.3632 11.1997L14.7711 2.88106L5.21929 3.01666Z\"\r\n                fill=\"#DAC785\"\r\n            />\r\n            <path\r\n                d=\"M14.3921 2.31689H4.70703L9.54959 11.0335L4.70703 19.2659H14.8764L19.719 11.0335L14.3921 2.31689Z\"\r\n                stroke=\"white\"\r\n            />\r\n        </svg>\r\n    );\r\n};\r\n\r\nexport default GoldPremiumBadgeNoBackgroundSvg;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport GoldPremiumBadgeSvg from './GoldPremiumBadgeSvg';\r\nimport GoldPremiumBadgeNoChevronSvg from './GoldPremiumBadgeNoChevronSvg';\r\nimport GoldPremiumBadgeNoBackgroundSvg from './GoldPremiumBadgeNoBackgroundSvg';\r\n\r\nconst sizes = {\r\n    small: { width: 32, height: 9 },\r\n    base: { width: 40, height: 12 },\r\n    large: { width: 60, height: 16 },\r\n    extraLarge: { width: 97, height: 23 }\r\n};\r\n\r\nconst PremiumBadge = ({ size = 'base', variant }) => {\r\n    const { width, height } = sizes[size];\r\n    const isBaseOrSmall = size === 'base' || size === 'small';\r\n\r\n    if (variant === 'noBackground' && isBaseOrSmall) {\r\n        console.warn('Currently no small or base size for the noBackground PremiumBadge variant');\r\n        return null;\r\n    }\r\n\r\n    if (variant === 'noBackground') {\r\n        return <GoldPremiumBadgeNoBackgroundSvg width={width} height={height} />;\r\n    }\r\n\r\n    return isBaseOrSmall ? (\r\n        <GoldPremiumBadgeNoChevronSvg width={width} height={height} />\r\n    ) : (\r\n        <GoldPremiumBadgeSvg width={width} height={height} />\r\n    );\r\n};\r\n\r\nPremiumBadge.propTypes = {\r\n    variant: PropTypes.oneOf(['noBackground']),\r\n    size: PropTypes.oneOf(['small', 'base', 'large', 'extraLarge'])\r\n};\r\n\r\nexport default PremiumBadge;\r\n","import { Avatar } from '@fieldlevel/playbook';\r\n\r\nimport PremiumBadge from '@appCore/components/PremiumBadge/PremiumBadge';\r\nimport { IS_DEV_MODE } from '@appCore/constants/environment';\r\nimport { generateDeprecationNotice } from '@appCore/utility/consoleUtils';\r\n\r\nimport useAthleteHeadshot, { useLegacyAthleteHeadshot } from './useAthleteHeadshot';\r\n\r\n/** @typedef {import('@appCore/components/athlete/AthleteHeadshot/useAthleteHeadshot').AthleteHeadshotSize} AthleteHeadshotSize */\r\n\r\nconst HeadshotUI = ({ avatarSize, avatarAlt = 'Profile image', imgSrc, lazy, showPremiumBadge }) => (\r\n    <div className=\"relative\">\r\n        <Avatar size={avatarSize} source={imgSrc} lazy={lazy} alt={avatarAlt} />\r\n        {showPremiumBadge && (\r\n            <div className=\"absolute -bottom-1\">\r\n                <PremiumBadge size={avatarSize} />\r\n            </div>\r\n        )}\r\n    </div>\r\n);\r\n\r\n/**\r\n * @param {object} props\r\n * @param {string} [props.username] - The athlete's username. Required if props.isAnonymous = false\r\n * @param {'Small'|'Base'|'Large'} [props.size] - The size of the headshot\r\n * @param {boolean} [props.isAnonymous] - Whether the headshot should be anonymous or show the actual athlete\r\n * @param {boolean} [props.lazy] - Whether to lazy load the image of the headshot\r\n * @param {boolean} [props.liveUpdate] - Whether to listen for updates to the image and auto load\r\n * @param {boolean} [props.showPremiumBadge] - Whether to show the premium badge for the athlete\r\n * @returns {import('react').JSX.Element}\r\n */\r\nexport const LegacyAthleteHeadshot = ({\r\n    username,\r\n    size,\r\n    isAnonymous = false,\r\n    lazy = false,\r\n    liveUpdate = false,\r\n    showPremiumBadge = false\r\n}) => {\r\n    if (IS_DEV_MODE) {\r\n        generateDeprecationNotice({\r\n            message: `LegacyAthleteHeadshot has been deprecated. Please use AthleteHeadshot instead.`\r\n        });\r\n    }\r\n\r\n    const { imgSrc, avatarSize } = useLegacyAthleteHeadshot({ username, isAnonymous, size, liveUpdate });\r\n    return <HeadshotUI imgSrc={imgSrc} avatarSize={avatarSize} lazy={lazy} showPremiumBadge={showPremiumBadge} />;\r\n};\r\n\r\n/**\r\n * @param {object} props\r\n * @param {string} [props.username] - The athlete's username. Required if props.isAnonymous = false\r\n * @param {AthleteHeadshotSize} [props.size] - The size of the headshot\r\n * @param {boolean} [props.isAnonymous] - Whether the headshot should be anonymous or show the actual athlete\r\n * @param {boolean} [props.lazy] - Whether to lazy load the image of the headshot\r\n * @param {boolean} [props.liveUpdate] - Whether to listen for updates to the image and auto load\r\n * @param {boolean} [props.showPremiumBadge] - Whether to show the premium badge for the athlete\r\n * @param {string} [props.imgAlt]\r\n * @returns {import('react').JSX.Element}\r\n */\r\nconst AthleteHeadshot = ({\r\n    username,\r\n    size,\r\n    isAnonymous = false,\r\n    lazy = false,\r\n    liveUpdate = false,\r\n    showPremiumBadge = false,\r\n    imgAlt\r\n}) => {\r\n    const { imgSrc, avatarSize } = useAthleteHeadshot({ username, size, isAnonymous, liveUpdate });\r\n    return (\r\n        <HeadshotUI\r\n            imgSrc={imgSrc}\r\n            avatarSize={avatarSize}\r\n            lazy={lazy}\r\n            showPremiumBadge={showPremiumBadge}\r\n            avatarAlt={imgAlt}\r\n        />\r\n    );\r\n};\r\n\r\nexport default AthleteHeadshot;\r\n","import { useEffect, useState } from 'react';\r\n\r\nimport imageSrcManager from '@appCore/services/imageSrcManager';\r\nimport { IS_DEV_MODE } from '@appCore/constants/environment';\r\nimport { generateDeprecationNotice } from '@appCore/utility/consoleUtils';\r\n\r\n/**\r\n * @typedef {'small' | 'base' | 'large' } AthleteHeadshotSize\r\n */\r\n\r\nconst ATHLETE_HEADSHOT_SIZES = {\r\n    small: 'small',\r\n    base: 'base',\r\n    large: 'large'\r\n};\r\n\r\nconst LEGACY_ATHLETE_HEADSHOT_SIZES = {\r\n    Small: 'Small',\r\n    Base: 'Base',\r\n    Large: 'Large'\r\n};\r\n\r\nconst LEGACY_SIZE_TO_SIZE_MAP = {\r\n    [LEGACY_ATHLETE_HEADSHOT_SIZES.Small]: ATHLETE_HEADSHOT_SIZES.small,\r\n    [LEGACY_ATHLETE_HEADSHOT_SIZES.Base]: ATHLETE_HEADSHOT_SIZES.base,\r\n    [LEGACY_ATHLETE_HEADSHOT_SIZES.Large]: ATHLETE_HEADSHOT_SIZES.large\r\n};\r\n\r\nconst ATHLETE_HEADSHOT_SIZES_TO_HEADSHOT_SRC_COMPONENT_SIZE_MAP = {\r\n    [ATHLETE_HEADSHOT_SIZES.small]: 32,\r\n    [ATHLETE_HEADSHOT_SIZES.base]: 40,\r\n    [ATHLETE_HEADSHOT_SIZES.large]: 60\r\n};\r\n\r\nconst ATHLETE_HEADSHOT_SIZES_TO_AVATAR_SIZE_MAP = {\r\n    [ATHLETE_HEADSHOT_SIZES.small]: 'small',\r\n    [ATHLETE_HEADSHOT_SIZES.large]: 'large'\r\n};\r\n\r\nexport const useLegacyAthleteHeadshot = props => {\r\n    if (IS_DEV_MODE) {\r\n        generateDeprecationNotice({\r\n            message: `useLegacyAthleteHeadshot has been deprecated. Please use useAthleteHeadshot instead`\r\n        });\r\n    }\r\n\r\n    const { username, isAnonymous = false, size = LEGACY_ATHLETE_HEADSHOT_SIZES.Base, liveUpdate = false } = props;\r\n\r\n    return useAthleteHeadshot({\r\n        username,\r\n        isAnonymous,\r\n        size: LEGACY_SIZE_TO_SIZE_MAP[size],\r\n        liveUpdate\r\n    });\r\n};\r\n\r\nconst useAthleteHeadshot = ({ username, isAnonymous, size = ATHLETE_HEADSHOT_SIZES.base, liveUpdate = false }) => {\r\n    const componentSize = ATHLETE_HEADSHOT_SIZES_TO_HEADSHOT_SRC_COMPONENT_SIZE_MAP[size];\r\n    const avatarSize = ATHLETE_HEADSHOT_SIZES_TO_AVATAR_SIZE_MAP[size];\r\n\r\n    const [imgSrc, setImgSrc] = useState(\r\n        imageSrcManager.getAthleteHeadshotSrc({ username, componentSize, isAnonymous })\r\n    );\r\n\r\n    useEffect(() => {\r\n        if (!liveUpdate) return;\r\n\r\n        const onUpdated = () => {\r\n            setImgSrc(imageSrcManager.getAthleteHeadshotSrc({ username, componentSize, isAnonymous }));\r\n        };\r\n        // Unsubscribe from the athleteHeadshotCache on dismount\r\n        return imageSrcManager.subscribeToAthleteHeadshotCache(onUpdated);\r\n    }, [liveUpdate]);\r\n\r\n    return { imgSrc, avatarSize };\r\n};\r\n\r\nexport default useAthleteHeadshot;\r\n","function videoDurationFormatter(seconds) {\r\n    const rounded = Math.round(seconds);\r\n    const hours = Math.floor(rounded / 3600);\r\n    let remainingSeconds = rounded % 3600;\r\n    const minutes = Math.floor(remainingSeconds / 60);\r\n    remainingSeconds = remainingSeconds % 60;\r\n\r\n    if (hours > 0) {\r\n        return `${hours}:${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`;\r\n    } else {\r\n        return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`;\r\n    }\r\n}\r\n\r\nfunction golfHandicapFormatter(handicap) {\r\n    if (isNaN(handicap)) {\r\n        return '--';\r\n    }\r\n\r\n    return handicap < 1 ? '' + -1 * handicap : '+' + handicap;\r\n}\r\n\r\nfunction twoDecimalFormatter(num) {\r\n    if (isNaN(num)) {\r\n        return num;\r\n    }\r\n    return num.toFixed(2);\r\n}\r\n\r\nexport function truncatedStringFormatter(originalString, truncateLength) {\r\n    if (originalString == null) {\r\n        return null;\r\n    }\r\n\r\n    let truncated = originalString.substring(0, truncateLength);\r\n    let lastSpaceIndex = truncated.lastIndexOf(' ');\r\n    if (truncated.length < originalString.length) {\r\n        truncated = truncated.substring(0, lastSpaceIndex);\r\n        truncated = truncated + '…';\r\n    }\r\n    return truncated;\r\n}\r\n\r\nfunction gpaFormatter(gpa) {\r\n    if (isNaN(gpa)) {\r\n        return gpa;\r\n    }\r\n\r\n    return gpa.toFixed(1);\r\n}\r\n\r\nfunction orgLabelFormatter(athleticAssociation) {\r\n    if (!athleticAssociation) {\r\n        return 'School/Organization';\r\n    } else {\r\n        switch (athleticAssociation) {\r\n            case 'Professional':\r\n            case 'ClubHighSchool':\r\n            case 'PostGrad':\r\n            case 'TrainingFacility':\r\n                return 'Organization';\r\n            case 'HighSchool':\r\n                return 'School';\r\n            default:\r\n                return 'College';\r\n        }\r\n    }\r\n}\r\n\r\nfunction numberWithCommasFormatter(num) {\r\n    if (isNaN(num)) {\r\n        return num;\r\n    }\r\n\r\n    return num.toLocaleString('en-us');\r\n}\r\n\r\nfunction formatPhoneNumber(phoneNumberString) {\r\n    let cleaned = ('' + phoneNumberString).replace(/\\D/g, '');\r\n    let match = cleaned.match(/^(1|)?(\\d{3})(\\d{3})(\\d{4})$/);\r\n    if (match) {\r\n        let intlCode = match[1] ? '+1 ' : '';\r\n        return [intlCode, '(', match[2], ') ', match[3], '-', match[4]].join('');\r\n    }\r\n    return null;\r\n}\r\n\r\nexport {\r\n    golfHandicapFormatter,\r\n    twoDecimalFormatter,\r\n    gpaFormatter,\r\n    numberWithCommasFormatter,\r\n    orgLabelFormatter,\r\n    videoDurationFormatter,\r\n    formatPhoneNumber\r\n};\r\n","import _ from 'lodash';\r\n\r\nimport { isLoggingDisabled } from '@appCore/utility/masquerading';\r\n\r\nfunction hasOptionSet(options, optionName) {\r\n    return typeof options !== 'undefined' && options.hasOwnProperty(optionName);\r\n}\r\n\r\nexport function updateData(data) {\r\n    // dataLayer is a global object defined by the GA script\r\n    if (typeof dataLayer !== 'undefined' && dataLayer.push !== undefined) {\r\n        dataLayer.push(data);\r\n    }\r\n}\r\n\r\nexport function logImpression(action, category, options) {\r\n    let mergedOptions = Object.assign({ isNonInteraction: true }, options);\r\n    logEvent(action, category, mergedOptions);\r\n}\r\n\r\nexport function logEvent(action, category, options) {\r\n    if (!isLoggingDisabled()) {\r\n        // Do not log if there is no action.\r\n        if (typeof action === 'undefined' || !action) {\r\n            return;\r\n        }\r\n\r\n        let data = { event: 'fl.event' };\r\n\r\n        data['fl.event.action'] = action;\r\n        data['fl.event.category'] = typeof category !== 'undefined' && category ? category : 'General';\r\n        data['fl.event.label'] = hasOptionSet(options, 'label') ? options.label : undefined;\r\n        data['fl.event.value'] = hasOptionSet(options, 'value') ? options.value : undefined;\r\n        data['fl.event.isNonInteraction'] =\r\n            hasOptionSet(options, 'isNonInteraction') && options.isNonInteraction ? true : undefined;\r\n\r\n        // console.group('logEvent');\r\n        // console.log(category);\r\n        // console.log(action);\r\n        // console.log(options);\r\n        // console.log(data);\r\n        // console.groupEnd('logEvent');\r\n\r\n        updateData(data);\r\n    }\r\n}\r\n\r\nexport function logVirtualPageView(virtualPageUrl, eventAttributes) {\r\n    if (!isLoggingDisabled()) {\r\n        if (typeof eventAttributes === 'undefined') {\r\n            eventAttributes = {};\r\n        }\r\n\r\n        let defaultAttributes = {\r\n            event: 'sendVirtualPageView',\r\n            vpv: virtualPageUrl,\r\n            UserIdForGA: dataLayerUserIdForGA\r\n        };\r\n\r\n        _.merge(eventAttributes, defaultAttributes);\r\n        updateData(eventAttributes);\r\n    }\r\n}\r\n","export const isMasquerading = () => window.FLAuthOptions && window.FLAuthOptions.isMasquerading;\r\nexport const isLoggingDisabled = () => window.FLAuthOptions && window.FLAuthOptions.disableLogging;\r\n","import useUrlBuilder from '@appCore/hooks/routeTools/useUrlBuilder';\r\n\r\nimport { PATH_PATTERNS } from './shared/constants';\r\n\r\n/** @typedef {import('@appCore/utility/routingUtils').UrlBuilderService} UrlBuilderService */\r\n/** @typedef {import('@appCore/utility/routingUtils').UrlBuilderOptions} UrlBuilderOptions */\r\n\r\n/**\r\n * @callback profileDetailBuilder\r\n * @param {{ pathParams: { id: string, sportEnum: string }, searchParams?: { tab?: string }, options?: UrlBuilderOptions }} params\r\n * @returns {UrlBuilderService}\r\n */\r\n\r\n/**\r\n * @callback profileVideosDetailBuilder\r\n * @param {{ pathParams: { id: string, sportEnum: string, videoId: string }, searchParams?: { t?: string }, options?: UrlBuilderOptions }} params\r\n * @returns {UrlBuilderService}\r\n */\r\n\r\n/**\r\n * @callback profileVideosListBuilder\r\n * @param {{ pathParams: { id: string, sportEnum: string }, options?: UrlBuilderOptions }} params\r\n * @returns {UrlBuilderService}\r\n */\r\n\r\n/**\r\n * @typedef {object} profileUrlBuilder\r\n * @property {profileDetailBuilder} profileDetail\r\n * @property {profileVideosDetailBuilder} profileVideosDetail\r\n * @property {profileVideosListBuilder} profileVideosList\r\n */\r\n\r\n/** */\r\nconst urlBuilderConfig = {\r\n    profileDetail: {\r\n        reactRouterPathPattern: PATH_PATTERNS.profileDetail,\r\n        searchParamKeys: ['tab']\r\n    },\r\n    profileVideosDetail: {\r\n        reactRouterPathPattern: PATH_PATTERNS.profile_videosDetail,\r\n        searchParamKeys: ['t']\r\n    },\r\n    profileVideosList: {\r\n        reactRouterPathPattern: PATH_PATTERNS.profile_videosList\r\n    }\r\n};\r\n\r\n/**\r\n * @returns {profileUrlBuilder}\r\n */\r\nexport const useProfileUrlBuilder = () => useUrlBuilder(urlBuilderConfig);\r\n","import http from '@appCore/services/http';\r\n\r\nconst baseUrl = '/api/videoapi';\r\nconst videoUrl = '/api/video';\r\nconst detailUrl = '/api/athletevideodetail';\r\n\r\nexport const UpdateDuration = ({ videoId, duration }) =>\r\n    http.post(`${baseUrl}/updateduration/${videoId}`, { duration });\r\n\r\nexport const GetAllVideosForAthlete = ({ athleteUsername, sportEnum }) =>\r\n    http.get(`${videoUrl}/getall/${athleteUsername}`, { sportEnum });\r\n\r\nexport const GetVideoForAthlete = ({ athleteUsername, sportEnum, videoId }) =>\r\n    http.get(`${detailUrl}/get/${athleteUsername}`, { sportEnum, videoId });\r\n"],"names":["Image","_ref","src","loading","_jsx","className","alt","referrerPolicy","getMuxOptimizedUrl","_ref3","ext","muxParams","split","splice","concat","join","params","arguments","length","undefined","Object","keys","reduce","acc","key","getQueryString","_OptimizedVideoThumbnail","_ref4","imgDef","sourceDefs","includeHighRes","imgLoading","_ref2","url","test","getIsMuxThumbnail","webPSourceDefs","map","_ref5","media","srcSetDefs","width","height","push","jpgSourceDefs","some","_ref6","sourceDef","def","replace","_jsxs","children","srcSet","type","muxParamsPropType","time","PropTypes","rotate","fit_mode","flip_v","flip_h","propTypes","isRequired","props","uniqueGradientId","Math","round","random","viewBox","fill","xmlns","rx","d","fillRule","clipRule","stroke","id","x1","y1","x2","y2","gradientUnits","stopColor","offset","sizes","small","base","large","extraLarge","PremiumBadge","size","variant","isBaseOrSmall","console","warn","GoldPremiumBadgeNoBackgroundSvg","GoldPremiumBadgeNoChevronSvg","GoldPremiumBadgeSvg","HeadshotUI","avatarSize","avatarAlt","imgSrc","lazy","showPremiumBadge","Avatar","source","username","isAnonymous","liveUpdate","imgAlt","useAthleteHeadshot","ATHLETE_HEADSHOT_SIZES","LEGACY_ATHLETE_HEADSHOT_SIZES","Small","Base","Large","ATHLETE_HEADSHOT_SIZES_TO_HEADSHOT_SRC_COMPONENT_SIZE_MAP","ATHLETE_HEADSHOT_SIZES_TO_AVATAR_SIZE_MAP","componentSize","setImgSrc","useState","imageSrcManager","getAthleteHeadshotSrc","useEffect","subscribeToAthleteHeadshotCache","onUpdated","videoDurationFormatter","seconds","rounded","hours","floor","remainingSeconds","minutes","toString","padStart","truncatedStringFormatter","originalString","truncateLength","truncated","substring","lastSpaceIndex","lastIndexOf","numberWithCommasFormatter","num","isNaN","toLocaleString","formatPhoneNumber","phoneNumberString","match","hasOptionSet","options","optionName","hasOwnProperty","updateData","data","dataLayer","logImpression","action","category","logEvent","assign","isNonInteraction","isLoggingDisabled","event","label","value","window","FLAuthOptions","disableLogging","urlBuilderConfig","profileDetail","reactRouterPathPattern","PATH_PATTERNS","searchParamKeys","profileVideosDetail","profile_videosDetail","profileVideosList","profile_videosList","useProfileUrlBuilder","useUrlBuilder","UpdateDuration","videoId","duration","http","post","GetAllVideosForAthlete","athleteUsername","sportEnum","get","GetVideoForAthlete"],"sourceRoot":""}