{"version":3,"sources":["webpack://@verndale/toolkit/./src/js/constants.js","webpack://@verndale/toolkit/./src/js/helpers/index.js","webpack://@verndale/toolkit/./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","webpack://@verndale/toolkit/./src/js/modules/header.js"],"names":[],"mappings":"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","file":"scripts/212.bundle.js","sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nexport const BREAKPOINTS = {\n TABLET: 768,\n TABLET_LANDSCAPE: 1024,\n DESKTOP_MAP: 992,\n DESKTOP: 1280,\n WIDE: 1600\n};\n","// eslint-disable-next-line import/prefer-default-export\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\nexport const userAgentChecker = () => {\n let check = false;\n // eslint-disable-next-line func-names\n (function (a) {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n a\n ) ||\n // eslint-disable-next-line no-useless-escape\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.substr(0, 4)\n )\n )\n check = true;\n })(navigator.userAgent || navigator.vendor || window.opera);\n\n return check;\n};\n","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n var passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true;\n return undefined;\n }\n };\n window.addEventListener('testPassive', null, passiveTestOptions);\n window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n return locks.some(function (lock) {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n var e = rawEvent || window.event;\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true;\n }\n\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true;\n\n if (e.preventDefault) e.preventDefault();\n\n return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n if (_reserveScrollBarGap && scrollBarGap > 0) {\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = scrollBarGap + 'px';\n }\n }\n\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight;\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined;\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting;\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined;\n }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n var clientY = event.targetTouches[0].clientY - initialClientY;\n\n if (allowTouchMove(event.target)) {\n return false;\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event);\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event);\n }\n\n event.stopPropagation();\n return true;\n};\n\nexport var disableBodyScroll = function disableBodyScroll(targetElement, options) {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n return;\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(function (lock) {\n return lock.targetElement === targetElement;\n })) {\n return;\n }\n\n var lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [lock]);\n\n if (isIosDevice) {\n targetElement.ontouchstart = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement);\n }\n };\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = true;\n }\n } else {\n setOverflowHidden(options);\n }\n};\n\nexport var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(function (lock) {\n lock.targetElement.ontouchstart = null;\n lock.targetElement.ontouchmove = null;\n });\n\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n\n // Reset initial clientY.\n initialClientY = -1;\n } else {\n restoreOverflowSetting();\n }\n\n locks = [];\n};\n\nexport var enableBodyScroll = function enableBodyScroll(targetElement) {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n return;\n }\n\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n\n if (isIosDevice) {\n targetElement.ontouchstart = null;\n targetElement.ontouchmove = null;\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n } else if (!locks.length) {\n restoreOverflowSetting();\n }\n};\n\n","import { Component } from '@verndale/core';\nimport { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';\nimport { BREAKPOINTS } from '../constants';\nimport { debounce } from '../helpers';\n\nclass Module extends Component {\n setupDefaults() {\n this.dom = {\n body: document.body,\n dropdownElements: this.el.querySelectorAll(\n '.secondary-navigation__item-btn'\n ),\n subMenuElements: this.el.querySelectorAll(\n '.secondary-navigation__dropdown-content'\n ),\n hamburgerBtn: this.el.querySelector('.header__toggle-btn'),\n directLinks: this.el.querySelectorAll(\n '.primary-navigation__item-link, .secondary-navigation__item-link'\n ),\n navigationWrapper: this.el.querySelector('.header__navigation-wrapper'),\n headerContainer: this.el.querySelector('.header__container'),\n secondaryNavigationContainer: this.el.querySelector(\n '.secondary-navigation__items'\n ),\n };\n\n this.headerHeight = this.el.offsetHeight;\n this.isMobile = !window.matchMedia(\n `(min-width: ${BREAKPOINTS.TABLET_LANDSCAPE}px)`\n ).matches;\n this.visibleDropdownClass = 'secondary-navigation-dropdown-visible';\n }\n\n addListeners() {\n window.addEventListener('scroll', this.handleScroll.bind(this));\n\n window.addEventListener(\n 'resize',\n debounce(this.handleReset.bind(this), 50)\n );\n\n this.dom.dropdownElements.forEach(el => {\n el.addEventListener('click', this.handleDropdownClick.bind(this));\n });\n\n this.dom.hamburgerBtn.addEventListener(\n 'click',\n this.handleMobileMenu.bind(this)\n );\n\n document.addEventListener('click', this.handleClickOutside.bind(this));\n }\n\n handleClickOutside(event) {\n this.dom.dropdownElements.forEach(el => {\n const isClickInside = el.contains(event.target);\n const isClickInsideHeader =\n this.dom.secondaryNavigationContainer.contains(event.target);\n if (!isClickInside) {\n el.nextElementSibling.classList.remove(this.visibleDropdownClass);\n this.dom.directLinks.forEach(link => {\n link.classList.remove('link-non-active');\n });\n }\n if (!isClickInsideHeader) {\n this.el.style.height = '';\n }\n });\n }\n\n handleMobileMenu() {\n if (this.el.classList.contains('header-mobile-isopen')) {\n enableBodyScroll(this.dom.navigationWrapper);\n } else {\n disableBodyScroll(this.dom.navigationWrapper, {\n allowTouchMove: () => true,\n });\n }\n this.el.classList.toggle('header-mobile-isopen');\n this.dom.subMenuElements.forEach(el => {\n el.classList.remove(this.visibleDropdownClass);\n });\n }\n\n handleDropdownClick(e) {\n const subMenu = e.target.nextElementSibling;\n subMenu.classList.toggle(this.visibleDropdownClass);\n const headerContainerPadding = parseInt(\n window\n .getComputedStyle(this.dom.headerContainer, null)\n .getPropertyValue('padding-block-end'),\n 10\n );\n\n // Deals with header height when a dropdown is active\n if (\n !this.isMobile &&\n subMenu.classList.contains(this.visibleDropdownClass)\n ) {\n const dropdownHeight = subMenu.offsetHeight;\n this.el.style.height = `${\n this.headerHeight + dropdownHeight - headerContainerPadding\n }px`;\n } else {\n this.el.style.height = '';\n }\n\n // Deals with link opacity, when dropdown is active\n const visibleElement = this.el.querySelector(\n `.${this.visibleDropdownClass}`\n );\n if (visibleElement) {\n this.dom.directLinks.forEach(link => {\n if (\n !visibleElement.contains(link) &&\n !visibleElement.previousElementSibling.contains(link)\n ) {\n link.classList.add('link-non-active');\n }\n });\n } else {\n this.dom.directLinks.forEach(link => {\n link.classList.remove('link-non-active');\n });\n }\n }\n\n handleScroll() {\n if (\n document.body.scrollTop > 135 ||\n document.documentElement.scrollTop > 135\n ) {\n this.el.classList.add('header-scroll');\n } else {\n this.el.classList.remove('header-scroll');\n }\n this.handleReset();\n }\n\n handleReset() {\n this.el.style.height = '';\n this.el.classList.remove('header-mobile-isopen');\n enableBodyScroll(this.dom.body);\n const activeDropdowns = this.el.querySelectorAll(\n `.${this.visibleDropdownClass}`\n );\n const nonActiveLinks = this.el.querySelectorAll(`.link-non-active`);\n\n if (activeDropdowns && nonActiveLinks) {\n activeDropdowns.forEach(el => {\n el.classList.remove(this.visibleDropdownClass);\n });\n\n nonActiveLinks.forEach(el => {\n el.classList.remove('link-non-active');\n });\n }\n }\n}\n\nexport default Module;\n"],"sourceRoot":""}