{"version":3,"sources":["webpack:///./cartridges/app_global_core/cartridge/client/default/js/components/component.js","webpack:///./cartridges/app_global_core/cartridge/client/default/js/header/megaMenu.js","webpack:///./cartridges/app_global_core/cartridge/client/default/js/header.js","webpack:///./cartridges/app_global_core/cartridge/client/default/js/components/headerMenu.js"],"names":["Component","constructor","el","id","this","$el","$","name","dataset","comp","state","getInitialState","previousState","url","setAttribute","templateElem","document","getElementById","initialize","watchForChanges","resizedFinished","template","makeTemplate","innerHTML","replace","toString","fetchContent","render","apply","enable","on","clearTimeout","setTimeout","breakpointCheck","onResize","trigger","dataUrl","cb","fetch","then","response","contentType","headers","get","indexOf","json","data","setState","text","observer","MutationObserver","mutationList","mutation","type","attributeName","console","debug","observe","attributes","childList","subtree","error","message","breaktpoint","utils","getCurrentBreakpoint","onDesktop","onTablet","onMobile","getUrl","getComponentId","templateString","templateData","Function","Object","keys","join","setHTML","disable","disconnect","didScroll","hoverTimeout","catBtnMouseHoverTimeout","finallyCloseMenu","currentTargetId","currentTargetMouseLeaveId","require","constants","focusHelper","pageHeader","menuWrapper","lastScrollTop","navbarHeight","menuCloseTimer","menuHideTimer","isNavHover","currentOpen","checkMegaContent","removeClass","each","find","length","is","addClass","closest","applyMenuPositionStyles","includes","window","width","breakpoints","lg","headerHeight","outerHeight","hasClass","scrollY","css","hasScrolled","scrollTop","footComp","Math","abs","transition","top","isInViewport","height","position","getViewPortsize","isViewPortAttr","isFontColor","screenSize","attr","openMenu","menuElem","elementId","isKeyboard","tallestHeight","$allCatBtn","calculatedHeight","applyMaxHeight","not","parseInt","TIMEOUT","MENU_SHOW","push","init","$leftCatBtn","$megaWrapper","$l2Toggle","querySelector","toLowerCase","index","className","match","e","currentTarget","which","parent","MENU_ITEM_HIDE_PREP","MENU_ITEM_HIDE","minHeight","MENU_CLOSE","$link","keyCode","target","preventDefault","focus","megaWrapper","categoryAssets","mobilenavSlotBottom","has","append","clone","content","next","idValue","trim","role","focusParams","event","containerSelector","firstElementSelector","lastElementSelector","nextToLastElementSelector","setTabNextFocus","$curElement","isExpanded","prop","updateAriaAttributes","element","expandedState","toggleClass","initializeSlider","prevArrow","nextArrow","setInterval","$showPopover","parents","accountElm","stopPropagation","hide","openNavbar","classList","toggle","show","closeNavbar","$navContainer","$navBar","processInclude","megaNav","HeaderMenu","super","html","header","languageSelectorComp","PVH","mountAllComponents"],"mappings":"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","file":"component26.js","sourcesContent":["import utils from '../utils';\n\n// TODO\n// 1. Responsive events - DONE\n// 2. Intersection observer for enable\n// 3. distroy function\n// 4. Fix ID to avoid duplication - DONE\n// 5. correct state diff\n// 6. import css through component [IMP]\n// 7. Dynamic import of components [IMP]\n\n/**\n * Component super class\n */\nclass Component {\n constructor(el, id) {\n this.el = el;\n this.$el = $(el);\n this.name = el.dataset.comp;\n this.id = id;\n this.state = this.getInitialState() || {};\n this.previousState = this.state;\n this.url = el.dataset.url;\n this.el.setAttribute('id', this.id);\n this.templateElem = document.getElementById(`tmpl-${this.name}`);\n this.initialize();\n this.watchForChanges();\n }\n\n /**\n * Initialize the component instance\n */\n initialize() {\n // if template string exist then make a template out of it\n if (this.templateElem) {\n this.template = this.makeTemplate(this.templateElem.innerHTML.replace(/\\{/ig, '${').toString());\n }\n // if data definition exists then get data and then render\n if (this.el.dataset.url && typeof this.fetchContent === 'function') {\n this.fetchContent(this.el.dataset.url);\n } else if (this.template) {\n this.render.apply(this, [this.previousState, this.state]);\n } else {\n this.enable.apply(this, [this.previousState, this.state]);\n }\n\n // check if the browser is been continuesly resized and wait for stop to trigger breakpoint check\n let resizedFinished;\n $('body').on('window:resized', () => {\n clearTimeout(resizedFinished);\n resizedFinished = setTimeout(() => {\n this.breakpointCheck();\n this.onResize();\n }, 100);\n });\n\n // Post initialization activities\n this.breakpointCheck();\n this.$el.trigger('component:initialized', this);\n }\n\n /**\n * Get Ajax content reseponse from data-url in component markup\n * @param {String} dataUrl Ajax url\n */\n fetchContent(dataUrl, cb) {\n // TODO : need exception handling\n fetch(dataUrl)\n .then((response) => {\n const contentType = response.headers.get('content-type');\n // check if JSON and parse else return text\n if (contentType && contentType.indexOf('application/json') !== -1) {\n return response.json().then(data => {\n this.setState({\n ...this.state,\n data\n });\n });\n }\n return response.text().then(data => {\n this.setState({\n ...this.state,\n data\n });\n });\n })\n .then(() => {\n if (typeof cb === 'function') {\n cb();\n }\n });\n }\n\n /**\n * What for component changes\n */\n watchForChanges() {\n const config = { attributes: true, childList: false, subtree: false };\n\n try {\n // Callback function to execute when mutations are observed\n const callback = (mutationList, observer) => {\n for (const mutation of mutationList) {\n if (mutation.type === 'childList') {\n } else if (mutation.type === 'attributes') {\n if (mutation.attributeName === 'data-url') {\n this.fetchContent(this.el.dataset.url);\n }\n } else {\n console.debug('The subtree was modified.');\n }\n }\n };\n\n // Create an observer instance linked to the callback function\n this.observer = new MutationObserver(callback);\n\n // Start observing the target node for configured mutations\n this.observer.observe(this.el, config);\n } catch (error) {\n console.error('Could not bind observer to', this.el, error.message);\n }\n }\n\n /**\n * get Initial component state\n * @returns {Object}\n */\n getInitialState() {\n return {};\n }\n\n /**\n * Breaktpoint check to call proper handler in component instance\n * @returns {Void}\n */\n breakpointCheck() {\n // check if breakpoint changed\n if (this.breaktpoint === utils.getCurrentBreakpoint()) {\n return;\n }\n\n // update breakpoint\n this.breaktpoint = utils.getCurrentBreakpoint();\n\n // call corresponding onHandler for breakpoint\n switch (this.breaktpoint) {\n case 'desktop':\n case 'large-desktop':\n this.onDesktop.apply(this);\n break;\n\n case 'tablet':\n this.onTablet.apply(this);\n break;\n\n case 'mobile':\n this.onMobile.apply(this);\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Get current breakpoint as string\n * @returns {Strinbg}\n */\n getCurrentBreakpoint() {\n return utils.getCurrentBreakpoint();\n }\n\n /**\n * Get component definition URL if exists\n * @returns {Srtring}\n */\n getUrl() {\n return this.url;\n }\n\n /**\n * Get component ID\n * @returns {String}\n */\n getComponentId() {\n return this.id;\n }\n\n // https://gist.github.com/malko/b8a432bbb2198ca5d38cd3dc27d40f24\n makeTemplate(templateString) {\n return (templateData) => new Function(`{${Object.keys(templateData).join(',')}}`, 'return `' + templateString + '`')(templateData);\n }\n\n /**\n * Set the component state\n * @param {Object} data Object to set into state\n */\n setState(data) {\n this.state = {\n ...this.state,\n ...data\n };\n if (this.previousState !== this.state) {\n this.previousState = this.state;\n this.render(this.previousState, this.state);\n }\n }\n\n /**\n * Render component with template if exists\n */\n render() {\n if (this.template) {\n this.el.setHTML(this.template(this.state));\n }\n\n // once render call enable to do even binding, in case of no render\n // just call enabled to even bind on existing markup\n this.enable.apply(this);\n }\n\n /**\n * Enable component once initialized\n */\n enable() {\n // implement by child\n }\n\n disable() {\n this.observer.disconnect();\n }\n\n /**\n * Mobile handler function which gets called in mobile breakpoint\n */\n onMobile() {\n // implement by child\n }\n\n /**\n * Tablet handler function which gets calls in tablet breakpoint\n */\n onTablet() {\n // implement by child\n }\n\n /**\n * Desktop handler function which gets calls in desktop breakpoint\n */\n onDesktop() {\n // implement by child\n }\n\n /**\n * Resize handler which get called when component resizes\n */\n onResize() {\n // implement by child\n }\n}\n\nexport default Component;\n","const utils = require('base_global/utils');\nconst constants = require('base_global/constants');\nvar focusHelper = require('base/components/focus');\n\nlet pageHeader = '';\nlet menuWrapper = false;\nconst isVisibleClass = 'is-visible';\nconst menuDropdownOpenClass = 'is-dropdown-visible';\n\nvar didScroll;\nvar delta = 5;\nvar lastScrollTop = 0;\nvar navbarHeight = '';\n\nlet hoverTimeout;\nlet catBtnMouseHoverTimeout;\nlet menuCloseTimer = [];\nlet menuHideTimer = [];\nlet finallyCloseMenu;\nlet isNavHover = false;\nlet currentOpen = [];\nlet currentTargetId;\nlet currentTargetMouseLeaveId;\n\n\n/**\n * Get the tallest column and set max-height\n * @param {string} menuitem the container to apply max-height to\n */\nfunction getTallestColumnHeight(menuitem) {\n var maxHeight = menuitem.find('.ds-dropdown-menu .ds-column').outerHeight(true);\n return maxHeight; // Return the inner container height\n}\n\n/**\n * loop through mega columns and add a class if it contains content for flex-basis\n */\nfunction checkMegaContent() {\n // remove current class to reset\n $('.ds-column').removeClass('has-slot');\n\n // loop thru columns checking for visible content\n $('.ds-column .column').each(function () {\n if ($(this).find('.category-asset .html-slot-container').length > 0 && !$(this).find('.category-asset').is(':hidden')) {\n $(this).addClass('has-content');\n $(this).closest('.ds-column').addClass('has-slot');\n }\n });\n}\n\n/**\n * Updates the top position of the navigation menu based on header height and scroll position\n * Adjusts menu position differently for mobile and desktop viewports\n */\nfunction applyMenuPositionStyles() {\n // only run this code for small tablet and mobile\n if (!utils.getCurrentBreakpoint().includes('desktop') && $(window).width() < constants.breakpoints.lg) {\n var headerHeight = $('#headerComponent .ds-navbar').outerHeight();\n if (!$('.ds-navbar').hasClass('in-scroll')) {\n headerHeight += $('#headPromoWrapper').is(':visible') ? ($('#headPromoWrapper').outerHeight() - window.scrollY) - 1 : 0;\n }\n $('#nav-main, .mega-wrapper').css('top', headerHeight);\n $('.mega-wrapper').css('height', `calc(var(--vh) - ${headerHeight}px)`);\n }\n}\n\n/**\n * Function to activate subcategory\n */\nfunction hasScrolled() {\n var scrollTop = $(window).scrollTop();\n var footComp = $('#footercontent');\n\n if (Math.abs(lastScrollTop - scrollTop) > 10) {\n $('.js-header-update--mob').addClass('in-scroll').css({\n transition: 'background-color 0.3s cubic-bezier(0.19, 1, 0.22, 1)'\n });\n }\n // Make sure they scroll more than delta\n if (Math.abs(lastScrollTop - scrollTop) <= delta) { return; }\n\n // If they scrolled down and are past the navbar, add class .nav-up.\n // This is necessary so you never see what is \"behind\" the navbar.\n if (scrollTop > lastScrollTop && scrollTop > navbarHeight && scrollTop > 100) {\n $('.js-showpopover').addClass('d-none-popover');\n if (!$('body').hasClass('nav-hidden') && !$('html').hasClass('hide-scroll-and-lock') && !$('.ds-navbar-collapse').hasClass('is-visible')) {\n $('body').addClass('nav-hidden').trigger('nav:updated');\n }\n\n $('.filtered-list-short').css({\n top: '0px'\n });\n } else if (utils.isInViewport(footComp)) {\n // eslint-disable-next-line no-lonely-if\n // Scroll Up\n if ((scrollTop + $(window).height() < $(document).height()) && scrollTop > 40) {\n if ($('body').hasClass('nav-hidden')) {\n $('body').removeClass('nav-hidden').trigger('nav:updated');\n }\n\n $('.js-showpopover').addClass('d-none-popover');\n $('.filtered-list-short').css('top', ($('#headerComponent').outerHeight() - 2) + 'px');\n if ($(window).width() < 992 && $(window).width() > 639) {\n $('.js-globalnav-header').css({\n position: 'fixed'\n });\n }\n } else {\n // Scroll reaches 0\n $('.js-globalnav-header').css({\n position: 'sticky'\n });\n $('.js-header-update--mob').removeClass('in-scroll').css({\n transition: 'background-color 0.4s cubic-bezier(0.19, 1, 0.22, 1)'\n });\n }\n }\n applyMenuPositionStyles();\n lastScrollTop = scrollTop;\n}\n\n\nconst closeNavbar = () => {\n $(pageHeader).on('click', '.closeMobileMenu', function () {\n $('html').removeClass('hide-scroll-and-lock menu-open nav-hover');\n const $navContainer = $('.mega-wrapper');\n const $navBar = $('.ds-navbar-collapse');\n $navContainer.scrollTop(0);\n menuWrapper.classList.toggle(isVisibleClass);\n $navBar.removeClass(menuDropdownOpenClass);\n $navContainer.removeClass('show');\n $('.l2-column, .category-level2-title, .l3-categories').removeClass('expanded');\n $('.btn-close-icon').hide();\n $('.toggle-menu-mobile').show();\n $('.ds-globalnav-header').removeClass('drawer-open');\n if (!$('.ds-navbar-collapse').hasClass('is-visible')) {\n $('html').removeClass('hide-scroll-and-lock menu-open');\n }\n });\n};\n\nconst openNavbar = () => {\n $(pageHeader).on('click', '.toggle-menu-mobile', function () {\n $('html').addClass('hide-scroll-and-lock menu-open');\n applyMenuPositionStyles();\n menuWrapper.classList.toggle(isVisibleClass);\n $('.menu__brand-logo').css('display', 'contents');\n $('.mega-wrapper').removeClass('show');\n $('.btn-close-icon').show();\n $('.toggle-menu-mobile').hide();\n $('.ds-globalnav-header').addClass('drawer-open');\n });\n};\n\n/**\n * Gets the screen size of the viewport\n * @return {Object} mobile and desktop\n */\nfunction getViewPortsize() {\n var screenSize = $(window).width();\n var isViewPortAttr;\n var isFontColor;\n if (screenSize <= 768) {\n isViewPortAttr = $('.js-main-menu').attr('data-attr-mob');\n isFontColor = $('.js-main-menu').attr('data-attr-mob-color');\n } else if (screenSize > 768) {\n isViewPortAttr = $('.js-main-menu').attr('data-attr-desk');\n isFontColor = $('.js-main-menu').attr('data-attr-desk-color');\n }\n return { isViewPortAttr, isFontColor };\n}\n\n\n/**\n * apply a max-height of mega based on the viewport height and top distance\n * @return {Object} mobile and desktop\n */\nfunction applyMaxHeight() {\n let headerHeight = $('.ds-navbar').outerHeight();\n let overLapHeight = 30; // dropdown menu overlapping 30px on header\n if (!$('.ds-navbar').hasClass('in-scroll')) {\n headerHeight += $('#headPromoWrapper').is(':visible') ? $('#headPromoWrapper').outerHeight() : 0;\n }\n var viewportHeight = $(window).height();\n var calculatedHeight = viewportHeight - headerHeight;\n\n // Apply the max-height to the target element\n $('.mega-wrapper').css('max-height', (calculatedHeight + overLapHeight) + 'px');\n}\n\n\n/**\n * Initialize mobile menu event handlers\n * Handles click events for menu items and back navigation\n */\nfunction initializeMobileMenuHandlers() {\n const $leftCatBtn = $('.js-left-catbtn');\n const $megaWrapper = $('.mega-wrapper');\n const $l2Toggle = $('.category-level2-title');\n\n // Loop through each mega-wrapper\n $megaWrapper.each(function () {\n // Find the current mega-wrapper\n var megaWrapper = $(this);\n\n // Find all the category-asset divs inside the current mega-wrapper\n var categoryAssets = megaWrapper.find('.category-asset');\n\n // Find the mobilenav-slot-bottom inside the current mega-wrapper\n var mobilenavSlotBottom = megaWrapper.find('.mobilenav-slot-bottom');\n\n // Append each category-asset to the mobilenav-slot-bottom\n categoryAssets.each(function () {\n if ($(this).has('.html-slot-container').length) {\n mobilenavSlotBottom.append($(this).clone());\n }\n });\n });\n\n $l2Toggle.each(function () {\n if (!$(this).attr('aria-expanded')) {\n // Dynamically add aria-expanded and aria-controls for mobile view\n $(this).attr('aria-expanded', 'false');\n\n var content = $(this).next('.l3-categories');\n if (content.length) {\n var linkElement = $(this).find('a.level2-category');\n var linkText = linkElement.text().trim();\n var idValue = 'mobile-acc-' + linkText.replace(/[^\\w-]/g, '-').toLowerCase();\n\n $(this).attr({\n id: idValue,\n role: 'button',\n 'aria-controls': idValue + '-content'\n });\n\n content.attr({\n 'aria-hidden': 'true',\n 'aria-labelledby': idValue,\n id: idValue + '-content'\n });\n }\n }\n });\n $('body').on('keydown', '.ds-globalnav-header.drawer-open', function (e) {\n var focusParams = {\n event: e,\n containerSelector: '.ds-globalnav-header.drawer-open',\n firstElementSelector: '.closeMobileMenu',\n lastElementSelector: '.minicart-link',\n nextToLastElementSelector: '.acc-popover'\n };\n focusHelper.setTabNextFocus(focusParams);\n });\n\n // Handle menu item clicks\n $leftCatBtn.on('click', function handleMenuClick(e) {\n applyMenuPositionStyles();\n if ($(e.target).closest('.menu-level1, .category-level2-title').length && !$(e.target).hasClass('mob-clickable') && !$(e.target).parent('.category-level2-title').hasClass('level2-nosubs')) {\n e.preventDefault();\n }\n $megaWrapper.removeClass('show');\n $(this).find('.mega-wrapper').addClass('show');\n $('.ds-navbar-collapse').addClass(menuDropdownOpenClass);\n });\n\n $l2Toggle.on('click', function () {\n const $curElement = $(this);\n var isExpanded = $(this).prop('aria-expanded') === true; // Check current state\n const updateAriaAttributes = (element, expandedState) => {\n element.attr('aria-expanded', !expandedState);\n element.next('.l3-categories').attr('aria-hidden', expandedState);\n };\n if (!$(this).hasClass('level2-nosubs') && !$(this).hasClass('level2-stacked')) {\n $(this).parent('.l2-column').toggleClass('expanded');\n // Handle aria-expanded for the heading (this) and aria-hidden for the content\n updateAriaAttributes($curElement, isExpanded);\n } else if ($(this).hasClass('level2-stacked')) {\n $(this).toggleClass('expanded').next('.l3-categories').toggleClass('expanded');\n // Handle aria-expanded for the heading (this) and aria-hidden for the content\n updateAriaAttributes($curElement, isExpanded);\n }\n });\n\n // Handle back button clicks in mega nav header\n $(document).on('click', '.mega-nav-header .back-arrow', function handleBackClick(e) {\n e.preventDefault();\n $('.l2-column, .category-level2-title, .l3-categories').removeClass('expanded');\n $('.mega-wrapper').scrollTop(0);\n $(this).closest('.mega-wrapper').removeClass('show');\n $('.ds-navbar-collapse').removeClass(menuDropdownOpenClass);\n });\n}\n\n/**\n * Opens a mega menu with animation and accessibility features\n * @param {HTMLElement} menuElem - The menu element to be opened\n * @param {string} elementId - Unique identifier for the menu element, used for styling\n * @param {boolean} isKeyboard - Flag indicating if the menu was triggered by keyboard interaction\n * @description\n * This function handles the opening of mega menu elements by:\n * - Setting the height based on the tallest column\n * - Managing CSS classes for animations\n * - Updating ARIA attributes for accessibility\n * - Handling scroll visibility\n * - Adding unique styling classes for shop categories\n * - Managing menu state and transitions\n */\nfunction openMenu(menuElem, elementId, isKeyboard) {\n var tallestHeight = getTallestColumnHeight($(menuElem)); // Pass $(this) as the container\n var megaHeightBuffer = 5;\n const $allCatBtn = $('.js-left-catbtn');\n\n applyMaxHeight(); // apply max-height dynamically\n if (isKeyboard) $allCatBtn.not(menuElem).removeClass('show');\n $('.js-left-catbtn').removeClass('scroll-visible');\n clearTimeout(hoverTimeout);\n $(menuElem).addClass('show').removeClass('hiding');\n $(menuElem).find('.ds-nav-link.menu-level1, .nav-dropdown-icon').attr('aria-expanded', 'true');\n $(menuElem).find('.ds-dropdown-menu').css('min-height', tallestHeight);\n $('.js-left-catbtn').find('.mega-wrapper').css('height', tallestHeight + megaHeightBuffer);\n\n if (parseInt($(menuElem).find('.ds-dropdown-menu').css('min-height'), 10) > parseInt($(menuElem).find('.mega-wrapper').css('max-height'), 10)) {\n $(menuElem).addClass('scroll-visible');\n }\n\n // add hover class with unique ID to header nave for content team to update design on sale nav and nav footer\n if (elementId) {\n $(menuElem).closest('.ds-globalnav-header').addClass('shopcat-' + elementId);\n }\n\n setTimeout(() => {\n $(menuElem).addClass('showing');\n }, constants.TIMEOUT.MENU_SHOW);\n\n currentOpen = [];\n currentOpen.push(currentTargetId);\n}\n\nexport default {\n init: function () {\n pageHeader = document.querySelector('.header');\n menuWrapper = pageHeader.querySelector('.ds-navbar-collapse') || false;\n navbarHeight = $('.js-globalnav-header').outerHeight();\n\n $(window).on('load', function () {\n hasScrolled();\n });\n\n $('.nav-item a').on('mouseover', function () {\n var elementId = $(this).attr('id') || '';\n\n if (elementId) {\n elementId = elementId.toLowerCase();\n }\n\n // remove hover class with unique ID to column parent\n $(this).closest('.column').removeClass(function (index, className) {\n return (className.match(/\\bhover-\\S+/g) || []).join(' ');\n });\n\n // add hover class with unique ID to column parent\n if (elementId) {\n $(this).closest('.column').addClass('hover-' + elementId);\n }\n });\n\n if (utils.getCurrentBreakpoint() !== 'mobile') {\n // check for content columns for grid colspan\n checkMegaContent();\n\n $('.js-left-catbtn').on('mouseover keydown', function (e) {\n currentTargetId = e.currentTarget && e.currentTarget.id;\n const isKeyboard = e.type === 'keydown';\n let elementId = $(this).find('.menu-level1').attr('id') || '';\n\n if (currentOpen.includes(currentTargetId)) {\n // this means the menu is already open and we should cancel any new open\n clearTimeout(catBtnMouseHoverTimeout);\n clearTimeout(finallyCloseMenu);\n clearTimeout(menuCloseTimer[currentTargetId]);\n clearTimeout(menuHideTimer[currentTargetId]);\n\n // there is a chance that the menu just started to close half way,\n // so if it comes into this block we should put back the show classes\n openMenu($(`#${currentTargetId}`)[0], elementId, isKeyboard);\n return;\n }\n\n if (e.type === 'keydown' && e.which !== 13) return;\n if ($(this).hasClass('show')) return;\n\n const $hoverTab = $(this).attr('id');\n const $subCatName = $(this).text();\n\n if (elementId) {\n elementId = elementId.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();\n }\n\n // remove hover class with unique ID to column parent\n $(this).closest('.ds-globalnav-header').removeClass(function (index, className) {\n return (className.match(/\\bshopcat-\\S+/g) || []).join(' ');\n });\n\n // any time mouse is over the list item add class as it going to open the menu\n $('html').addClass('hide-scroll-and-lock menu-open');\n\n // add show from menu item if open through keyboard or in tab\n if (e.type === 'keydown' || utils.getCurrentBreakpoint() === 'tablet') {\n $(this).parent('.ds-navbar-nav').addClass('show');\n }\n\n // Clear any existing mouseleave timeouts\n clearTimeout(catBtnMouseHoverTimeout);\n clearTimeout(finallyCloseMenu);\n\n // add show class with delay to have animation working\n catBtnMouseHoverTimeout = setTimeout(() => {\n openMenu(this, elementId, isKeyboard);\n }, constants.TIMEOUT.MENU_SHOW);\n\n }).on('mouseleave', function (e) {\n currentTargetMouseLeaveId = e.currentTarget && e.currentTarget.id;\n\n // Reset mega wrapper height and remove show class on mouse leave\n clearTimeout(catBtnMouseHoverTimeout);\n\n // add hiding class with delay to have animation working\n menuHideTimer[currentTargetMouseLeaveId] = setTimeout(() => {\n // if mouse is still over nav do not remove else clear it\n if (!isNavHover) {\n $('.mega-wrapper').css({ height: 0 });\n }\n $(this).addClass('hiding');\n }, constants.TIMEOUT.MENU_ITEM_HIDE_PREP);\n\n // Remove show and aria attributes when mouse leaves\n // the delay is for the transition between two menu and avoid jump\n menuCloseTimer[currentTargetMouseLeaveId] = setTimeout(() => {\n $(this)\n .removeClass('show hiding showing')\n .find('.ds-nav-link.menu-level1').attr('aria-expanded', 'false');\n $(this).find('.nav-dropdown-icon').attr('aria-expanded', 'false');\n }, constants.TIMEOUT.MENU_ITEM_HIDE);\n\n // no interaction menu is close height removed\n finallyCloseMenu = setTimeout(() => {\n const $allCatBtn = $('.js-left-catbtn');\n // Remove show class from all and add show to hover item.\n $allCatBtn.removeClass('show showing hiding');\n\n $('.ds-nav-link.menu-level1, .nav-dropdown-icon').attr('aria-expanded', 'false');\n $('.mega-wrapper').css({ height: 0 });\n $('.ds-dropdown-menu').css({ minHeight: 0 });\n\n // remove menu-open when mouse out\n $('html').removeClass('hide-scroll-and-lock menu-open');\n\n // if mouse is still over nav do not remove else clear it\n if (!isNavHover) $('html').removeClass('nav-hover');\n\n // reset current open array\n currentOpen = [];\n }, constants.TIMEOUT.MENU_CLOSE);\n\n // remove hover class with unique ID to column parent\n $(this).closest('.ds-globalnav-header').removeClass(function (index, className) {\n return (className.match(/\\bshopcat-\\S+/g) || []).join(' ');\n });\n });\n\n $('.js-left-catbtn').on('focus focusin', function () {\n var $link = $(this);\n if ($link.hasClass('ds-dropdown')) {\n // Add functionality for Enter key\n $link.on('keydown', function (e) {\n if ((e.which === 13 || e.keyCode === 13) && e.target === this) {\n e.preventDefault(); // Prevent default action\n // Shift focus to the .mega-wrapper div\n $('.mega-wrapper').focus();\n }\n });\n }\n });\n } else {\n initializeMobileMenuHandlers();\n }\n\n // check viewport before intializing\n if (utils.getCurrentBreakpoint() === 'mobile') {\n utils.initializeSlider($('.promoBanner--mobile'), {\n prevArrow:\n '',\n nextArrow:\n ''\n });\n // this logic runs without delay in mobile view\n $('.ds-navbar-nav > li').on('mouseenter', function (e) {\n $('html').addClass('hide-scroll-and-lock menu-open');\n }).on('mouseleave', function (e) {\n if (!$('.ds-navbar-collapse').hasClass('is-visible')) {\n $('html').removeClass('hide-scroll-and-lock menu-open nav-hover');\n }\n });\n }\n\n // idenfier to know if the mouse is over nav for transparency purpose\n $('.ds-globalnav-header').on('mouseenter', function () {\n isNavHover = true;\n $('html').addClass('nav-hover nav-hovering');\n }).on('mouseleave', function () {\n isNavHover = false;\n $('html').removeClass('nav-hovering');\n if (!$('html').hasClass('menu-open')) {\n $('html').removeClass('nav-hover');\n }\n });\n\n // FIXME: this code seems not needed\n $('.ds-navbar-nav').on('mouseover mouseleave keydown focusin focusout', function (e) {\n if (e.type === 'mouseover') {\n hoverTimeout = setTimeout(() => {\n $(this).addClass('show');\n }, 300);\n }\n if (e.type === 'focusin') {\n hoverTimeout = setTimeout(() => {\n $(this).addClass('show');\n }, 100);\n }\n\n if (e.type === 'mouseleave' || (e.type === 'keydown' && e.which === 27) || e.type === 'focusout') {\n clearTimeout(hoverTimeout);\n clearTimeout(catBtnMouseHoverTimeout);\n $(this).removeClass('show');\n }\n });\n\n // to show peeky header on scroll up\n $(window).on('scroll', function () {\n didScroll = true;\n });\n\n // check for mega content on resize\n $(window).on('resize', function () {\n checkMegaContent();\n });\n\n setInterval(function () {\n if (didScroll) {\n hasScrolled();\n didScroll = false;\n }\n }, 250);\n\n /* Account show changes */\n $(document).on('click', function (e) {\n var $showPopover = $('.js-showpopover');\n if ($(e.target).parents('.js-acc-btn').length) {\n $showPopover.toggleClass('d-none-popover');\n } else if (!$showPopover.hasClass('d-none-popover')) {\n $showPopover.addClass('d-none-popover');\n }\n\n var accountElm = $('.js-showpopover .reg-acc-name');\n $('.reg-acc-name').on('click', function (event) {\n event.stopPropagation();\n });\n if (accountElm.width() > $showPopover.width()) {\n accountElm.hide();\n }\n });\n\n setTimeout(() => {\n if (getViewPortsize().isViewPortAttr === 'true') {\n $('.ds-navbar').addClass('transparent__background');\n if (getViewPortsize().isFontColor === 'white') {\n $('.ds-navbar').addClass('color-white');\n } else {\n $('.ds-navbar').addClass('color-black');\n }\n $('.storepage.plp-page').css('padding-top', '80px');\n }\n }, 5);\n },\n\n openNavbar: openNavbar,\n closeNavbar: closeNavbar\n};\n","import megaNav from './header/megaMenu';\nvar processInclude = require('base/util');\n\nexport default {\n init: () => {\n processInclude(megaNav);\n }\n};","import Component from './component';\nimport header from '../header';\n\n/**\n * Header component\n */\nexport default class HeaderMenu extends Component {\n constructor(...args) {\n super(...args);\n return this;\n }\n\n enable() {\n this.$el.html(this.state.data);\n header.init();\n let languageSelectorComp = $('[data-comp=\"LanguageSelector\"]');\n if (this.$el.find('[data-comp=\"LanguageSelector\"]').length) {\n // if mobile menu has languageselector component\n languageSelectorComp = this.$el.find('[data-comp=\"LanguageSelector\"]');\n }\n if (languageSelectorComp.length) {\n // mount component after header component is loaded\n languageSelectorComp.removeClass('enabled');\n window.PVH.mountAllComponents('LanguageSelector');\n }\n }\n}\n"],"sourceRoot":""}