{"version":3,"file":"nlc.min.js","sources":["../../../assets/js/base/_dropdownEvent.js","../../../assets/js/base/_traverse.js","../../../assets/js/_navigation.js","../../../assets/js/base/_effects.js","../../../assets/js/_footer.js","../../../assets/js/_share.js","../../../assets/js/base/_focus-within.js","../../../assets/js/_breadcrumb.js","../../../assets/js/_touch-focus.js","../../../assets/js/_object-fit-cover.js","../../../assets/js/nlc.js","../../../assets/js/base/_throttle.js"],"sourcesContent":["/**\n * This class fires events for dropdown menus\n *\n * - supports PointerEvents\n * - supports HoverIntent\n * - prevents following the first link on touch/keyboard click unless already opened\n * - deactivates when blurred for any event\n *\n * Use this by either passing callbacks.activate, callbacks:deactivate, * or by\n * listening for the dropdown:activate or dropdown:deactivate events on the\n * passed node\n *\n * Events Example:\n * ```\n * dropdownEvent(node);\n * node.addEventListener('dropdown:activate', () => {\n * // add dropdown classes\n * });\n * node.addEventListener('dropdown:deactivate', () => {\n * // remove dropdown classes\n * });\n * ```\n\n * Callbacks Example:\n * ```\n * dropdownEvent(node, {\n * activate: function() {\n * // add dropdown classes\n * },\n * deactivate: function() {\n * // remove dropdown classes\n * },\n * });\n * ```\n *\n * jQuery events example\n * ```\n * jQuery('selector').dropdownEvent().on('dropdown:activate', function() {\n * // add dropdown classes\n * }).on('dropdown:deactivate', function() {\n * // remove dropdown classes\n * });\n * ```\n *\n * jQuery callbacks example\n * ```\n * jQuery('selector').dropdownEvent({\n * activate: function() {\n * // add dropdown classes\n * },\n * deactivate: function() {\n * // remove dropdown classes\n * }\n * });\n * ```\n *\n * @class\n */\n\nexport class DropdownEvent {\n\t/**\n\t *\n\t * @param HTMLElement node\n\t * @param {Object} opts\n\t * @param {Integer} [opts.delay=200] - the hover intent delay on mouse events\n\t * @param {Function} opts.activate - the callback function for activate\n\t * @param {Function} opts.deactivate - the callback function for deactivate\n\t * @param {String} [opts.activateEvent=dropdown:activate] - the name of the activate event to listen to\n\t * @param {String} [opts.deactivateEvent=dropdown:deactivate] - the name of the deactivate event to listen to\n\t */\n\tconstructor(node, opts = {}) {\n\t\tthis.node = node;\n\t\tthis.opts = {\n\t\t\tdelay: 200,\n\t\t\tactivate: () => {},\n\t\t\tdeactivate: () => {},\n\t\t\tactivateEvent: 'dropdown:activate',\n\t\t\tdeactivateEvent: 'dropdown:deactivate',\n\t\t};\n\n\t\tfor (let opt in opts) {\n\t\t\tif (opts.hasOwnProperty(opt)) {\n\t\t\t\tthis.opts[opt] = opts[opt];\n\t\t\t}\n\t\t}\n\n\t\tthis.active = false;\n\t\tthis.enterTimeout = null;\n\t\tthis.leaveTimeout = null;\n\n\t\t// prevents the click event from following links (used by touch/keyboard handlers)\n\t\tconst preventClickEvent = function(e) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tthis.removeEventListener('click', preventClickEvent);\n\t\t}\n\n\t\t// activate if the event target is a child link\n\t\tconst maybeActivate = (e) => {\n\t\t\tif (this.active) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet target = e.target;\n\t\t\twhile(target.parentNode && target !== this.node) {\n\t\t\t\tif (target.tagName === 'A') {\n\t\t\t\t\ttarget.addEventListener('click', preventClickEvent);\n\t\t\t\t}\n\n\t\t\t\ttarget = target.parentNode;\n\t\t\t}\n\n\t\t\tthis.activate(e);\n\t\t}\n\n\t\t// activate on mouse enter and apply delay\n\t\tconst mouseenter = (e) => {\n\t\t\tif (typeof this.leaveTimeout === 'number') {\n\t\t\t\treturn window.clearTimeout(this.leaveTimeout);\n\t\t\t}\n\n\t\t\tthis.enterTimeout = setTimeout(() => {\n\t\t\t\tthis.activate(e);\n\t\t\t}, this.opts.delay);\n\t\t}\n\n\t\t// deactivate on mouse leave and apply delay\n\t\tconst mouseleave = (e) => {\n\t\t\tif (typeof this.enterTimeout === 'number') {\n\t\t\t\treturn window.clearTimeout(this.enterTimeout);\n\t\t\t}\n\n\t\t\tthis.leaveTimeout = window.setTimeout(() => {\n\t\t\t\tthis.deactivate(e);\n\t\t\t}, this.opts.delay);\n\t\t}\n\n\t\t// handle the touch start event\n\t\tconst touchstart = (e) => {\n\t\t\treturn maybeActivate(e);\n\t\t}\n\n\t\t// handle the keyup event\n\t\tconst keyup = (e) => {\n\t\t\tif ( 'enter' === e.key.toLowerCase() ) {\n\t\t\t\treturn maybeActivate(e);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\t// handle the pointer enter and route to touch/mouse event ( treats pen events as mouse )\n\t\tconst pointerenter = (e) => {\n\t\t\treturn 'touch' === e.pointerType ? touchstart(e) : mouseenter(e);\n\t\t}\n\n\t\t// handle the pointer leave and route to touch/mouse event ( treats pen events as mouse )\n\t\tconst pointerleave = (e) => {\n\t\t\treturn 'touch' === e.pointerType ? touchstart(e) : mouseleave(e);\n\t\t}\n\n\t\t// on captured blur detect if the event target is a child of this.node, if not, deactivate\n\t\tconst blur = () => {\n\t\t\tif ( ! this.active ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twindow.setTimeout(() => {\n\t\t\t\tlet target = document.activeElement;\n\t\t\t\twhile ( target && target.parentNode ) {\n\t\t\t\t\tif ( target === this.node ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\ttarget = target.parentNode;\n\t\t\t\t}\n\n\t\t\t\tthis.deactivate();\n\t\t\t}, 0);\n\t\t}\n\n\t\tif ( window.PointerEvent ) {\n\t\t\t// add pointer events\n\t\t\tthis.node.addEventListener('pointerenter', pointerenter);\n\t\t\tthis.node.addEventListener('pointerleave', pointerleave);\n\t\t} else {\n\t\t\t// no pointer events - use mouse/touch events directly\n\t\t\tthis.node.addEventListener('touchstart', touchstart);\n\t\t\tthis.node.addEventListener('mouseenter', mouseenter);\n\t\t\tthis.node.addEventListener('mouseleave', mouseleave);\n\t\t}\n\n\t\t// add keyup/blur events\n\t\tthis.node.addEventListener('keyup', keyup);\n\t\tthis.node.addEventListener('blur', blur, true); // capture\n\t}\n\n\t/**\n\t * Activates the dropdown and fires the callback/event\n\t *\n\t * @param {Object} e - passed along to the callback/event as detail\n\t */\n\tactivate(e = {}) {\n\t\tthis.active = true;\n\n\t\tif (typeof this.enterTimeout === 'number') {\n\t\t\twindow.clearTimeout(this.enterTimeout);\n\t\t\tthis.enterTimeout = null;\n\t\t}\n\n\t\tif (typeof this.opts.activate === 'function') {\n\t\t\tthis.opts.activate.call(this.node, e);\n\t\t}\n\n\t\tif (typeof this.opts.activateEvent === 'string') {\n\t\t\tthis.dispatchEvent(this.opts.activateEvent);\n\t\t}\n\t}\n\n\t/**\n\t * Deactivates the dropdown and fires the callback/event\n\t *\n\t * @param {Object} e - passed along to the callback/event as detail\n\t */\n\tdeactivate(e = {}) {\n\t\tthis.active = false;\n\n\t\tif (typeof this.leaveTimeout === 'number') {\n\t\t\twindow.clearTimeout(this.leaveTimeout);\n\t\t\tthis.leaveTimeout = null;\n\t\t}\n\n\t\tif (typeof this.opts.deactivate === 'function') {\n\t\t\tthis.opts.deactivate.call(this.node, e);\n\t\t}\n\n\t\tif (typeof this.opts.deactivateEvent === 'string') {\n\t\t\tthis.dispatchEvent(this.opts.deactivateEvent);\n\t\t}\n\t}\n\n\tdispatchEvent(eventName, node = this.node) {\n\t\tlet event;\n\t\tif (typeof window.Event === 'function') {\n\t\t\tevent = new Event(eventName);\n\t\t} else {\n\t\t\tevent = document.createEvent('Event');\n\t\t\tevent.initEvent(eventName, true, false);\n\t\t}\n\n\t\tnode.dispatchEvent(event);\n\t}\n}\n\n/**\n * This is a factory for the DropdownEvent class that supports nodelists/arrays/selectors\n *\n * @param {HTMLElement|String|NodeList|Array} node\n * @param {opts} opts - see DropdownEvent\n * @return mixed DropdownEvent|Array|false\n *\n * @uses DropdownEvent\n * @uses Array.from\n * @uses Array.isArray\n */\nexport function dropdownEvent(node, opts = {}) {\n\tif (node instanceof HTMLElement) {\n\t\treturn new DropdownEvent(node, opts);\n\t}\n\n\tconst nodes = (typeof node === 'string') ? Array.from(document.querySelectorAll(node)) : (node.length) ? Array.from(node) : [];\n\n\tif (Array.isArray(nodes)) {\n\t\treturn nodes.map((n) => new DropdownEvent(n, opts));\n\t}\n\n\treturn false;\n}\n\n/**\n * Add a jQuery function for those who prefer that way\n */\nif (typeof window.jQuery === 'function') {\n\twindow.jQuery.fn.dropdownEvent = function(opts) {\n\t\treturn this.each(function() {\n\t\t\tconst $this = window.jQuery(this);\n\t\t\t$this.data('dropdownEvent', new DropdownEvent(this, opts));\n\t\t});\n\t};\n}\n\nexport default dropdownEvent;\n","export function children( node, selector = null ) {\n\tlet children = Array.from( node.children );\n\n\tif ( selector ) {\n\t\tchildren = children.filter( child => child.matches( selector ) );\n\t}\n\n\treturn children;\n}\n\nexport function focusable( node ) {\n\tconst focusableNode = node.querySelector( [\n\t\t'a[href]',\n\t\t'[contenteditable]',\n\t\t'input:not([disabled])',\n\t\t'select:not([disabled])',\n\t\t'button:not([disabled])',\n\t\t'textarea:not([disabled])',\n\t\t'[tabIndex]:not([tabIndex=\"-1\"])',\n\t].join(', ') );\n\n\tif ( focusableNode ) {\n\t\tfocusableNode.focus();\n\t}\n\n\treturn focusableNode;\n}\n","import dropdownEvent from './base/_dropdownEvent';\nimport { children, focusable } from './base/_traverse';\nimport { afterTransition } from './base/_effects';\n\nclass Navigation {\n\tconstructor() {\n\t\tthis.header = document.querySelector('.header');\n\n\t\tif ( ! this.header ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.opened = null;\n\t\tthis.bodyThreshold = 10;\n\t\tthis.activeItemClass = 'nav__menu-item--active';\n\n\t\tthis.headerOpenedClass = 'header--open';\n\t\tthis.searchOpenedClass = 'header--open-search';\n\t\tthis.menuOpenedClass = 'header--open-menu';\n\n\t\tthis.desktopSearchToggle = this.header.querySelector('.header__search--desktop .header__search-toggle');\n\t\tthis.searchForm = this.header.querySelector( '.header__search-form' );\n\t\tthis.headerContent = this.header.querySelector( '.header__content' );\n\n\t\t// click handler delegation\n\t\tthis.header.addEventListener( 'click', (e) => {\n\t\t\tlet { target } = e;\n\n\t\t\twhile ( target && target.parentNode ) {\n\t\t\t\t// open the menu\n\t\t\t\tif ( target.matches( '.header__menu-toggle' ) ) {\n\t\t\t\t\treturn this.toggle( 'menu' );\n\t\t\t\t}\n\n\t\t\t\t// open the search\n\t\t\t\tif ( target.matches( '.header__search-toggle' ) ) {\n\t\t\t\t\treturn this.toggle( 'search' );\n\t\t\t\t}\n\n\t\t\t\t// close the search on desktop\n\t\t\t\tif ( target.matches( '.header__search-close' ) ) {\n\t\t\t\t\treturn this.close();\n\t\t\t\t}\n\n\t\t\t\t// toggle a submenu on mobile\n\t\t\t\tif ( target.matches('.nav__menu-toggler') ) {\n\t\t\t\t\treturn target.parentNode.classList.toggle( this.activeItemClass );\n\t\t\t\t}\n\n\t\t\t\ttarget = target.parentNode;\n\t\t\t}\n\t\t} );\n\n\t\tconst dropdownActivate = (e) => {\n\t\t\tconst { target } = e;\n\n\t\t\t// dont bother with mobile or if it's already active\n\t\t\tif ( 'desktop' !== this.getMode() || target.classList.contains( this.activeItemClass ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttarget.classList.add(this.activeItemClass);\n\n\t\t\tconst subMenu = children(target, '.nav__menu').shift();\n\n\t\t\tif ( subMenu ) {\n\t\t\t\t// prevent the menu from being offscreen\n\t\t\t\tlet rect = subMenu.getBoundingClientRect();\n\n\t\t\t\tif ( rect.left < this.bodyThreshold ) {\n\t\t\t\t\t// off left\n\t\t\t\t\tsubMenu.style.marginLeft = `${rect.left + this.bodyThreshold }px`;\n\t\t\t\t} else if ( rect.right > document.body.clientWidth - this.bodyThreshold ) {\n\t\t\t\t\t// off right\n\t\t\t\t\tsubMenu.style.marginLeft = `${(rect.right - document.body.clientWidth + this.bodyThreshold ) * -1}px`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst dropdownDeactivate = (e) => {\n\t\t\tconst { target } = e;\n\n\t\t\t// dont bother with mobile or if it's not active\n\t\t\tif ( 'desktop' !== this.getMode() || ! target.classList.contains( this.activeItemClass ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttarget.classList.remove(this.activeItemClass);\n\t\t\tconst subMenu = children(target, '.nav__menu').shift();\n\n\t\t\tif ( subMenu ) {\n\t\t\t\tsubMenu.style.marginLeft = '';\n\t\t\t}\n\t\t}\n\n\t\tthis.dropdowns = Array.from( this.header.querySelectorAll( '.nav__menu-item--has-children' ) ).map( (node) => {\n\t\t\tnode.addEventListener('dropdown:activate', dropdownActivate);\n\t\t\tnode.addEventListener('dropdown:deactivate', dropdownDeactivate);\n\t\t\treturn dropdownEvent(node);\n\t\t} );\n\t}\n\n\tgetMode() {\n\t\treturn window.matchMedia('(min-width: 960px)').matches ? 'desktop' : 'mobile';\n\t}\n\n\topen( which ) {\n\t\tthis.opened = which;\n\t\tthis.header.classList.add( this.headerOpenedClass );\n\n\t\tif ( 'mobile' === this.getMode() ) {\n\t\t\tdocument.body.style.overflow = 'hidden';\n\t\t}\n\n\t\tswitch( which ) {\n\t\t\tcase 'menu':\n\t\t\t\tthis.header.classList.add( this.menuOpenedClass );\n\t\t\t\tthis.header.classList.remove( this.searchOpenedClass );\n\t\t\tbreak;\n\t\t\tcase 'search':\n\t\t\t\tthis.header.classList.add( this.searchOpenedClass );\n\t\t\t\tthis.header.classList.remove( this.menuOpenedClass );\n\t\t\t\tafterTransition( this.header, () => focusable( this.searchForm ) );\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tclose() {\n\t\tthis.opened = null;\n\t\t[ this.headerOpenedClass, this.searchOpenedClass, this.menuOpenedClass ].forEach( className => this.header.classList.remove( className ) );\n\t\tdocument.body.style.overflow = '';\n\n\t\tif ( this.desktopSearchToggle && 'desktop' === this.getMode() ) {\n\t\t\tthis.desktopSearchToggle.focus();\n\t\t}\n\t}\n\n\ttoggle( which = 'menu' ) {\n\t\treturn this.opened === which ? this.close() : this.open( which );\n\t}\n}\n\nexport default Navigation;\n","/**\n * Add a slight delay to request animation frame\n *\n * @param {function} fn\n */\nexport function requestAnimationFrame( fn ) {\n\treturn window.requestAnimationFrame( () => window.requestAnimationFrame( fn ) );\n}\n\n/**\n * Execute a function after the transition has ended - once\n *\n * @param {HTMLElement} node\n * @param {function} fn\n * @param {string} the property to transition after in case transitions are different speeds\n */\nexport function afterTransition( node, fn, property = null ) {\n\tconst transitionend = (e) => {\n\t\tif ( e.target === node ) {\n\t\t\tif ( property && e.propertyName !== property ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tnode.removeEventListener( 'transitionend', transitionend );\n\t\tfn(e);\n\t}\n\n\tnode.addEventListener( 'transitionend', transitionend );\n}\n","class Footer {\n\n}\n\nexport default Footer;\n","export class Share {\n\tconstructor( node ) {\n\t\tthis.node = node;\n\n\t\tthis.openedClass = 'share--open';\n\t\tthis.opened = this.node.classList.contains(this.openedClass);\n\n\t\tthis.node.addEventListener( 'click', (e) => {\n\t\t\tlet { target } = e;\n\n\t\t\twhile( target && target !== this.node ) {\n\t\t\t\tif ( target.classList.contains( 'share__toggler' ) ) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\treturn this.toggle();\n\t\t\t\t}\n\n\t\t\t\ttarget = target.parentNode;\n\t\t\t}\n\t\t});\n\t}\n\n\topen() {\n\t\tthis.opened = true;\n\t\tthis.node.classList.add( this.openedClass );\n\t}\n\n\tclose() {\n\t\tthis.opened = false;\n\t\tthis.node.classList.remove( this.openedClass );\n\t}\n\n\ttoggle() {\n\t\treturn this.opened ? this.close() : this.open();\n\t}\n}\n\nexport function factory( selector = '.share' ) {\n\tif ( typeof selector === 'string' ) {\n\t\treturn Array.from( document.querySelectorAll( selector ) ).map( node => new Share( node ) );\n\t}\n\n\tif ( selector instanceof HTMLElement ) {\n\t\treturn new Share( selector );\n\t}\n\n\treturn [];\n}\n","class FocusWithin {\n\tconstructor(node, className) {\n\t\tthis.node = node;\n\t\tthis.className = className;\n\t\tthis.focused = false;\n\n\t\t// add events with capturing cause focus/blur don't bubble\n\t\tthis.node.addEventListener('focus', this.focus.bind(this), true);\n\t\tthis.node.addEventListener('blur', this.blur.bind(this), true);\n\t}\n\n\ttoggle() {\n\t\treturn this.focused ? this.blur() : this.focus();\n\t}\n\n\tfocus() {\n\t\tthis.focused = true;\n\t\tthis.node.classList.add(this.className);\n\n\t\tthis.node.dispatchEvent(new CustomEvent('site:focus-within:focus'));\n\t}\n\n\tblur() {\n\t\tthis.focused = false;\n\t\tthis.node.classList.remove(this.className);\n\n\t\tthis.node.dispatchEvent(new CustomEvent('site:focus-within:blur'));\n\t}\n}\n\nexport default function ( node, className = 'focus-within' ) {\n\t// pass dom element directly\n\tif ( node instanceof HTMLElement ) {\n\t\treturn new FocusWithin(node, className);\n\t}\n\n\t// pass selector\n\tif ( typeof node === 'string' ) {\n\t\tnode = document.querySelectorAll(node);\n\t}\n\n\t// convert to Array if not an array\n\tif (!Array.isArray(node)) {\n\t\tnode = Array.from(node);\n\t}\n\n\t// convert to FocusWithin objects\n\treturn node.map((n) => new FocusWithin(n, className));\n}\n","class Breadcrumb {\n\tconstructor( node, opts = {} ) {\n\t\tthis.node = node;\n\t\tthis.opts = Object.assign( {\n\t\t\ttogglerClass : 'breadcrumb__mobile-toggle',\n\t\t\topenClass : 'breadcrumb--open',\n\t\t\titemTogglerClass: 'breadcrumb__toggler',\n\t\t\titemClass : 'breadcrumb__item',\n\t\t\topenItemClass : 'breadcrumb__item--open',\n\t\t}, opts );\n\t\tthis.openItem = null;\n\n\t\tthis.onClick = this.onClick.bind( this );\n\t\tthis.onBlur = this.onBlur.bind( this );\n\n\t\tthis.node.addEventListener( 'click', this.onClick );\n\t\tdocument.body.addEventListener( 'click', this.onBlur );\n\t}\n\n\tonClick( e ) {\n\t\tlet node = e.target;\n\n\t\twhile ( node && node !== this.node ) {\n\t\t\tif ( node.classList.contains( this.opts.togglerClass ) ) {\n\t\t\t\tthis.node.classList.toggle( this.opts.openClass );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( node.classList.contains( this.opts.itemTogglerClass ) ) {\n\t\t\t\tlet item = node.closest( `.${this.opts.itemClass}` );\n\n\t\t\t\tif ( item ) {\n\t\t\t\t\tif ( item.classList.contains( this.opts.openItemClass ) ) {\n\t\t\t\t\t\titem.classList.remove( this.opts.openItemClass );\n\t\t\t\t\t\tthis.openItem = null;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( this.openItem ) {\n\t\t\t\t\t\t\tthis.openItem.classList.remove( this.opts.openItemClass );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.classList.add( this.opts.openItemClass );\n\t\t\t\t\t\tthis.openItem = item;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tnode = node.parentNode;\n\t\t}\n\t}\n\n\tonBlur( e ) {\n\t\tif ( ! this.openItem ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet node = e.target;\n\n\t\twhile( node && node.parentNode ) {\n\t\t\tif ( node === this.openItem ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tnode = node.parentNode;\n\t\t}\n\n\t\tthis.openItem.classList.remove( this.opts.openItemClass );\n\t}\n}\n\nexport default Breadcrumb;\n","const allSelectors = [];\n\nexport default function( selector ) {\n\tallSelectors.push( selector );\n\tlet selectors = allSelectors.join(',');\n\n\tif ( allSelectors.length > 1 ) {\n\t\treturn;\n\t}\n\n\tconst ontouchstart = (e) => {\n\t\tlet node = e.target;\n\n\t\twhile ( node && node.parentNode ) {\n\t\t\tif ( node.matches( selectors ) ) {\n\t\t\t\tif ( node.dataset.focused ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tnode.addEventListener( 'click', onclick );\n\t\t\t}\n\n\t\t\tnode = node.parentNode;\n\t\t}\n\t}\n\n\tconst onclick = ( e ) => {\n\t\tlet node = e.target;\n\n\t\twhile ( node && node.parentNode ) {\n\t\t\tif ( node.matches( selectors ) ) {\n\t\t\t\tnode.removeEventListener( 'click', onclick );\n\n\t\t\t\tif ( node.dataset.focused ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( e.preventDefault ) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tnode.dataset.focused = '1';\n\t\t\t\treturn node.focus();\n\t\t\t}\n\n\t\t\tnode = node.parentNode;\n\t\t}\n\t}\n\n\tconst onblur = ( e ) => {\n\t\tlet node = e.target;\n\n\t\twhile ( node && node.parentNode ) {\n\t\t\tif ( node.dataset.focused ) {\n\t\t\t\tdelete node.dataset.focused;\n\t\t\t}\n\n\t\t\tnode = node.parentNode;\n\t\t}\n\t}\n\n\tdocument.addEventListener( 'blur', onblur, true );\n\tdocument.addEventListener( 'touchstart', ontouchstart );\n}\n","export default function( nodes, img = 'img', position = 'center' ) {\n\tconsole.log( nodes );\n\tif ( typeof nodes === 'string' ) {\n\t\tnodes = Array.from( document.querySelectorAll( nodes ) );\n\t}\n\n\tconsole.log( nodes );\n\n\tif ( ! nodes.length ) {\n\t\treturn;\n\t}\n\n\tfor ( let i = 0, nodesLength = nodes.length; i < nodesLength; i++ ) {\n\t\tlet imgNode = nodes[i].querySelector( img );\n\n\t\tconsole.log( nodes[i], imgNode );\n\n\t\tif ( ! imgNode ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tnodes[i].style.backgroundPosition = position;\n\t\tnodes[i].style.backgroundSize = 'cover';\n\t\tnodes[i].style.backgroundImage = `url(${imgNode.currentSrc || imgNode.src})`;\n\t\timgNode.style.display = 'none';\n\t}\n}\n","import Navigation from './_navigation.js';\nimport Footer from './_footer.js';\nimport { factory as share } from './_share.js';\nimport throttle from './base/_throttle.js';\nimport focusWithin from './base/_focus-within.js';\nimport Breadcrumb from './_breadcrumb.js';\nimport touchFocus from './_touch-focus.js';\nimport objectFitCover from './_object-fit-cover.js';\n\nclass NLC {\n\tconstructor() {\n\t\tdocument.addEventListener( 'DOMContentLoaded', this.ready.bind( this ) );\n\t\twindow.addEventListener( 'resize', throttle( this.resize.bind( this ), 25 ) );\n\t\tthis.resize();\n\t}\n\n\tready() {\n\t\tthis.navigation = new Navigation();\n\t\tthis.footer = new Footer();\n\t\tthis.shares = share();\n\t\tthis.breadcrumbs = Array.from( document.querySelectorAll( '.breadcrumb' ) ).map( node => new Breadcrumb( node ) );\n\t\tthis.notices();\n\n\t\tfocusWithin( 'label, form, fieldset' );\n\t\ttouchFocus( '.kard' );\n\n\t\tif ( ! ( 'objectFit' in document.documentElement.style ) ) {\n\t\t\tobjectFitCover( '.page-header__image', 'img' );\n\t\t\tobjectFitCover( '.kard--bg-image .kard__image', 'img' );\n\t\t\tobjectFitCover( '.tabs-feature__media', 'img' );\n\t\t}\n\t}\n\n\tresize() {\n\t\t// using this to allow css to know if it should exclude the scroll bar in calc's\n\t\tif ( window.innerWidth === document.body.clientWidth ) {\n\t\t\tdocument.documentElement.classList.remove( 'has-scrollbar' );\n\t\t} else {\n\t\t\tdocument.documentElement.classList.add( 'has-scrollbar' );\n\t\t}\n\t}\n\n\t/**\n\t * Add a dismiss button to any notice\n\t */\n\tnotices() {\n\t\tconst notices = Array.from( document.querySelectorAll( '.notice' ) );\n\n\t\tif ( ! notices.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotices.forEach( notice => {\n\t\t\tconst button = document.createElement('button');\n\t\t\tbutton.type = 'button';\n\t\t\tbutton.className = 'notice__dismiss';\n\t\t\tbutton.insertAdjacentHTML( 'beforeend', '' );\n\t\t\tbutton.addEventListener('click', () => {\n\t\t\t\t// remove site and logout from the url history\n\t\t\t\tlet url = location.origin + location.pathname;\n\n\t\t\t\tconst params = new URLSearchParams( location.search );\n\t\t\t\t[ 'Site', 'logout' ].forEach( param => params.delete( param ) );\n\t\t\t\tconst queryString = params.toString();\n\n\t\t\t\tif ( queryString.length ) {\n\t\t\t\t\turl += `?${queryString}`;\n\t\t\t\t}\n\n\t\t\t\twindow.history.replaceState( {}, null, url );\n\n\t\t\t\t// remove the notice node\n\t\t\t\tnotice.parentNode.removeChild( notice );\n\t\t\t} );\n\t\t\tnotice.appendChild( button );\n\t\t} );\n\t}\n}\n\nexport default new NLC;\n","// import debug from 'bows/dist/bows.min.js';\n\n// const log = debug('throttle');\n\nexport default function (fn, time = 50) {\n\tlet timer = null;\n\n\t// log(fn, time);\n\n\tfunction throttledFn(...args) {\n\t\tif (!timer) {\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tfn(...args);\n\t\t\t\ttimer = null;\n\t\t\t}, time)\n\t\t}\n\t}\n\n\tthrottledFn.cancel = () => {\n\t\tclearTimeout(timer);\n\t\ttimer = null;\n\t}\n\n\treturn throttledFn;\n}\n"],"names":["DropdownEvent","node","opts","let","opt","this","delay","activate","deactivate","activateEvent","deactivateEvent","hasOwnProperty","active","enterTimeout","leaveTimeout","const","preventClickEvent","e","preventDefault","stopPropagation","removeEventListener","maybeActivate","target","parentNode","tagName","addEventListener","mouseenter","window","clearTimeout","setTimeout","mouseleave","touchstart","PointerEvent","pointerType","key","toLowerCase","document","activeElement","children","selector","Array","from","filter","child","matches","call","dispatchEvent","eventName","event","Event","createEvent","initEvent","jQuery","fn","dropdownEvent","each","data","Navigation","header","querySelector","opened","bodyThreshold","activeItemClass","headerOpenedClass","searchOpenedClass","menuOpenedClass","desktopSearchToggle","searchForm","headerContent","toggle","close","classList","dropdownActivate","getMode","contains","add","subMenu","shift","rect","getBoundingClientRect","left","style","marginLeft","right","body","clientWidth","dropdownDeactivate","remove","dropdowns","querySelectorAll","map","HTMLElement","nodes","isArray","n","matchMedia","open","which","overflow","property","transitionend","propertyName","afterTransition","focusableNode","join","focus","forEach","className","Footer","Share","openedClass","FocusWithin","focused","bind","blur","CustomEvent","Breadcrumb","Object","assign","togglerClass","openClass","itemTogglerClass","itemClass","openItemClass","openItem","onClick","onBlur","item","closest","allSelectors","img","position","console","log","length","i","nodesLength","imgNode","backgroundPosition","backgroundSize","backgroundImage","currentSrc","src","display","NLC","ready","time","timer","throttledFn","args","cancel","throttle","resize","navigation","footer","shares","breadcrumbs","notices","push","selectors","onclick","dataset","touchFocus","documentElement","objectFitCover","innerWidth","notice","button","createElement","type","insertAdjacentHTML","url","location","origin","pathname","params","URLSearchParams","search","param","delete","queryString","toString","history","replaceState","removeChild","appendChild"],"mappings":"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"}