{"version":3,"file":"scripts.min.js","sources":["../../../assets/js/base/_throttle.js","../../../assets/js/base/_focus-within.js","../../../assets/js/modules/_header.js","../../../assets/js/modules/_flyout.js","../../../assets/js/base/_video.js","../../../assets/js/base/_object-fit-cover.js","../../../assets/js/scripts.js"],"sourcesContent":["export default function (fn, time = 50) {\n\tlet timer = null;\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","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","import throttle from '../base/_throttle.js';\n\nexport default class Header {\n constructor(node = '.masthead', opts = {}) {\n this.node = typeof node === 'string' ? document.querySelector(node) : node;\n\n if (!(this.node instanceof HTMLElement)) {\n return;\n }\n\n this.opts = Object.assign(\n {\n search: '.masthead__search',\n menu: '.masthead__menu',\n submenu: {\n menu: 'nav__menu',\n parent: 'nav__menu-item--has-children',\n visible: 'nav__menu--visible',\n visibleClass: '.nav__menu--visible',\n }\n },\n opts\n );\n\n let lastScrollPosition = window.scrollY;\n let isPinned = false;\n let isScrolled = false;\n\n const checkThreshold = () => {\n // Check if the element has the class 'masthead-lite'\n if (this.node.classList.contains('masthead-lite')) {\n return;\n }\n\n const scrollY = window.scrollY;\n const height = this.node.offsetHeight;\n\n if (window.innerWidth >= 992) {\n if (scrollY === 0) {\n this.node.classList.remove('masthead--not-top');\n this.node.classList.add('masthead--top');\n this.node.classList.remove('masthead--pinned');\n } else {\n this.node.classList.remove('masthead--not-top');\n this.node.classList.add('masthead--not-top');\n this.node.classList.add('masthead--pinned');\n }\n\n return;\n }\n\n const isScrollingUp = scrollY < lastScrollPosition;\n\n if (scrollY === 0) {\n this.node.classList.remove('masthead--not-top');\n isPinned = false;\n isScrolled = false;\n document.documentElement.style.paddingTop = '';\n this.node.classList.remove('masthead--pinned', 'masthead--unpinned');\n } else if (scrollY > 100 && isScrollingUp && isPinned) {\n this.node.classList.add('masthead--not-top');\n isPinned = false;\n document.documentElement.style.paddingTop = '';\n this.node.classList.remove('masthead--pinned');\n this.node.classList.add('masthead--unpinned');\n } else if (!isScrollingUp && !isPinned) {\n this.node.classList.add('masthead--not-top');\n isPinned = true;\n isScrolled = true;\n //document.documentElement.style.paddingTop = `${height}px`;\n this.node.classList.remove('masthead--unpinned');\n this.node.classList.add('masthead--pinned');\n }\n\n lastScrollPosition = scrollY;\n };\n\n const checkScreenWidth = () => {\n if (window.innerWidth < 992) {\n this.node.classList.add('masthead--mobile');\n } else {\n this.node.classList.remove('masthead--mobile');\n }\n };\n\n window.addEventListener('scroll', throttle(checkThreshold, 350));\n window.addEventListener('DOMContentLoaded', checkThreshold);\n window.addEventListener('resize', throttle(checkScreenWidth, 350));\n window.addEventListener('DOMContentLoaded', checkScreenWidth);\n\n this.search = typeof this.opts.search === 'string' ? this.node.querySelectorAll(this.opts.search) : this.opts.search;\n this.hamburger = typeof this.opts.menu === 'string' ? this.node.querySelector(this.opts.menu) : this.opts.menu;\n\n const parents = Array.from(this.node.querySelectorAll(`.${this.opts.submenu.parent}`));\n\n parents.forEach(parent => {\n const links = Array.from(parent.children).filter(n => n.matches('.nav__link'));\n\n if (!links.length) {\n return;\n }\n\n const link = links.shift();\n\n link.addEventListener('click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n parent.classList.toggle(this.opts.submenu.visible);\n\n const linkParents = [];\n let parentNode = link.parentNode;\n\n while (parentNode && parentNode.parentNode) {\n linkParents.push(parentNode);\n parentNode = parentNode.parentNode;\n }\n\n parents.filter(p => p !== parent && !linkParents.includes(p)).forEach(p => {\n p.classList.remove(this.opts.submenu.visible);\n });\n });\n });\n\n this.node.addEventListener('mouseleave', () => {\n parents.forEach(parent => parent.classList.remove(this.opts.submenu.visible));\n });\n }\n}\n","export default class Flyout {\n\tconstructor() {\n\t\tthis.node = document.querySelector('.flyout');\n\n\t\tif ( ! this.node ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.classes = {\n\t\t\twrap : '.flyout__wrap',\n\t\t\tbodyOpened : 'fixed',\n\t\t\tcontentOpened : 'flyout__content--opened',\n\t\t\tmenuOpened : 'flyout__submenu--opened',\n\t\t\topened : 'flyout--opened',\n\t\t\ttoggleActive : 'flyout__toggle--active',\n\t\t\tnavHasToggleActive: 'flyout__nav--has-toggle-active',\n\t\t\tmenus: {\n\t\t\t\tprimary: '.flyout .nav--primary',\n\t\t\t},\n\t\t\tsubmenus : {\n\t\t\t\tlinks: {\n\t\t\t\t\tlevel: ['nav__link--level-0', 'nav__link--level-1', 'nav__link--level-2'],\n\t\t\t\t},\n\t\t\t\tmenus: {\n\t\t\t\t\tlevel: ['nav__menu--level-0', 'nav__menu--level-1', 'nav__menu--level-2'],\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.closer = this.node.querySelector('.flyout__close');\n\t\tthis.content = this.node.querySelector('.flyout__content');\n\t\tthis.modeToggle = this.node.querySelector('.flyout__mode');\n\t\tthis.nav = this.node.querySelector('.flyout__nav');\n\t\tthis.backs = this.node.querySelectorAll('.flyout__back');\n\t\tthis.toggles = this.node.querySelectorAll('.flyout__toggle');\n\t\tthis.searchInput = this.node.querySelector('input[name=\"s\"]');\n\n\t\tthis.modes = ['menu', 'search'];\n\t\tthis.setMode('menu');\n\n\t\tthis.initNavigation();\n\n\t\tif ( this.modeToggle ) {\n\t\t\tthis.modeToggle.addEventListener('click', () => {\n\t\t\t\tif (this.mode === 'menu') {\n\t\t\t\t\tthis.setMode('search');\n\t\t\t\t\tthis.searchInput.focus();\n\t\t\t\t} else {\n\t\t\t\t\tthis.setMode('menu');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif ( this.closer ) {\n\t\t\tthis.closer.addEventListener('click', () => this.close());\n\t\t}\n\n\t\tif ( this.searchToggle ) {\n\t\t\tthis.searchToggle.addEventListener('click', () => this.mode('search'));\n\t\t}\n\n\t\t// handle esc/tab keys\n\t\tthis.handleKeyup = (e) => {\n\t\t\tif (this.opened) {\n\t\t\t\tif ( e.key === 'Escape' ) {\n\t\t\t\t\treturn this.close();\n\t\t\t\t}\n\n\t\t\t\tif (e.key === 'Tab' && ! document.activeElement.closest('.flyout')) {\n\t\t\t\t\t// close the flyout when you tab out of it (if possible)\n\t\t\t\t\treturn this.close();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// handle close\n\t\tthis.node.addEventListener('click', (e) => {\n\t\t\tif (e.target.closest('.flyout__content')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.close();\n\t\t});\n\n\t\tconst openSubmenu = (navItem) => {\n\t\t\tif ( ! navItem) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst submenu = navItem.querySelector('.flyout__submenu');\n\t\t\tconst toggle = navItem.querySelector('.flyout__toggle');\n\n\t\t\tthis.nav.classList.add(this.classes.navHasToggleActive);\n\t\t\ttoggle.classList.add(this.classes.toggleActive);\n\t\t\tsubmenu.classList.add(this.classes.menuOpened);\n\t\t\tsubmenu.style.height = `${submenu.scrollHeight}px`;\n\n\t\t\tsubmenu.querySelectorAll( 'a, button' ).forEach( node => {\n\t\t\t\tif ( node.dataset.tabIndex ) {\n\t\t\t\t\tnode.tabIndex = node.dataset.tabIndex;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.content.scrollTo(0,0);\n\t\t}\n\n\t\tconst closeSubmenu = (navItem) => {\n\t\t\tif ( ! navItem ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst submenu = navItem.querySelector('.flyout__submenu');\n\t\t\tconst toggle = navItem.querySelector('.flyout__toggle');\n\n\t\t\tthis.nav.classList.remove(this.classes.navHasToggleActive);\n\t\t\ttoggle.classList.remove(this.classes.toggleActive);\n\t\t\tsubmenu.classList.remove(this.classes.menuOpened);\n\t\t\tsubmenu.style.height = '';\n\n\t\t\tsubmenu.querySelectorAll( 'a, button' ).forEach( node => {\n\t\t\t\tnode.tabIndex = -1;\n\t\t\t} );\n\n\t\t\tthis.content.scrollTo(0,0);\n\t\t}\n\n\t\tthis.node.querySelectorAll('.flyout__submenu a, .flyout__submenu button').forEach( node => {\n\t\t\tnode.dataset.tabIndex = node.tabIndex;\n\t\t\tnode.tabIndex = -1;\n\t\t} );\n\n\t\tthis.backs.forEach(back => {\n\t\t\tback.addEventListener('click', () => this.back());\n\t\t});\n\n\t\tthis.toggles.forEach( toggle => {\n\t\t\ttoggle.addEventListener('click', () => {\n\t\t\t\tconst item = toggle.closest('.flyout__item');\n\n\t\t\t\tif (toggle.classList.contains(this.classes.toggleActive)) {\n\t\t\t\t\t// close\n\t\t\t\t\tcloseSubmenu(item);\n\t\t\t\t} else {\n\t\t\t\t\t// open\n\t\t\t\t\topenSubmenu(item);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\topen(mode) {\n\t\tif (mode) {\n\t\t\tthis.setMode(mode);\n\t\t}\n\n\t\tthis.opened = true;\n\t\tthis.node.style.display = 'block';\n\t\tdocument.body.classList.add(this.classes.bodyOpened);\n\t\tdocument.addEventListener('keyup', this.handleKeyup);\n\n\t\tthis.disableTabs();\n\n\t\tthis.previousActiveElement = document.activeElement;\n\n\t\trequestAnimationFrame( () => requestAnimationFrame( () => {\n\t\t\tthis.node.classList.add(this.classes.opened);\n\t\t\tthis.content.classList.add(this.classes.contentOpened);\n\n\t\t\tif (this.mode === 'search' && this.searchInput) {\n\t\t\t\tthis.searchInput.focus();\n\t\t\t} else if ( this.closer ) {\n\t\t\t\tthis.closer.focus();\n\t\t\t}\n\n\t\t\tthis.node.dispatchEvent( new CustomEvent('flyout:open', { bubbles: true, cancelable: false } ) );\n\t\t} ) );\n\t}\n\n\tclose() {\n\t\tthis.opened = false;\n\t\tdocument.removeEventListener('keyup', this.handleKeyup);\n\n\t\tconst onTransitionEnd = (e) => {\n\t\t\tthis.content.removeEventListener('transitionend', onTransitionEnd);\n\n\t\t\tthis.node.style.display = '';\n\n\t\t\tdocument.body.classList.remove(this.classes.bodyOpened);\n\t\t\tthis.node.classList.remove(this.classes.opened);\n\n\t\t\tif (this.previousActiveElement) {\n\t\t\t\tthis.previousActiveElement.focus();\n\t\t\t}\n\n\t\t\tthis.enableTabs();\n\n\t\t\tthis.node.dispatchEvent( new CustomEvent('flyout:close', { bubbles: true, cancelable: false }) );\n\t\t}\n\n\t\tthis.content.addEventListener('transitionend', onTransitionEnd);\n\t\tthis.content.classList.remove(this.classes.contentOpened);\n\n\t}\n\n\ttoggle() {\n\t\tthis.opened ? this.closeSearch() : this.openSearch();\n\t}\n\n\tsetMode( mode = 'menu' ) {\n\t\tif ( ! this.modes.includes( mode ) ) {\n\t\t\treturn this.mode;\n\t\t}\n\n\t\tthis.mode = mode;\n\n\t\tthis.modes.forEach( m => {\n\t\t\tif ( mode === m ) {\n\t\t\t\tthis.node.classList.add(`flyout--${m}`);\n\t\t\t} else {\n\t\t\t\tthis.node.classList.remove(`flyout--${m}`);\n\t\t\t}\n\t\t} );\n\n\t\treturn this.mode;\n\t}\n\n\tgetTabs( scope = document ) {\n\t\treturn Array.from(scope.querySelectorAll([\n\t\t\t'select',\n\t\t\t'input',\n\t\t\t'textarea',\n\t\t\t'button',\n\t\t\t'a',\n\t\t\t'iframe',\n\t\t\t'object',\n\t\t\t'embed',\n\t\t\t'*[contenteditable]',\n\t\t\t'*[tabindex]',\n\t\t].join(', '))).filter(node => {\n\t\t\treturn ! node.closest('.flyout');\n\t\t});\n\t}\n\n\tdisableTabs() {\n\t\tconst tabs = this.getTabs();\n\n\t\ttabs.forEach(node => {\n\t\t\tlet prevTabIndex = node.getAttribute('tabIndex');\n\t\t\tif (prevTabIndex) {\n\t\t\t\tnode.setAttribute('data-tab-index', prevTabIndex);\n\t\t\t}\n\n\t\t\tnode.setAttribute('tabIndex', '-1');\n\t\t});\n\n\t\treturn tabs;\n\t}\n\n\tenableTabs() {\n\t\tconst tabs = this.getTabs();\n\n\t\ttabs.forEach(node => {\n\t\t\tlet prevTabIndex = node.getAttribute('data-tab-index');\n\t\t\tif (prevTabIndex) {\n\t\t\t\tnode.setAttribute('tabIndex', prevTabIndex);\n\t\t\t\tnode.removeAttribute('data-tab-index');\n\t\t\t} else {\n\t\t\t\tnode.removeAttribute('tabIndex');\n\t\t\t}\n\t\t});\n\n\t\treturn tabs;\n\t}\n\n\tinitNavigation() {\n\t\tconst { links, menus } = this.classes.submenus;\n\t\tconst navs = [\n\t\t\t...this.node.getElementsByClassName(links.level[0]),\n\t\t\t...this.node.getElementsByClassName(links.level[1])\n\t\t];\n\t\tnavs.map((link) => {\n\t\t\tlink.addEventListener('click', (event) => {\n\t\t\t\tconst submenu = [\n\t\t\t\t\t...link.parentNode.getElementsByClassName(menus.level[1]),\n\t\t\t\t\t...link.parentNode.getElementsByClassName(menus.level[2])\n\t\t\t\t];\n\t\t\t\tif (submenu.length > 0) {\n\t // If there is a submenu, prevent default behavior\n\t event.preventDefault();\n\t submenu[0].classList.add('nav__menu--visible');\n\t this.shift();\n\t }\n\t\t\t});\n\t\t});\n\t}\n\n\tshift() {\n\t\tconst wrap = document.querySelector(this.classes.wrap);\n\t\twrap.classList.replace('nav--shifted', 'nav--shifted-again');\n\t\twrap.classList.add('nav--shifted');\n\t}\n\n\tback() {\n\t\tconst wrap = document.querySelector(this.classes.wrap);\n\t\twrap.classList.remove('nav--shifted');\n\t\twrap.classList.replace('nav--shifted-again', 'nav--shifted');\n\t}\n}\n","export default class VideoBlock {\n\tconstructor() {\n\t\tdocument.addEventListener( 'DOMContentLoaded', this.ready() );\n\t}\n\n\tready() {\n\t\tconst videos = document.getElementsByClassName('video__wrapper');\n\n\t\t[...videos].forEach((vid) => {\n\n\t\t\tconst cover = vid.querySelector('.video__cover');\n\t\t\tconst iframe = vid.querySelector('iframe');\n\t\t\tconst video = vid.querySelector('video');\n\t\t\tconst player = iframe ?? video;\n\n\t\t\tvid.addEventListener('click', () => this.onPlayClick( cover, player ));\n\t\t});\n\n\t}\n\n\tonPlayClick(cover, player) {\n\n\t\tcover.classList = cover.classList ?? '';\n\t\tcover.classList.add('hidden');\n\n\t\tconst contentWindow = player?.contentWindow;\n\n\t\tif (contentWindow) {\n\t\t\tconst url = new URL(player.src);\n\t\t\turl.searchParams.append('enablejsapi', '1');\n\t\t\turl.searchParams.append('autoplay', '1');\n\n\t\t\tplayer.src = url.href;\n\n\n\t\t\tplayer.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"playVideo\",\"args\":\"\"}', '*')\n\n\n\t\t} else {\n\t\t\tconsole.log(player);\n\t\t\tplayer.play();\n\t\t}\n\t}\n}\n\n\n","/**\n * IE11 Fix to convert object-fit: cover to background-size: cover\n *\n * @param {string|NodeList|Array} nodes\n * @param {string} img the img selector\n * @param {string} position the background position to use\n */\nexport default function objectFitCover( nodes = '.object-fit-cover', img = 'img', position = 'center' ) {\n\tif ( typeof nodes === 'string' ) {\n\t\tnodes = Array.from( document.querySelectorAll( nodes ) );\n\t}\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\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\nif ( document.readyState.match(/complete|loaded/) ) {\n\tobjectFitCover();\n} else {\n\tdocument.addEventListener('DOMContentLoaded', objectFitCover);\n}\n","import throttle from './base/_throttle.js';\nimport focusWithin from './base/_focus-within.js';\nimport Header from './modules/_header.js';\nimport Flyout from './modules/_flyout.js';\nimport Video from './base/_video.js'\n\nimport './base/_object-fit-cover.js';\n\n\nclass Scripts {\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\tfocusWithin( 'label, form, fieldset' );\n\n\t\tthis.header = new Header();\n\t\tthis.flyout = new Flyout();\n\t\tthis.video = new Video();\n\n\t\tif (this.header.hamburger) {\n\t this.header.hamburger.addEventListener('click', () => this.flyout.open('menu'));\n\t }\n\n\t // Check if this.header.search is not null or undefined and if it has any elements before adding event listeners\n\t if (this.header.search && this.header.search.length > 0) {\n\t this.header.search.forEach((search) => {\n\t if (search) {\n\t search.addEventListener('click', () => this.flyout.open('search'));\n\t }\n\t });\n\t } \n\n\t}\n\n\tresize() {\n\t\tif ( ! document.body ) {\n\t\t\treturn;\n\t\t}\n\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\nexport default new Scripts;\n"],"names":["throttle","fn","time","timer","throttledFn","args","setTimeout","cancel","clearTimeout","FocusWithin","constructor","node","className","this","focused","addEventListener","focus","bind","blur","toggle","classList","add","dispatchEvent","CustomEvent","remove","Header","opts","document","querySelector","HTMLElement","Object","assign","search","menu","submenu","parent","visible","visibleClass","lastScrollPosition","window","scrollY","isPinned","checkThreshold","contains","offsetHeight","innerWidth","isScrollingUp","documentElement","style","paddingTop","checkScreenWidth","querySelectorAll","hamburger","parents","Array","from","forEach","links","children","filter","n","matches","length","link","shift","event","preventDefault","stopPropagation","linkParents","parentNode","push","p","includes","Flyout","classes","wrap","bodyOpened","contentOpened","menuOpened","opened","toggleActive","navHasToggleActive","menus","primary","submenus","level","closer","content","modeToggle","nav","backs","toggles","searchInput","modes","setMode","initNavigation","mode","close","searchToggle","handleKeyup","e","key","activeElement","closest","target","openSubmenu","navItem","height","scrollHeight","dataset","tabIndex","scrollTo","closeSubmenu","back","item","open","display","body","disableTabs","previousActiveElement","requestAnimationFrame","bubbles","cancelable","removeEventListener","onTransitionEnd","enableTabs","closeSearch","openSearch","m","getTabs","scope","join","tabs","prevTabIndex","getAttribute","setAttribute","removeAttribute","getElementsByClassName","map","replace","VideoBlock","ready","vid","cover","iframe","video","player","onPlayClick","contentWindow","url","URL","src","searchParams","append","href","postMessage","console","log","play","objectFitCover","nodes","img","position","i","nodesLength","imgNode","backgroundPosition","backgroundSize","backgroundImage","currentSrc","readyState","match","resize","isArray","focusWithin","header","flyout","Video","clientWidth"],"mappings":"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"}