{"version":3,"sources":["webpack:///./src/js/helpers/index.js","webpack:///./src/js/constants.js","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./node_modules/tua-body-scroll-lock/dist/tua-bsl.mjs","webpack:///./src/js/modules/header.js"],"names":["isMobile","window","matchMedia","matches","isTabletLandscape","focusableElements","isDescendant","parent","child","node","parentNode","decodeEntity","str","ta","document","createElement","innerHTML","value","getSafeId","getRandomInt","min","max","Math","ceil","floor","random","sortFiltersBySitecore","unsortedFilters","sitecoreFilters","filtersInSitecore","filter","facet","indexOf","sortRemainingFilters","sort","a","b","toLowerCase","BREAKPOINTS","Object","freeze","mobile","tablet","tabletLandscape","desktop","moduleMax","wide","debounce","callback","wait","timerId","args","clearTimeout","setTimeout","KEYS","END","HOME","LEFT","UP","RIGHT","DOWN","ENTER","ESC","TAB","SPACE","KEYS_DIRECTION","37","38","39","40","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","global","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","nativeMin","now","Date","isObject","type","toNumber","isObjectLike","call","isSymbol","other","valueOf","replace","isBinary","test","slice","module","exports","func","options","lastArgs","lastThis","maxWait","result","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","thisArg","undefined","apply","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","arguments","this","cancel","flush","isServer","detectOS","ua","navigator","userAgent","ipad","ios","android","lockedNum","initialClientY","initialClientX","unLockCallback","documentListenerAdded","lockedElements","eventListenerOptions","Error","isSupportOptions","listenerOptions","noop","addEventListener","removeEventListener","capture","getEventListenerOptions","passive","supportsNativeSmoothScroll","documentElement","style","preventDefault","event","cancelable","lock","targetElement","Array","isArray","forEach","element","ontouchstart","targetTouches","clientY","clientX","ontouchmove","length","scrollTop","scrollLeft","scrollWidth","scrollHeight","clientWidth","clientHeight","isVertical","abs","stopPropagation","handleScroll","push","$html","$body","body","htmlStyle","assign","bodyStyle","height","overflow","top","concat","width","position","overflowType","x","scrollToOptions","behavior","scrollTo","setOverflowHiddenMobile","scrollBarWidth","innerWidth","previousPaddingRight","getComputedStyle","paddingRight","boxSizing","Module","Component","dom","$burger","el","_$","$primaryNav","$primaryNavButtons","_$$","$utilityNav","$utilityNavButtons","$primaryNavList","$logo","$searchToggle","$searchForm","$submenuLinks","$primaryNavItems","$banners","primaryNavOpenClass","primaryNavChildActiveClass","burgerOpenClass","activeMenuItemClass","utilityNavExpandedClass","submenuExpandedClass","searchFormOpenClass","setTabOrder","setRoles","lastResizeWidth","focusTrap","createFocusTrap","allowOutsideClick","clickOutsideDeactivates","escapeDeactivates","onDeactivate","removeProperty","pop","clearBodyLocks","onActivate","setProperty","setHeaderHeight","isScrolling","isTransitioning","lastScrollY","scrollY","hiddenBanners","_on","togglePrimaryNavExpand","bind","toggleSearchExpand","handleKeyDown","handleBackBtnClick","handlePrimaryBtnClick","handleSubMenuClick","handleMainLinkClick","handleClickOutsidePrimary","_debounce","handleResize","e","requestAnimationFrame","offsetHeight","header","banners","banner","getBoundingClientRect","includes","index","splice","totalBannerHeight","reduce","sum","maxBannerHeight","map","headerHeight","shouldBeSticky","classList","contains","add","remove","removeActiveMenuItems","primaryNavExpanded","activeMenuItem","closeActiveMenuItem","toggle","setUtilityNavPosition","activate","deactivate","_a","searchInput","querySelector","focus","dispatchEvent","Event","insetBlockStart","_b","_c","_d","_e","_f","_g","_h","_i","_j","idx","$banner","lastLayout","setAttribute","primaryNavBtn","utilityNavBtn","submenuLink","removeAttribute","closest","$el","expandedSubmenu","$btn","target","keyCode","activeElement","blur","menuItem","dataset","id","closeActiveSubmenuItem","submenuContainer","href","open","location","isResizeHorizontal","isSticky"],"mappings":"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","file":"35.f474175159322d744e92.js?v=5b900da3b0a9f164ec5c","sourcesContent":["// /**\n// * Checks browser is running on a native mobile device\n// */\nexport const isMobileDevice = () => {\n const userAgent = navigator.userAgent || navigator.vendor || window.opera;\n\n return (\n /windows phone/i.test(userAgent) ||\n /android/i.test(userAgent) ||\n (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream)\n );\n};\n\n// /**\n// * Checks iOS user agent\n// */\nexport const iOS = () => {\n return (\n [\n 'iPad Simulator',\n 'iPhone Simulator',\n 'iPod Simulator',\n 'iPad',\n 'iPhone',\n 'iPod'\n ].includes(navigator.platform) ||\n (navigator.userAgent.includes('Mac') && 'ontouchend' in document)\n );\n};\n\n// /**\n// * Returns if media query matches mobile\n// */\nexport const isMobile = () => {\n return window.matchMedia('(max-width: 767px)').matches;\n};\n\n// /**\n// * Returns if media query matches tabletLandscape\n// */\nexport const isTabletLandscape = () => {\n return window.matchMedia('(max-width: 1023px)').matches;\n};\n\n// /**\n// * Returns the browser's scrollbar width\n// */\nexport const getScrollbarWidth = () => {\n return window.innerWidth - document.documentElement.clientWidth;\n};\n\n// /**\n// * Checks if an element is focusable\n// *\n// * @param {Object} el - HTML element you want to check if it's focusable\n// */\nexport const isFocusable = el => {\n if (\n el.tabIndex > 0 ||\n (el.tabIndex === 0 && el.getAttribute('tabIndex') !== null)\n ) {\n return true;\n }\n\n if (el.disabled) {\n return false;\n }\n\n /* eslint-disable indent */\n switch (el.nodeName) {\n case 'A':\n return !!el.href && el.rel !== 'ignore';\n case 'INPUT':\n return el.type !== 'hidden' && el.type !== 'file';\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n /* eslint-enable indent */\n};\n\n// /**\n// * FOCUSABLE ELEMENTS\n// */\nexport const focusableElements = [\n '[contenteditable]',\n '[tabindex]:not([tabindex^=\"-\"])',\n 'a[href]',\n 'area[href]',\n 'button:not([disabled]):not([aria-hidden])',\n 'embed',\n 'iframe',\n 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n 'object',\n 'select:not([disabled]):not([aria-hidden])',\n 'textarea:not([disabled]):not([aria-hidden])'\n];\n\n// * Check if an element is outside the viewport\n// */\nexport const isOutOfViewport = elem => {\n // Get element's bounding\n const bounding = elem.getBoundingClientRect();\n\n // Check if it's out of the viewport on each side\n const out = {};\n out.top = bounding.top < 0;\n out.left = bounding.left < 0;\n out.bottom =\n bounding.bottom >\n (window.innerHeight || document.documentElement.clientHeight);\n out.right =\n bounding.right >\n (window.innerWidth || document.documentElement.clientWidth);\n out.any = out.top || out.left || out.bottom || out.right;\n out.all = out.top && out.left && out.bottom && out.right;\n\n return out;\n};\n\nexport const sameOrigin = (uri1, uri2 = false) => {\n if (uri1[0] === '/') return true;\n if (uri1[0] === '/' && uri2[0] === '/') return true;\n if (!uri2) uri2 = window.location.href;\n\n uri1 = new URL(uri1);\n uri2 = new URL(uri2);\n\n const host1 = uri1.hostname.split('www.')[1];\n const host2 = uri2.hostname.split('www.')[2];\n\n if (host1 !== host2) return false;\n if (uri1.port !== uri2.port) return false;\n\n return true;\n};\n\n// * Check if child is a descendant of parent\n// */\nexport const isDescendant = (parent, child) => {\n let node = child.parentNode;\n\n while(node) {\n if (node === parent) {\n return true;\n }\n\n node = node.parentNode;\n }\n\n return false;\n};\n\n// * Decode HTML entities\n// */\nexport const decodeEntity = str => {\n const ta = document.createElement('textarea');\n ta.innerHTML = str;\n return ta.value;\n};\n\n// * Returns a sanitized string to safely populate id parameters in HTML tags\n// */\nexport const getSafeId = str => {\n //return str.replace(/\\W/g, '_');\n return str;\n};\n\n// * Returns a random integer between min (inclusive) and max (inclusive).\n// */\nexport const getRandomInt = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\n\nexport const sortFiltersBySitecore = (\n unsortedFilters,\n sitecoreFilters = []\n) => {\n const filtersInSitecore = unsortedFilters.filter(\n facet => sitecoreFilters.indexOf(facet.value) > -1\n );\n\n const remainingFilters = unsortedFilters.filter(\n facet => sitecoreFilters.indexOf(facet.value) === -1\n );\n\n const sortRemainingFilters = remainingFilters.sort((a, b) => {\n if (a.value.toLowerCase() > b.value.toLowerCase()) {\n return 1;\n }\n return -1;\n });\n\n const filtersInSitecoreOrdered = filtersInSitecore.sort(\n (a, b) =>\n sitecoreFilters.indexOf(a.value) - sitecoreFilters.indexOf(b.value)\n );\n\n return [...filtersInSitecoreOrdered, ...sortRemainingFilters];\n};\n\nexport const BREAKPOINTS = Object.freeze({\n mobile: 361,\n tablet: 769,\n tabletLandscape: 1025,\n desktop: 1281,\n moduleMax: 1251,\n wide: 1601\n});\n\nexport const debounce = (callback, wait) => {\n let timerId;\n return (...args) => {\n clearTimeout(timerId);\n timerId = setTimeout(() => {\n callback(...args);\n }, wait);\n };\n};\n","export const KEYS = {\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n ENTER: 13,\n ESC: 27,\n TAB: 9,\n SPACE: 32\n};\n\nexport const KEYS_DIRECTION = {\n 37: -1,\n 38: -1,\n 39: 1,\n 40: 1\n};\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * tua-body-scroll-lock v1.4.1\n * (c) 2024 Evinma, BuptStEve\n * @license MIT\n */\n\nvar isServer = function isServer() {\n return typeof window === 'undefined';\n};\nvar detectOS = function detectOS(ua) {\n ua = ua || navigator.userAgent;\n var ipad = /(iPad).*OS\\s([\\d_]+)/.test(ua);\n var iphone = !ipad && /(iPhone\\sOS)\\s([\\d_]+)/.test(ua);\n var android = /(Android);?[\\s/]+([\\d.]+)?/.test(ua);\n var ios = iphone || ipad;\n return {\n ios: ios,\n android: android\n };\n};\nfunction getEventListenerOptions(options) {\n /* istanbul ignore if */\n if (isServer()) return false;\n if (!options) {\n throw new Error('options must be provided');\n }\n var isSupportOptions = false;\n var listenerOptions = {\n get passive() {\n isSupportOptions = true;\n return undefined;\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n var noop = function noop() {};\n var testEvent = '__TUA_BSL_TEST_PASSIVE__';\n window.addEventListener(testEvent, noop, listenerOptions);\n window.removeEventListener(testEvent, noop, listenerOptions);\n var capture = options.capture;\n /* istanbul ignore next */\n return isSupportOptions ? options : typeof capture !== 'undefined' ? capture : false;\n}\n\nvar lockedNum = 0;\nvar initialClientY = 0;\nvar initialClientX = 0;\nvar unLockCallback = null;\nvar documentListenerAdded = false;\nvar lockedElements = [];\nvar eventListenerOptions = getEventListenerOptions({\n passive: false\n});\nvar supportsNativeSmoothScroll = !isServer() && 'scrollBehavior' in document.documentElement.style;\nvar setOverflowHiddenPc = function setOverflowHiddenPc() {\n var $html = document.documentElement;\n var htmlStyle = Object.assign({}, $html.style);\n var scrollBarWidth = window.innerWidth - $html.clientWidth;\n var previousPaddingRight = parseInt(window.getComputedStyle($html).paddingRight, 10);\n $html.style.overflow = 'hidden';\n $html.style.boxSizing = 'border-box';\n $html.style.paddingRight = \"\".concat(scrollBarWidth + previousPaddingRight, \"px\");\n return function () {\n ['overflow', 'boxSizing', 'paddingRight'].forEach(function (x) {\n $html.style[x] = htmlStyle[x] || '';\n });\n };\n};\nvar setOverflowHiddenMobile = function setOverflowHiddenMobile(options) {\n var $html = document.documentElement;\n var $body = document.body;\n var scrollTop = $html.scrollTop || $body.scrollTop;\n var htmlStyle = Object.assign({}, $html.style);\n var bodyStyle = Object.assign({}, $body.style);\n $html.style.height = '100%';\n $html.style.overflow = 'hidden';\n $body.style.top = \"-\".concat(scrollTop, \"px\");\n $body.style.width = '100%';\n $body.style.height = 'auto';\n $body.style.position = 'fixed';\n $body.style.overflow = (options === null || options === void 0 ? void 0 : options.overflowType) || 'hidden';\n return function () {\n $html.style.height = htmlStyle.height || '';\n $html.style.overflow = htmlStyle.overflow || '';\n ['top', 'width', 'height', 'overflow', 'position'].forEach(function (x) {\n $body.style[x] = bodyStyle[x] || '';\n });\n var scrollToOptions = {\n top: scrollTop,\n behavior: 'instant'\n };\n supportsNativeSmoothScroll ? window.scrollTo(scrollToOptions) : window.scrollTo(0, scrollTop);\n };\n};\nvar preventDefault = function preventDefault(event) {\n if (!event.cancelable) return;\n event.preventDefault();\n};\nvar handleScroll = function handleScroll(event, targetElement) {\n if (targetElement) {\n var scrollTop = targetElement.scrollTop,\n scrollLeft = targetElement.scrollLeft,\n scrollWidth = targetElement.scrollWidth,\n scrollHeight = targetElement.scrollHeight,\n clientWidth = targetElement.clientWidth,\n clientHeight = targetElement.clientHeight;\n var clientX = event.targetTouches[0].clientX - initialClientX;\n var clientY = event.targetTouches[0].clientY - initialClientY;\n var isVertical = Math.abs(clientY) > Math.abs(clientX);\n var isOnTop = clientY > 0 && scrollTop === 0;\n var isOnLeft = clientX > 0 && scrollLeft === 0;\n var isOnRight = clientX < 0 && scrollLeft + clientWidth + 1 >= scrollWidth;\n var isOnBottom = clientY < 0 && scrollTop + clientHeight + 1 >= scrollHeight;\n if (isVertical && (isOnTop || isOnBottom) || !isVertical && (isOnLeft || isOnRight)) {\n return preventDefault(event);\n }\n }\n event.stopPropagation();\n return true;\n};\nvar checkTargetElement = function checkTargetElement(targetElement) {\n if (targetElement) return;\n if (targetElement === null) return;\n if (process.env.NODE_ENV === 'production') return;\n console.warn('If scrolling is also required in the floating layer, ' + 'the target element must be provided.');\n};\nvar lock = function lock(targetElement, options) {\n if (isServer()) return;\n checkTargetElement(targetElement);\n if (detectOS().ios) {\n // iOS\n if (targetElement) {\n var elementArray = Array.isArray(targetElement) ? targetElement : [targetElement];\n elementArray.forEach(function (element) {\n if (element && lockedElements.indexOf(element) === -1) {\n element.ontouchstart = function (event) {\n initialClientY = event.targetTouches[0].clientY;\n initialClientX = event.targetTouches[0].clientX;\n };\n element.ontouchmove = function (event) {\n if (event.targetTouches.length !== 1) return;\n handleScroll(event, element);\n };\n lockedElements.push(element);\n }\n });\n }\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, eventListenerOptions);\n documentListenerAdded = true;\n }\n } else if (lockedNum <= 0) {\n unLockCallback = detectOS().android ? setOverflowHiddenMobile(options) : setOverflowHiddenPc();\n }\n lockedNum += 1;\n};\nvar unlock = function unlock(targetElement) {\n if (isServer()) return;\n checkTargetElement(targetElement);\n lockedNum -= 1;\n if (lockedNum > 0) return;\n if (!detectOS().ios && typeof unLockCallback === 'function') {\n unLockCallback();\n return;\n }\n // iOS\n if (targetElement) {\n var elementArray = Array.isArray(targetElement) ? targetElement : [targetElement];\n elementArray.forEach(function (element) {\n var index = lockedElements.indexOf(element);\n if (index !== -1) {\n element.ontouchmove = null;\n element.ontouchstart = null;\n lockedElements.splice(index, 1);\n }\n });\n }\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, eventListenerOptions);\n documentListenerAdded = false;\n }\n};\nvar clearBodyLocks = function clearBodyLocks() {\n if (isServer()) return;\n lockedNum = 0;\n if (!detectOS().ios && typeof unLockCallback === 'function') {\n unLockCallback();\n return;\n }\n // IOS\n if (lockedElements.length) {\n // clear events\n var element = lockedElements.pop();\n while (element) {\n element.ontouchmove = null;\n element.ontouchstart = null;\n element = lockedElements.pop();\n }\n }\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, eventListenerOptions);\n documentListenerAdded = false;\n }\n};\n\nexport { clearBodyLocks, lock, unlock };\n","import { Component } from '@verndale/core';\nimport { KEYS } from '../constants';\nimport _debounce from 'lodash.debounce';\nimport { isTabletLandscape } from '../helpers';\nimport { focusableElements } from '../helpers';\nimport { clearBodyLocks, lock } from 'tua-body-scroll-lock';\nimport { createFocusTrap } from 'focus-trap';\n\nclass Module extends Component {\n setupDefaults() {\n this.dom = {\n $burger: this.el._$('.header__burger'),\n $primaryNav: this.el._$('.primary-nav'),\n $primaryNavButtons: this.el._$$('.primary-nav__btn'),\n $utilityNav: this.el._$('.utility-nav'),\n $utilityNavButtons: this.el._$$('.utility-nav__link'),\n $primaryNavList: this.el._$('.primary-nav__list'),\n $logo: this.el._$('.header__logo'),\n $searchToggle: this.el._$('.header__search-toggle'),\n $searchForm: this.el._$('.header__search'),\n $submenuLinks: this.el._$$('.primary-nav__submenu-link'),\n $primaryNavItems: this.el._$$('.primary-nav__menu-item'),\n $banners: document._$$('.alert-banner')\n };\n\n this.primaryNavOpenClass = 'primary-nav--open';\n this.primaryNavChildActiveClass = 'primary-nav__list--child-active';\n this.burgerOpenClass = 'header__burger--open';\n this.activeMenuItemClass = 'primary-nav__menu-item--active';\n this.utilityNavExpandedClass = 'utility-nav--expanded';\n this.submenuExpandedClass = 'primary-nav__link-group--expanded';\n this.searchFormOpenClass = 'header__search--active';\n\n this.setTabOrder();\n this.setRoles();\n this.lastResizeWidth = window.innerWidth;\n this.focusTrap = createFocusTrap(this.el, {\n allowOutsideClick: false,\n clickOutsideDeactivates: false,\n escapeDeactivates: true,\n onDeactivate: () => {\n this.el.style.removeProperty('position');\n clearBodyLocks();\n },\n onActivate: () => {\n if (window.innerWidth < 768) {\n this.el.style.setProperty('position', 'fixed');\n const element = [\n this.dom.$primaryNavList,\n ...this.dom.$primaryNavItems\n ];\n lock(element, {\n overflowType: 'clip'\n });\n }\n }\n });\n\n this.setHeaderHeight();\n this.isScrolling = false;\n this.isTransitioning = false;\n this.lastScrollY = window.scrollY;\n this.hiddenBanners = [];\n }\n\n addListeners() {\n this.dom.$burger._on('click', this.togglePrimaryNavExpand.bind(this));\n this.dom.$searchToggle._on('click', this.toggleSearchExpand.bind(this));\n this.el._on('keydown', this.handleKeyDown.bind(this));\n this.el._on('click', this.handleBackBtnClick.bind(this));\n this.el._on('click', this.handlePrimaryBtnClick.bind(this));\n this.el._on('click', this.handleSubMenuClick.bind(this));\n this.el._on('click', this.handleMainLinkClick.bind(this));\n this.el._on('keydown', this.handleMainLinkClick.bind(this));\n document._on('mousedown', this.handleClickOutsidePrimary.bind(this));\n window._on('resize', _debounce(this.handleResize.bind(this), 200));\n this.dom.$searchForm._on('submit', e => e.preventDefault());\n window._on(\n 'scroll',\n _debounce(this.handleScroll.bind(this), 10, { leading: true })\n );\n }\n\n setHeaderHeight() {\n requestAnimationFrame(() => {\n document.body.style.setProperty(\n '--header-height',\n `${this.el.offsetHeight}px`\n );\n });\n }\n\n isSticky() {\n if (this.isTransitioning) return;\n\n const header = this.el;\n const banners = document._$$('.alert-banner-enhanced');\n const stickyThreshold = 0;\n\n if (banners.length > 0) {\n // Check each banner's visibility\n banners.forEach(banner => {\n const bannerTop = banner.getBoundingClientRect().top;\n if (bannerTop === 0) {\n // Add to array if not already present\n if (!this.hiddenBanners.includes(banner)) {\n this.hiddenBanners.push(banner);\n }\n } else {\n // Remove from array\n const index = this.hiddenBanners.indexOf(banner);\n if (index > -1) {\n this.hiddenBanners.splice(index, 1);\n }\n }\n });\n\n const totalBannerHeight = this.hiddenBanners.reduce(\n (sum, banner) => sum + banner.offsetHeight,\n 0\n );\n const maxBannerHeight = Math.max(\n this.hiddenBanners.map(banner => banner.offsetHeight)\n );\n\n const headerHeight = header.offsetHeight;\n // Only become sticky if all banners are hidden\n\n const shouldBeSticky =\n this.hiddenBanners.length === banners.length &&\n window.scrollY > totalBannerHeight + (headerHeight - maxBannerHeight);\n const isSticky = header.classList.contains('header--sticky');\n\n if (shouldBeSticky !== isSticky) {\n this.isTransitioning = true;\n\n if (shouldBeSticky) {\n header.classList.add('header--sticky');\n } else {\n header.classList.remove('header--sticky');\n }\n\n setTimeout(() => {\n this.setHeaderHeight();\n this.isTransitioning = false;\n }, 300);\n }\n } else {\n // No banners case - use simple scroll threshold\n const shouldBeSticky = window.scrollY > 1;\n const isSticky = header.classList.contains('header--sticky');\n\n if (shouldBeSticky !== isSticky) {\n this.isTransitioning = true;\n\n if (shouldBeSticky) {\n header.classList.add('header--sticky');\n } else {\n header.classList.remove('header--sticky');\n }\n\n setTimeout(() => {\n this.setHeaderHeight();\n this.isTransitioning = false;\n }, 300);\n }\n }\n }\n\n togglePrimaryNavExpand() {\n this.removeActiveMenuItems();\n\n const primaryNavExpanded = this.dom.$primaryNav.classList.contains(\n this.primaryNavOpenClass\n );\n this.primaryNavExpanded = !primaryNavExpanded;\n\n if (primaryNavExpanded || this.activeMenuItem) this.closeActiveMenuItem();\n\n this.dom.$burger.classList.toggle(this.burgerOpenClass);\n this.dom.$primaryNav.classList.toggle(this.primaryNavOpenClass);\n this.dom.$utilityNav.classList.toggle(this.utilityNavExpandedClass);\n\n this.el.style.setProperty(\n '--utility-nav-height',\n `${this.dom.$utilityNav.offsetHeight}px`\n );\n this.setUtilityNavPosition(this.dom.$primaryNavList.offsetHeight + 50);\n\n if (this.primaryNavExpanded) {\n this.focusTrap.activate();\n } else {\n this.focusTrap.deactivate();\n }\n }\n\n toggleSearchExpand() {\n const searchInput = this.el.querySelector(\n '.coveo-search-results__search-box-input'\n );\n\n this.dom.$searchForm.classList.toggle(this.searchFormOpenClass);\n if (\n this.dom.$searchForm.classList.contains(\n this.searchFormOpenClass && !isTabletLandscape\n )\n ) {\n this.el._$('.header__search input').focus();\n }\n\n if (searchInput?.value?.length > 0) {\n window.dispatchEvent(new Event('submitSearchCoveo'));\n }\n }\n\n setUtilityNavPosition(top) {\n this.dom.$utilityNav.style.insetBlockStart = `${top}px`;\n }\n\n setTabOrder() {\n let idx = 0;\n\n if (this.dom.$banners.length) {\n this.dom.$banners.forEach($banner => {\n idx += $banner._$$(focusableElements).length;\n });\n }\n\n if (isTabletLandscape()) {\n if (this.lastLayout === 'mobile') return;\n this.lastLayout = 'mobile';\n\n this.dom.$searchToggle?.setAttribute('tabindex', '1');\n this.dom.$logo?.setAttribute('tabindex', '2');\n this.dom.$burger?.setAttribute('tabindex', '3');\n\n idx = 4;\n\n this.dom.$primaryNavButtons.forEach(primaryNavBtn => {\n primaryNavBtn?.setAttribute('tabindex', idx);\n idx++;\n });\n\n this.dom.$utilityNavButtons.forEach(utilityNavBtn => {\n utilityNavBtn?.setAttribute('tabindex', idx);\n idx++;\n });\n\n this.dom.$submenuLinks?.forEach(submenuLink => {\n submenuLink?.removeAttribute('role');\n });\n } else {\n if (this.lastLayout === 'notMobile') return;\n this.lastLayout = 'notMobile';\n\n this.dom.$logo?.removeAttribute('tabindex');\n this.dom.$burger?.setAttribute('tabindex', '-1');\n\n idx = 2;\n\n this.dom.$utilityNavButtons?.forEach(utilityNavBtn => {\n utilityNavBtn?.removeAttribute('tabindex');\n idx++;\n });\n\n this.dom.$searchToggle?.removeAttribute('tabindex');\n idx++;\n\n this.dom.$primaryNavButtons?.forEach(primaryNavBtn => {\n primaryNavBtn?.removeAttribute('tabindex');\n idx++;\n });\n\n this.dom.$submenuLinks?.forEach(submenuLink => {\n if (!submenuLink?.closest('.primary-nav__main-link'))\n submenuLink?.setAttribute('role', 'presentation');\n });\n }\n }\n\n setRoles() {\n if (isTabletLandscape()) {\n this.dom.$submenuLinks.forEach($el => $el?.removeAttribute('role'));\n } else {\n this.dom.$submenuLinks.forEach($el => {\n $el?.setAttribute('role', 'none');\n });\n }\n }\n\n closeActiveMenuItem() {\n this.activeMenuItem?.classList.remove(this.activeMenuItemClass);\n this.activeMenuItem = null;\n this.dom.$primaryNavList.classList.remove(this.primaryNavChildActiveClass);\n }\n\n closeActiveSubmenuItem() {\n this.expandedSubmenu?.classList.remove(this.submenuExpandedClass);\n this.expandedSubmenu = null;\n }\n\n removeActiveMenuItems() {\n this.dom.$primaryNavButtons.forEach($btn => {\n $btn.classList.remove('primary-nav__btn--active');\n });\n }\n\n handleClickOutsidePrimary(e) {\n if (\n e.target.closest('.primary-nav') &&\n !e.target.classList.contains('primary-nav') &&\n !e.target.classList.contains('primary-nav__list')\n )\n return;\n if (e.target.closest('.utility-nav')) return;\n if (e.target.closest('.header__burger')) return;\n if (e.target.classList.contains('header__burger')) return;\n if (e.target.classList.contains('primary-nav__btn')) return;\n if (this.primaryNavExpanded || this.activeMenuItem)\n this.togglePrimaryNavExpand();\n\n this.removeActiveMenuItems();\n }\n\n handleKeyDown(e) {\n if (\n (this.primaryNavExpanded || this.activeMenuItem) &&\n e.keyCode === KEYS.ESC\n ) {\n document.activeElement.blur();\n this.togglePrimaryNavExpand();\n\n this.removeActiveMenuItems();\n }\n }\n\n handleBackBtnClick(e) {\n if (!e.target.classList.contains('primary-nav__back')) return;\n this.closeActiveMenuItem();\n this.removeActiveMenuItems();\n this.el.style.setProperty(\n '--utility-nav-height',\n `${this.dom.$utilityNav.offsetHeight}px`\n );\n this.setUtilityNavPosition(this.dom.$primaryNavList.offsetHeight + 50);\n this.dom.$primaryNavList.classList.remove(this.primaryNavChildActiveClass);\n }\n\n handlePrimaryBtnClick(e) {\n if (!e.target.classList.contains('primary-nav__btn')) return;\n\n this.dom.$primaryNavButtons.forEach($btn => {\n $btn.classList.remove('primary-nav__btn--active');\n });\n\n const menuItem = this.el._$(`#${e.target.dataset.id}`);\n\n if (menuItem !== this.activeMenuItem) {\n this.closeActiveSubmenuItem();\n menuItem.classList.add(this.activeMenuItemClass);\n this.closeActiveMenuItem();\n this.activeMenuItem = menuItem;\n this.el.style.setProperty(\n '--utility-nav-height',\n `${this.dom.$utilityNav.offsetHeight}px`\n );\n this.setUtilityNavPosition(this.activeMenuItem.offsetHeight + 50);\n this.dom.$primaryNavList.classList.add(this.primaryNavChildActiveClass);\n e.target.classList.add('primary-nav__btn--active');\n } else {\n this.togglePrimaryNavExpand();\n }\n }\n\n handleSubMenuClick(e) {\n if (e.target.classList.contains('primary-nav__sublink')) {\n this.togglePrimaryNavExpand();\n }\n if (!e.target.classList.contains('primary-nav__submenu-link')) return;\n\n const submenuContainer = e.target.parentNode;\n\n if (this.expandedSubmenu && this.expandedSubmenu !== submenuContainer) {\n this.expandedSubmenu.classList.remove(this.submenuExpandedClass);\n }\n\n submenuContainer.classList.toggle(this.submenuExpandedClass);\n this.expandedSubmenu = submenuContainer;\n\n this.el.style.setProperty(\n '--utility-nav-height',\n `${this.dom.$utilityNav.offsetHeight}px`\n );\n this.setUtilityNavPosition(this.activeMenuItem.offsetHeight + 50);\n }\n\n handleMainLinkClick(e) {\n let href, target;\n\n if (isTabletLandscape()) {\n href = e.target.parentNode.parentNode.dataset.href;\n target = e.target.parentNode.parentNode.dataset.target;\n } else {\n if (!e.target.classList.contains('primary-nav__main-link')) return;\n href = e.target.dataset.href;\n target = e.target.dataset.target;\n }\n\n if (e.keyCode) {\n if (e.keyCode !== KEYS.ENTER) {\n return;\n }\n }\n\n if (href) {\n target ? window.open(href, target) : (window.location.href = href);\n }\n }\n\n handleResize() {\n this.setHeaderHeight();\n const primaryNavExpanded = this.dom.$primaryNav.classList.contains(\n this.primaryNavOpenClass\n );\n const isResizeHorizontal = this.lastResizeWidth !== window.innerWidth;\n this.lastResizeWidth = window.innerWidth;\n\n if (primaryNavExpanded && isResizeHorizontal) {\n this.togglePrimaryNavExpand();\n }\n this.setTabOrder();\n }\n\n handleScroll() {\n this.isSticky();\n }\n}\n\nexport default Module;\n"],"sourceRoot":""}