{"version":3,"file":"scripts.min.js","sources":["../../../assets/js/base/_focus-within.js","../../../node_modules/headroom.js/dist/headroom.js","../../../assets/js/modules/_disclosureMenu.js","../../../assets/js/modules/_site-header.js","../../../assets/js/modules/_flyout.js","../../../assets/js/modules/_video.js","../../../assets/js/modules/_auth.js","../../../assets/js/modules/_favorites.js","../../../assets/js/base/_object-fit-cover.js","../../../assets/js/scripts.js","../../../assets/js/base/_throttle.js"],"sourcesContent":["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","/*!\n * headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it\n * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js\n * License: MIT\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Headroom = factory());\n}(this, function () { 'use strict';\n\n function isBrowser() {\n return typeof window !== \"undefined\";\n }\n\n /**\n * Used to detect browser support for adding an event listener with options\n * Credit: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n */\n function passiveEventsSupported() {\n var supported = false;\n\n try {\n var options = {\n // eslint-disable-next-line getter-return\n get passive() {\n supported = true;\n }\n };\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (err) {\n supported = false;\n }\n\n return supported;\n }\n\n function isSupported() {\n return !!(\n isBrowser() &&\n function() {}.bind &&\n \"classList\" in document.documentElement &&\n Object.assign &&\n Object.keys &&\n requestAnimationFrame\n );\n }\n\n function isDocument(obj) {\n return obj.nodeType === 9; // Node.DOCUMENT_NODE === 9\n }\n\n function isWindow(obj) {\n // `obj === window` or `obj instanceof Window` is not sufficient,\n // as the obj may be the window of an iframe.\n return obj && obj.document && isDocument(obj.document);\n }\n\n function windowScroller(win) {\n var doc = win.document;\n var body = doc.body;\n var html = doc.documentElement;\n\n return {\n /**\n * @see http://james.padolsey.com/javascript/get-document-height-cross-browser/\n * @return {Number} the scroll height of the document in pixels\n */\n scrollHeight: function() {\n return Math.max(\n body.scrollHeight,\n html.scrollHeight,\n body.offsetHeight,\n html.offsetHeight,\n body.clientHeight,\n html.clientHeight\n );\n },\n\n /**\n * @see http://andylangton.co.uk/blog/development/get-viewport-size-width-and-height-javascript\n * @return {Number} the height of the viewport in pixels\n */\n height: function() {\n return win.innerHeight || html.clientHeight || body.clientHeight;\n },\n\n /**\n * Gets the Y scroll position\n * @return {Number} pixels the page has scrolled along the Y-axis\n */\n scrollY: function() {\n if (win.pageYOffset !== undefined) {\n return win.pageYOffset;\n }\n\n return (html || body.parentNode || body).scrollTop;\n }\n };\n }\n\n function elementScroller(element) {\n return {\n /**\n * @return {Number} the scroll height of the element in pixels\n */\n scrollHeight: function() {\n return Math.max(\n element.scrollHeight,\n element.offsetHeight,\n element.clientHeight\n );\n },\n\n /**\n * @return {Number} the height of the element in pixels\n */\n height: function() {\n return Math.max(element.offsetHeight, element.clientHeight);\n },\n\n /**\n * Gets the Y scroll position\n * @return {Number} pixels the element has scrolled along the Y-axis\n */\n scrollY: function() {\n return element.scrollTop;\n }\n };\n }\n\n function createScroller(element) {\n return isWindow(element) ? windowScroller(element) : elementScroller(element);\n }\n\n /**\n * @param element EventTarget\n */\n function trackScroll(element, options, callback) {\n var isPassiveSupported = passiveEventsSupported();\n var rafId;\n var scrolled = false;\n var scroller = createScroller(element);\n var lastScrollY = scroller.scrollY();\n var details = {};\n\n function update() {\n var scrollY = Math.round(scroller.scrollY());\n var height = scroller.height();\n var scrollHeight = scroller.scrollHeight();\n\n // reuse object for less memory churn\n details.scrollY = scrollY;\n details.lastScrollY = lastScrollY;\n details.direction = scrollY > lastScrollY ? \"down\" : \"up\";\n details.distance = Math.abs(scrollY - lastScrollY);\n details.isOutOfBounds = scrollY < 0 || scrollY + height > scrollHeight;\n details.top = scrollY <= options.offset[details.direction];\n details.bottom = scrollY + height >= scrollHeight;\n details.toleranceExceeded =\n details.distance > options.tolerance[details.direction];\n\n callback(details);\n\n lastScrollY = scrollY;\n scrolled = false;\n }\n\n function handleScroll() {\n if (!scrolled) {\n scrolled = true;\n rafId = requestAnimationFrame(update);\n }\n }\n\n var eventOptions = isPassiveSupported\n ? { passive: true, capture: false }\n : false;\n\n element.addEventListener(\"scroll\", handleScroll, eventOptions);\n update();\n\n return {\n destroy: function() {\n cancelAnimationFrame(rafId);\n element.removeEventListener(\"scroll\", handleScroll, eventOptions);\n }\n };\n }\n\n function normalizeUpDown(t) {\n return t === Object(t) ? t : { down: t, up: t };\n }\n\n /**\n * UI enhancement for fixed headers.\n * Hides header when scrolling down\n * Shows header when scrolling up\n * @constructor\n * @param {DOMElement} elem the header element\n * @param {Object} options options for the widget\n */\n function Headroom(elem, options) {\n options = options || {};\n Object.assign(this, Headroom.options, options);\n this.classes = Object.assign({}, Headroom.options.classes, options.classes);\n\n this.elem = elem;\n this.tolerance = normalizeUpDown(this.tolerance);\n this.offset = normalizeUpDown(this.offset);\n this.initialised = false;\n this.frozen = false;\n }\n Headroom.prototype = {\n constructor: Headroom,\n\n /**\n * Start listening to scrolling\n * @public\n */\n init: function() {\n if (Headroom.cutsTheMustard && !this.initialised) {\n this.addClass(\"initial\");\n this.initialised = true;\n\n // defer event registration to handle browser\n // potentially restoring previous scroll position\n setTimeout(\n function(self) {\n self.scrollTracker = trackScroll(\n self.scroller,\n { offset: self.offset, tolerance: self.tolerance },\n self.update.bind(self)\n );\n },\n 100,\n this\n );\n }\n\n return this;\n },\n\n /**\n * Destroy the widget, clearing up after itself\n * @public\n */\n destroy: function() {\n this.initialised = false;\n Object.keys(this.classes).forEach(this.removeClass, this);\n this.scrollTracker.destroy();\n },\n\n /**\n * Unpin the element\n * @public\n */\n unpin: function() {\n if (this.hasClass(\"pinned\") || !this.hasClass(\"unpinned\")) {\n this.addClass(\"unpinned\");\n this.removeClass(\"pinned\");\n\n if (this.onUnpin) {\n this.onUnpin.call(this);\n }\n }\n },\n\n /**\n * Pin the element\n * @public\n */\n pin: function() {\n if (this.hasClass(\"unpinned\")) {\n this.addClass(\"pinned\");\n this.removeClass(\"unpinned\");\n\n if (this.onPin) {\n this.onPin.call(this);\n }\n }\n },\n\n /**\n * Freezes the current state of the widget\n * @public\n */\n freeze: function() {\n this.frozen = true;\n this.addClass(\"frozen\");\n },\n\n /**\n * Re-enables the default behaviour of the widget\n * @public\n */\n unfreeze: function() {\n this.frozen = false;\n this.removeClass(\"frozen\");\n },\n\n top: function() {\n if (!this.hasClass(\"top\")) {\n this.addClass(\"top\");\n this.removeClass(\"notTop\");\n\n if (this.onTop) {\n this.onTop.call(this);\n }\n }\n },\n\n notTop: function() {\n if (!this.hasClass(\"notTop\")) {\n this.addClass(\"notTop\");\n this.removeClass(\"top\");\n\n if (this.onNotTop) {\n this.onNotTop.call(this);\n }\n }\n },\n\n bottom: function() {\n if (!this.hasClass(\"bottom\")) {\n this.addClass(\"bottom\");\n this.removeClass(\"notBottom\");\n\n if (this.onBottom) {\n this.onBottom.call(this);\n }\n }\n },\n\n notBottom: function() {\n if (!this.hasClass(\"notBottom\")) {\n this.addClass(\"notBottom\");\n this.removeClass(\"bottom\");\n\n if (this.onNotBottom) {\n this.onNotBottom.call(this);\n }\n }\n },\n\n shouldUnpin: function(details) {\n var scrollingDown = details.direction === \"down\";\n\n return scrollingDown && !details.top && details.toleranceExceeded;\n },\n\n shouldPin: function(details) {\n var scrollingUp = details.direction === \"up\";\n\n return (scrollingUp && details.toleranceExceeded) || details.top;\n },\n\n addClass: function(className) {\n this.elem.classList.add.apply(\n this.elem.classList,\n this.classes[className].split(\" \")\n );\n },\n\n removeClass: function(className) {\n this.elem.classList.remove.apply(\n this.elem.classList,\n this.classes[className].split(\" \")\n );\n },\n\n hasClass: function(className) {\n return this.classes[className].split(\" \").every(function(cls) {\n return this.classList.contains(cls);\n }, this.elem);\n },\n\n update: function(details) {\n if (details.isOutOfBounds) {\n // Ignore bouncy scrolling in OSX\n return;\n }\n\n if (this.frozen === true) {\n return;\n }\n\n if (details.top) {\n this.top();\n } else {\n this.notTop();\n }\n\n if (details.bottom) {\n this.bottom();\n } else {\n this.notBottom();\n }\n\n if (this.shouldUnpin(details)) {\n this.unpin();\n } else if (this.shouldPin(details)) {\n this.pin();\n }\n }\n };\n\n /**\n * Default options\n * @type {Object}\n */\n Headroom.options = {\n tolerance: {\n up: 0,\n down: 0\n },\n offset: 0,\n scroller: isBrowser() ? window : null,\n classes: {\n frozen: \"headroom--frozen\",\n pinned: \"headroom--pinned\",\n unpinned: \"headroom--unpinned\",\n top: \"headroom--top\",\n notTop: \"headroom--not-top\",\n bottom: \"headroom--bottom\",\n notBottom: \"headroom--not-bottom\",\n initial: \"headroom\"\n }\n };\n\n Headroom.cutsTheMustard = isSupported();\n\n return Headroom;\n\n}));\n","/*\n * This content is licensed according to the W3C Software License at\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n * Supplemental JS for the disclosure menu keyboard behavior\n */\n\n\n\nexport default class DisclosureNav {\n\tconstructor(domNode) {\n\t\tthis.rootNode = domNode;\n\t\tthis.controlledNodes = [];\n\t\tthis.openIndex = null;\n\t\tthis.useArrowKeys = true;\n\t\tthis.topLevelNodes = [\n\t\t\t...this.rootNode.querySelectorAll(\n\t\t\t\t'.wp-block-navigation-submenu__toggle, button[aria-expanded][aria-controls]'\n\t\t\t),\n\t\t];\n\n\t\tthis.topLevelNodes.forEach((node) => {\n\t\t\t// handle button + menu\n\t\t\tif (\n\t\t\t\tnode.tagName.toLowerCase() === 'button' &&\n\t\t\t\tnode.hasAttribute('aria-controls')\n\t\t\t) {\n\t\t\t\tconst menu = node.parentNode.querySelector('.wp-block-navigation-submenu');\n\n\t\t\t\tif (menu) {\n\t\t\t\t\t// save ref controlled menu\n\t\t\t\t\tthis.controlledNodes.push(menu);\n\n\t\t\t\t\t// collapse menus\n\t\t\t\t\tnode.setAttribute('aria-expanded', 'false');\n\t\t\t\t\t//this.toggleMenu(menu, false);\n\n\t\t\t\t\t// attach event listeners\n\t\t\t\t\tmenu.addEventListener('keydown', this.onMenuKeyDown.bind(this));\n\t\t\t\t\tnode.addEventListener('click', this.onButtonClick.bind(this));\n\t\t\t\t\tnode.addEventListener('keydown', this.onButtonKeyDown.bind(this));\n\t\t\t\t}\n\t\t\t}\n\t\t\t// handle links\n\t\t\telse {\n\t\t\t\tthis.controlledNodes.push(null);\n\t\t\t\tnode.addEventListener('keydown', this.onLinkKeyDown.bind(this));\n\t\t\t}\n\t\t});\n\n\t\tthis.rootNode.addEventListener('focusout', this.onBlur.bind(this));\n\t}\n\n\tcontrolFocusByKey (keyboardEvent, nodeList, currentIndex) {\n\t\tswitch (keyboardEvent.key) {\n\t\t\tcase 'ArrowUp':\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tkeyboardEvent.preventDefault();\n\t\t\t\tif (currentIndex > -1) {\n\t\t\t\t\tvar prevIndex = Math.max(0, currentIndex - 1);\n\t\t\t\t\tnodeList[prevIndex].focus();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\tcase 'ArrowRight':\n\t\t\t\tkeyboardEvent.preventDefault();\n\t\t\t\tif (currentIndex > -1) {\n\t\t\t\t\tvar nextIndex = Math.min(nodeList.length - 1, currentIndex + 1);\n\t\t\t\t\tnodeList[nextIndex].focus();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Home':\n\t\t\t\tkeyboardEvent.preventDefault();\n\t\t\t\tnodeList[0].focus();\n\t\t\t\tbreak;\n\t\t\tcase 'End':\n\t\t\t\tkeyboardEvent.preventDefault();\n\t\t\t\tnodeList[nodeList.length - 1].focus();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// public function to close open menu\n\tclose () {\n\t\tthis.toggleExpand(this.openIndex, false);\n\t}\n\n\tonBlur (event) {\n\t\tvar menuContainsFocus = this.rootNode.contains(event.relatedTarget);\n\t\tif (!menuContainsFocus && this.openIndex !== null) {\n\t\t\tthis.toggleExpand(this.openIndex, false);\n\t\t}\n\t}\n\n\tonButtonClick (event) {\n\n\t\tvar button = event.currentTarget;\n\t\tvar buttonIndex = this.topLevelNodes.indexOf(button);\n\t\tvar buttonExpanded = button.getAttribute('aria-expanded') === 'true';\n\t\tthis.toggleExpand(buttonIndex, !buttonExpanded);\n\t}\n\n\tonButtonKeyDown (event) {\n\t\tvar targetButtonIndex = this.topLevelNodes.indexOf(document.activeElement);\n\n\t\t// close on escape\n\t\tif (event.key === 'Escape') {\n\t\t\tthis.toggleExpand(this.openIndex, false);\n\t\t}\n\n\t\t// move focus into the open menu if the current menu is open\n\t\telse if (\n\t\t\tthis.useArrowKeys &&\n\t\t\tthis.openIndex === targetButtonIndex &&\n\t\t\tevent.key === 'ArrowDown'\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.controlledNodes[this.openIndex].querySelector('a').focus();\n\t\t}\n\n\t\t// handle arrow key navigation between top-level buttons, if set\n\t\telse if (this.useArrowKeys) {\n\t\t\tthis.controlFocusByKey(event, this.topLevelNodes, targetButtonIndex);\n\t\t}\n\t}\n\n\tonLinkKeyDown (event) {\n\t\tvar targetLinkIndex = this.topLevelNodes.indexOf(document.activeElement);\n\n\t\t// handle arrow key navigation between top-level buttons, if set\n\t\tif (this.useArrowKeys) {\n\t\t\tthis.controlFocusByKey(event, this.topLevelNodes, targetLinkIndex);\n\t\t}\n\t}\n\n\tonMenuKeyDown (event) {\n\t\tif (this.openIndex === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar menuLinks = Array.prototype.slice.call(\n\t\t\tthis.controlledNodes[this.openIndex].querySelectorAll('a')\n\t\t);\n\t\tvar currentIndex = menuLinks.indexOf(document.activeElement);\n\n\t\t// close on escape\n\t\tif (event.key === 'Escape') {\n\t\t\tthis.topLevelNodes[this.openIndex].focus();\n\t\t\tthis.toggleExpand(this.openIndex, false);\n\t\t}\n\n\t\t// handle arrow key navigation within menu links, if set\n\t\telse if (this.useArrowKeys) {\n\t\t\tthis.controlFocusByKey(event, menuLinks, currentIndex);\n\t\t}\n\t}\n\n\ttoggleExpand (index, expanded) {\n\t\t// close open menu, if applicable\n\t\tif (this.openIndex !== index) {\n\t\t\tthis.toggleExpand(this.openIndex, false);\n\t\t}\n\n\t\t// handle menu at called index\n\t\tif (this.topLevelNodes[index]) {\n\t\t\tthis.openIndex = expanded ? index : null;\n\t\t\tthis.topLevelNodes[index].setAttribute('aria-expanded', expanded);\n\t\t\t//this.toggleMenu(this.controlledNodes[index], expanded);\n\t\t}\n\t}\n\n\t// toggleMenu (node, show) {\n\t// \tconst siteSearch = document.querySelector('.site-search');\n\t// \tif (node) {\n\t// \t\tif (show) {\n\t// \t\t\tnode.classList.add('nav__menu-sub--opened');\n\t// \t\t\tsiteSearch.classList.remove('site-search--opened');\n\t// \t\t\tsiteSearch.querySelector('.site-search__content').classList.remove('site-search__content--opened');\n\t// \t\t} else {\n\t// \t\t\tnode.classList.remove('nav__menu-sub--opened');\n\t// \t\t}\n\t// \t}\n\t// }\n\n\tupdateKeyControls (useArrowKeys) {\n\t\tthis.useArrowKeys = useArrowKeys;\n\t}\n}\n\n// /* Initialize Disclosure Menus */\n\n// window.addEventListener(\n// \t'load',\n// \tfunction () {\n// \t\tvar menus = document.querySelectorAll('.disclosure-nav');\n// \t\tvar disclosureMenus = [];\n\n// \t\tfor (var i = 0; i < menus.length; i++) {\n// \t\t\tdisclosureMenus[i] = new DisclosureNav(menus[i]);\n// \t\t}\n\n// \t\t// listen to arrow key checkbox\n// \t\tvar arrowKeySwitch = document.getElementById('arrow-behavior-switch');\n// \t\tif (arrowKeySwitch) {\n// \t\t\tarrowKeySwitch.addEventListener('change', function () {\n// \t\t\t\tvar checked = arrowKeySwitch.checked;\n// \t\t\t\tfor (var i = 0; i < disclosureMenus.length; i++) {\n// \t\t\t\t\tdisclosureMenus[i].updateKeyControls(checked);\n// \t\t\t\t}\n// \t\t\t});\n// \t\t}\n\n// \t\t// fake link behavior\n// \t\tdisclosureMenus.forEach((disclosureNav, i) => {\n// \t\t\tvar links = menus[i].querySelectorAll('[href=\"#mythical-page-content\"]');\n// \t\t\tvar examplePageHeading = document.getElementById('mythical-page-heading');\n// \t\t\tfor (var k = 0; k < links.length; k++) {\n// \t\t\t\t// The codepen export script updates the internal link href with a full URL\n// \t\t\t\t// we're just manually fixing that behavior here\n// \t\t\t\tlinks[k].href = '#mythical-page-content';\n\n// \t\t\t\tlinks[k].addEventListener('click', (event) => {\n// \t\t\t\t\t// change the heading text to fake a page change\n// \t\t\t\t\tvar pageTitle = event.target.innerText;\n// \t\t\t\t\texamplePageHeading.innerText = pageTitle;\n\n// \t\t\t\t\t// handle aria-current\n// \t\t\t\t\tfor (var n = 0; n < links.length; n++) {\n// \t\t\t\t\t\tlinks[n].removeAttribute('aria-current');\n// \t\t\t\t\t}\n// \t\t\t\t\tevent.target.setAttribute('aria-current', 'page');\n// \t\t\t\t});\n// \t\t\t}\n// \t\t});\n// \t},\n// \tfalse\n// );\n","import Headroom from 'headroom.js';\nimport DisclosureNav from \"./_disclosureMenu.js\";\nexport default class SiteHeader {\n\tconstructor(node = '.site-header', opts = {}) {\n\t\tthis.node = typeof node === 'string' ? document.querySelector( node ) : node;\n\n\t\tif ( ! this.node instanceof HTMLElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst siteheaderOverlapClass = this.node.classList.contains('site-header--overlaps-header') ? ' has-dark-background-color': '';\n\n\t\tthis.opts = Object.assign(\n\t\t\t{\n\t\t\t\theadroom: {\n\t\t\t\t\toffset: 100,\n\t\t\t\t\ttolerance: {\n\t\t\t\t\t\tup: 7,\n\t\t\t\t\t\tdown: 5\n\t\t\t\t\t},\n\t\t\t\t\tclasses: {\n\t\t\t\t\t\tinitial : 'site-header',\n\t\t\t\t\t\tpinned : 'site-header--pinned',\n\t\t\t\t\t\tunpinned : 'site-header--unpinned',\n\t\t\t\t\t\ttop : 'site-header--top' + siteheaderOverlapClass,\n\t\t\t\t\t\tnotTop : 'site-header--not-top',\n\t\t\t\t\t\tbottom : 'site-header--bottom',\n\t\t\t\t\t\tnotBottom: 'site-header--not-bottom',\n\t\t\t\t\t\tfrozen : 'site-header--frozen',\n\t\t\t\t\t},\t\t\t\t\n\t\t\t\t},\n\t\t\t\tsearch: '.site-header__search',\n\t\t\t\tmenu: '.site-header__menu',\n\t\t\t\tclasses: {\n\t\t\t\t\tbodyOpened: \"menu-fixed\",\n\t\t\t\t\tsearchActive: \"site-header__utility-search--active\",\n\t\t\t\t\tsubMenuActive: \"nav__menu-item--active\",\n\t\t\t\t\tmenuActive: \"site-header__menu--active\",\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\topts\n\t\t);\n\t\tthis.classes = this.opts.classes;\n\t\tif ( typeof this.opts.headroom === 'object' ) {\n\t\t\t// headroom\n\t\t\tthis.headroom = new Headroom(this.node, this.opts.headroom);\n\t\t\tthis.headroom.init();\n\t\t\tthis.headroom.update(this.headroom);\n\t\t}\n\n\t\t\n\t\t//flyout button triggers\n\t\tthis.search = typeof this.opts.search === 'string' ? this.node.querySelector(this.opts.search) : this.opts.search;\n\t\tthis.hamburger = typeof this.opts.menu === 'string' ? this.node.querySelector(this.opts.menu) : this.opts.menu;\n\n\t\t//desktop search trigger\n\t\tthis.searchBtn = this.node.querySelectorAll(\".site-header__utility-search-btn\");\n\n\t\tthis.searchBtn.forEach((search) => {\n\t\t\tsearch.addEventListener(\"click\", () => {\n\t\t\t\tif (this.node.classList.contains(this.classes.searchActive)) {\n\t\t\t\t\tcloseSearch();\n\t\t\t\t} else {\n\t\t\t\t\topenSearch();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t//search functions\n\t\tconst openSearch = () => {\n\n\t\t\tthis.node.classList.add(this.classes.searchActive);\n\t\t\tthis.node.querySelector(\".searchform__input\").focus();\n\t\t};\n\n\t\tconst closeSearch = () => {\n\t\t\tthis.node.classList.remove(this.classes.searchActive);\n\t\t};\n\n\t\t//submenus\n\t\tvar menus = document.querySelectorAll('.nav--primary .wp-block-navigation');\n\t\tvar disclosureMenus = [];\n\n\t\tfor (var i = 0; i < menus.length; i++) {\n\t\t\tdisclosureMenus[i] = new DisclosureNav(menus[i]);\n\t\t}\n\n\n\t\tthis.isGreater992 = document.body.clientWidth >= 992;\n\t\tlet matchMedia = window.matchMedia(\"(min-width: 992px)\");\n\t\tmatchMedia.addEventListener(\"change\", () => {\n\t\t\tthis.isGreater992 = document.body.clientWidth >= 992;\n\t\t});\n\n\n\t}\n\n\n}\n// if mobile and switch to 992, and nav was open, need to remove fixed body class, remove nav--opened class, remove nav__content--opened\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\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};\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=\"_search\"]');\n\n\t\tthis.modes = ['menu', 'search'];\n\t\tthis.setMode('menu');\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', () => closeSubmenu(back.closest('.flyout__item')));\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\n\t\tthis.opened = false;\n\t\tdocument.removeEventListener('keyup', this.handleKeyup);\n\n\t\tconst onTransitionEnd = (e) => {\n\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\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","export default class VideoBlock {\n\tconstructor() {\n\t\tdocument.addEventListener('DOMContentLoaded', this.ready());\n\t}\n\n\tready () {\n\t\tconst videos = document.querySelectorAll('.video__wrapper');\n\t\n\t\tvideos.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, vid));\n\t\t});\n\n\t}\n\n\tonPlayClick (cover, player, vid) {\n\t\tvid.classList.add('is-playing');\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","export default class Auth {\n\tconstructor() {\n\t\tdocument.addEventListener( 'DOMContentLoaded', this.ready() );\n\t}\n\n\tready () {\n\n\t\tif (window.location.pathname !== '/auth/authenticate/') {\n\t\t\treturn;\n\t\t }\n\n\t\tsetTimeout(() => {\n\t\t\tconsole.log('redirect');\n\t\t\twindow.location = '/';\n\t\t}, 25000 );\n\n\t\t// check window.location for hash token\n\t\tconst searchParams = new URLSearchParams(window.location.hash);\n\t\tconst params = [\n\t\t\t'#code',\n\t\t\t'id_token',\n\t\t\t// 'access_token',\n\t\t\t// 'token_type',\n\t\t\t// 'expires_in',\n\t\t\t'scope',\n\t\t\t'state',\n\t\t\t'session_state'\n\t\t];\n\t\tlet data = [];\n\n\t\t// Display the keys\n\t\tfor (const key of params) {\n\t\t\tif (!searchParams.has(key)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\n\t\tthis.proxyAuth( searchParams );\n\n\t}\n\n\tasync postData ( url = \"\", data = {} ) {\n\t\tconst response = await fetch( url, {\n\t\t\tmethod: \"POST\", // *GET, POST, PUT, DELETE, etc.\n\t\t\tmode: \"cors\", // no-cors, *cors, same-origin\n\t\t\tcache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n\t\t\tcredentials: \"same-origin\", // include, *same-origin, omit\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t// 'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t},\n\t\t\tredirect: \"follow\", // manual, *follow, error\n\t\t\treferrerPolicy: \"no-referrer\", // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url\n\t\t\tbody: JSON.stringify(data), // body data type must match \"Content-Type\" header\n\t\t});\n\n\t\t// console.log(response);\n\n\t\treturn response.json(); // parses JSON response into native JavaScript objects\n\t}\n\n\tproxyAuth ( searchParams ) {\n\n\t\tconst url = '/wp-json/ncasi/v1/handle_authenticate';\n\t\tlet data = {};\n\n\t\tfor (const [key, value] of searchParams.entries()) {\n\t\t\tdata[key] = value;\n\t\t}\n\n\t\tthis.postData( url, data ).then( ( data ) => {\n\n\t\t\tif ( data.redirect ) {\n\t\t\t\twindow.location = data.redirect;\n\t\t\t}\n\n\n\t\t});\n\n\t}\n}\n","import apiFetch from '@wordpress/api-fetch';\nimport infoIcon from '../../svg/info.svg';\n\nconst activeClass = 'favorite-toggle--active';\nconst route = '/ncasi/v1/favorites';\nconst selectors = {\n\tcontainer: '#saved .card-grid__items',\n\tfavorite: '.favorite',\n\tfavToggle: '.favorite-toggle',\n\tactiveClass: 'favorite-toggle--active',\n\tactiveState: '.favorite-toggle--active',\n\tcardHeading: '.card__heading',\n\thorizontalClass: 'card--horizontal',\n}\n\nconst favorite = async ( node ) => {\n\tconst { objectId } = node.dataset;\n\tconst { container, activeClass, favToggle, cardHeading, horizontalClass, favorite} = selectors;\n\n\tconst identifier = `[data-object-id=\"${objectId}\"]`;\n\tconst from = node.closest('.card') ?? false;\n\tconst to = document.querySelector(container) ?? false;\n\n\tconsole.log('saving');\n\n\ttry {\n\t\treturn await apiFetch({\n\t\t\tmethod: 'POST',\n\t\t\tpath: route,\n\t\t\tdata: {\n\t\t\t\tobject_id: objectId,\n\t\t\t\tobject_type: node.dataset.type ?? 'post',\n\n\t\t\t}\n\t\t}).then((data) => {\n\n\t\t\tif (!data.id) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (to && from) {\n\t\t\t\tconst clone = from.cloneNode(true);\n\t\t\t\tclone.classList.add(horizontalClass, 'clone');\n\t\t\t\tclone.querySelector(cardHeading).classList.replace('has-h4-variant', 'has-h3-variant');\n\t\t\t\tclone.querySelector(favToggle).classList.add(activeClass);\n\t\t\t\tclone.insertAdjacentElement( 'beforeend', clone.querySelector(favorite) );\n\t\t\t\tto.insertAdjacentElement( 'beforeend', clone );\n\t\t\t}\n\n\t\t\tdocument.querySelectorAll(identifier).forEach((button) => {\n\t\t\t\tbutton.classList.add(activeClass);\n\t\t\t\tbutton.setAttribute('data-id', data.id);\n\t\t\t\tsetTooltip(button, 'Saved');\n\t\t\t});\n\n\t\t});\n\t} catch (err) {\n\t\tconsole.error(err);\n\t}\n}\n\n\nconst unfavorite = async ( node ) => {\n\tconst { id } = node.dataset;\n\tconst { activeClass, container } = selectors;\n\n\tconst identifier = `[data-id=\"${id}\"]`;\n\tconst to = document.querySelector(container) ?? false;\n\n\ttry {\n\t\treturn await apiFetch({\n\t\t\tmethod: 'DELETE',\n\t\t\tpath: `${route}/${id}`\n\t\t}).then((data) => {\n\t\t\tif (!data || !data.deleted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (to) {\n\t\t\t\t// remove selected elements from Saved container.\n\t\t\t\tconst exists = to.querySelectorAll(identifier);\n\t\t\t\texists.forEach((el) => {\n\t\t\t\t\tto.removeChild(el.closest('.card'));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// remove active class in other locations.\n\t\t\tdocument.querySelectorAll(identifier).forEach((button) => {\n\t\t\t\tbutton.classList.remove(activeClass);\n\t\t\t\tbutton.removeAttribute('data-id');\n\t\t\t\tsetTooltip(button, 'Save Event');\n\t\t\t});\n\t\t});\n\t} catch (err) {\n\t\tconsole.error(err);\n\t}\n}\n\nconst setTooltip = ( node, text, selector = '.tooltip__content .text' ) => {\n\tconst tooltip = node.querySelector( selector );\n\n\tif ( !tooltip ) {\n\t\treturn;\n\t}\n\twhile ( tooltip.firstChild ) {\n\t\ttooltip.removeChild( tooltip.firstChild );\n\t}\n\n\ttooltip.appendChild( document.createTextNode( text ) );\n}\n\nconst toggle = (node) => node.classList.contains( activeClass ) && node.dataset.id ? unfavorite( node ) : favorite( node );\n\nexport function init() {\n\n\tdocument.addEventListener('click', function(e) {\n\t\tlet target = e.target;\n\n\t\twhile ( target && target.parentNode ) {\n\n\t\t\tif ( target.classList.contains( 'favorite-toggle' ) ) {\n\t\t\t\ttoggle( target );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttarget = target.parentNode;\n\t\t}\n\t});\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 SiteHeader from './modules/_site-header.js';\nimport Flyout from './modules/_flyout.js';\nimport Video from './modules/_video.js'\nimport Auth from './modules/_auth.js'\nimport { init as favoritesInit } from \"./modules/_favorites.js\";\n\nimport './base/_object-fit-cover.js';\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\tnew Auth();\n\t}\n\n\tready() {\n\t\tfavoritesInit();\n\t\tfocusWithin('label, form, fieldset');\n\n\t\tthis.siteheader = new SiteHeader();\n\t\tthis.flyout = new Flyout();\n\n\t\tif (this.siteheader.node.classList.contains('is-style-flyout') ) {\n\t\t\tthis.siteheader.hamburger.addEventListener('click', () => this.flyout.open('menu'));\n\t\t\tthis.siteheader.search.addEventListener('click', () => this.flyout.open('search'));\n\t\t}\n\t}\n\n\tresize() {\n\t\tif ( ! document.body ) {\n\t\t\treturn;\n\t\t}\n\t\tthis.video = new Video();\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","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"],"names":["FocusWithin","constructor","node","className","this","focused","addEventListener","focus","bind","blur","toggle","classList","add","dispatchEvent","CustomEvent","remove","exports","isBrowser","window","passiveEventsSupported","supported","options","passive","removeEventListener","err","isSupported","document","documentElement","Object","assign","keys","requestAnimationFrame","isDocument","obj","nodeType","isWindow","windowScroller","win","doc","body","html","scrollHeight","Math","max","offsetHeight","clientHeight","height","innerHeight","scrollY","undefined","pageYOffset","parentNode","scrollTop","elementScroller","element","createScroller","trackScroll","callback","rafId","isPassiveSupported","scrolled","scroller","lastScrollY","details","update","round","direction","distance","abs","isOutOfBounds","top","offset","bottom","toleranceExceeded","tolerance","handleScroll","eventOptions","capture","destroy","cancelAnimationFrame","normalizeUpDown","t","down","up","Headroom","elem","classes","initialised","frozen","prototype","init","cutsTheMustard","addClass","setTimeout","self","scrollTracker","forEach","removeClass","unpin","hasClass","onUnpin","call","pin","onPin","freeze","unfreeze","onTop","notTop","onNotTop","onBottom","notBottom","onNotBottom","shouldUnpin","shouldPin","apply","split","every","cls","contains","pinned","unpinned","initial","factory","DisclosureNav","domNode","rootNode","controlledNodes","openIndex","useArrowKeys","topLevelNodes","querySelectorAll","tagName","toLowerCase","hasAttribute","menu","querySelector","push","setAttribute","onMenuKeyDown","onButtonClick","onButtonKeyDown","onLinkKeyDown","onBlur","controlFocusByKey","keyboardEvent","nodeList","currentIndex","key","preventDefault","min","length","close","toggleExpand","event","relatedTarget","button","currentTarget","buttonIndex","indexOf","buttonExpanded","getAttribute","targetButtonIndex","activeElement","targetLinkIndex","menuLinks","Array","slice","index","expanded","updateKeyControls","SiteHeader","opts","HTMLElement","siteheaderOverlapClass","headroom","search","bodyOpened","searchActive","subMenuActive","menuActive","hamburger","searchBtn","closeSearch","openSearch","menus","i","isGreater992","clientWidth","matchMedia","Flyout","contentOpened","menuOpened","opened","toggleActive","navHasToggleActive","closer","content","modeToggle","nav","backs","toggles","searchInput","modes","setMode","mode","searchToggle","handleKeyup","e","closest","target","openSubmenu","navItem","submenu","style","dataset","tabIndex","scrollTo","closeSubmenu","back","item","open","display","disableTabs","previousActiveElement","bubbles","cancelable","onTransitionEnd","enableTabs","includes","m","getTabs","scope","from","join","filter","tabs","prevTabIndex","removeAttribute","VideoBlock","ready","vid","cover","iframe","video","player","onPlayClick","contentWindow","url","URL","src","searchParams","append","href","postMessage","console","log","play","Auth","location","pathname","URLSearchParams","hash","params","has","proxyAuth","postData","data","fetch","method","cache","credentials","headers","redirect","referrerPolicy","JSON","stringify","json","value","entries","then","route","selectors","container","favorite","favToggle","activeClass","activeState","cardHeading","horizontalClass","setTooltip","text","selector","tooltip","firstChild","removeChild","appendChild","createTextNode","id","async","identifier","to","apiFetch","path","deleted","el","error","unfavorite","objectId","object_id","object_type","type","clone","cloneNode","replace","insertAdjacentElement","objectFitCover","nodes","img","position","nodesLength","imgNode","backgroundPosition","backgroundSize","backgroundImage","currentSrc","readyState","match","fn","time","timer","throttledFn","args","cancel","clearTimeout","throttle","resize","isArray","map","n","focusWithin","siteheader","flyout","Video","innerWidth"],"mappings":"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","x_google_ignoreList":[1]}