{"version":3,"file":"nav-primary.329.9c1fa.js","mappings":"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","sources":["webpack://umms-html/./FrontEndSrc/modules/macro/nav-primary/nav-primary.js","webpack://umms-html/./node_modules/lodash.debounce/index.js"],"sourcesContent":["'use strict';\r\n\r\nimport debounce from 'lodash.debounce';\r\n\r\nexport default (() => {\r\n\r\n    var _self,\r\n        ui,\r\n        state,\r\n        wrap;\r\n\r\n    return {\r\n\r\n        init: function(options) {\r\n            _self = this;\r\n\r\n            if (options.wrap) {\r\n                wrap = options.wrap;\r\n            }\r\n\r\n            if (wrap) {\r\n                ui = {\r\n                    phoneCta: document.querySelector('.js-header .l-constraint .header-cta'),\r\n                    mobileNavToggles: document.querySelectorAll('.js-mobile-nav-toggle'),\r\n                    dropdownItems: wrap.querySelectorAll('.js-nav-primary-dropdown-wrap'),\r\n                    dropdownItemLinks: wrap.querySelectorAll('.js-nav-primary-dropdown-wrap > a')\r\n                };\r\n\r\n                _self.setState();\r\n                _self.bindUIActions();\r\n            }\r\n        },\r\n\r\n        bindUIActions: function() {\r\n            $(window).on('load', _self.events.windowLoad);\r\n            $(window).on('resize', debounce(_self.events.windowResize, 200));\r\n            for (var i = 0; i <  ui.mobileNavToggles.length; i++) {\r\n                ui.mobileNavToggles[i].addEventListener('click', _self.events.mobileNavToggleClick);\r\n            }\r\n\r\n            document.addEventListener('focus', _self.events.documentFocusChange, true);\r\n            document.addEventListener('click', function() {\r\n                _self.events.documentFocusChange(document.activeElement);\r\n            });\r\n            [].forEach.call(ui.dropdownItemLinks, function(link) {\r\n                link.addEventListener('keydown', _self.events.dropdownItemLinkKeyDown);\r\n            });\r\n        },\r\n\r\n        events: {\r\n            windowLoad: function() {\r\n                _self.setState();\r\n                _self.checkItemOverflow();\r\n            },\r\n\r\n            windowResize: function() {\r\n                _self.setState();\r\n                _self.checkItemOverflow();\r\n            },\r\n\r\n            mobileNavToggleClick: function(e) {\r\n                e.preventDefault();\r\n                _self.toggleMobileNav();\r\n            },\r\n\r\n            mobileSearchTransitionEnd: function() {\r\n                document.body.classList.toggle('is-showing-mobile-nav');\r\n                document.body.removeEventListener('transitionend', _self.events.mobileSearchTransitionEnd);\r\n            },\r\n\r\n            dropdownItemLinkKeyDown: function(e) {\r\n                if (e.which === 13 && state.mediaQuery === 'mq-large') {\r\n                    if (!_self.isLinkShowingDropdown(e.target)) {\r\n                        e.preventDefault();\r\n                        _self.setOpenDesktopDropdown(e.target);\r\n                    }\r\n                }\r\n            },\r\n\r\n            documentFocusChange: function(e) {\r\n                if (!_self.isChildOfActiveDropdown(e.target)) {\r\n                    _self.setOpenDesktopDropdown();\r\n                }\r\n            }\r\n        },\r\n\r\n        setState: function() {\r\n            state = state || {};\r\n\r\n            state.dropdownItems = state.dropdownItems || [].map.call(ui.dropdownItems, function(item) {\r\n                return {\r\n                    elWrap: item,\r\n                    elDropdown: item.querySelector('.js-nav-primary-dropdown'),\r\n                    overflowing: item.overflowing || false\r\n                };\r\n            });\r\n\r\n            state.dropdownItems = state.dropdownItems.map(function(item) {\r\n                item.pos = item.elWrap.getBoundingClientRect().left;\r\n                item.width = 450;\r\n                return item;\r\n            });\r\n\r\n            state.windowWidth = window.innerWidth;\r\n\r\n            // Determines the active media query from the css\r\n            // so there's one source of truth (either 'mq-large' or 'mq-small')\r\n            state.mediaQuery = (window.getComputedStyle(\r\n                wrap, ':before'\r\n            ).getPropertyValue('content') || '').replace(/\\\"|\\'/g, '');\r\n        },\r\n\r\n        checkItemOverflow: function() {\r\n            state.dropdownItems.forEach(function(item) {\r\n                if ( (state.windowWidth - (item.pos + item.width) < 0) ) {\r\n                    item.overflowing = true;\r\n                } else {\r\n                    item.overflowing = false;\r\n                }\r\n            });\r\n\r\n            _self.repositionDropdown();\r\n        },\r\n\r\n        repositionDropdown: function() {\r\n            state.dropdownItems.forEach(function(item) {\r\n                if (item.overflowing) {\r\n                    item.elWrap.classList.remove('opens-right');\r\n                    item.elWrap.classList.add('opens-left');\r\n                } else if (!item.overflowing) {\r\n                    item.elWrap.classList.remove('opens-left');\r\n                    item.elWrap.classList.add('opens-right');\r\n                }\r\n            });\r\n        },\r\n\r\n        toggleMobileNav: function() {\r\n            if (document.body.classList.contains('is-showing-mobile-search')) {\r\n                document.body.addEventListener('transitionend', _self.events.mobileSearchTransitionEnd);\r\n                document.body.classList.remove('is-showing-mobile-search');\r\n            } else {\r\n                document.body.classList.toggle('is-showing-mobile-nav');\r\n            }\r\n        },\r\n\r\n        isLinkShowingDropdown: function(target) {\r\n            return target === state.openDropDownItem || target.parentNode === state.openDropDownItem;\r\n        },\r\n\r\n        isChildOfActiveDropdown: function(target) {\r\n            if(!state.openDropDownItem) {\r\n                return false;\r\n            }\r\n\r\n            var parent = $(target).closest(state.openDropDownItem);\r\n\r\n            return parent && parent.length > 0;\r\n        },\r\n\r\n        setOpenDesktopDropdown: function(target) {\r\n            [].forEach.call(ui.dropdownItems, function(item) {\r\n                item.classList.remove('is-open');\r\n            });\r\n\r\n            if (target) {\r\n                target.parentNode.classList.add('is-open');\r\n                state.openDropDownItem = target.parentNode;\r\n            } else {\r\n                state.openDropDownItem = null;\r\n            }\r\n        },\r\n    };\r\n})();\r\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\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"],"names":["_self","ui","state","wrap","init","options","this","phoneCta","document","querySelector","mobileNavToggles","querySelectorAll","dropdownItems","dropdownItemLinks","setState","bindUIActions","$","window","on","events","windowLoad","windowResize","i","length","addEventListener","mobileNavToggleClick","documentFocusChange","activeElement","forEach","call","link","dropdownItemLinkKeyDown","checkItemOverflow","e","preventDefault","toggleMobileNav","mobileSearchTransitionEnd","body","classList","toggle","removeEventListener","which","mediaQuery","isLinkShowingDropdown","target","setOpenDesktopDropdown","isChildOfActiveDropdown","map","item","elWrap","elDropdown","overflowing","pos","getBoundingClientRect","left","width","windowWidth","innerWidth","getComputedStyle","getPropertyValue","replace","repositionDropdown","remove","add","contains","openDropDownItem","parentNode","parent","closest","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","g","Object","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","value","type","toNumber","isObjectLike","isSymbol","other","valueOf","isBinary","test","slice","module","exports","func","wait","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","arguments","cancel","clearTimeout","flush"],"sourceRoot":""}