{"version":3,"file":"navigation.min.js","mappings":"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","sources":["webpack://@thesportingnews/frontend/./assets/js/common/_constants.js","webpack://@thesportingnews/frontend/./assets/js/components/helpers/_observer-handler.js","webpack://@thesportingnews/frontend/./assets/js/components/helpers/_media_query.js","webpack://@thesportingnews/frontend/./assets/js/components/helpers/_element-handlers.js","webpack://@thesportingnews/frontend/./assets/js/furniture/_menu.js","webpack://@thesportingnews/frontend/./assets/js/furniture/_edition.js","webpack://@thesportingnews/frontend/./assets/js/components/navigation/navigation.js","webpack://@thesportingnews/frontend/./assets/js/components/navigation/mouse.js","webpack://@thesportingnews/frontend/./assets/js/components/navigation/keyboard.js"],"sourcesContent":["// Viewport breakpoints\nexport const isMobile = () => {\n    return window.innerWidth < 768;\n};\n\nexport const isDesktop = () => {\n    return window.innerWidth >= 768;\n};\n\n// News page items count\n// Note: Changing the count wil require to set the number of child of 'top-news__container' to hide.\nexport const newsCount = {\n    initialItemsCount: 21,\n    addItemsCount: 21,\n};\n\nexport const isTemplateEnv = () => {\n    const hostname = window.location.hostname;\n    return (\n        hostname === \"c1.non-prod.ng-sportingnews.com\" ||\n        hostname === \"local.ng-sportingnews.com\" ||\n        hostname === \"127.0.0.1\"\n    );\n};\n\nexport const isFirefox = navigator.userAgent.toLowerCase().includes('firefox');\n\nexport const isInViewport = (str) => {\n    const elem = document.querySelector(str);\n    var rect = elem.getBoundingClientRect();\n\n    return (\n        rect.bottom > 0 &&\n        rect.right > 0 &&\n        rect.left < (window.Width || document.documentElement.clientWidth) &&\n        rect.top < (window.Height || document.documentElement.clientHeight)\n    );\n};\n\nexport const showElem = (e) => {\n    e.classList.remove(\"inactive\");\n    e.classList.add(\"active\");\n    setTimeout(() => {\n        e.classList.add(\"show\");\n    }, 100);\n};\n\nexport const hideElem = (e) => {\n    e.classList.remove(\"show\");\n\n    setTimeout(() => {\n        e.classList.remove(\"active\");\n        e.classList.add(\"inactive\");\n    }, 500);\n};\n\n// Device Specific\nexport const isIosDevices = () => {\n    return /iPad|iPhone|iPod/.test(navigator.userAgent);\n};\n\nexport const isSafari = () => {\n    return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n};\n\nexport const updateLinkBehavior = e => {\n    const hostname = window.location.hostname;\n    const pattern = /(ar\\.nba)|(nba\\.com\\/australia)|(ca\\.nba)|(es\\.nba)|(nba\\.com\\/japan)|(in\\.nba)|(mx\\.nba)/;\n    const int = \"internal\";\n    const ext = \"external\"\n    const setTarget = (elem,str) => elem.setAttribute('target', str);\n    const setRelation = (elem,str) => elem.setAttribute('rel', str);\n\n    if(e.href) {\n\n        if(e.href.match(hostname) || (!hostname.match(/(c1s2\\.)|(staging\\.)/) && hostname.match(/sportingnews\\.com/) && (e.href.match(/sportingnews\\.com/) || e.href.match(pattern)))) { // For internal links\n            setTarget(e, '_self');\n\n            if(!e.rel.match(/internal/)) {\n                setRelation(e, int);\n            };\n        } else { // For external links\n            setTarget(e, '_blank');\n\n            if(!e.rel.match(/external/)) {\n                setRelation(e, ext);\n            };\n        };\n    };\n};\n\nexport const updateLinksBehavior = () => {\n    const links = [\n        document.querySelectorAll('#tickerNavigation a'), // Default Ticker links\n        document.querySelectorAll('#sibNbaTicker a'), // SIB NBA links\n        document.querySelectorAll('footer a'), // Footer links\n    ]\n\n    links.forEach( e => {\n        if(e.length > 0 ) {\n            e.forEach( elm => {\n                updateLinkBehavior(elm);\n            })\n        };\n    });\n};\n","export const monitorForChanges = (selector, callback) => {\n    const targetElement = document.querySelector(selector)\n\n    const config = { attributes: true, childList: true, subtree: true }\n\n    const observer = new MutationObserver(callback)\n\n    observer.observe(targetElement, config)\n}\n\nconst waitForElm = (getElementFunction) => {\n    return new Promise(resolve => {\n        const element = getElementFunction()\n        if (element) {\n            return resolve(element)\n        }\n\n        const observer = new MutationObserver(mutations => {\n            const element = getElementFunction()\n            if (element) {\n                resolve(element)\n                observer.disconnect()\n            }\n        });\n\n        observer.observe(document.body, {\n            childList: true,\n            subtree: true\n        });\n    });\n}\n\nexport const waitForElmBySelectorIndex = (selector, index) => {\n    return waitForElm(() => document.querySelectorAll(selector)[index])\n}\n\nexport const lazyLoadHandler = (selector, articleImage, closestItem, removeClassname) => {\n    const targetElements = document.querySelectorAll(selector)\n\n    if (targetElements) {\n        let indexCount = 0\n        const imageObserver = new IntersectionObserver(\n            (entries, imgObserver) => {\n                for (const entry of entries) {\n                    if (entry.isIntersecting) {\n                        const lazyImage = entry.target\n                        const loadImage = document.querySelectorAll(articleImage)[indexCount]\n\n                        loadImage.src = loadImage.dataset.src\n                        loadImage.closest(closestItem).classList.remove(removeClassname)\n                        lazyImage.remove()\n\n                        indexCount += 1\n                        imgObserver.unobserve(lazyImage)\n                    }\n                }\n            },\n            { threshold: 0.5 }\n        )\n\n        for (const targetElement of targetElements) {\n            imageObserver.observe(targetElement)\n        }\n    }\n}\n\nexport const loadMoreItemsHandler = (itemsContainer, loadCount, addLoadCount, loadMoreButton) => {\n    if (loadCount >= itemsContainer.length) loadMoreButton.remove()\n    loadMoreButton.addEventListener('click', () => {\n        if (loadCount <= itemsContainer.length) {\n            const setLoadCount = loadCount + addLoadCount\n            const setItemsContainer = itemsContainer.slice(loadCount, setLoadCount)\n\n            for (const setItemContainer of setItemsContainer) {\n                setItemContainer.style.display = 'block'\n            }\n\n            loadCount += addLoadCount\n\n            if (loadCount >= itemsContainer.length) {\n                loadMoreButton.remove()\n            }\n        }\n\n        if (loadMoreButton.innerHTML !== 'Load More') loadMoreButton.innerHTML = 'Load More'\n    })\n}\n\nexport const removeServiceWorker = () => {\n    if ('serviceWorker' in window.navigator) {\n        window.addEventListener('load', () => {\n            window.navigator.serviceWorker.getRegistrations().then((registrations) => {\n                if (registrations.length > 0) {\n                    const unregisterServiceWorkers = ['workbox-54e9ef81.js', 'sw.js'];\n                    for (const registration of registrations) {\n                        if (!registration.active) {\n                            continue;\n                        }\n                        unregisterServiceWorkers.forEach((worker) => {\n                            if (registration.active.scriptURL.includes(worker)) {\n                                registration.unregister();\n                            }\n                        });\n                    }\n                }\n            })\n        })\n    }\n}\n\nexport const lazyLoadTweetsHandler = () => {\n    const twitterTweets = document.querySelectorAll('.twitter-tweet')\n    const txtArray = []\n\n    if (twitterTweets.length > 0) {\n        twitterTweets.forEach((tweet, index) => {\n            const twitterLink = tweet.querySelector('a').getAttribute('href')\n            const div = document.createElement('div')\n            div.className = 'lozad'\n            div.setAttribute('data-twitter-src', twitterLink)\n            div.setAttribute('data-order', index)\n            tweet.parentNode.replaceChild(div, tweet)\n            txtArray.push(tweet.innerHTML)\n        })\n\n\n        const observer = lozad('.lozad', {\n            load(element) {\n                const bq = document.createElement('blockquote')\n                bq.className = 'twitter-tweet'\n\n                const div = document.createElement('div')\n                div.innerHTML = txtArray[element.dataset.order]\n                bq.append(div)\n\n                const script = document.createElement('script')\n                script.src = 'https://platform.twitter.com/widgets.js'\n                script.charset = 'utf8'\n                script.async = true\n\n                element.insertAdjacentElement('beforeEnd', bq)\n                element.insertAdjacentElement('beforeEnd', script)\n            },\n        })\n        observer.observe()\n    }\n}\n\nexport function debounce(callback) {\n    let timeoutId;\n\n    return function () {\n      clearTimeout(timeoutId);\n      timeoutId = setTimeout(callback, 300);\n    };\n}\n","const handleMediaQueryChange = (mobileCallback, desktopCallback) => {\n    const mediaQueryMobile = '(max-width: 767px)';\n    const mediaQueryListMobile = window.matchMedia(mediaQueryMobile);\n\n    const mediaQueryDesktop = '(min-width: 768px)';\n    const mediaQueryListDesktop = window.matchMedia(mediaQueryDesktop);\n\n    const handleMobileChange = (event) => {\n        if (event.matches && mobileCallback) {\n            mobileCallback();\n        }\n    };\n\n    const handleDesktopChange = (event) => {\n        if (event.matches && desktopCallback) {\n            desktopCallback();\n        }\n    };\n\n    mediaQueryListMobile.addEventListener('change', handleMobileChange);\n    mediaQueryListDesktop.addEventListener('change', handleDesktopChange);\n\n    // Initial check for the current state\n    handleMobileChange(mediaQueryListMobile);\n    handleDesktopChange(mediaQueryListDesktop);\n};\n\nexport default handleMediaQueryChange;\n","export const getNextElementUntil = (element, selector) => {\n    // Setup siblings array and get next sibling\n    const siblings = [];\n    let next = element.nextElementSibling;\n\n    // Loop through all siblings\n    while (next) {\n        // If the matching item is found, quit\n        if (selector && next.matches(selector)) break;\n\n        // Otherwise, push to array\n        siblings.push(next);\n\n        // Get the next sibling\n        next = next.nextElementSibling;\n    }\n\n    return siblings;\n};\n\nexport const countElements = (elements, displayLength) => {\n    const selectElements = document.querySelectorAll(elements);\n    const displayElement = document.querySelector(displayLength);\n\n    // Check if selectElements are already loaded\n    if (selectElements && displayElement) {\n        // Display element length\n        displayElement.innerHTML = selectElements.length;\n    }\n};\n\nexport const getSiblings = (element) => {\n    return Array.from(element.parentNode.children).filter(\n        (child) => child !== element,\n    );\n};\n\nexport const adjustFontScale = (selector) => {\n    if (selector) {\n        const containers = selector.querySelectorAll(\"a\");\n        const CONTAINER_PADDING = 24;\n\n        containers.forEach((container) => {\n            const text = container.querySelector(\"p, span\");\n            if (text) {\n                text.classList.remove(\"smaller-size\", \"one-word\");\n            }\n        });\n\n        containers.forEach((container) => {\n            const text = container.querySelector(\"p, span\");\n            if (!text) return;\n\n            const trimmedText = text.textContent.trim();\n            const words = trimmedText\n                .split(/\\s+/)\n                .filter((word) => word.length > 0);\n\n            if (words.length === 1) {\n                text.classList.add(\"one-word\");\n            }\n\n            if (text.clientWidth > container.clientWidth - CONTAINER_PADDING) {\n                text.classList.add(\"smaller-size\");\n            }\n        });\n    }\n};\n","/**\n * TODO: This file contains too many responsibilities and needs refactoring.\n *\n * PLAN: Break this into modular, feature-based files.\n * Suggested structure:\n *\n * /js/furniture/navigation.js\n * ├── shared/\n * ├── mobile/\n * └── desktop/\n *\n */\n\nimport {\n    debounce,\n    monitorForChanges,\n} from \"../components/helpers/_observer-handler\";\nimport handleMediaQueryChange from \"../components/helpers/_media_query\";\nimport { isFirefox, isIosDevices, isSafari } from \"../common/_constants\";\nimport { adjustFontScale } from \"../components/helpers/_element-handlers\";\n\n// Mobile Sidebar Menu\nexport const toggleSidebarHiddenVisible = (\n    buttonSelector,\n    sidebarSelector,\n    featureMenu,\n) => {\n    if (!buttonSelector || !sidebarSelector) {\n        return;\n    }\n\n    if (sidebarSelector.classList.contains(\"hidden\")) {\n        sidebarSelector.classList.remove(\"hidden\");\n    }\n\n    const toggleSidebarClickHandler = () => {\n        sidebarSelector.classList.toggle(\"translate-x-full\");\n        sidebarSelector.classList.toggle(\"translate-x-0\");\n        document.body.classList.toggle(\"sidebar-expanded\");\n\n        if (isIosDevices()) {\n            document.body.classList.toggle(\"fixed\");\n        }\n    };\n\n    if (!buttonSelector._clickHandlerAdded) {\n        buttonSelector.addEventListener(\"click\", toggleSidebarClickHandler);\n        buttonSelector._clickHandlerAdded = true;\n    }\n\n    adjustFontScale(featureMenu);\n};\n\nconst toggleSidebarOnDesktop = (sidebar) => {\n    const sidebarSelector = document.querySelector(sidebar);\n\n    if (sidebarSelector.length === 0) {\n        return;\n    }\n\n    if (sidebarSelector.classList.contains(\"translate-x-0\")) {\n        sidebarSelector.classList.toggle(\"translate-x-full\");\n        sidebarSelector.classList.toggle(\"translate-x-0\");\n        sidebarSelector.classList.add(\"hidden\");\n        document.body.classList.toggle(\"sidebar-expanded\");\n\n        if (isIosDevices()) {\n            document.body.classList.toggle(\"fixed\");\n        }\n    }\n};\n\nconst adjustGridRowForMobileMenus = (menuId) => {\n    const parentMenuElement = document.querySelector(menuId);\n\n    if (!parentMenuElement) return;\n\n    const numberOfMenuItems = parentMenuElement?.children.length;\n    const gridRowsNumber = Math.ceil(numberOfMenuItems / 2);\n    parentMenuElement.style.gridTemplateRows = `repeat(${gridRowsNumber}, 1fr)`;\n};\n\nconst toggleMobileSidebarMenu = () => {\n    const burgerMenu = document.querySelector(\"#burgerMenu\");\n    const sidebarMenu = document.querySelector(\"#sidebarMenu\");\n    const featuredMenu = document.querySelector(\"#featured-sports\");\n    const sidebarCloseButton = document.querySelector(\"#sidebarCloseButton\");\n    const primaryMenuLocator = \"#sidebarPrimaryMenu\";\n    const additionalMenuLocator = \"#sidebarAdditionalMenu\";\n    document.querySelector(\"#burgerMenu\");\n\n    handleMediaQueryChange(\n        window.addEventListener(\n            \"resize\",\n            debounce(adjustFontScale(featuredMenu)),\n        ),\n        null,\n    );\n    adjustGridRowForMobileMenus(primaryMenuLocator);\n    adjustGridRowForMobileMenus(additionalMenuLocator);\n    toggleSidebarHiddenVisible(burgerMenu, sidebarMenu, featuredMenu);\n    toggleSidebarHiddenVisible(sidebarCloseButton, sidebarMenu, featuredMenu);\n};\n\nexport const expandMobileSidebarMenu = () => {\n    const sidebarMenuLocator = \"#sidebarMenu\";\n\n    const mobileSidebarHandler = () => toggleMobileSidebarMenu();\n\n    const desktopSidebarHandler = () => {\n        toggleSidebarOnDesktop(sidebarMenuLocator);\n    };\n\n    handleMediaQueryChange(mobileSidebarHandler, desktopSidebarHandler);\n};\n\nconst resetMobileNavScrollBehavour = () => {\n    const mainNavigation = document.querySelector(\"#mainNavigation\");\n    const secondaryMenu = document.querySelector(\"#secondaryMenu\");\n\n    if (mainNavigation.classList.contains(\"condensed-state\"))\n        mainNavigation.classList.remove(\"condensed-state\");\n    if (mainNavigation.classList.contains(\"expanded-state\"))\n        mainNavigation.classList.remove(\"expanded-state\");\n    if (secondaryMenu?.classList.contains(\"condensed-state\"))\n        secondaryMenu.classList.remove(\"condensed-state\");\n    if (secondaryMenu?.classList.contains(\"expanded-state\"))\n        secondaryMenu.classList.remove(\"expanded-state\");\n\n    window.removeEventListener(\"scroll\", setMobileNavStates);\n};\n\nlet mobileLastScrollTop = 0;\nconst setMobileNavStates = () => {\n    const mainNavigation = document.querySelector(\"#mainNavigation\");\n    const secondaryMenu = document.querySelector(\"#secondaryMenu\");\n    const activeSecondaryMenuDropdown = document.querySelector(\n        \"[data-has-dropdown]:not(.opacity-0)\",\n    );\n    const activeSecondaryMenu = document.querySelector(\n        \"[data-menu-has-dropdown].font-bold\",\n    );\n    const secondaryMenuChevron =\n        activeSecondaryMenuDropdown?.parentElement.querySelector(\n            \"[data-menu-chevron]\",\n        );\n\n    if (!mainNavigation) return;\n\n    let scrollTop = window.scrollY || document.documentElement.scrollTop;\n\n    if (scrollTop > mobileLastScrollTop) {\n        mainNavigation.classList.add(\"condensed-state\");\n        mainNavigation.classList.remove(\"expanded-state\");\n        secondaryMenu?.classList.add(\"condensed-state\");\n        secondaryMenu?.classList.remove(\"expanded-state\");\n        activeSecondaryMenuDropdown?.classList.add(\n            \"opacity-0\",\n            \"pointer-events-none\",\n        );\n        activeSecondaryMenu?.classList.remove(\"font-bold\");\n        secondaryMenuChevron?.classList.add(\"rotate-180\");\n    } else {\n        mainNavigation.classList.remove(\"condensed-state\");\n        mainNavigation.classList.add(\"expanded-state\");\n        secondaryMenu?.classList.remove(\"condensed-state\");\n        secondaryMenu?.classList.add(\"expanded-state\");\n    }\n\n    mobileLastScrollTop = scrollTop;\n};\n\nconst mobileNavScrollBehavour = () => {\n    window.addEventListener(\"scroll\", setMobileNavStates);\n};\n\nexport const condensedMobileNavigationBar = () => {\n    handleMediaQueryChange(\n        mobileNavScrollBehavour,\n        resetMobileNavScrollBehavour,\n    );\n};\n\n// Mobile Edition Menu\nconst toggleEditionMenu = (button, buttonArrow, editions) => {\n    const buttonSelector = document.querySelector(button);\n    const buttonArrowSelector = document.querySelector(buttonArrow);\n    const editionsSelector = document.querySelector(editions);\n\n    if (!buttonSelector || !editionsSelector || !buttonArrowSelector) {\n        return;\n    }\n\n    const editionsContainer = editionsSelector?.firstElementChild;\n    const expandedHeight = `${editionsContainer.offsetHeight}px`;\n    const collapsedHeight = \"0px\";\n    editionsSelector.style.height = collapsedHeight;\n\n    const toggleeditionClickHandler = () => {\n        const currentHeight = editionsSelector.style.height;\n\n        editionsSelector.style.height =\n            currentHeight === collapsedHeight\n                ? expandedHeight\n                : collapsedHeight;\n\n        // Toggle the class for the button\n        buttonArrowSelector.classList.toggle(\"open\");\n    };\n\n    if (!buttonSelector._clickHandlerAdded) {\n        buttonSelector.addEventListener(\"click\", toggleeditionClickHandler);\n        buttonSelector._clickHandlerAdded = true;\n    }\n};\n\nexport const expandMobileEditionMenu = () => {\n    const editionButtonLocator = \"#mobileEditionButton\";\n    const editionsMenuLocator = \"#mobileEditionsMenu\";\n    const editionButtonArrowLocator = \"#mobileEditionButtonArrow\";\n\n    const mobileEditionsHandler = () => {\n        toggleEditionMenu(\n            editionButtonLocator,\n            editionButtonArrowLocator,\n            editionsMenuLocator,\n        );\n    };\n\n    handleMediaQueryChange(mobileEditionsHandler, null);\n};\n\n// Mobile Sub Menu Condensed/Expanded State\nconst touchEventHandler = (secondaryMenu, thirdLevel) => {\n    let startX = 0;\n    let isSwiping = false;\n\n    const secondaryMenuContainer = document.querySelector(secondaryMenu);\n    const thirdLevelContainer = document.querySelector(thirdLevel);\n    const thirdLevelTitle = thirdLevelContainer.querySelector(\"div\");\n\n    secondaryMenuContainer.addEventListener(\"touchstart\", (event) => {\n        startX = event.touches[0].clientX;\n        isSwiping = true;\n\n        thirdLevelTitle.classList.add(\n            \"transition-all\",\n            \"duration-300\",\n            \"ease-sidebar-menu\",\n        );\n        thirdLevelTitle.style.width = `${thirdLevelTitle.offsetWidth}px`;\n    });\n\n    secondaryMenuContainer.addEventListener(\"touchmove\", (event) => {\n        if (!isSwiping) return;\n\n        const currentX = event.touches[0].clientX;\n        const deltaX = currentX - startX;\n\n        if (deltaX < 0) {\n            thirdLevelTitle.style.width = 0;\n        }\n    });\n\n    secondaryMenuContainer.addEventListener(\"touchend\", () => {\n        isSwiping = false;\n    });\n};\n\nconst swipeGestureHandler = () => {\n    const subMenuLocator = \"#secondaryMenu\";\n    const subMenuItemsLocator = \"#mobileSecondaryNavigation\";\n    const thirdLevelLocator = \"#secondaryMenu div #brandLogoAndName\";\n    const activeSportLogoLocator =\n        \"#secondaryMenu div #brandLogoAndName #activeSportLogo\";\n\n    const mobileSecondaryNavigation =\n        document.querySelector(subMenuItemsLocator);\n    const activeSportLogo = document.querySelector(activeSportLogoLocator);\n\n    if (!activeSportLogo) return;\n\n    if (mobileSecondaryNavigation) {\n        const isHorizontallyScrollable =\n            mobileSecondaryNavigation.scrollWidth >\n            mobileSecondaryNavigation.clientWidth;\n\n        if (isHorizontallyScrollable) {\n            touchEventHandler(subMenuLocator, thirdLevelLocator);\n        }\n    }\n};\n\nexport const toggleMobileSubMenuLogo = () => {\n    handleMediaQueryChange(swipeGestureHandler, null);\n    handleMediaQueryChange(\n        window.addEventListener(\"resize\", debounce(swipeGestureHandler)),\n        null,\n    );\n};\n\n// Desktop Hover state of sports menu upon hovering more menu\nconst sportMenusHoverHandler = async () => {\n    const moreMenu = document.querySelector(\"#desktopAdditionalMenu\");\n\n    if (!moreMenu) {\n        return;\n    }\n\n    moreMenu.addEventListener(\"mouseover\", () =>\n        toggleSportMenusTextColor(true),\n    );\n    moreMenu.addEventListener(\"mouseout\", () =>\n        toggleSportMenusTextColor(false),\n    );\n\n    function toggleSportMenusTextColor(isHovered) {\n        const sportsMenu = moreMenu.previousElementSibling;\n\n        if (!sportsMenu) {\n            return;\n        }\n\n        if (isHovered) {\n            sportsMenu.classList.add(\"text-d1\");\n        } else {\n            sportsMenu.classList.remove(\"text-d1\");\n        }\n    }\n\n    const additionalMenuColumns = document.querySelectorAll(\n        \"[data-additional-sub-menu-columns]\",\n    );\n\n    await preSetHoverBoldText(additionalMenuColumns, \"column\");\n};\n\n// Desktop navigation logo condensed state\nlet desktopLastScrollTop = 0;\nconst updateDesktopLogo = () => {\n    let scrollTop = window.scrollY || document.documentElement.scrollTop;\n    const tsnDesktopLogo = document.querySelector(\"#tsnLogo\");\n    const expandedLogoImgDiv = document.querySelector(\"#expanded-logo\");\n    const condensedLogoImgDiv = document.querySelector(\"#condensed-logo\");\n\n    if (!tsnDesktopLogo) {\n        return;\n    }\n\n    if (scrollTop > desktopLastScrollTop) {\n        // Enable transition on the container\n        tsnDesktopLogo.classList.add(\"nav-logo--transition\");\n\n        // Hide expanded logo smoothly\n        expandedLogoImgDiv.classList.remove(\"logo-expanded--visible\");\n        expandedLogoImgDiv.classList.add(\"logo-expanded--hidden\");\n\n        // Show condensed logo smoothly\n        condensedLogoImgDiv.classList.remove(\"logo-condensed--hidden\");\n        condensedLogoImgDiv.classList.add(\"logo-condensed--visible\");\n    } else {\n        // Hide condensed logo smoothly\n        condensedLogoImgDiv.classList.remove(\"logo-condensed--visible\");\n        condensedLogoImgDiv.classList.add(\"logo-condensed--hidden\");\n\n        // Show expanded logo smoothly\n        expandedLogoImgDiv.classList.remove(\"logo-expanded--hidden\");\n        expandedLogoImgDiv.classList.add(\"logo-expanded--visible\");\n    }\n    desktopLastScrollTop = scrollTop;\n};\n\nconst toggleTSNLogo = () => {\n    let ticking = false;\n\n    const scrollHandler = () => {\n        if (!ticking) {\n            window.requestAnimationFrame(() => {\n                updateDesktopLogo();\n                ticking = false;\n            });\n\n            ticking = true;\n        }\n    };\n\n    updateDesktopLogo();\n\n    return scrollHandler;\n};\n\nconst enableToggleTSNLogo = () => {\n    const isExpandedLogoOnly = document.querySelector(\"[data-expanded-logo]\");\n    if (isExpandedLogoOnly) return;\n\n    updateDesktopLogo();\n    window.addEventListener(\"scroll\", toggleTSNLogo);\n};\n\nconst disableToggleTSNLogo = () => {\n    const tsnDesktopLogo = document.querySelector(\"#tsnLogo\");\n    const isExpandedLogoOnly = document.querySelector(\"[data-expanded-logo]\");\n    const expandedLogoImgDiv = document.querySelector(\"#expanded-logo\");\n    const condensedLogoImgDiv = document.querySelector(\"#condensed-logo\");\n\n    if (isExpandedLogoOnly) return;\n\n    if (\n        tsnDesktopLogo &&\n        condensedLogoImgDiv.classList.contains(\"logo-condensed--visible\")\n    ) {\n        // Show expanded logo smoothly\n        expandedLogoImgDiv.classList.remove(\"logo-expanded--hidden\");\n        expandedLogoImgDiv.classList.add(\"logo-expanded--visible\");\n\n        // Hide condensed logo smoothly\n        condensedLogoImgDiv.classList.remove(\"logo-condensed--visible\");\n        condensedLogoImgDiv.classList.add(\"logo-condensed--hidden\");\n    }\n    window.removeEventListener(\"scroll\", toggleTSNLogo);\n};\n\nexport const condensedStateDesktopLogo = () => {\n    handleMediaQueryChange(disableToggleTSNLogo, enableToggleTSNLogo);\n};\n\n// Desktop sub navigation height with teams handlers\nconst setSubNavItemsHeight = () => {\n    const subNavContainers = document.querySelectorAll(\n        \"#desktopNavigation [data-has-dropdown]\",\n    );\n\n    subNavContainers.forEach((subNavContainer) => {\n        const menu = subNavContainer.querySelector(\"[data-sub-menu]\");\n        const teams = subNavContainer.querySelector(\"[data-sub-menu-team]\");\n\n        if (teams?.classList.contains(\"md:hidden\")) return;\n\n        if (!menu || menu.classList.contains(\"md:hidden\")) return;\n\n        const TEAM_NAME_MAX_WIDTH = 148;\n        const items = menu.querySelector(\"ul\");\n        const titles = items.querySelectorAll(\"a\");\n        let longestTitleWidth = 0;\n\n        titles.forEach((title) => {\n            if (\n                title.clientWidth > TEAM_NAME_MAX_WIDTH &&\n                title.clientWidth > longestTitleWidth\n            ) {\n                longestTitleWidth = title.clientWidth;\n            }\n        });\n\n        if (longestTitleWidth > TEAM_NAME_MAX_WIDTH) {\n            titles.forEach((title) => {\n                title.style.width = `${longestTitleWidth}px`;\n            });\n        }\n\n        if (!teams || !isSafari()) return;\n\n        if (menu.scrollHeight - 1 > menu.clientHeight) {\n            const contentHeight = menu.scrollHeight;\n\n            menu.style.height = `${contentHeight}px`;\n        }\n    });\n};\n\nconst observeTeamsContainerHeight = () => {\n    let prevHeight = null;\n    const teamsContainers = document.querySelector(\n        \"#desktopNavigation [data-sub-menu-team]\",\n    );\n\n    if (!teamsContainers) return;\n\n    const teamsContainerResize = new ResizeObserver((entries) => {\n        let rect = entries[0].contentRect;\n        let height = rect.height;\n\n        if (prevHeight !== null && height !== prevHeight) {\n            setSubNavItemsHeight();\n        }\n\n        prevHeight = height;\n    });\n\n    if (teamsContainers) {\n        teamsContainerResize.observe(teamsContainers);\n    }\n\n    setSubNavItemsHeight();\n};\n\nconst sportDropdownWidthSafari = () => {\n    const subNavContainers = document.querySelectorAll(\n        \"#desktopNavigation [data-has-dropdown]\",\n    );\n\n    if (!isSafari() || subNavContainers.length === 0) return;\n\n    subNavContainers.forEach((subNavContainer) => {\n        const menu = subNavContainer.querySelector(\"[data-sub-menu]\");\n\n        if (!menu) return;\n\n        const container = menu.querySelector(\"ul\");\n        const items = container.querySelectorAll(\"li\");\n        const twoColumnsSubMenuDropdown = items.length > 10;\n\n        if (twoColumnsSubMenuDropdown) {\n            container.style.width = `${container.offsetWidth * 2}px`;\n        }\n    });\n};\n\nconst sportSubMenuHoverBold = async () => {\n    const activeSubMenuItems = document.querySelectorAll(\n        \"#desktopSecondaryNavigation > li\",\n    );\n    await preSetHoverBoldText(activeSubMenuItems, \"row\");\n};\n\nexport const updateSubNavItemStyles = () => {\n    handleMediaQueryChange(null, sportSubMenuHoverBold);\n    handleMediaQueryChange(null, observeTeamsContainerHeight);\n    handleMediaQueryChange(null, sportDropdownWidthSafari);\n};\n\n// Desktop ticker navigation dropdown offset position & hover state\nconst toggleDropdown = (ticker, tickerNavigation, dropdown, isHovered) => {\n    if (isHovered) {\n        dropdown.classList.add(\"visible\", \"opacity-100\");\n        dropdown.classList.remove(\"invisible\", \"opacity-0\");\n        ticker.classList.add(\"text-white-js\");\n        tickerNavigation.classList.add(\"grey-text-js\");\n    } else {\n        dropdown.classList.add(\"invisible\", \"opacity-0\");\n        dropdown.classList.remove(\"visible\", \"opacity-100\");\n        ticker.classList.remove(\"text-white-js\");\n        tickerNavigation.classList.remove(\"grey-text-js\");\n    }\n};\n\nconst setupTickerHover = (ticker, tickerNavigation, dropdown) => {\n    let isTickerHovered = false;\n\n    const handleTickerMouseOver = () => {\n        isTickerHovered = true;\n        toggleDropdown(ticker, tickerNavigation, dropdown, true);\n    };\n\n    const handleTickerMouseOut = (event) => {\n        if (\n            !ticker.contains(event.relatedTarget) &&\n            !dropdown.contains(event.relatedTarget)\n        ) {\n            isTickerHovered = false;\n            toggleDropdown(ticker, tickerNavigation, dropdown, false);\n        }\n    };\n\n    const handleDropdownMouseOver = () => {\n        if (isTickerHovered) {\n            toggleDropdown(ticker, tickerNavigation, dropdown, true);\n        }\n    };\n\n    const handleDropdownMouseOut = (event) => {\n        if (isTickerHovered && !ticker.contains(event.relatedTarget)) {\n            toggleDropdown(ticker, tickerNavigation, dropdown, false);\n        }\n    };\n\n    ticker.addEventListener(\"mouseover\", handleTickerMouseOver);\n    ticker.addEventListener(\"mouseout\", handleTickerMouseOut);\n    dropdown.addEventListener(\"mouseover\", handleDropdownMouseOver);\n    dropdown.addEventListener(\"mouseout\", handleDropdownMouseOut);\n};\n\nexport const nbaTickerHoverHandler = () => {\n    const nbaTeamsTicker = document.querySelector(\"#nbaTeamsTicker\");\n    const nbaGlobalTicker = document.querySelector(\"#nbaGlobalTicker\");\n    const nbaTeamsDropdown = document.querySelector(\"#nbaTeamsDropdown\");\n    const nbaGlobalDropdown = document.querySelector(\"#nbaGlobalDropdown\");\n    const tickerNavigation = document.querySelector(\"#tickerNavigation\");\n\n    // The navigation ticker is sometimes not present on the page\n    // This can happen when is_nba_sib is set to true and page.nba_ticker_menu is empty\n    if (!tickerNavigation) {\n        return;\n    }\n\n    if (nbaTeamsTicker && nbaTeamsDropdown) {\n        setupTickerHover(nbaTeamsTicker, tickerNavigation, nbaTeamsDropdown);\n    }\n\n    if (nbaGlobalTicker && nbaGlobalDropdown) {\n        setupTickerHover(nbaGlobalTicker, tickerNavigation, nbaGlobalDropdown);\n    }\n};\n\nconst alignTickerDropdownToLeft = () => {\n    const tickerNav = document.querySelector(\"#tickerNavigation\");\n\n    // The navigation ticker is sometimes not present on the page\n    // This can happen when is_nba_sib is set to true and page.nba_ticker_menu is empty\n    if (!tickerNav) {\n        return;\n    }\n\n    const tickerNavRect = tickerNav.getBoundingClientRect();\n    const nbaTeamsDropdown = document.querySelector(\"#nbaTeamsDropdown\");\n    const nbaGlobalDropdown = document.querySelector(\"#nbaGlobalDropdown\");\n\n    if (!nbaTeamsDropdown || !nbaGlobalDropdown) {\n        return;\n    }\n\n    nbaTeamsDropdown.style.left = 0;\n    nbaTeamsDropdown.style.transform = `translateX(${tickerNavRect.left}px)`;\n    nbaGlobalDropdown.style.transform = `translateX(${tickerNavRect.left}px)`;\n};\n\nexport const updateTickerNavDropdownPosition = () => {\n    handleMediaQueryChange(null, alignTickerDropdownToLeft);\n    handleMediaQueryChange(\n        null,\n        window.addEventListener(\"resize\", debounce(alignTickerDropdownToLeft)),\n    );\n};\n\nlet overflowViewportWidth = null; // Store the viewport width where overflow was detected\nconst desktopOverflowNavDetector = () => {\n    const desktopNavigation = document.querySelector(\"#desktopNavigation\");\n    const desktopNavigationLogo = document.querySelector(\n        \"#desktopNavigationLogo\",\n    );\n    const desktopLogoDivider = document.querySelector(\"#desktopLogoDivider\");\n    const burgerMenu = document.querySelector(\"#burgerMenu\");\n    const DESKTOP_NAVIGATION_PADDING = 32;\n\n    if (!desktopNavigation || !desktopNavigationLogo) return;\n\n    let desktopNavigationWidth =\n        desktopNavigation.offsetWidth + desktopNavigationLogo.offsetWidth;\n    let documentWidth =\n        document.documentElement.clientWidth - DESKTOP_NAVIGATION_PADDING;\n\n    if (desktopNavigationWidth > documentWidth) {\n        if (documentWidth !== overflowViewportWidth) {\n            // Only toggle if it's the first time we detect overflow\n            overflowViewportWidth = documentWidth;\n\n            desktopNavigation.classList.remove(\"md:flex\");\n            burgerMenu.classList.remove(\"md:hidden\");\n            desktopLogoDivider.classList.remove(\"md:block\");\n\n            // Burger Toggle\n            toggleMobileSidebarMenu();\n\n            // Edition Picker\n            const editionButtonLocator = \"#mobileEditionButton\";\n            const editionsMenuLocator = \"#mobileEditionsMenu\";\n            const editionButtonArrowLocator = \"#mobileEditionButtonArrow\";\n\n            toggleEditionMenu(\n                editionButtonLocator,\n                editionButtonArrowLocator,\n                editionsMenuLocator,\n            );\n        }\n    } else {\n        if (documentWidth >= overflowViewportWidth) {\n            overflowViewportWidth = null;\n\n            desktopNavigation.classList.add(\"md:flex\");\n            burgerMenu.classList.add(\"md:hidden\");\n            desktopLogoDivider.classList.add(\"md:block\");\n        }\n    }\n};\n\nexport const overflowDetector = () => {\n    const runDetector = () => desktopOverflowNavDetector();\n\n    runDetector();\n    handleMediaQueryChange(null, runDetector);\n    window.addEventListener(\"resize\", runDetector);\n    if (document?.fonts?.ready) {\n        document.fonts.ready.then(runDetector).catch(() => {});\n    }\n    window.addEventListener(\"load\", runDetector);\n};\n\nexport const firefoxaMoreItemsDropdown = () => {\n    const moreItemsContainer = document.querySelector(\n        \"#headerNavigation [data-testid='expandableMenuOnDesktop']\",\n    );\n    if (!isFirefox || !moreItemsContainer) return;\n\n    const moreItems = moreItemsContainer.querySelectorAll(\n        \"li[class*='md:!block']\",\n    );\n\n    const itemsCount = moreItems.length;\n    const storedBaseWidth = moreItemsContainer.dataset.baseWidth\n        ? parseFloat(moreItemsContainer.dataset.baseWidth)\n        : null;\n    const baseWidth = storedBaseWidth ?? moreItemsContainer.offsetWidth;\n    if (!storedBaseWidth) {\n        moreItemsContainer.dataset.baseWidth = String(baseWidth);\n    }\n\n    const columns = Math.max(1, Math.ceil(itemsCount / 5));\n    moreItemsContainer.style.width = `${baseWidth * columns}px`;\n};\n\n// Desktop additonal navigation dropdown offset position\nconst additionalMenuDropdownPlacement = () => {\n    const additionalNav = document.querySelector(\"#desktopAdditionalMenu\");\n    const additionalNavItems = document.querySelectorAll(\n        \"#desktopAdditionalMenu > li\",\n    );\n    const additionalMenuColumns = document.querySelectorAll(\n        \"[data-additional-sub-menu-columns]\",\n    );\n\n    if (isFirefox) {\n        for (const column of additionalMenuColumns) {\n            const itemCount = column.querySelectorAll(\n                \"[data-dropdown-menu-items]\",\n            ).length;\n            const multiplier = Math.ceil(itemCount / 10);\n\n            column.style.width = `${column.offsetWidth * multiplier}px`;\n        }\n    }\n\n    additionalNavItems.forEach((item) => {\n        const dropdown = item.querySelector(\"div\");\n        if (!dropdown) {\n            return;\n        }\n\n        const dropdownRect = dropdown.getBoundingClientRect();\n        const additionalNavRect = additionalNav.getBoundingClientRect();\n\n        if (dropdown.classList.contains(\"md:-translate-x-1/2\")) {\n            const dropdownRectRight = dropdownRect.right;\n            const additionalNavRectRight = additionalNavRect.right;\n\n            if (dropdownRectRight > additionalNavRectRight) {\n                dropdown.style.left = `calc(50% - ${dropdownRectRight - additionalNavRectRight}px)`;\n            } else {\n                dropdown.style.left = \"50%\";\n            }\n        }\n    });\n};\n\nlet expandedDropdownPositions = [];\nlet condensedDropdownPositions = [];\nwindow.__doneNavDetection = false;\n\nconst getExpandedDropdownsPosition = () => {\n    const primaryNav = document.querySelector(\"#headerNavigation\");\n    const primaryNavItems = document.querySelectorAll(\n        \"#desktopPrimaryMenu > [data-menu-item]\",\n    );\n\n    const EXPANDED_CONDENSED_DIFFERENCE = 168;\n    const NAVIGATION_PADDINGS = 23;\n    const BORDER_WIDTH = 2;\n    const extraLeftSpacing =\n        (window.innerWidth - primaryNav.offsetWidth) / 2 - NAVIGATION_PADDINGS;\n\n    const pushDropdownPosition = (\n        dropdownPositionsArray,\n        id,\n        position,\n        transform,\n    ) => {\n        dropdownPositionsArray.push({\n            id,\n            position,\n            transform,\n        });\n    };\n\n    primaryNavItems.forEach((item, id) => {\n        // Skip if the item is hidden\n        if (item.classList.contains(\"md:hidden\")) return;\n\n        const dropdown = item.querySelector(\"[data-has-dropdown]\");\n        if (!dropdown) return; // Skip if no dropdown\n\n        const itemRect = item.getBoundingClientRect();\n        const dropdownRect = dropdown.getBoundingClientRect();\n        const primaryNavRect = primaryNav.getBoundingClientRect();\n\n        const dropdownLeft = Math.round(dropdownRect.left);\n        const primaryNavLeft = Math.round(primaryNavRect.left);\n        const itemLeft = Math.round(itemRect.left);\n\n        const expandedPosition = dropdownLeft - primaryNavLeft - BORDER_WIDTH;\n        const condensedPosition =\n            dropdownLeft -\n            EXPANDED_CONDENSED_DIFFERENCE -\n            primaryNavLeft -\n            BORDER_WIDTH;\n\n        let isDropdownOverlap =\n            itemLeft - primaryNavLeft < itemLeft - dropdownLeft;\n\n        // Handle expanded dropdown positions\n        if (expandedPosition < primaryNavLeft - extraLeftSpacing) {\n            pushDropdownPosition(\n                expandedDropdownPositions,\n                id,\n                isDropdownOverlap ? 0 : \"50%\",\n                isDropdownOverlap,\n            );\n        } else {\n            pushDropdownPosition(expandedDropdownPositions, id, \"50%\", null);\n        }\n\n        // Handle condensed dropdown positions\n        if (condensedPosition < primaryNavLeft - extraLeftSpacing) {\n            pushDropdownPosition(\n                condensedDropdownPositions,\n                id,\n                isDropdownOverlap ? \"50%\" : condensedPosition,\n                isDropdownOverlap,\n            );\n        } else {\n            pushDropdownPosition(condensedDropdownPositions, id, null, null);\n        }\n    });\n    window.__doneNavDetection = true;\n};\n\nconst primaryMenuDropdownPlacement = () => {\n    const primaryNavItems = document.querySelectorAll(\n        \"#desktopPrimaryMenu > [data-menu-item]\",\n    );\n\n    primaryNavItems.forEach((item, index) => {\n        if (!item.classList.contains(\"md:hidden\")) {\n            const dropdown = item.querySelector(\"[data-has-dropdown]\");\n            const expandedLogoImgDiv = document.querySelector(\"#expanded-logo\");\n            const condensedLogoImgDiv =\n                document.querySelector(\"#condensed-logo\");\n\n            if (\n                condensedLogoImgDiv.classList.contains(\n                    \"logo-condensed--visible\",\n                )\n            ) {\n                const condensedDropdownData = condensedDropdownPositions.find(\n                    (obj) => obj.id === index,\n                );\n\n                if (condensedDropdownData) {\n                    dropdown.style.setProperty(\n                        \"left\",\n                        condensedDropdownData.position === 0\n                            ? \"50%\"\n                            : `calc(50% - ${condensedDropdownData.position}px`,\n                    );\n                    if (condensedDropdownData.transform) {\n                        dropdown.style.setProperty(\"transform\", `none`);\n                        dropdown.style.setProperty(\"left\", 0);\n                        dropdown.style.setProperty(\"translate\", \"unset\");\n                        item.style.setProperty(\"position\", `static`);\n                    }\n                }\n            }\n\n            if (\n                expandedLogoImgDiv.classList.contains(\"logo-expanded--visible\")\n            ) {\n                const expandedDropdownData = expandedDropdownPositions.find(\n                    (obj) => obj.id === index,\n                );\n                if (expandedDropdownData) {\n                    dropdown.style.setProperty(\n                        \"left\",\n                        expandedDropdownData.position,\n                    );\n\n                    if (expandedDropdownData.transform) {\n                        dropdown.style.setProperty(\"transform\", `none`);\n                        dropdown.style.setProperty(\"translate\", \"unset\");\n                        item.style.setProperty(\"position\", `static`);\n                    }\n                }\n            }\n        }\n    });\n};\n\nconst BOLD_FONT_WIDTH_ALLOWANCE = 2;\n\nconst preSetHoverBoldText = async (items, direction) => {\n    if (items.length === 0) return;\n\n    await document.fonts.ready;\n\n    if (direction === \"column\") {\n        Array.from(items).forEach((item) => {\n            const links = item.querySelectorAll(\"[data-dropdown-menu-items]\");\n            if (links.length) {\n                const naturalWidth = links[0].clientWidth;\n                links.forEach((el) => {\n                    el.style.width = `${naturalWidth + BOLD_FONT_WIDTH_ALLOWANCE}px`;\n                });\n            }\n        });\n    }\n\n    if (direction === \"row\") {\n        items.forEach((item) => {\n            item.style.width = `${item.offsetWidth + BOLD_FONT_WIDTH_ALLOWANCE}px`;\n\n            if (item.classList.contains(\"mr-0.5\")) {\n                item.classList.remove(\"mr-0.5\");\n            }\n        });\n    }\n};\n\nconst resetPreSetHoverBoldText = async (items) => {\n    if (items.length === 0) return;\n\n    await document.fonts.ready;\n\n    items.forEach((item) => {\n        const allLinks = item.querySelectorAll(\"[data-dropdown-menu-items]\");\n\n        allLinks.forEach((link) => {\n            link.style.removeProperty(\"width\");\n            link.style.width = \"\";\n        });\n    });\n};\n\nconst checkTeamName = (teams) => {\n    let isTeamNameWrapped = false;\n    if (teams) {\n        teams.forEach((team) => {\n            team.querySelectorAll(\"[data-team-title]\").forEach((title) => {\n                const city = title.children[0];\n                const name = title.children[title.children.length - 1];\n\n                if (\n                    city.getBoundingClientRect().top !==\n                    name.getBoundingClientRect().top\n                ) {\n                    isTeamNameWrapped = true;\n                }\n            });\n        });\n    }\n\n    if (isTeamNameWrapped) {\n        teams.forEach((team) => {\n            team.querySelectorAll(\"[data-team-title]\").forEach((title) => {\n                const city = title.children[0];\n                city.style.display = \"none\";\n            });\n        });\n    }\n};\n\nconst getTeamsDivision = () => {\n    const dropdownWithTeams = document.querySelectorAll(\n        \"[data-has-dropdown] [data-sub-menu-team]\",\n    );\n\n    dropdownWithTeams.forEach(async (teamDropdown) => {\n        const division = teamDropdown.querySelector(\"[data-teams-division]\");\n        if (!division) return;\n\n        const teams = division.querySelectorAll(\"[data-team]\");\n        const dropdown = teamDropdown.closest(\"[data-has-dropdown]\");\n        const menu = dropdown.closest(\"[data-menu-item]\");\n\n        switch (teams.length) {\n            case 1:\n                division.classList.add(\"js-grid-cols-1\");\n                dropdown.classList.add(\"js-dropdown-centered\");\n                menu.classList.add(\"md:relative\");\n                break;\n            case 2:\n                division.classList.add(\"js-grid-cols-2\");\n                dropdown.classList.add(\"js-dropdown-centered\");\n                menu.classList.add(\"md:relative\");\n                break;\n            case 3:\n                division.classList.add(\"js-grid-cols-3\");\n                dropdown.classList.add(\"js-dropdown-centered\");\n                menu.classList.add(\"md:relative\");\n                break;\n            default: {\n                const threeColumnSports = dropdown.querySelectorAll(\n                    \"a[href*='/nba'], a[href*='/mlb'], a[href*='/soccer']\",\n                );\n\n                if (threeColumnSports.length > 0) {\n                    threeColumnSports.forEach((dropdown) => {\n                        dropdown.classList.add(\"js-dropdown-centered\");\n                        division.classList.add(\"js-grid-cols-3\");\n                        menu.classList.add(\"js-relative-three-column\");\n                    });\n                } else {\n                    division.classList.add(\"js-grid-cols-4\");\n                }\n                break;\n            }\n        }\n\n        checkTeamName(teams);\n        await preSetHoverBoldText(teams, \"column\");\n    });\n};\n\nexport const updatePrimaryNavDropdownPosition = async () => {\n    await sportMenusHoverHandler();\n\n    handleMediaQueryChange(null, getTeamsDivision);\n    handleMediaQueryChange(null, getExpandedDropdownsPosition);\n    handleMediaQueryChange(null, primaryMenuDropdownPlacement);\n    handleMediaQueryChange(null, additionalMenuDropdownPlacement);\n\n    handleMediaQueryChange(\n        null,\n        monitorForChanges(\"#tsnLogo\", primaryMenuDropdownPlacement),\n    );\n};\n\nexport const secondaryMenuDropdown = () => {\n    let state = {\n        dropdown: null,\n        menu: null,\n        chevron: null,\n    };\n\n    const menuHasDropdowns = document.querySelectorAll(\n        \"[data-secondary-menu-navigation] [data-menu-has-dropdown]\",\n    );\n    if (!menuHasDropdowns.length) return;\n\n    preSetHoverBoldText(menuHasDropdowns, \"column\");\n    menuHasDropdowns.forEach((menu) => {\n        const dropdown = menu.querySelector(\"[data-has-dropdown]\");\n        const chevron = menu.querySelector(\"[data-menu-chevron]\");\n        if (!dropdown) return;\n\n        menu.addEventListener(\"click\", (event) => {\n            event.stopPropagation();\n\n            const willOpen = dropdown.classList.contains(\"opacity-0\");\n\n            // Close any previously active dropdown\n            if (state.dropdown && state.dropdown !== dropdown) {\n                resetSecondaryMenuDropdown(state);\n            }\n\n            // Toggle current dropdown\n            menu.classList.toggle(\"font-bold\", willOpen);\n            dropdown.classList.toggle(\"opacity-0\", !willOpen);\n            dropdown.classList.toggle(\"pointer-events-none\", !willOpen);\n            chevron.classList.toggle(\"rotate-180\", !willOpen);\n\n            // Update State\n            Object.assign(\n                state,\n                willOpen\n                    ? { dropdown, menu, chevron }\n                    : { dropdown: null, menu: null, chevron: null },\n            );\n        });\n    });\n\n    // Close on outside click\n    document.addEventListener(\"click\", () => {\n        if (state.dropdown) resetSecondaryMenuDropdown(state);\n    });\n\n    // Close on hover into main menu\n    document\n        .querySelectorAll(\"#mainNavigation [data-menu-has-dropdown]\")\n        .forEach((menu) => {\n            menu.addEventListener(\"mouseenter\", () => {\n                if (state.dropdown) resetSecondaryMenuDropdown(state);\n            });\n        });\n};\n\nexport const updateSecondaryNavDropdownPosition = async () => {\n    const menuHasDropdowns = document.querySelectorAll(\n        \"[data-secondary-menu-navigation] [data-menu-has-dropdown]\",\n    );\n    if (!menuHasDropdowns.length) return;\n\n    await preSetHoverBoldText(menuHasDropdowns, \"column\");\n\n    handleMediaQueryChange(\n        mobileSecondaryMenuDropdown(),\n        secondaryMenuDropdownPlacement(),\n    );\n\n    handleMediaQueryChange(\n        window.addEventListener(\"resize\", debounce(shrinkFontWithLongTitle)),\n        window.addEventListener(\n            \"resize\",\n            debounce(secondaryMenuDropdownPlacement),\n        ),\n    );\n};\n\nasync function shrinkFontWithLongTitle() {\n    const subNavContainers = document.querySelectorAll(\n        \"#mobileSecondaryNavigation [data-has-dropdown]\",\n    );\n    const SINGLE_LINE_HEIGHT = 18;\n\n    if (subNavContainers.length < 1) return;\n\n    await document.fonts.ready;\n\n    subNavContainers.forEach((subNavContainer) => {\n        const menuItems = subNavContainer.querySelectorAll(\n            \"[data-dropdown-menu-items] .text-nav-secondary\",\n        );\n        const anyTruncated = Array.from(menuItems).some(\n            (item) => item.scrollHeight > SINGLE_LINE_HEIGHT,\n        );\n\n        if (anyTruncated) {\n            menuItems.forEach((item) => {\n                item.style.fontSize = \"10px\";\n            });\n        }\n    });\n}\n\nfunction mobileSecondaryMenuDropdown() {\n    const menuHasDropdowns = document.querySelectorAll(\n        \"#mobileSecondaryNavigation[data-secondary-menu-navigation] [data-menu-has-dropdown]\",\n    );\n    if (!menuHasDropdowns.length) return;\n\n    resetPreSetHoverBoldText(menuHasDropdowns);\n\n    shrinkFontWithLongTitle();\n}\n\nfunction secondaryMenuDropdownPlacement() {\n    const secondaryNav = document.querySelector(\n        \"#desktopSecondaryNavigation[data-secondary-menu-navigation]\",\n    );\n    if (!secondaryNav) return;\n\n    const menuHasDropdowns = secondaryNav.querySelectorAll(\n        \"[data-menu-has-dropdown]\",\n    );\n    if (!menuHasDropdowns.length) return;\n\n    menuHasDropdowns.forEach((menu) => {\n        const dropdown = menu.querySelector(\"[data-has-dropdown]\");\n        if (!dropdown) return;\n\n        const dropdownRectRight = dropdown.getBoundingClientRect().right;\n        const secondaryNavRectRight =\n            secondaryNav.getBoundingClientRect().right;\n\n        if (dropdownRectRight > secondaryNavRectRight) {\n            dropdown.classList.replace(\"md:-left-3\", \"md:right-0\");\n            menu.classList.remove(\"relative\");\n        }\n    });\n}\n\nfunction resetSecondaryMenuDropdown(state) {\n    state.menu?.classList.remove(\"font-bold\");\n    state.dropdown?.classList.add(\"opacity-0\", \"pointer-events-none\");\n    state.chevron?.classList.add(\"rotate-180\");\n\n    state.menu = null;\n    state.dropdown = null;\n    state.chevron = null;\n}\n","export const setEditionItemsWidth = () => {\n    const editionItems = document.querySelectorAll(\n        \"#desktopEditionsMenu [data-edition-item]\",\n    );\n    let longestEditionWidth = 0;\n\n    editionItems.forEach((edition) => {\n        if (edition.clientWidth > longestEditionWidth) {\n            longestEditionWidth = edition.clientWidth;\n        }\n    });\n\n    editionItems.forEach((edition) => {\n        edition.style.width = `${longestEditionWidth}px`;\n    });\n};\n\n// Toggles the footer edition picker. Opens or closes when the dropdown is clicked.\nexport const toggleEditionHandlerV2 = () => {\n    const editionPickerButton = document.querySelector(\"#tickerEditionPickerV2\");\n    const editionPickerWindow = document.querySelector(\"#desktopEditionsMenuV2\");\n    const editionPickerArrow = document.querySelector(\"#tickerEditionPickerV2 #desktopEditionButton\");\n    const editionPickerCloseButton = document.querySelector(\"#editionPickerTitleV2 #editionCloseButton\");\n\n    if (!editionPickerButton || !editionPickerWindow || !editionPickerArrow || !editionPickerCloseButton) return;\n\n    const showClasses = [\"md:opacity-100\", \"md:visible\"];\n    const hideClasses = [\"md:opacity-0\", \"md:invisible\"];\n    editionPickerArrow.classList.add(\"rotate-180\")\n\n    const toggleEditionPickerWindow = () => {\n        const isHidden = editionPickerWindow.classList.contains(\"md:opacity-0\");\n        editionPickerWindow.classList.remove(...(isHidden ? hideClasses : showClasses));\n        editionPickerWindow.classList.add(...(isHidden ? showClasses : hideClasses));\n        editionPickerArrow.classList.toggle(\"rotate-180\");\n    };\n\n    const closeEditionPickerWindow = () => {\n        editionPickerWindow.classList.remove(...showClasses);\n        editionPickerWindow.classList.add(...hideClasses);\n        editionPickerArrow.classList.add(\"rotate-180\");\n    };\n\n    editionPickerButton.addEventListener('click', toggleEditionPickerWindow);\n    editionPickerCloseButton.addEventListener(\"click\", closeEditionPickerWindow);\n\n    editionPickerWindow.addEventListener(\"click\", (e) => {\n        e.stopPropagation();\n    });\n}","import { keyboardNavigation } from \"./keyboard\";\nimport { mouseNavigation } from \"./mouse\";\nimport {\n    condensedStateDesktopLogo,\n    secondaryMenuDropdown,\n    updateSubNavItemStyles,\n    updatePrimaryNavDropdownPosition,\n    updateTickerNavDropdownPosition,\n    updateSecondaryNavDropdownPosition,\n    nbaTickerHoverHandler,\n    overflowDetector,\n} from \"../../furniture/_menu\";\n\nimport { setEditionItemsWidth } from \"../../furniture/_edition\";\n\nconst runDesktopNavigationHandlers = () => {\n    keyboardNavigation();\n    mouseNavigation();\n    condensedStateDesktopLogo();\n    secondaryMenuDropdown();\n    updateSubNavItemStyles();\n    updatePrimaryNavDropdownPosition();\n    updateTickerNavDropdownPosition();\n    updateSecondaryNavDropdownPosition();\n    nbaTickerHoverHandler();\n    overflowDetector();\n    setEditionItemsWidth();\n};\n\nif (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", runDesktopNavigationHandlers);\n} else {\n    runDesktopNavigationHandlers();\n}\n\nwindow.addEventListener(\"resize\", () => {\n    setEditionItemsWidth();\n});\n","import { isDesktop, hideElem } from \"../../common/_constants\";\n\nexport const mouseNavigation = () => {\n    const skiptocontentElem = document.querySelector(\"#skiptocontent\");\n\n    if (isDesktop && skiptocontentElem) {\n        /* Mouse click outside the visible \"Skip to main content\" button will hide the button. */\n        document.addEventListener(\"click\", () => {\n            if (skiptocontentElem.classList.contains(\"active\")) {\n                hideElem(skiptocontentElem);\n            }\n        });\n    }\n};\n","import { isDesktop, showElem, hideElem } from \"../../common/_constants\";\n\nexport const keyboardNavigation = () => {\n\n    if(isDesktop){\n        document.addEventListener('keydown', e => {\n            const skiptocontentElem = document.querySelector('#skiptocontent');\n            \n            if(e.key === \" \") {\n                /* Disable spacebar default event while \"skip to main content\" button is active */\n                if(skiptocontentElem.classList.contains('active')) {\n                    e.preventDefault();\n                }\n            }\n        });\n\n        document.addEventListener('keyup', e => {\n            const skiptocontentElem = document.querySelector('#skiptocontent');\n\n            const activeElem = e.target;\n            const key = e.key;\n\n            switch (key) {\n                case \"Tab\": {\n                    if(activeElem.href?.match(/#main-content/) && !skiptocontentElem.classList.contains('active')){\n                        showElem(skiptocontentElem);\n                    } else if(!activeElem.href?.match(/#main-content/) && skiptocontentElem.classList.contains('active')) {\n                        hideElem(skiptocontentElem);\n                    }\n                    break;\n                }\n                case \"Escape\": {\n                    if(skiptocontentElem.classList.contains('active')) {\n                        hideElem(skiptocontentElem);\n                    }\n                    break;\n                }\n                case \"Enter\": {\n                    if(skiptocontentElem.classList.contains('active')) {\n                        hideElem(skiptocontentElem);\n                    }\n                    break;\n                }\n                case \" \": {\n                    if(skiptocontentElem.classList.contains('active')) {\n                        activeElem.click()\n                    }\n                    break;\n                }\n            }\n        });\n    }\n}"],"names":["isDesktop","window","innerWidth","isFirefox","navigator","userAgent","toLowerCase","includes","hideElem","e","classList","remove","setTimeout","add","isSafari","test","monitorForChanges","selector","callback","targetElement","document","querySelector","MutationObserver","observe","attributes","childList","subtree","debounce","timeoutId","clearTimeout","mobileCallback","desktopCallback","mediaQueryListMobile","matchMedia","mediaQueryListDesktop","handleMobileChange","event","matches","handleDesktopChange","addEventListener","adjustFontScale","containers","querySelectorAll","forEach","container","text","textContent","trim","split","filter","word","length","clientWidth","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","toggleSidebarHiddenVisible","buttonSelector","sidebarSelector","featureMenu","contains","_clickHandlerAdded","toggle","body","adjustGridRowForMobileMenus","menuId","parentMenuElement","numberOfMenuItems","children","gridRowsNumber","Math","ceil","style","gridTemplateRows","concat","sportMenusHoverHandler","_ref","_callee","moreMenu","toggleSportMenusTextColor","additionalMenuColumns","_context","isHovered","sportsMenu","previousElementSibling","preSetHoverBoldText","desktopLastScrollTop","updateDesktopLogo","scrollTop","scrollY","documentElement","tsnDesktopLogo","expandedLogoImgDiv","condensedLogoImgDiv","toggleTSNLogo","ticking","requestAnimationFrame","enableToggleTSNLogo","disableToggleTSNLogo","isExpandedLogoOnly","removeEventListener","setSubNavItemsHeight","subNavContainer","menu","teams","titles","longestTitleWidth","title","width","scrollHeight","clientHeight","contentHeight","height","observeTeamsContainerHeight","prevHeight","teamsContainers","teamsContainerResize","ResizeObserver","entries","contentRect","sportDropdownWidthSafari","subNavContainers","offsetWidth","sportSubMenuHoverBold","_ref2","_callee2","activeSubMenuItems","_context2","toggleDropdown","ticker","tickerNavigation","dropdown","setupTickerHover","isTickerHovered","relatedTarget","alignTickerDropdownToLeft","tickerNav","tickerNavRect","getBoundingClientRect","nbaTeamsDropdown","nbaGlobalDropdown","left","transform","overflowViewportWidth","overflowDetector","_document","runDetector","desktopNavigation","desktopNavigationLogo","desktopLogoDivider","burgerMenu","desktopNavigationWidth","documentWidth","sidebarMenu","featuredMenu","sidebarCloseButton","handleMediaQueryChange","toggleMobileSidebarMenu","button","buttonArrow","editions","buttonArrowSelector","editionsSelector","editionsContainer","firstElementChild","expandedHeight","offsetHeight","collapsedHeight","currentHeight","toggleEditionMenu","desktopOverflowNavDetector","fonts","ready","additionalMenuDropdownPlacement","additionalNav","additionalNavItems","_step","_iterator","_createForOfIteratorHelper","s","column","itemCount","multiplier","err","item","dropdownRect","additionalNavRect","dropdownRectRight","right","additionalNavRectRight","expandedDropdownPositions","condensedDropdownPositions","__doneNavDetection","getExpandedDropdownsPosition","primaryNav","primaryNavItems","extraLeftSpacing","pushDropdownPosition","dropdownPositionsArray","id","position","push","itemRect","primaryNavRect","dropdownLeft","round","primaryNavLeft","itemLeft","condensedPosition","isDropdownOverlap","primaryMenuDropdownPlacement","index","condensedDropdownData","find","obj","setProperty","expandedDropdownData","_ref3","_callee3","items","direction","_context3","Array","from","links","naturalWidth","el","_x","_x2","resetPreSetHoverBoldText","_ref4","_callee4","_context4","link","removeProperty","_x3","checkTeamName","isTeamNameWrapped","team","city","name","top","display","getTeamsDivision","_ref5","_callee5","teamDropdown","division","threeColumnSports","_t","_context5","closest","_x4","updatePrimaryNavDropdownPosition","_ref6","_callee6","_context6","updateSecondaryNavDropdownPosition","_ref7","_callee7","menuHasDropdowns","_context7","mobileSecondaryMenuDropdown","secondaryMenuDropdownPlacement","shrinkFontWithLongTitle","_shrinkFontWithLongTitle","_callee8","SINGLE_LINE_HEIGHT","_context8","menuItems","some","fontSize","secondaryNav","replace","resetSecondaryMenuDropdown","state","_state$menu","_state$dropdown","_state$chevron","chevron","setEditionItemsWidth","editionItems","longestEditionWidth","edition","runDesktopNavigationHandlers","skiptocontentElem","nbaTeamsTicker","nbaGlobalTicker","key","preventDefault","activeElem","target","_activeElem$href","_activeElem$href2","href","match","showElem","click","stopPropagation","willOpen","assign","readyState"],"sourceRoot":""}