{"version":3,"file":"init-mega-menu.js","sources":["node_modules/scroll-lock/dist/scroll-lock.js","src/scripts/utilities/array-from.js","src/scripts/utilities/get-first-item.js","src/scripts/utilities/transition-aware-show-hide.js","src/scripts/utilities/svg-class-list.js","src/scripts/components/mega-menu.js","src/scripts/init-mega-menu.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"scrollLock\"] = factory();\n\telse\n\t\troot[\"scrollLock\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./src/tools.js\nvar argumentAsArray = function argumentAsArray(argument) {\n return Array.isArray(argument) ? argument : [argument];\n};\nvar isElement = function isElement(target) {\n return target instanceof Node;\n};\nvar isElementList = function isElementList(nodeList) {\n return nodeList instanceof NodeList;\n};\nvar eachNode = function eachNode(nodeList, callback) {\n if (nodeList && callback) {\n nodeList = isElementList(nodeList) ? nodeList : [nodeList];\n\n for (var i = 0; i < nodeList.length; i++) {\n if (callback(nodeList[i], i, nodeList.length) === true) {\n break;\n }\n }\n }\n};\nvar throwError = function throwError(message) {\n return console.error(\"[scroll-lock] \".concat(message));\n};\nvar arrayAsSelector = function arrayAsSelector(array) {\n if (Array.isArray(array)) {\n var selector = array.join(', ');\n return selector;\n }\n};\nvar nodeListAsArray = function nodeListAsArray(nodeList) {\n var nodes = [];\n eachNode(nodeList, function (node) {\n return nodes.push(node);\n });\n return nodes;\n};\nvar findParentBySelector = function findParentBySelector($el, selector) {\n var self = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var $root = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : document;\n\n if (self && nodeListAsArray($root.querySelectorAll(selector)).indexOf($el) !== -1) {\n return $el;\n }\n\n while (($el = $el.parentElement) && nodeListAsArray($root.querySelectorAll(selector)).indexOf($el) === -1) {\n ;\n }\n\n return $el;\n};\nvar elementHasSelector = function elementHasSelector($el, selector) {\n var $root = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : document;\n var has = nodeListAsArray($root.querySelectorAll(selector)).indexOf($el) !== -1;\n return has;\n};\nvar elementHasOverflowHidden = function elementHasOverflowHidden($el) {\n if ($el) {\n var computedStyle = getComputedStyle($el);\n var overflowIsHidden = computedStyle.overflow === 'hidden';\n return overflowIsHidden;\n }\n};\nvar elementScrollTopOnStart = function elementScrollTopOnStart($el) {\n if ($el) {\n if (elementHasOverflowHidden($el)) {\n return true;\n }\n\n var scrollTop = $el.scrollTop;\n return scrollTop <= 0;\n }\n};\nvar elementScrollTopOnEnd = function elementScrollTopOnEnd($el) {\n if ($el) {\n if (elementHasOverflowHidden($el)) {\n return true;\n }\n\n var scrollTop = $el.scrollTop;\n var scrollHeight = $el.scrollHeight;\n var scrollTopWithHeight = scrollTop + $el.offsetHeight;\n return scrollTopWithHeight >= scrollHeight;\n }\n};\nvar elementScrollLeftOnStart = function elementScrollLeftOnStart($el) {\n if ($el) {\n if (elementHasOverflowHidden($el)) {\n return true;\n }\n\n var scrollLeft = $el.scrollLeft;\n return scrollLeft <= 0;\n }\n};\nvar elementScrollLeftOnEnd = function elementScrollLeftOnEnd($el) {\n if ($el) {\n if (elementHasOverflowHidden($el)) {\n return true;\n }\n\n var scrollLeft = $el.scrollLeft;\n var scrollWidth = $el.scrollWidth;\n var scrollLeftWithWidth = scrollLeft + $el.offsetWidth;\n return scrollLeftWithWidth >= scrollWidth;\n }\n};\nvar elementIsScrollableField = function elementIsScrollableField($el) {\n var selector = 'textarea, [contenteditable=\"true\"]';\n return elementHasSelector($el, selector);\n};\nvar elementIsInputRange = function elementIsInputRange($el) {\n var selector = 'input[type=\"range\"]';\n return elementHasSelector($el, selector);\n};\n// CONCATENATED MODULE: ./src/scroll-lock.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"disablePageScroll\", function() { return disablePageScroll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enablePageScroll\", function() { return enablePageScroll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getScrollState\", function() { return getScrollState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearQueueScrollLocks\", function() { return clearQueueScrollLocks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTargetScrollBarWidth\", function() { return scroll_lock_getTargetScrollBarWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCurrentTargetScrollBarWidth\", function() { return scroll_lock_getCurrentTargetScrollBarWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPageScrollBarWidth\", function() { return getPageScrollBarWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCurrentPageScrollBarWidth\", function() { return getCurrentPageScrollBarWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addScrollableTarget\", function() { return scroll_lock_addScrollableTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeScrollableTarget\", function() { return scroll_lock_removeScrollableTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addScrollableSelector\", function() { return scroll_lock_addScrollableSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeScrollableSelector\", function() { return scroll_lock_removeScrollableSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLockableTarget\", function() { return scroll_lock_addLockableTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLockableSelector\", function() { return scroll_lock_addLockableSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setFillGapMethod\", function() { return scroll_lock_setFillGapMethod; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addFillGapTarget\", function() { return scroll_lock_addFillGapTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeFillGapTarget\", function() { return scroll_lock_removeFillGapTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addFillGapSelector\", function() { return scroll_lock_addFillGapSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeFillGapSelector\", function() { return scroll_lock_removeFillGapSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"refillGaps\", function() { return refillGaps; });\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\nvar FILL_GAP_AVAILABLE_METHODS = ['padding', 'margin', 'width', 'max-width', 'none'];\nvar TOUCH_DIRECTION_DETECT_OFFSET = 3;\nvar state = {\n scroll: true,\n queue: 0,\n scrollableSelectors: ['[data-scroll-lock-scrollable]'],\n lockableSelectors: ['body', '[data-scroll-lock-lockable]'],\n fillGapSelectors: ['body', '[data-scroll-lock-fill-gap]', '[data-scroll-lock-lockable]'],\n fillGapMethod: FILL_GAP_AVAILABLE_METHODS[0],\n //\n startTouchY: 0,\n startTouchX: 0\n};\nvar disablePageScroll = function disablePageScroll(target) {\n if (state.queue <= 0) {\n state.scroll = false;\n scroll_lock_hideLockableOverflow();\n fillGaps();\n }\n\n scroll_lock_addScrollableTarget(target);\n state.queue++;\n};\nvar enablePageScroll = function enablePageScroll(target) {\n state.queue > 0 && state.queue--;\n\n if (state.queue <= 0) {\n state.scroll = true;\n scroll_lock_showLockableOverflow();\n unfillGaps();\n }\n\n scroll_lock_removeScrollableTarget(target);\n};\nvar getScrollState = function getScrollState() {\n return state.scroll;\n};\nvar clearQueueScrollLocks = function clearQueueScrollLocks() {\n state.queue = 0;\n};\nvar scroll_lock_getTargetScrollBarWidth = function getTargetScrollBarWidth($target) {\n var onlyExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (isElement($target)) {\n var currentOverflowYProperty = $target.style.overflowY;\n\n if (onlyExists) {\n if (!getScrollState()) {\n $target.style.overflowY = $target.getAttribute('data-scroll-lock-saved-overflow-y-property');\n }\n } else {\n $target.style.overflowY = 'scroll';\n }\n\n var width = scroll_lock_getCurrentTargetScrollBarWidth($target);\n $target.style.overflowY = currentOverflowYProperty;\n return width;\n } else {\n return 0;\n }\n};\nvar scroll_lock_getCurrentTargetScrollBarWidth = function getCurrentTargetScrollBarWidth($target) {\n if (isElement($target)) {\n if ($target === document.body) {\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n var currentWidth = windowWidth - documentWidth;\n return currentWidth;\n } else {\n var borderLeftWidthCurrentProperty = $target.style.borderLeftWidth;\n var borderRightWidthCurrentProperty = $target.style.borderRightWidth;\n $target.style.borderLeftWidth = '0px';\n $target.style.borderRightWidth = '0px';\n\n var _currentWidth = $target.offsetWidth - $target.clientWidth;\n\n $target.style.borderLeftWidth = borderLeftWidthCurrentProperty;\n $target.style.borderRightWidth = borderRightWidthCurrentProperty;\n return _currentWidth;\n }\n } else {\n return 0;\n }\n};\nvar getPageScrollBarWidth = function getPageScrollBarWidth() {\n var onlyExists = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return scroll_lock_getTargetScrollBarWidth(document.body, onlyExists);\n};\nvar getCurrentPageScrollBarWidth = function getCurrentPageScrollBarWidth() {\n return scroll_lock_getCurrentTargetScrollBarWidth(document.body);\n};\nvar scroll_lock_addScrollableTarget = function addScrollableTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.setAttribute('data-scroll-lock-scrollable', '');\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n }\n};\nvar scroll_lock_removeScrollableTarget = function removeScrollableTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.removeAttribute('data-scroll-lock-scrollable');\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n }\n};\nvar scroll_lock_addScrollableSelector = function addScrollableSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n state.scrollableSelectors.push(selector);\n });\n }\n};\nvar scroll_lock_removeScrollableSelector = function removeScrollableSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n state.scrollableSelectors = state.scrollableSelectors.filter(function (sSelector) {\n return sSelector !== selector;\n });\n });\n }\n};\nvar scroll_lock_addLockableTarget = function addLockableTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.setAttribute('data-scroll-lock-lockable', '');\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n\n if (!getScrollState()) {\n scroll_lock_hideLockableOverflow();\n }\n }\n};\nvar scroll_lock_addLockableSelector = function addLockableSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n state.lockableSelectors.push(selector);\n });\n\n if (!getScrollState()) {\n scroll_lock_hideLockableOverflow();\n }\n\n scroll_lock_addFillGapSelector(selector);\n }\n};\nvar scroll_lock_setFillGapMethod = function setFillGapMethod(method) {\n if (method) {\n if (FILL_GAP_AVAILABLE_METHODS.indexOf(method) !== -1) {\n state.fillGapMethod = method;\n refillGaps();\n } else {\n var methods = FILL_GAP_AVAILABLE_METHODS.join(', ');\n throwError(\"\\\"\".concat(method, \"\\\" method is not available!\\nAvailable fill gap methods: \").concat(methods, \".\"));\n }\n }\n};\nvar scroll_lock_addFillGapTarget = function addFillGapTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.setAttribute('data-scroll-lock-fill-gap', '');\n\n if (!state.scroll) {\n scroll_lock_fillGapTarget($target);\n }\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n }\n};\nvar scroll_lock_removeFillGapTarget = function removeFillGapTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.removeAttribute('data-scroll-lock-fill-gap');\n\n if (!state.scroll) {\n scroll_lock_unfillGapTarget($target);\n }\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n }\n};\nvar scroll_lock_addFillGapSelector = function addFillGapSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n if (state.fillGapSelectors.indexOf(selector) === -1) {\n state.fillGapSelectors.push(selector);\n\n if (!state.scroll) {\n scroll_lock_fillGapSelector(selector);\n }\n }\n });\n }\n};\nvar scroll_lock_removeFillGapSelector = function removeFillGapSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n state.fillGapSelectors = state.fillGapSelectors.filter(function (fSelector) {\n return fSelector !== selector;\n });\n\n if (!state.scroll) {\n scroll_lock_unfillGapSelector(selector);\n }\n });\n }\n};\nvar refillGaps = function refillGaps() {\n if (!state.scroll) {\n fillGaps();\n }\n};\n\nvar scroll_lock_hideLockableOverflow = function hideLockableOverflow() {\n var selector = arrayAsSelector(state.lockableSelectors);\n scroll_lock_hideLockableOverflowSelector(selector);\n};\n\nvar scroll_lock_showLockableOverflow = function showLockableOverflow() {\n var selector = arrayAsSelector(state.lockableSelectors);\n scroll_lock_showLockableOverflowSelector(selector);\n};\n\nvar scroll_lock_hideLockableOverflowSelector = function hideLockableOverflowSelector(selector) {\n var $targets = document.querySelectorAll(selector);\n eachNode($targets, function ($target) {\n scroll_lock_hideLockableOverflowTarget($target);\n });\n};\n\nvar scroll_lock_showLockableOverflowSelector = function showLockableOverflowSelector(selector) {\n var $targets = document.querySelectorAll(selector);\n eachNode($targets, function ($target) {\n scroll_lock_showLockableOverflowTarget($target);\n });\n};\n\nvar scroll_lock_hideLockableOverflowTarget = function hideLockableOverflowTarget($target) {\n if (isElement($target) && $target.getAttribute('data-scroll-lock-locked') !== 'true') {\n var computedStyle = window.getComputedStyle($target);\n $target.setAttribute('data-scroll-lock-saved-overflow-y-property', computedStyle.overflowY);\n $target.setAttribute('data-scroll-lock-saved-inline-overflow-property', $target.style.overflow);\n $target.setAttribute('data-scroll-lock-saved-inline-overflow-y-property', $target.style.overflowY);\n $target.style.overflow = 'hidden';\n $target.setAttribute('data-scroll-lock-locked', 'true');\n }\n};\n\nvar scroll_lock_showLockableOverflowTarget = function showLockableOverflowTarget($target) {\n if (isElement($target) && $target.getAttribute('data-scroll-lock-locked') === 'true') {\n $target.style.overflow = $target.getAttribute('data-scroll-lock-saved-inline-overflow-property');\n $target.style.overflowY = $target.getAttribute('data-scroll-lock-saved-inline-overflow-y-property');\n $target.removeAttribute('data-scroll-lock-saved-overflow-property');\n $target.removeAttribute('data-scroll-lock-saved-inline-overflow-property');\n $target.removeAttribute('data-scroll-lock-saved-inline-overflow-y-property');\n $target.removeAttribute('data-scroll-lock-locked');\n }\n};\n\nvar fillGaps = function fillGaps() {\n state.fillGapSelectors.map(function (selector) {\n scroll_lock_fillGapSelector(selector);\n });\n};\n\nvar unfillGaps = function unfillGaps() {\n state.fillGapSelectors.map(function (selector) {\n scroll_lock_unfillGapSelector(selector);\n });\n};\n\nvar scroll_lock_fillGapSelector = function fillGapSelector(selector) {\n var $targets = document.querySelectorAll(selector);\n var isLockable = state.lockableSelectors.indexOf(selector) !== -1;\n eachNode($targets, function ($target) {\n scroll_lock_fillGapTarget($target, isLockable);\n });\n};\n\nvar scroll_lock_fillGapTarget = function fillGapTarget($target) {\n var isLockable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (isElement($target)) {\n var scrollBarWidth;\n\n if ($target.getAttribute('data-scroll-lock-lockable') === '' || isLockable) {\n scrollBarWidth = scroll_lock_getTargetScrollBarWidth($target, true);\n } else {\n var $lockableParent = findParentBySelector($target, arrayAsSelector(state.lockableSelectors));\n scrollBarWidth = scroll_lock_getTargetScrollBarWidth($lockableParent, true);\n }\n\n if ($target.getAttribute('data-scroll-lock-filled-gap') === 'true') {\n scroll_lock_unfillGapTarget($target);\n }\n\n var computedStyle = window.getComputedStyle($target);\n $target.setAttribute('data-scroll-lock-filled-gap', 'true');\n $target.setAttribute('data-scroll-lock-current-fill-gap-method', state.fillGapMethod);\n\n if (state.fillGapMethod === 'margin') {\n var currentMargin = parseFloat(computedStyle.marginRight);\n $target.style.marginRight = \"\".concat(currentMargin + scrollBarWidth, \"px\");\n } else if (state.fillGapMethod === 'width') {\n $target.style.width = \"calc(100% - \".concat(scrollBarWidth, \"px)\");\n } else if (state.fillGapMethod === 'max-width') {\n $target.style.maxWidth = \"calc(100% - \".concat(scrollBarWidth, \"px)\");\n } else if (state.fillGapMethod === 'padding') {\n var currentPadding = parseFloat(computedStyle.paddingRight);\n $target.style.paddingRight = \"\".concat(currentPadding + scrollBarWidth, \"px\");\n }\n }\n};\n\nvar scroll_lock_unfillGapSelector = function unfillGapSelector(selector) {\n var $targets = document.querySelectorAll(selector);\n eachNode($targets, function ($target) {\n scroll_lock_unfillGapTarget($target);\n });\n};\n\nvar scroll_lock_unfillGapTarget = function unfillGapTarget($target) {\n if (isElement($target)) {\n if ($target.getAttribute('data-scroll-lock-filled-gap') === 'true') {\n var currentFillGapMethod = $target.getAttribute('data-scroll-lock-current-fill-gap-method');\n $target.removeAttribute('data-scroll-lock-filled-gap');\n $target.removeAttribute('data-scroll-lock-current-fill-gap-method');\n\n if (currentFillGapMethod === 'margin') {\n $target.style.marginRight = \"\";\n } else if (currentFillGapMethod === 'width') {\n $target.style.width = \"\";\n } else if (currentFillGapMethod === 'max-width') {\n $target.style.maxWidth = \"\";\n } else if (currentFillGapMethod === 'padding') {\n $target.style.paddingRight = \"\";\n }\n }\n }\n};\n\nvar onResize = function onResize(e) {\n refillGaps();\n};\n\nvar onTouchStart = function onTouchStart(e) {\n if (!state.scroll) {\n state.startTouchY = e.touches[0].clientY;\n state.startTouchX = e.touches[0].clientX;\n }\n};\n\nvar scroll_lock_onTouchMove = function onTouchMove(e) {\n if (!state.scroll) {\n var startTouchY = state.startTouchY,\n startTouchX = state.startTouchX;\n var currentClientY = e.touches[0].clientY;\n var currentClientX = e.touches[0].clientX;\n\n if (e.touches.length < 2) {\n var selector = arrayAsSelector(state.scrollableSelectors);\n var direction = {\n up: startTouchY < currentClientY,\n down: startTouchY > currentClientY,\n left: startTouchX < currentClientX,\n right: startTouchX > currentClientX\n };\n var directionWithOffset = {\n up: startTouchY + TOUCH_DIRECTION_DETECT_OFFSET < currentClientY,\n down: startTouchY - TOUCH_DIRECTION_DETECT_OFFSET > currentClientY,\n left: startTouchX + TOUCH_DIRECTION_DETECT_OFFSET < currentClientX,\n right: startTouchX - TOUCH_DIRECTION_DETECT_OFFSET > currentClientX\n };\n\n var handle = function handle($el) {\n var skip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if ($el) {\n var parentScrollableEl = findParentBySelector($el, selector, false);\n\n if (elementIsInputRange($el)) {\n return false;\n }\n\n if (skip || elementIsScrollableField($el) && findParentBySelector($el, selector) || elementHasSelector($el, selector)) {\n var prevent = false;\n\n if (elementScrollLeftOnStart($el) && elementScrollLeftOnEnd($el)) {\n if (direction.up && elementScrollTopOnStart($el) || direction.down && elementScrollTopOnEnd($el)) {\n prevent = true;\n }\n } else if (elementScrollTopOnStart($el) && elementScrollTopOnEnd($el)) {\n if (direction.left && elementScrollLeftOnStart($el) || direction.right && elementScrollLeftOnEnd($el)) {\n prevent = true;\n }\n } else if (directionWithOffset.up && elementScrollTopOnStart($el) || directionWithOffset.down && elementScrollTopOnEnd($el) || directionWithOffset.left && elementScrollLeftOnStart($el) || directionWithOffset.right && elementScrollLeftOnEnd($el)) {\n prevent = true;\n }\n\n if (prevent) {\n if (parentScrollableEl) {\n handle(parentScrollableEl, true);\n } else {\n e.preventDefault();\n }\n }\n } else {\n handle(parentScrollableEl);\n }\n } else {\n e.preventDefault();\n }\n };\n\n handle(e.target);\n }\n }\n};\n\nvar onTouchEnd = function onTouchEnd(e) {\n if (!state.scroll) {\n state.startTouchY = 0;\n state.startTouchX = 0;\n }\n};\n\nif (typeof window !== 'undefined') {\n window.addEventListener('resize', onResize);\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('touchstart', onTouchStart);\n document.addEventListener('touchmove', scroll_lock_onTouchMove, {\n passive: false\n });\n document.addEventListener('touchend', onTouchEnd);\n}\n\nvar deprecatedMethods = {\n hide: function hide(target) {\n throwError('\"hide\" is deprecated! Use \"disablePageScroll\" instead. \\n https://github.com/FL3NKEY/scroll-lock#disablepagescrollscrollabletarget');\n disablePageScroll(target);\n },\n show: function show(target) {\n throwError('\"show\" is deprecated! Use \"enablePageScroll\" instead. \\n https://github.com/FL3NKEY/scroll-lock#enablepagescrollscrollabletarget');\n enablePageScroll(target);\n },\n toggle: function toggle(target) {\n throwError('\"toggle\" is deprecated! Do not use it.');\n\n if (getScrollState()) {\n disablePageScroll();\n } else {\n enablePageScroll(target);\n }\n },\n getState: function getState() {\n throwError('\"getState\" is deprecated! Use \"getScrollState\" instead. \\n https://github.com/FL3NKEY/scroll-lock#getscrollstate');\n return getScrollState();\n },\n getWidth: function getWidth() {\n throwError('\"getWidth\" is deprecated! Use \"getPageScrollBarWidth\" instead. \\n https://github.com/FL3NKEY/scroll-lock#getpagescrollbarwidth');\n return getPageScrollBarWidth();\n },\n getCurrentWidth: function getCurrentWidth() {\n throwError('\"getCurrentWidth\" is deprecated! Use \"getCurrentPageScrollBarWidth\" instead. \\n https://github.com/FL3NKEY/scroll-lock#getcurrentpagescrollbarwidth');\n return getCurrentPageScrollBarWidth();\n },\n setScrollableTargets: function setScrollableTargets(target) {\n throwError('\"setScrollableTargets\" is deprecated! Use \"addScrollableTarget\" instead. \\n https://github.com/FL3NKEY/scroll-lock#addscrollabletargetscrollabletarget');\n scroll_lock_addScrollableTarget(target);\n },\n setFillGapSelectors: function setFillGapSelectors(selector) {\n throwError('\"setFillGapSelectors\" is deprecated! Use \"addFillGapSelector\" instead. \\n https://github.com/FL3NKEY/scroll-lock#addfillgapselectorfillgapselector');\n scroll_lock_addFillGapSelector(selector);\n },\n setFillGapTargets: function setFillGapTargets(target) {\n throwError('\"setFillGapTargets\" is deprecated! Use \"addFillGapTarget\" instead. \\n https://github.com/FL3NKEY/scroll-lock#addfillgaptargetfillgaptarget');\n scroll_lock_addFillGapTarget(target);\n },\n clearQueue: function clearQueue() {\n throwError('\"clearQueue\" is deprecated! Use \"clearQueueScrollLocks\" instead. \\n https://github.com/FL3NKEY/scroll-lock#clearqueuescrolllocks');\n clearQueueScrollLocks();\n }\n};\n\nvar scrollLock = _objectSpread({\n disablePageScroll: disablePageScroll,\n enablePageScroll: enablePageScroll,\n getScrollState: getScrollState,\n clearQueueScrollLocks: clearQueueScrollLocks,\n getTargetScrollBarWidth: scroll_lock_getTargetScrollBarWidth,\n getCurrentTargetScrollBarWidth: scroll_lock_getCurrentTargetScrollBarWidth,\n getPageScrollBarWidth: getPageScrollBarWidth,\n getCurrentPageScrollBarWidth: getCurrentPageScrollBarWidth,\n addScrollableSelector: scroll_lock_addScrollableSelector,\n removeScrollableSelector: scroll_lock_removeScrollableSelector,\n addScrollableTarget: scroll_lock_addScrollableTarget,\n removeScrollableTarget: scroll_lock_removeScrollableTarget,\n addLockableSelector: scroll_lock_addLockableSelector,\n addLockableTarget: scroll_lock_addLockableTarget,\n addFillGapSelector: scroll_lock_addFillGapSelector,\n removeFillGapSelector: scroll_lock_removeFillGapSelector,\n addFillGapTarget: scroll_lock_addFillGapTarget,\n removeFillGapTarget: scroll_lock_removeFillGapTarget,\n setFillGapMethod: scroll_lock_setFillGapMethod,\n refillGaps: refillGaps,\n _state: state\n}, deprecatedMethods);\n\n/* harmony default export */ var scroll_lock = __webpack_exports__[\"default\"] = (scrollLock);\n\n/***/ })\n/******/ ])[\"default\"];\n});","/**\n * Turns an iterable object that is not an array into an array so you can\n * access array methods and properties.\n *\n * This is the ES5 equivalent of `[...iterable]`\n *\n * @param {any} iterable - a non-array iterable object\n */\nexport default function arrayFrom(iterable) {\n return Array.prototype.slice.call(iterable);\n}\n","/**\n * Get First Item\n *\n * This is a sanity check function for code where you can't be sure whether\n * you'll be passed a single item or a jQuery collection.\n *\n * Accepts either a DOM Element from `document.querySelector`,\n * a collection of DOM Elements from methods like `document.querySelectorAll`,\n * or a jQuery selection object, and returns a single DOM Element.\n *\n * @param {jQuery|NodeList|HTMLCollection|Element} selection - a collection or single element\n * @returns {Element} a DOM element\n */\nexport const getFirstItem = (selection) => {\n // Abort early if we somehow have an empty collection\n if (selection.length === 0) return null;\n\n // If this is a collection, return the first item.\n if (selection.length > 0) return selection[0];\n\n // If this is not a collection, return the original item.\n return selection;\n};\n","import { getFirstItem } from './get-first-item';\n\n/**\n * Transition-Aware Show & Hide Element\n *\n * A custom set of functions to handle the fading in and out of elements.\n * This depends on the targeted components having support for the `is-shown`\n * class and the `hidden` attribute. Currently this plugin works with the\n * `Overlay`, `StickyBar`, and `MegaMenu` components. This implementation\n * performs better than jQuery's built in animation methods since it uses CSS\n * transitions instead of manually setting CSS for each keyframe.\n */\n\n/**\n * Transition End Handler\n *\n * Event handler for the `transitionend` event. Sets the `hidden` attribute\n * and removes the event listener now that the animation is complete.\n *\n * @param {Event} event\n */\nconst transitionEndHandler = (event) => {\n // Ensure the event didn't bubble up from a child element\n if (event.target === event.currentTarget) {\n const element = event.currentTarget;\n\n // Now we know animation has completed, set the `hidden` attribute.\n element.setAttribute('hidden', '');\n\n // Remove our event listener.\n element.removeEventListener('transitionend', transitionEndHandler);\n }\n};\n\n/**\n * Show Element\n *\n * Allows animation by removing the `hidden` attribute, triggering a browser\n * repaint, and then adding the `is-shown` class.\n *\n * @param {jQuery|NodeList|HTMLCollection|Element} selection - a collection or single element\n */\nexport const showElement = (selection) => {\n // If this is a jQuery collection, convert to a single element.\n const element = getFirstItem(selection);\n\n // If there's no element, abort early\n if (!element) return;\n\n // Begin animation.\n // (The specific transition depends on the targeted component's CSS)\n element.removeAttribute('hidden');\n\n // Force a browser re-paint so the browser will realize the element is no\n // longer `hidden` and allow transitions.\n // eslint-disable-next-line no-unused-expressions\n element.offsetWidth;\n\n // Complete animation.\n element.classList.add('is-shown');\n\n // Remove any lingering event listeners.\n element.removeEventListener('transitionend', transitionEndHandler);\n};\n\n/**\n * Hide Element\n *\n * Allows animation by removing the `is-shown` class, setting an event listener\n * for the `transitionend` event, and then adding the `hidden` attribute.\n *\n * @param {jQuery|NodeList|HTMLCollection|Element} selection - a collection or single element\n */\nexport const hideElement = (selection) => {\n // If this is a jQuery collection, convert to a single element.\n const element = getFirstItem(selection);\n\n // If there's no element, abort early\n if (!element) return;\n\n // Begin animation.\n // (The specific transition depends on the targeted component's CSS)\n element.classList.remove('is-shown');\n\n // Complete animation.\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n // If user prefers reduced motion then we disable the transition in CSS, so\n // `transitionend` will never fire. In that case we add `hidden` immediately.\n element.setAttribute('hidden', '');\n } else {\n // If not, then we set a listener for the `transitionend` event.\n element.addEventListener('transitionend', transitionEndHandler);\n }\n};\n","/**\n * Add Class to Element\n *\n * This function exists only because IE11 does not support adding or removing\n * classes to SVG elements via `classList`.\n *\n * @see https://caniuse.com/#search=classList\n * @see https://github.com/ionic-team/stencil/pull/1082/files\n *\n * @param {Element} element\n * @param {string} cssClass\n */\nexport const addClass = (element, cssClass) => {\n // If there's no element, abort early\n if (!element) return;\n\n if (element.nodeName === 'svg') {\n let appliedClasses = element.getAttribute('class') || '';\n appliedClasses = appliedClasses.split(' ').includes(cssClass)\n ? appliedClasses\n : `${appliedClasses} ${cssClass}`;\n element.setAttribute('class', appliedClasses);\n } else {\n element.classList.add(cssClass);\n }\n};\n\n/**\n * Remove Class from Element\n *\n * This function exists only because IE11 does not support adding or removing\n * classes to SVG elements via `classList`.\n *\n * @see https://caniuse.com/#search=classList\n * @see https://github.com/ionic-team/stencil/pull/1082/files\n *\n * @param {Element} element\n * @param {string} cssClass\n */\nexport const removeClass = (element, cssClass) => {\n // If there's no element, abort early\n if (!element) return;\n\n if (element.nodeName === 'svg') {\n let appliedClasses = element.getAttribute('class') || '';\n appliedClasses = appliedClasses\n .split(' ')\n .filter((item) => item !== cssClass)\n .join(' ');\n element.setAttribute('class', appliedClasses);\n } else {\n element.classList.remove(cssClass);\n }\n};\n","import scrollLock from 'scroll-lock';\nimport arrayFrom from '../utilities/array-from';\nimport {\n showElement,\n hideElement,\n} from '../utilities/transition-aware-show-hide';\n// IE11 doesn't support add/remove from classList on SVG\n// These functions do it the hard way for SVG elements.\nimport { addClass, removeClass } from '../utilities/svg-class-list';\n\nclass MegaMenu {\n /**\n * Initialize a mega menu. This JavaScript is primarily responsible for\n * binding event listeners so you can open and close the menu. It also handles\n * locking scrolling while the menu is open\n *\n * @param {Element} element - Your mega menu! An element with markup matching\n * our mega menu pattern.\n */\n constructor(element) {\n // Register UI elements\n this.element = element;\n\n this.submenuUnderlay = element.querySelector(\n '.js-MegaMenu-submenuUnderlay'\n );\n\n this.navs = [\n {\n dropdown: element.querySelector('.js-MegaMenu-nav--main'),\n button: element.querySelector('.js-MegaMenu-hamburger'),\n icon: element.querySelector('.js-MegaMenu-hamburgerIcon'),\n },\n {\n dropdown: element.querySelector('.js-MegaMenu-nav--secondary'),\n button: element.querySelector('.js-MegaMenu-contactButton'),\n icon: element.querySelector('.js-MegaMenu-contactIcon'),\n },\n ];\n\n this.panelWrappers = arrayFrom(\n element.querySelectorAll('.js-MegaMenu-submenuWrapper')\n );\n\n // Check if the element contains the heavy page modifier class.\n // We need to change behavior slightly on pages with massive DOM trees,\n // because they can affect performance of the Mega Menu adversely.\n // You should only use this modifier on specific pages where you've\n // observed performance issues opening and closing the Mega Menu.\n this.heavyPage = element.classList.contains('js-MegaMenu--heavyPage');\n\n // Create placeholders for state references\n this.openWrapper = null;\n this.openNav = null;\n this.scrollingElement = null;\n\n // For some users we disabled animations. In those cases we can't use\n // `transitionend` listeners and need to handle events differently.\n this.prefersReducedMotion = window.matchMedia(\n '(prefers-reduced-motion: reduce)'\n ).matches;\n\n if (!this.prefersReducedMotion) {\n // We need to be able to add and remove event listeners.\n //\n // To make sure we can remove them correctly we create reusable\n // instances of them.\n this.panelCloseListenerInstance = this._panelCloseListener.bind(this);\n this.navCloseListenerInstance = this._navCloseListener.bind(this);\n }\n\n // Configure scroll-lock to avoid empty gaps when scrolling is locked and\n // the scrollbar disappears.\n this._handleScrollbarGaps();\n\n // Create a media query\n this.mediaQueryMatch = window.matchMedia('(min-width: 50em)');\n // Check its initial value\n this.isLargeScreen = this.mediaQueryMatch.matches;\n // Add a listener to run code when the media query status changes\n this.mediaQueryMatch.addListener((event) => {\n this.isLargeScreen = event.matches;\n this._updateScrollLock();\n });\n\n // Bind all of our various mouse/touch/keyboard event listeners\n this._bindPanelEvents();\n this.navs.forEach((nav) => {\n this._initNav(nav);\n });\n\n document.addEventListener('keydown', this._escapeListener.bind(this));\n element.addEventListener('click', this._outsideClickListener.bind(this));\n\n this._syncSearchInputs();\n }\n\n /**\n * Add click and touch events for our hamburger menu button\n * @param {Object} nav\n * @param {HTMLElement} nav.dropdown - our nav dropdown\n * @param {HTMLElement} nav.button - a button (or anchor with role=\"button\") that\n * toggles our nav\n */\n _initNav(nav) {\n if (!nav.dropdown || !nav.button || !nav.button) return;\n\n // In some cases we progressively enhance links into buttons when JS loads.\n // (If JS doesn't load they maintain their link behavior)\n if (nav.button.tagName !== 'BUTTON') {\n nav.button.setAttribute('role', 'button');\n }\n\n nav.button.setAttribute('aria-expanded', 'false');\n\n nav.button.addEventListener('click', (e) => {\n if (this.openNav === nav) {\n this._closeTopLevelNav(nav);\n } else {\n this._openTopLevelNav(nav);\n }\n\n // Prevent this bubbling up and triggering our document click listener\n e.preventDefault();\n e.stopPropagation();\n });\n }\n\n /**\n * Add open and close controls for our submenus\n */\n _bindPanelEvents() {\n // Iterate over each submenu, adding click events\n this.panelWrappers.forEach((wrapper) => {\n // Grab the trigger and the panel\n const controls = this._getPanelControls(wrapper);\n\n // Confirm we have our necessary elements before proceeding\n if (controls.trigger && controls.panel) {\n // We're progressively enhancing links with JS. If JS never loads then the\n // links work normally. If JS does load we turn these links into buttons\n // that toggle submenus. We add ARIA attributes to communicate this to\n // screen readers.\n controls.trigger.setAttribute('role', 'button');\n controls.trigger.setAttribute('aria-expanded', 'false');\n controls.trigger.setAttribute(\n 'aria-controls',\n controls.trigger.dataset.controls\n );\n // We also need to remove one attribute to finish the transition to button\n controls.trigger.removeAttribute('aria-current');\n\n controls.trigger.addEventListener('click', (event) => {\n if (this.openNav) {\n // Remove this event listener if it's lingering\n this.openNav.dropdown.removeEventListener(\n 'transitionend',\n this.panelCloseListenerInstance\n );\n }\n\n // Get current state of this submenu so we can toggle it\n const wasShowing =\n controls.trigger.getAttribute('aria-expanded') === 'true';\n\n const oldWrapper = this.openWrapper;\n\n // Remove any lingering transition classes on this panel\n this._removeTransitionClasses(controls.panel);\n\n if (wasShowing) {\n // This panel was showing before and is being toggled closed now.\n this._hideOpenPanel();\n\n this._hideSubmenuUnderlay();\n } else {\n // If a different panel was previously open we need to handle the\n // transition between the two panels (assuming we haven't disabled)\n // animations.\n if (oldWrapper) {\n if (this.prefersReducedMotion) {\n // Show the panel immediately if they prefer reduced motion\n this._showPanel(controls);\n } else if (this.isLargeScreen) {\n // If we're on a large screen and they prefer motion we'll perform\n // a swap animation\n\n // Get the old panel for manipulation\n const oldPanel = this._getPanelControls(oldWrapper).panel;\n\n // Remove any lingering transition classes\n this._removeTransitionClasses(oldPanel);\n\n // Depending on whether the new panel's trigger is to the left or\n // right of the old panel's trigger we add different classes.\n // These classes impact large screen transitions.\n const oldIndex = this.panelWrappers.indexOf(oldWrapper);\n const newIndex = this.panelWrappers.indexOf(wrapper);\n\n if (newIndex > oldIndex) {\n controls.panel.classList.add('is-right', 'is-entering');\n oldPanel.classList.add('is-left', 'is-exiting');\n } else {\n controls.panel.classList.add('is-left', 'is-entering');\n oldPanel.classList.add('is-right', 'is-exiting');\n }\n\n this._showPanel(controls);\n } else {\n // If we're on a small screen and another panel was open we want to\n // wait for it to close before opening a new one.\n this.panelCloseCallback = () => {\n this._showPanel(controls);\n };\n\n if (this.openNav) {\n // Remove this event listener if it's lingering\n this.openNav.dropdown.removeEventListener(\n 'transitionend',\n this.panelCloseListenerInstance\n );\n }\n }\n } else {\n // If a different wrapper wasn't open previously then we just do a\n // normal panel open.\n this._showPanel(controls);\n\n // We make the header fixed position when the menu is open. When we close\n // the menu the header goes back to its regular position which can look\n // odd. Resetting the page scroll to the top helps avoid this.\n window.scrollTo(0, 0);\n }\n\n // Hide the previously open panel, and show our new panel.\n // This is done down here so that any necessary transition classes\n // are applied before we trigger transitions.\n this._hideOpenPanel();\n\n this.openWrapper = wrapper;\n }\n\n // On large screens opening a panel can update our scroll locking.\n // If this panel was previously showing, or no panel was showing before\n // then we need to lock scrolling\n if (this.isLargeScreen && (wasShowing || !oldWrapper)) {\n this._updateScrollLock();\n }\n\n // Prevent default link behavior. This is done for progressive\n // enhancement. If JS doesn't load, the native link behavior still works\n event.preventDefault();\n // Prevent this event from bubbling up to our document click listener\n event.stopPropagation();\n });\n }\n });\n }\n\n // When someone presses the escape key we'll close open menus\n _escapeListener(event) {\n // IE expects `Esc`, not `Escape`\n if (event.key === 'Escape' || event.key === 'Esc') {\n this._closeAll();\n }\n }\n\n // When someone clicks outside of the mega menu we want to close open menus\n _outsideClickListener(event) {\n // We want to ignore clicks within the mega menu. Depending on whether\n // you're on a small or large screen the clickable area varies based on the\n // different visual design.\n const clickTrapper = this.isLargeScreen\n ? this.openWrapper.querySelector('.js-MegaMenu-scrollable')\n : this.openNav && this.openNav.dropdown;\n\n if (!clickTrapper) return;\n\n const ignoreClick = clickTrapper.contains(event.target);\n\n if (!ignoreClick) {\n this._closeAll();\n }\n }\n\n _closeAll() {\n if (this.openNav) {\n this._closeTopLevelNav(this.openNav);\n } else if (this.openWrapper) {\n this._hideOpenPanel();\n this._hideSubmenuUnderlay();\n }\n\n this._updateScrollLock();\n }\n\n _openTopLevelNav(nav) {\n if (this.openNav) {\n this._closeTopLevelNav(this.openNav);\n }\n\n addClass(nav.icon, 'is-on');\n nav.button.setAttribute('aria-expanded', false);\n\n this.openNav = nav;\n\n // We make the header fixed position when the menu is open. When we close\n // the menu the header goes back to its regular position which can look\n // odd. Resetting the page scroll to the top helps avoid this.\n window.scrollTo(0, 0);\n\n // Remove `display: none;` from our nav\n nav.dropdown.classList.add('is-transitioning');\n\n // Force a browser re-paint so the browser will realize the\n // element is no longer `display: none` and allow transitions.\n /* eslint-disable-next-line no-unused-vars */\n const reflow = nav.dropdown.offsetHeight;\n\n // Trigger CSS animations on nav children\n nav.dropdown.classList.add('is-open');\n\n // Remove this event listener if it's lingering\n nav.dropdown.removeEventListener(\n 'transitionend',\n this.navCloseListenerInstance\n );\n }\n\n _closeTopLevelNav(nav) {\n removeClass(nav.icon, 'is-on');\n nav.button.setAttribute('aria-expanded', false);\n\n // If a panel's open close it before closing the its parent nav\n if (this.openWrapper) {\n this._hideOpenPanel();\n this._hideSubmenuUnderlay();\n\n if (this.prefersReducedMotion) {\n // Close the top level nav immediately if they prefer reduced motion\n this._hideTopLevelNav(nav);\n } else {\n // Wait for the panel to close before closing the menu\n this.panelCloseCallback = () => {\n this._hideTopLevelNav(nav);\n };\n\n nav.dropdown.addEventListener(\n 'transitionend',\n this.panelCloseListenerInstance\n );\n }\n } else {\n // If not, close the top level nav immediately\n this._hideTopLevelNav(nav);\n }\n\n this.openNav = null;\n }\n\n _navCloseListener(event) {\n // Make sure the transition happened on this element's underlay\n if (event.target === this.submenuUnderlay) {\n const nav = event.target.closest('.js-MegaMenu-nav');\n\n // Hide the nav completely (`display: none;`)\n nav.classList.remove('is-transitioning');\n\n nav.removeEventListener('transitionend', this.navCloseListenerInstance);\n }\n }\n\n /**\n * If a panel is open when we close the its parent nav or open another panel,\n * we wait for the panel to close before performing the other action.\n *\n * We store the action to perform in `this.panelCloseCallback`\n *\n * @param {Event} event - a transitionend event\n */\n _panelCloseListener(event) {\n // Make sure the transition end event is on submenu\n if (event.target.classList.contains('js-MegaMenu-submenu')) {\n if (this.openNav) {\n // Reset the nav scrolling after the panel closes\n this.openNav.dropdown.scrollTo(0, 0);\n }\n\n if (this.panelCloseCallback) {\n this.panelCloseCallback();\n }\n\n if (this.openNav) {\n this.openNav.dropdown.removeEventListener(\n 'transitionend',\n this.panelCloseListenerInstance\n );\n }\n }\n }\n\n _hideTopLevelNav({ dropdown }) {\n // Trigger CSS hiding animations on nav children\n dropdown.classList.remove('is-open');\n if (this.prefersReducedMotion) {\n dropdown.classList.remove('is-transitioning');\n } else {\n dropdown.addEventListener('transitionend', this.navCloseListenerInstance);\n }\n }\n\n /**\n * Hide a panel's content\n * @param {HTMLElement} root0\n * @param {HTMLElement} root0.trigger\n * @param {HTMLElement} root0.panel\n */\n _hidePanel({ trigger, panel }) {\n trigger.setAttribute('aria-expanded', false);\n\n // IE11 doesn't support `classList` on SVGs so we'll use this function\n removeClass(\n trigger.querySelector('.js-MegaMenu-submenuExpandIcon'),\n 'is-on'\n );\n\n hideElement(panel);\n }\n\n /**\n * Specifically close the currently open panel.\n */\n _hideOpenPanel() {\n if (this.openWrapper) {\n this._hidePanel(this._getPanelControls(this.openWrapper));\n\n this.openWrapper = null;\n }\n }\n\n /**\n * Show a panel's content\n * @param {HTMLElement} root0\n * @param {HTMLElement} root0.trigger\n * @param {HTMLElement} root0.panel\n */\n _showPanel({ trigger, panel }) {\n trigger.setAttribute('aria-expanded', true);\n\n // IE11 doesn't support `classList` on SVGs so we'll use this function\n addClass(trigger.querySelector('.js-MegaMenu-submenuExpandIcon'), 'is-on');\n\n showElement(panel);\n showElement(this.submenuUnderlay);\n\n // If the panel contains a search input we should focus it so they can\n // immediately start typing.\n const panelSearchInput = panel.querySelector('.js-mega-menu-search-input');\n\n if (panelSearchInput) {\n panelSearchInput.focus();\n }\n }\n\n /**\n * Take a wrapper element and returns the button trigger and panel from within\n * that wrapper.\n * @param {HTMLElement} wrapper\n */\n _getPanelControls(wrapper) {\n return {\n trigger: wrapper.querySelector('.js-MegaMenu-submenuToggle'),\n panel: wrapper.querySelector('.js-MegaMenu-submenu'),\n };\n }\n\n /**\n * Hide the submenu underlay\n */\n _hideSubmenuUnderlay() {\n hideElement(this.submenuUnderlay);\n\n if (!this.isLargeScreen) {\n // If this is a small screen the underlay won't transition, so won't\n // fire a `transitionend` event for `toggleVisibility` to hook into.\n // We need to manually add `hidden`;\n this.submenuUnderlay.setAttribute('hidden', '');\n }\n }\n\n /**\n * Different transition classes are applied depending in different\n * circumstances. We want to be sure to remove old transition classes\n * before hiding or showing this panel.\n * @param {HTMLElement} panel\n */\n _removeTransitionClasses(panel) {\n panel.classList.remove('is-left', 'is-right', 'is-entering', 'is-exiting');\n }\n\n /**\n * This locks or unlocks page scrolling based upon the current state of the\n * mega menu. There's a fair chunk of logic here, since the page functions\n * differently depending on page size.\n *\n * On small screens our navs hidden behind a toggles. Once a nav is open,\n * scrolling should be locked.\n *\n * On large screens most of the menu is always visible, with submenus being\n * hidden until they're open. When a submenu's open scrolling should be locked.\n */\n _updateScrollLock() {\n // If we call disable or enable multiple times in a row they can get queued\n // up and lead to errors. The docs recommend clearing the queue if there's\n // a chance this has happened.\n //\n // @see https://github.com/FL3NKEY/scroll-lock#queue\n scrollLock.clearQueueScrollLocks();\n\n if (this.isLargeScreen) {\n // On large screens we pad the submenu content when scrolling is locked\n // Scroll lock will handle this for us if we add a fill gap selector.\n //\n // However, it allows duplicate fill gap selectors. This can lead to\n // poor performance since Scroll Lock loops over those selectors to\n // update the DOM. To avoid this we remove the selector before adding it,\n // to ensure there are no duplicates.\n //\n // @see https://github.com/FL3NKEY/scroll-lock/issues/13\n scrollLock.removeFillGapSelector('.js-MegaMenu-scrollable');\n scrollLock.addFillGapSelector('.js-MegaMenu-scrollable');\n\n // Handle large screens\n if (this.openWrapper) {\n // If a submenu is open, disable scrolling\n // However, allow scrolling within the submenu\n this.scrollingElement = this.openWrapper.querySelector(\n '.js-MegaMenu-scrollable'\n );\n this._disableScroll();\n } else {\n this._enableScroll();\n }\n } else {\n // On small screens we don't pad the submenu content when scrolling is locked\n scrollLock.removeFillGapSelector('.js-MegaMenu-scrollable');\n\n // Handle small screens\n if (this.openNav) {\n // Disable scrolling if a top level nav is open\n // However, allow scrolling within that nav\n this.scrollingElement = this.openNav.dropdown.querySelector(\n '.js-MegaMenu-primaryLinks'\n );\n this._disableScroll();\n } else {\n // Otherwise enable scrolling\n this._enableScroll();\n }\n }\n }\n\n /**\n * The MegaMenu is tightly coupled with the PageContent pattern.\n * We need to add and remove classes from PageContent when toggling the menu,\n * but we can't select it in the constructor because we're loading this\n * script before the PageContent in the markup, which means the content\n * doesn't exist in the DOM yet when the constructor runs.\n */\n _getPageContent() {\n return document.querySelector('.js-PageContent');\n }\n\n /**\n * Disable page scrolling while allowing scrolling\n * within `this.scrollingElement`\n */\n _disableScroll() {\n // Adding this class will make the header `position: fixed;`\n this.element.classList.add('is-open');\n\n // Adding this class will add margin to compensate for the fixed header.\n this._getPageContent().classList.add('is-underMegaMenu');\n\n // If this is a heavy page, the scroll locking mechanism causes a dramatic\n // performance decrease, especially in Safari 14, so we're opting out.\n if (this.heavyPage) return;\n\n scrollLock.disablePageScroll(this.scrollingElement);\n }\n\n /**\n * Enable page scrolling and clear any data\n * attributes previously added to `this.scrollingElement`\n */\n _enableScroll() {\n // Removing this class will make the header `position: relative;`\n this.element.classList.remove('is-open');\n\n // Adding this class will add margin to compensate for the fixed header.\n this._getPageContent().classList.remove('is-underMegaMenu');\n\n // If this is a heavy page, the scroll locking mechanism causes a dramatic\n // performance decrease, especially in Safari 14, so we're opting out.\n if (this.heavyPage) return;\n\n scrollLock.enablePageScroll(this.scrollingElement);\n }\n\n /**\n * Some users may have their OS configured to always show scrollbars.\n * If this is the case, their scrollbar will disappear when we lock\n * scrolling. This can cause content to shift around in a jarring fashion\n * as the page fills up the space that the scrollbar occupied.\n *\n * The ScrollLock library provides some utilities to help prevent this.\n * To do so, it adds padding to elements equal to the space the scrollbar\n * used to take up.\n *\n * We need to do some custom configuration for this to work correctly.\n *\n * @see https://github.com/FL3NKEY/scroll-lock#filling-the-gap\n */\n _handleScrollbarGaps() {\n /**\n * By default `ScrollLock` adds padding to the `body` but this can cause\n * problems when the body contains full width elements, as they'll no longer\n * span the full window.\n *\n * We disable this default behavior.\n */\n scrollLock.removeFillGapSelector('body');\n\n /**\n * Since the default behavior is disabled it's up to us to fill the\n * scrollbar gap where necessary.\n *\n * Most pages are composed of the mega menu, the page content, and the\n * footer. We'll instruct ScrollLock to fill the gap on these elements.\n */\n scrollLock.addFillGapSelector('.js-MegaMenu');\n scrollLock.addFillGapSelector('.js-PageContent-inner');\n scrollLock.addFillGapSelector('.js-FooterContent');\n }\n\n /**\n * The placement of the search input is different on small and large screens.\n * In order to maintain a reasonable tab order on all screen sizes we ended up\n * including 2 different search forms, one for small screens and one for large\n * screens.\n *\n * We would like to keep these two forms in sync in case a user changes their\n * screen size.\n *\n * This function watches each search input and keeps them synced up.\n */\n _syncSearchInputs() {\n const inputs = arrayFrom(\n document.querySelectorAll('.js-mega-menu-search-input')\n );\n\n inputs.forEach((input) => {\n // Watching change will not sync the inputs on every keystroke, but that's\n // fine since only one input will be visible and interactive at a time.\n input.addEventListener('change', () => {\n const newValue = input.value;\n\n inputs.forEach((loopedInput) => {\n // We'll ignore the input that just change\n if (input !== loopedInput) {\n // But update the other input.\n loopedInput.value = newValue;\n }\n });\n });\n });\n }\n}\n\nexport default MegaMenu;\n","import MegaMenu from './components/mega-menu.js';\n\n// eslint-disable-next-line no-unused-vars\nconst theMegaMenu = new MegaMenu(document.querySelector('.js-MegaMenu'));\n"],"names":["webpackUniversalModuleDefinition","root","factory","module","this","modules","installedModules","__webpack_require__","moduleId","exports","i","l","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","getDefault","getModuleExports","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","argumentAsArray","argument","Array","isArray","isElement","target","Node","isElementList","nodeList","NodeList","eachNode","callback","length","throwError","message","console","error","concat","arrayAsSelector","array","selector","join","nodeListAsArray","nodes","node","push","findParentBySelector","$el","self","arguments","undefined","$root","document","querySelectorAll","indexOf","parentElement","elementHasSelector","has","elementHasOverflowHidden","computedStyle","getComputedStyle","overflowIsHidden","overflow","elementScrollTopOnStart","scrollTop","elementScrollTopOnEnd","scrollHeight","scrollTopWithHeight","offsetHeight","elementScrollLeftOnStart","scrollLeft","elementScrollLeftOnEnd","scrollWidth","scrollLeftWithWidth","offsetWidth","elementIsScrollableField","elementIsInputRange","disablePageScroll","enablePageScroll","getScrollState","clearQueueScrollLocks","scroll_lock_getTargetScrollBarWidth","scroll_lock_getCurrentTargetScrollBarWidth","getPageScrollBarWidth","getCurrentPageScrollBarWidth","scroll_lock_addScrollableTarget","scroll_lock_removeScrollableTarget","scroll_lock_addScrollableSelector","scroll_lock_removeScrollableSelector","scroll_lock_addLockableTarget","scroll_lock_addLockableSelector","scroll_lock_setFillGapMethod","scroll_lock_addFillGapTarget","scroll_lock_removeFillGapTarget","scroll_lock_addFillGapSelector","scroll_lock_removeFillGapSelector","refillGaps","_objectSpread","source","ownKeys","keys","getOwnPropertySymbols","filter","sym","getOwnPropertyDescriptor","forEach","_defineProperty","obj","configurable","writable","FILL_GAP_AVAILABLE_METHODS","TOUCH_DIRECTION_DETECT_OFFSET","state","scroll","queue","scrollableSelectors","lockableSelectors","fillGapSelectors","fillGapMethod","startTouchY","startTouchX","scroll_lock_hideLockableOverflow","fillGaps","scroll_lock_showLockableOverflow","unfillGaps","getTargetScrollBarWidth","$target","onlyExists","currentOverflowYProperty","style","overflowY","getAttribute","width","getCurrentTargetScrollBarWidth","body","documentWidth","documentElement","clientWidth","windowWidth","window","innerWidth","currentWidth","borderLeftWidthCurrentProperty","borderLeftWidth","borderRightWidthCurrentProperty","borderRightWidth","_currentWidth","addScrollableTarget","targets","map","$targets","setAttribute","removeScrollableTarget","removeAttribute","addScrollableSelector","selectors","removeScrollableSelector","sSelector","addLockableTarget","addLockableSelector","setFillGapMethod","method","methods","addFillGapTarget","scroll_lock_fillGapTarget","removeFillGapTarget","scroll_lock_unfillGapTarget","addFillGapSelector","scroll_lock_fillGapSelector","removeFillGapSelector","fSelector","scroll_lock_unfillGapSelector","hideLockableOverflow","scroll_lock_hideLockableOverflowSelector","showLockableOverflow","scroll_lock_showLockableOverflowSelector","hideLockableOverflowSelector","scroll_lock_hideLockableOverflowTarget","showLockableOverflowSelector","scroll_lock_showLockableOverflowTarget","hideLockableOverflowTarget","showLockableOverflowTarget","fillGapSelector","isLockable","fillGapTarget","scrollBarWidth","$lockableParent","currentMargin","parseFloat","marginRight","maxWidth","currentPadding","paddingRight","unfillGapSelector","unfillGapTarget","currentFillGapMethod","onResize","e","onTouchStart","touches","clientY","clientX","scroll_lock_onTouchMove","onTouchMove","currentClientY","currentClientX","direction","up","down","left","right","directionWithOffset","handle","skip","parentScrollableEl","prevent","preventDefault","onTouchEnd","addEventListener","passive","deprecatedMethods","hide","show","toggle","getState","getWidth","getCurrentWidth","setScrollableTargets","setFillGapSelectors","setFillGapTargets","clearQueue","scrollLock","_state","arrayFrom","iterable","slice","getFirstItem","selection","transitionEndHandler","event","currentTarget","element","removeEventListener","showElement","classList","add","hideElement","remove","matchMedia","matches","addClass","cssClass","nodeName","appliedClasses","split","includes","removeClass","item","MegaMenu","submenuUnderlay","querySelector","navs","dropdown","button","icon","panelWrappers","heavyPage","contains","openWrapper","openNav","scrollingElement","prefersReducedMotion","panelCloseListenerInstance","_panelCloseListener","navCloseListenerInstance","_navCloseListener","_handleScrollbarGaps","mediaQueryMatch","isLargeScreen","addListener","_updateScrollLock","_bindPanelEvents","nav","_initNav","_escapeListener","_outsideClickListener","_syncSearchInputs","tagName","_closeTopLevelNav","_openTopLevelNav","stopPropagation","wrapper","controls","_getPanelControls","trigger","panel","dataset","wasShowing","oldWrapper","_removeTransitionClasses","_hideOpenPanel","_hideSubmenuUnderlay","_showPanel","oldPanel","oldIndex","newIndex","panelCloseCallback","scrollTo","_closeAll","clickTrapper","ignoreClick","_hideTopLevelNav","closest","_hidePanel","panelSearchInput","focus","_disableScroll","_enableScroll","_getPageContent","inputs","input","newValue","loopedInput"],"mappings":"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"}