{"version":3,"file":"navigation-btf-navigationMobile.chunk.bfd46a220b8cde7ce8bb.js","mappings":"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","sources":["webpack:///./html/wp-content/themes/ls/src/js/main/components/navigation/btf/navigationMobile.js","webpack:///./html/wp-content/themes/ls/src/js/main/components/navigation/btf/navigationMobileTrackingAndPersonalization.js","webpack:///./html/wp-content/themes/ls/src/js/utils/tracking/GA4/navigation/navTracking.ts"],"sourcesContent":["import {\n personalizeSecondaryMobileNav,\n sendNavClickEventsToGTM,\n} from 'root/main/components/navigation/btf/navigationMobileTrackingAndPersonalization';\nimport { LoggingHandler } from 'root/utils/errorReporting/LoggingHandler';\n\nexport default function NavigationMobile(els) {\n return (function () {\n const bodyEl = document.body;\n const navWrapper = els[0];\n\n if (!navWrapper || !bodyEl) {\n LoggingHandler().logError('Mobile navigation has not loaded', {\n searchTerm: 'mobile-nav',\n tags: ['navigation'],\n fileName: 'navigationMobile.js',\n });\n return;\n }\n\n // Selectors\n const overlay = navWrapper.querySelector('[data-navigation-btf-mobile=overlay]');\n const burgerBtn = navWrapper.querySelector('[data-navigation-btf-mobile=burger]');\n\n const primaryNav = navWrapper.querySelector(\n '[data-navigation-btf-mobile=container]'\n );\n const secondaryNav = navWrapper.querySelector(\n '[data-navigation-btf-mobile=menu-secondary]'\n );\n\n const languageSelectorMenu = navWrapper.querySelector(\n '[data-navigation-btf-mobile=language-selector-menu]'\n );\n const languageSelectorBtn = navWrapper.querySelector(\n '[data-navigation-btf-mobile=language-selector-button]'\n );\n\n // Private Methods\n const calcChildMenuHeight = (parentLi, action) => {\n // the added 1 or 2px is to account for borders on the menu headings\n const [parentHeading, childMenuContainer] = [...parentLi.children].filter(\n element =>\n !element.classList.contains(\n 'navigation-btf-mobile__item__dividing-line'\n )\n );\n\n let height;\n if (action === 'opening') {\n height = parentHeading.scrollHeight + childMenuContainer.scrollHeight + 2;\n } else {\n height = parentHeading.scrollHeight + 1;\n }\n\n return `${height}px`;\n };\n\n const calcGrandchildMenuHeight = (parentLi, targetedLi, action) => {\n // the added 1 or 2px is to account for borders on the menu headings\n const [parentHeading, childMenuContainer] = [...parentLi.children].filter(\n element =>\n !element.classList.contains(\n 'navigation-btf-mobile__item__dividing-line'\n )\n );\n const [childHeading] = targetedLi.children;\n\n let height;\n if (action === 'opening') {\n height =\n parentHeading.scrollHeight +\n childMenuContainer.scrollHeight +\n targetedLi.scrollHeight -\n childHeading.scrollHeight +\n 2;\n } else {\n height =\n parentHeading.scrollHeight +\n childMenuContainer.scrollHeight -\n targetedLi.scrollHeight +\n childHeading.scrollHeight +\n 2;\n }\n\n return `${height}px`;\n };\n\n const toggleMenuHeight = (targetedLi, options) => {\n const { openMenuOnPageLoad } = options;\n const openClass = 'navigation-btf-mobile__item--active';\n\n const isMenuOpen = targetedLi.classList.contains(openClass);\n const parentMenuItem = targetedLi.closest('[data-navigation-level=parent]');\n\n if (!isMenuOpen || openMenuOnPageLoad) {\n targetedLi.classList.add(openClass);\n targetedLi.style.height = calcChildMenuHeight(targetedLi, 'opening');\n\n if (parentMenuItem !== targetedLi) {\n parentMenuItem.style.height = calcGrandchildMenuHeight(\n parentMenuItem,\n targetedLi,\n 'opening'\n );\n }\n } else {\n targetedLi.classList.remove(openClass);\n targetedLi.style.height = calcChildMenuHeight(targetedLi, 'closing');\n\n if (parentMenuItem !== targetedLi) {\n parentMenuItem.style.height = calcGrandchildMenuHeight(\n parentMenuItem,\n targetedLi,\n 'closing'\n );\n }\n }\n };\n\n const initializeSubMenus = li => {\n li.style.height = `${li.scrollHeight}px`;\n const subMenu =\n li.querySelector('.navigation-btf-mobile__submenu') ??\n li.querySelector('.navigation-btf-mobile__subsubmenu');\n if (subMenu) subMenu.style.display = 'block';\n };\n\n const openSubMenusOnClick = (e, clickedLi) => {\n if (e.target.parentElement !== clickedLi) return;\n if (clickedLi.classList.contains('navigation-btf-mobile__item--has-subnav')) {\n e.preventDefault();\n toggleMenuHeight(clickedLi, { openMenuOnPageLoad: false });\n }\n };\n\n const toggleMobileNavigation = e => {\n e.preventDefault();\n if (!bodyEl.classList.contains('js-navigation-mobile-open')) {\n bodyEl.classList.add('js-navigation-mobile-open');\n } else {\n bodyEl.classList.remove('js-navigation-mobile-open');\n }\n };\n\n const toggleCountrySelector = e => {\n e.preventDefault();\n if (\n languageSelectorMenu &&\n !languageSelectorMenu.classList.contains('js-language-selector-open')\n ) {\n languageSelectorMenu.classList.add('js-language-selector-open');\n languageSelectorMenu.scrollIntoView({\n behavior: 'smooth',\n });\n } else {\n languageSelectorMenu.classList.remove('js-language-selector-open');\n }\n };\n\n const overlayClickHandler = () => {\n if (overlay) {\n overlay.addEventListener('click', function (e) {\n if (e.target === overlay) {\n e.stopPropagation();\n toggleMobileNavigation(e);\n }\n });\n }\n };\n\n const firstBurgerClickAfterPageLoadHandler = menuItemWithSubnav => {\n if (burgerBtn) {\n burgerBtn.addEventListener(\n 'click',\n function () {\n initializeSubMenus(menuItemWithSubnav);\n\n // TO DO: look into weird active/not-active class behaviour\n /* There is some weird behaviour with the preset active/not-active class. \n The active class is being added in addition to the not-active class on all LI Menu Items.\n For the matching page behaviour, only the active class is present, which means this menu \n *should* be open/highlighted on page load, in the mobile menu. Until this is resolved\n this conditional is here to prevent all menus being open because they all have an active class.\n The openMenuOnPageLoad setting is also part of this bandaid solution.\n */\n if (\n menuItemWithSubnav.classList.contains(\n 'navigation-btf-mobile__item--not-active'\n )\n ) {\n return;\n }\n toggleMenuHeight(menuItemWithSubnav, {\n openMenuOnPageLoad: true,\n });\n },\n { once: true }\n );\n }\n };\n\n const menuItemWithSubnavClickHandler = menuItemWithSubnav => {\n menuItemWithSubnav.querySelector('a').addEventListener('click', function (e) {\n e.preventDefault();\n openSubMenusOnClick(e, menuItemWithSubnav);\n });\n };\n\n // Public Method\n const init = () => {\n personalizeSecondaryMobileNav();\n sendNavClickEventsToGTM();\n overlayClickHandler();\n\n burgerBtn.addEventListener('click', function (e) {\n toggleMobileNavigation(e);\n });\n\n languageSelectorMenu &&\n languageSelectorBtn &&\n languageSelectorBtn.addEventListener('click', function (e) {\n toggleCountrySelector(e);\n });\n\n if (primaryNav) {\n const menuItemsWithSubnav = primaryNav.querySelectorAll(\n '[data-navigation-btf-mobile=has-subnav]'\n );\n if (menuItemsWithSubnav && menuItemsWithSubnav.length > 0) {\n Array.from(menuItemsWithSubnav).forEach(menuItemWithSubnav => {\n firstBurgerClickAfterPageLoadHandler(menuItemWithSubnav);\n menuItemWithSubnavClickHandler(menuItemWithSubnav);\n });\n }\n }\n if (secondaryNav) {\n const secondaryMenuItemsWithSubnav = secondaryNav.querySelectorAll(\n '[data-navigation-btf-mobile=has-subnav]'\n );\n if (\n secondaryMenuItemsWithSubnav &&\n secondaryMenuItemsWithSubnav.length > 0\n ) {\n Array.from(secondaryMenuItemsWithSubnav).forEach(\n menuItemWithSubnav => {\n menuItemWithSubnavClickHandler(menuItemWithSubnav);\n initializeSubMenus(menuItemWithSubnav);\n }\n );\n }\n }\n };\n\n // New object generator\n return {\n init,\n };\n })().init();\n}\n","import { gtm } from 'root/utils/tracking/googleTagManagerDeprecated';\nimport config from 'root/main/components/navigation/navigation_config';\nimport { CookieMonster } from 'root/utils/cookies/cookieMonster';\nimport { GoogleTagManager } from 'root/utils/tracking/GA4/googleTagManager';\nimport navTracking from 'root/utils/tracking/GA4/navigation/navTracking';\n\nconst cm = new CookieMonster();\nconst btCookieName = 'ls_vertical_bt';\n\nconst navHeader = document.querySelector('header.main-site-header-btf');\nconst mobileSecondaryNav = document.querySelector(\n '[data-navigation-btf-mobile=\"header-secondary\"]'\n);\nconst navContainer = document.querySelector('[data-navigation-btf-mobile=container]');\nconst secondaryNav = document.querySelector(\n '[data-navigation-btf-mobile=menu-secondary]'\n);\n\n/*\n * This adds or removes the \"hidden\" class from the \"clear-cookie\" element of the secondary nav\n * the \"clear-cookie\" element is the \"Not a --- store?\" found at the bottom of the secondary nav on mobile\n * The addOrRemoveHiddenClass param accepts the strings \"add\" or \"remove\" as values\n * @param addOrRemoveHiddenClass\n * */\nconst toggleBtfClearCookiesElsDisplay = addOrRemoveHiddenClass => {\n if (typeof addOrRemoveHiddenClass === 'string') {\n const secondaryNavClearButtons = mobileSecondaryNav.querySelectorAll(\n '[data-secondary-nav-clear-bt]'\n );\n if (secondaryNavClearButtons) {\n secondaryNavClearButtons.forEach(secondaryNavClearButton => {\n secondaryNavClearButton.parentElement.classList[addOrRemoveHiddenClass](\n 'navigation-btf-mobile__item--hidden'\n );\n });\n }\n const secondaryNavLines = mobileSecondaryNav.querySelectorAll(\n '[data-secondary-nav-line]'\n );\n if (secondaryNavLines) {\n secondaryNavLines.forEach(secondaryNavLine => {\n secondaryNavLine.classList[addOrRemoveHiddenClass](\n 'navigation-btf-mobile__item__dividing-line--hidden'\n );\n });\n }\n }\n};\n\nconst personalizeSecondaryMobileNav = () => {\n if (\n mobileSecondaryNav &&\n mobileSecondaryNav.classList.contains('navigation-btf-mobile__secondary')\n ) {\n /* Setting the cookie and populating the nav values is being handled by a script inserted at the end of the\n * html/wp-content/themes/ls/views/Section/navigation/btf/layout/desktop_secondary.html.twig\n * slugMatch: rather then calling the btfNavSecondaryLexic global variable we set a data attribute on the header container of the nav and we check its value here\n * */\n\n // slugMatch returns a string from a data attribute with the value of \"true\" or \"false\"\n const slugMatch = navHeader.dataset.slugMatch;\n\n if (slugMatch === 'true') {\n const secondaryNavClearButtons = mobileSecondaryNav.querySelectorAll(\n '[data-secondary-nav-clear-bt]'\n );\n if (secondaryNavClearButtons) {\n secondaryNavClearButtons.forEach(secondaryNavClearButton => {\n secondaryNavClearButton.addEventListener('click', () => {\n cm.unsetCookie(btCookieName);\n navigator.cookieEnabled &&\n window.localStorage?.removeItem(\n 'btf.businessType'\n ); /* we are checking for localStorage because localStorage is not available on some mobile browsers */\n });\n });\n toggleBtfClearCookiesElsDisplay('remove');\n }\n\n const btfNavClearBtCookieEls = document.querySelectorAll(\n '[data-btf-nav-clear-cookie]'\n );\n if (btfNavClearBtCookieEls) {\n btfNavClearBtCookieEls.forEach(btfNavClearBtCookieEl => {\n btfNavClearBtCookieEl.addEventListener('click', () => {\n cm.unsetCookie(btCookieName);\n navigator.cookieEnabled &&\n window.localStorage?.removeItem('btf.businessType');\n });\n });\n }\n } else {\n toggleBtfClearCookiesElsDisplay('add');\n cm.unsetCookie(btCookieName);\n navigator.cookieEnabled &&\n window.localStorage?.removeItem('btf.businessType');\n }\n }\n};\n\nconst sendNavClickEventsToGTM = () => {\n if (secondaryNav) {\n secondaryNav.addEventListener('click', e => {\n if (e.target.hasAttribute(config.navigation_link_attribute)) {\n gtm.secondaryMenu(e.target).sendEvent('click');\n\n const GTMObject = navTracking(e.target);\n GTMObject && GoogleTagManager.sendEvent(GTMObject);\n }\n });\n }\n navContainer.addEventListener('click', e => {\n if (e.target.hasAttribute(config.navigation_link_attribute)) {\n gtm.menu(e.target).sendEvent('click');\n\n const GTMObject = navTracking(e.target);\n GTMObject && GoogleTagManager.sendEvent(GTMObject);\n }\n });\n};\n\nexport { personalizeSecondaryMobileNav, sendNavClickEventsToGTM };\n","import { capitalize } from 'lodash';\nimport type { GTMEvent } from 'root/utils/tracking/GA4/googleTagManager';\nimport { PlacementEnums, PlacementType } from 'root/utils/tracking/GA4/types';\nimport { getDecodedValueFromSessionStorage } from 'root/utils/dom/sessionStorage';\nimport {\n sessionStartTimeKey,\n sessionScrolledKey,\n} from 'root/core/tracking/sessionTracking/sessionTracking';\n\nenum EventActionEnums {\n menuAction = 'click_menu',\n submenuAction = 'click_sub_menu',\n secondaryAction = 'click_secondary_menu',\n secondarySubmenuAction = 'click_secondary_sub_menu',\n}\n\nenum NavigationCategoryEnums {\n menuCat = 'menu_category',\n submenuCat = 'sub_menu_category',\n labelCat = 'label',\n}\n\nenum NavigationGroupEnums {\n main = 'main',\n secondary = 'secondary',\n}\nenum NavigationLevelEnums {\n parent = 'parent',\n child = 'child',\n grandchild = 'grandchild',\n}\nenum NavigationPlatformEnums {\n mobile = 'mobile',\n desktop = 'desktop',\n}\n\ntype EventActionType =\n | EventActionEnums.menuAction\n | EventActionEnums.submenuAction\n | EventActionEnums.secondaryAction\n | EventActionEnums.secondarySubmenuAction;\n\ntype NavigationGroupType =\n | NavigationGroupEnums.main\n | NavigationGroupEnums.secondary\n | undefined;\ntype NavigationLevelType =\n | NavigationLevelEnums.parent\n | NavigationLevelEnums.child\n | NavigationLevelEnums.grandchild\n | undefined;\ntype NavigationPlatformType =\n | NavigationPlatformEnums.mobile\n | NavigationPlatformEnums.desktop\n | undefined;\ninterface GTMNavigationEventInterface extends GTMEvent {\n event_action: EventActionType;\n placement: PlacementType;\n menu_category?: string;\n sub_menu_category?: string;\n label?: string;\n session_start_time?: string;\n scrolled_75?: string;\n}\n\nexport default function navTracking(el: HTMLElement) {\n const navigationLevelEl = el?.closest('[data-navigation-level]');\n const navigationPlatformEl = el?.closest('[data-navigation-platform]');\n const navigationGroupEl = el?.closest('[data-navigation-group]');\n\n const navigationLevel =\n navigationLevelEl &&\n (navigationLevelEl?.dataset.navigationLevel as NavigationLevelType);\n\n const navigationPlatform =\n navigationPlatformEl &&\n (navigationPlatformEl?.dataset.navigationPlatform as NavigationPlatformType);\n\n const navigationGroup =\n navigationGroupEl &&\n (navigationGroupEl?.dataset.navigationGroup as NavigationGroupType);\n\n const { parent, child, grandchild } = NavigationLevelEnums;\n const { main, secondary } = NavigationGroupEnums;\n const { mobile, desktop } = NavigationPlatformEnums;\n\n const navigationLevelAssertionMap: Record> = {\n parent: {\n isMainNavigation: navigationLevel === parent && navigationGroup === main,\n isSecondaryNavigation:\n (navigationLevel === parent &&\n navigationGroup === secondary &&\n navigationPlatform === desktop) ??\n false,\n isSecondaryNavigationMobile:\n (navigationLevel === parent &&\n navigationGroup === secondary &&\n navigationPlatform === mobile) ??\n false,\n isFooterNavigation:\n (el.closest('[data-footer-nav-column]') && navigationLevel === parent) ??\n false,\n isTabsNavigation: navigationLevel === parent ?? false,\n },\n child: {\n isSubNavigation:\n (navigationLevel === child && navigationGroup === main) ?? false,\n isSecondarySubNavigationMobile:\n (navigationLevel === child &&\n navigationGroup === secondary &&\n navigationPlatform === mobile) ??\n false,\n },\n grandchild: {\n isSubNavigationLabel:\n (navigationLevel === grandchild && navigationGroup === main) ?? false,\n\n isSecondaryLabelNavigation:\n (navigationLevel === grandchild &&\n navigationGroup === secondary &&\n navigationPlatform === desktop) ??\n false,\n\n isSecondaryLabelNavigationMobile:\n (navigationLevel === grandchild &&\n navigationGroup === secondary &&\n navigationPlatform === mobile) ??\n false,\n\n isFooterLabelNavigation:\n (el.closest('[data-footer-nav-column]') &&\n navigationLevel === grandchild) ??\n false,\n },\n };\n\n const getTabPlacement = (): PlacementType | null => {\n const { nav, hero, footer, body } = PlacementEnums;\n return [nav, hero, footer, body].includes(el?.dataset.placement as PlacementEnums)\n ? (el.dataset.placement as PlacementType)\n : null;\n };\n const getEventAction = (): EventActionType => {\n const { isSecondaryNavigation, isSecondaryNavigationMobile } =\n navigationLevelAssertionMap.parent;\n const { isSubNavigation, isSecondarySubNavigationMobile } =\n navigationLevelAssertionMap.child;\n const {\n isSubNavigationLabel,\n isSecondaryLabelNavigation,\n isSecondaryLabelNavigationMobile,\n } = navigationLevelAssertionMap.grandchild;\n if (isSubNavigation || isSubNavigationLabel) {\n return EventActionEnums.submenuAction;\n } else if (\n isSecondaryNavigation ||\n isSecondaryLabelNavigation ||\n isSecondaryNavigationMobile\n ) {\n return EventActionEnums.secondaryAction;\n } else if (isSecondarySubNavigationMobile || isSecondaryLabelNavigationMobile) {\n return EventActionEnums.secondarySubmenuAction;\n } else {\n return EventActionEnums.menuAction;\n }\n };\n const getEventPlacement = (): PlacementType => {\n const {\n isSecondaryNavigation,\n isSecondaryNavigationMobile,\n isFooterNavigation,\n isTabsNavigation,\n } = navigationLevelAssertionMap.parent;\n const { isSecondarySubNavigationMobile } = navigationLevelAssertionMap.child;\n const {\n isFooterLabelNavigation,\n isSecondaryLabelNavigation,\n isSecondaryLabelNavigationMobile,\n } = navigationLevelAssertionMap.grandchild;\n if (\n isSecondaryNavigation ||\n isSecondaryLabelNavigation ||\n isSecondaryNavigationMobile ||\n isSecondarySubNavigationMobile ||\n isSecondaryLabelNavigationMobile\n ) {\n return PlacementEnums.hero;\n } else if (isFooterNavigation || isFooterLabelNavigation) {\n return PlacementEnums.footer;\n } else if (isTabsNavigation && getTabPlacement()) {\n return getTabPlacement() as PlacementType;\n } else {\n return PlacementEnums.nav;\n }\n };\n\n const getNavigationCategories = (GTMObject: GTMNavigationEventInterface) => {\n const footerNavEl = el\n .closest('[data-footer-nav-column]')\n ?.querySelector('[data-navigation-level=parent]');\n\n const footerLabelEl = el.closest('[data-navigation-level=child]');\n\n const tabEl =\n (el.closest('[role=tab]')?.firstElementChild as HTMLElement | undefined) ||\n el.closest('[role=tab]');\n\n const navEl =\n (el.closest('[data-navigation-level=parent]')\n ?.firstElementChild as HTMLElement) ||\n el.closest('[data-navigation-level=parent]') ||\n tabEl ||\n footerNavEl;\n\n const subnavEl =\n (el.closest('[data-navigation-level=child]')\n ?.firstElementChild as HTMLElement) ||\n el.closest('[data-navigation-level=child]');\n const labelEl =\n (el.closest('[data-navigation-level=grandchild]')\n ?.firstElementChild as HTMLElement) ||\n el.closest('[data-navigation-level=grandchild]') ||\n footerLabelEl;\n\n const getCapitalizedInnerText = (element: HTMLElement) => {\n return capitalize(element?.innerText ?? '');\n };\n\n /*\n * this is a necessary exception in order to get the root text of the breadcrumb\n * when we have the following breadcrumb structure for the secondary mobile nav\n * root name > last selected item name (Example Retail > Payments)\n * Without this exception, if the user clicked on the \"last selected item name\" of the breadcrumb\n * the last selected item text will be sent instead of the root parent element text.\n * */\n const getSecondaryNavigationMobileBreadcrumbsRootText = (el: HTMLElement) => {\n const secondaryNavFirstChildMobile = el.closest(\n '.navigation-btf-mobile__menu__list[data-secondary-nav-header]'\n )?.firstElementChild;\n if (\n secondaryNavFirstChildMobile?.classList.contains(\n 'navigation-btf-mobile__item--breadcrumb-first'\n )\n ) {\n return (\n capitalize(secondaryNavFirstChildMobile?.textContent?.trim()) ?? ''\n );\n }\n };\n\n const getMenuCategory =\n getSecondaryNavigationMobileBreadcrumbsRootText(navEl) ||\n getCapitalizedInnerText(navEl);\n const getSubMenuCategory = getCapitalizedInnerText(subnavEl);\n const getLabel = getCapitalizedInnerText(labelEl);\n\n const isNav = Object.values(navigationLevelAssertionMap.parent).includes(true);\n const isSubnav = Object.values(navigationLevelAssertionMap.child).includes(true);\n const isLabel = Object.values(navigationLevelAssertionMap.grandchild).includes(\n true\n );\n\n const { menuCat, submenuCat, labelCat } = NavigationCategoryEnums;\n if (isNav) {\n getMenuCategory && (GTMObject[menuCat] = getMenuCategory);\n } else if (isSubnav) {\n getMenuCategory && (GTMObject[menuCat] = getMenuCategory);\n getSubMenuCategory && (GTMObject[submenuCat] = getSubMenuCategory);\n } else if (isLabel) {\n getMenuCategory && (GTMObject[menuCat] = getMenuCategory);\n getSubMenuCategory && (GTMObject[submenuCat] = getSubMenuCategory);\n getLabel && (GTMObject[labelCat] = getLabel);\n }\n\n return GTMObject;\n };\n\n const getGTMObject = (): GTMNavigationEventInterface => {\n const GTMObject: GTMNavigationEventInterface = {\n event_action: getEventAction(),\n placement: getEventPlacement(),\n scrolled_75: getDecodedValueFromSessionStorage(sessionScrolledKey) ?? 'false',\n session_start_time:\n getDecodedValueFromSessionStorage(sessionStartTimeKey) ?? '0',\n };\n getNavigationCategories(GTMObject);\n return GTMObject;\n };\n\n if (\n Object.values({\n ...navigationLevelAssertionMap.grandchild,\n ...navigationLevelAssertionMap.child,\n ...navigationLevelAssertionMap.parent,\n }).includes(true)\n ) {\n return getGTMObject();\n }\n}\n"],"names":["NavigationMobile","els","bodyEl","document","body","navWrapper","overlay","querySelector","burgerBtn","primaryNav","secondaryNav","languageSelectorMenu","languageSelectorBtn","calcChildMenuHeight","parentLi","action","height","_filter","_toConsumableArray","children","filter","element","classList","contains","_filter2","_slicedToArray","parentHeading","childMenuContainer","scrollHeight","concat","calcGrandchildMenuHeight","targetedLi","_filter3","_filter4","childHeading","toggleMenuHeight","options","openMenuOnPageLoad","openClass","isMenuOpen","parentMenuItem","closest","add","style","remove","initializeSubMenus","li","_li$querySelector","subMenu","display","toggleMobileNavigation","e","preventDefault","menuItemWithSubnavClickHandler","menuItemWithSubnav","addEventListener","clickedLi","target","parentElement","openSubMenusOnClick","init","personalizeSecondaryMobileNav","sendNavClickEventsToGTM","stopPropagation","scrollIntoView","behavior","toggleCountrySelector","menuItemsWithSubnav","querySelectorAll","length","Array","from","forEach","once","firstBurgerClickAfterPageLoadHandler","secondaryMenuItemsWithSubnav","LoggingHandler","logError","searchTerm","tags","fileName","cm","CookieMonster","btCookieName","navHeader","mobileSecondaryNav","navContainer","toggleBtfClearCookiesElsDisplay","addOrRemoveHiddenClass","secondaryNavClearButtons","secondaryNavClearButton","secondaryNavLines","secondaryNavLine","dataset","slugMatch","_window$localStorage","unsetCookie","navigator","cookieEnabled","window","localStorage","removeItem","btfNavClearBtCookieEls","btfNavClearBtCookieEl","_window$localStorage2","_window$localStorage3","hasAttribute","config","gtm","sendEvent","GTMObject","navTracking","GoogleTagManager","EventActionEnums","NavigationCategoryEnums","NavigationGroupEnums","NavigationLevelEnums","NavigationPlatformEnums","el","_ref","_ref2","_ref3","_ref4","_ref5","_ref6","_ref7","_ref8","_ref9","_ref10","_getDecodedValueFromS","_getDecodedValueFromS2","_navigationLevelAsser","isSecondaryNavigation","isSecondaryNavigationMobile","_navigationLevelAsser2","isSubNavigation","isSecondarySubNavigationMobile","_navigationLevelAsser3","isSubNavigationLabel","isSecondaryLabelNavigation","isSecondaryLabelNavigationMobile","navigationLevelEl","navigationPlatformEl","navigationGroupEl","navigationLevel","navigationPlatform","navigationGroup","parent","child","grandchild","main","secondary","mobile","desktop","navigationLevelAssertionMap","isMainNavigation","isFooterNavigation","isTabsNavigation","isFooterLabelNavigation","getTabPlacement","PlacementEnums","includes","placement","Object","values","_objectSpread","_el$closest","_el$closest2","_el$closest3","_el$closest4","_el$closest5","footerNavEl","footerLabelEl","tabEl","firstElementChild","navEl","subnavEl","labelEl","getCapitalizedInnerText","_element$innerText","capitalize","innerText","getMenuCategory","_el$closest6","_capitalize","_secondaryNavFirstChi","secondaryNavFirstChildMobile","textContent","trim","getSecondaryNavigationMobileBreadcrumbsRootText","getSubMenuCategory","getLabel","isNav","isSubnav","isLabel","menuCat","submenuCat","labelCat","getNavigationCategories","event_action","submenuAction","secondaryAction","secondarySubmenuAction","menuAction","_navigationLevelAsser4","_navigationLevelAsser5","getEventPlacement","scrolled_75","getDecodedValueFromSessionStorage","sessionScrolledKey","session_start_time","sessionStartTimeKey"],"sourceRoot":""}