{"version":3,"file":"scripts.min.js","sources":["../../../assets/js/modules/_alert.js","../../../node_modules/headroom.js/dist/headroom.js","../../../assets/js/base/_dropdownEvent.js","../../../assets/js/modules/_header.js","../../../assets/js/modules/_excerpt.js","../../../assets/js/modules/_external_links.js","../../../assets/js/modules/_fellows-related.js","../../../assets/js/modules/_flyout.js","../../../assets/js/modules/_in-view.js","../../../assets/js/modules/_popup.js","../../../assets/js/modules/_section-nav.js","../../../assets/js/base/_focus-within.js","../../../assets/js/scripts.js","../../../assets/js/base/_throttle.js","../../../assets/js/base/_object-fit-cover.js"],"sourcesContent":["export default class Alert {\n\tconstructor() {\n\t\tthis.node = document.querySelector('.alert');\n\n\t\tif (!this.node) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.classes = {\n\t\t\tbodyClass: 'has-alert'\n\t\t}\n\n\t\tthis.closer = this.node.querySelector('.alert__close');\n\n\t\tif (this.closer) {\n\t\t\tthis.closer.addEventListener('click', () => this.close());\n\t\t}\n\n\t\tif (this.node.dataset.alert && localStorage.getItem(this.node.dataset.alert)) {\n\t\t\tthis.node.style.display = 'none';\n\t\t}\n\n\t}\n\n\tclose() {\n\t\t//close alert, get new height of alertContent & change header top position\n\t\t//localStorage to remember what's been closed\n\t\t//\tconsole.log(this.node.dataset.alert);\n\n\t\tthis.node.style.display = 'none';\n\n\t\tif (this.node.dataset.alert) {\n\t\t\tlocalStorage.setItem(this.node.dataset.alert, true);\n\t\t}\n\t}\n}\n\n\n\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 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","import Headroom from \"headroom.js\";\nimport dropdownEvent from \"../base/_dropdownEvent.js\";\n\nexport default class Header {\n\tconstructor(opts = {}) {\n\t\tthis.node = document.querySelector(\".header\");\n\n\t\tif (!this.node) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.opts = Object.assign({}, opts);\n\n\t\t// headroom\n\t\tthis.headroom = new Headroom(this.node, {\n\t\t\ttolerance: {\n\t\t\t\tup: 7,\n\t\t\t\tdown: 5,\n\t\t\t},\n\t\t\tclasses: {\n\t\t\t\tinitial: \"header\",\n\t\t\t\tpinned: \"header--pinned\",\n\t\t\t\tunpinned: \"header--unpinned\",\n\t\t\t\ttop: \"header--top\",\n\t\t\t\tnotTop: \"header--not-top\",\n\t\t\t\tbottom: \"header--bottom\",\n\t\t\t\tnotBottom: \"header--not-bottom\",\n\t\t\t\tfrozen: \"header--frozen\",\n\t\t\t},\n\t\t});\n\n\t\tthis.headroom.init();\n\t\tthis.headroom.update(this.headroom);\n\n\t\tthis.search = this.node.querySelector(\".header__search\");\n\t\tthis.hamburger = this.node.querySelector(\".header__menu\");\n\n\t\t// dropdowns\n\t\tconst intentActivate = (e) => {\n\t\t\t//console.log('intentActivate', e);\n\t\t\tArray.from(e.target.children)\n\t\t\t\t.filter((node) => node.classList.contains(\"nav__menu\"))\n\t\t\t\t.forEach((node) => node.classList.add(\"nav__menu--visible\"));\n\t\t};\n\n\t\tconst intentDeactivate = (e) => {\n\t\t\t//console.log('intentDeactivate', e);\n\t\t\tArray.from(e.target.children)\n\t\t\t\t.filter((node) => node.classList.contains(\"nav__menu\"))\n\t\t\t\t.forEach((node) => node.classList.remove(\"nav__menu--visible\"));\n\t\t};\n\n\t\tArray.from(\n\t\t\tthis.node.querySelectorAll(\".nav__menu-item--has-children\")\n\t\t).forEach((node) => {\n\t\t\tconst navLink = node.querySelector(\".nav__link\");\n\n\t\t\tif (navLink) {\n\t\t\t\t// navLink.insertAdjacentHTML('afterend', ``);\n\t\t\t}\n\n\t\t\tdropdownEvent(node);\n\t\t\tnode.addEventListener(\"dropdown:activate\", intentActivate);\n\t\t\tnode.addEventListener(\"dropdown:deactivate\", intentDeactivate);\n\t\t});\n\t}\n}\n","export default class Excerpt {\n\tconstructor() {\n\t\tthis.node = document.querySelectorAll('.excerpt__link');\n\n\t\tif (!this.node) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.node.forEach((node) => {\n\t\t\tnode.addEventListener(\"mouseenter\", function () {\n\t\t\t\tthis.closest('.excerpt').classList.add('is-hovered');\n\t\t\t});\n\n\t\t\tnode.addEventListener(\"mouseout\", function () {\n\t\t\t\tthis.closest('.excerpt').classList.remove('is-hovered');\n\t\t\t});\n\t\t});\n\t}\n\n};\n\n\n\n","export default class ExternalURL {\n\tconstructor() {\n\t\tthis.node = document.querySelectorAll('a');\n\n\t\tif (!this.node) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst website = window.location.hostname;\n\n\t\tconst internalLinkRegex = new RegExp('^((((http:\\\\/\\\\/|https:\\\\/\\\\/)(www\\\\.)?)?'\n\t\t\t+ website\n\t\t\t+ ')|(localhost:\\\\d{4})|(\\\\/.*))(\\\\/.*)?|(#.*)$', '');\n\n\t\t// console.log(website);\n\t\t// console.log(internalLinkRegex);\n\t\tthis.node.forEach((node) => {\n\t\t\tvar href = node.getAttribute('href');\n\n\t\t\tif (!internalLinkRegex.test(href)) {\n\t\t\t\tnode.setAttribute('target', '_blank');\n\t\t\t\tnode.setAttribute('rel', 'noreferrer nofollow');\n\t\t\t}\n\t\t});\n\n\t\t//var anchorEls = document.querySelectorAll('a');\n\t\t//var anchorElsLength = anchorEls.length;\n\n\t\t// for (var i = 0; i < anchorElsLength; i++) {\n\t\t// \tvar anchorEl = anchorEls[ i ];\n\t\t// \tvar href = anchorEl.getAttribute('href');\n\n\t\t// \tif (!internalLinkRegex.test(href) || !href.startsWith('#')) {\n\t\t// \t\tanchorEl.setAttribute('target', '_blank');\n\t\t// \t}\n\t\t// }\n\n\t}\n}\n\n\n\n\n\n","export default class FellowsRelated {\n\tconstructor() {\n\t\tthis.node = document.querySelector('.single-fellows');\n\n\t\tif (!this.node) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.postList = this.node.querySelector('.post-list');\n\t\tthis.postItems = this.node.querySelector('.post-list__items');\n\n\t\t//check for .single-fellows .post-list__items, if empty, hide .post-list\n\t\tif (this.postItems.innerHTML.trim().length == 0) {\n\t\t\tthis.postList.hidden = true;\n\t\t}\n\t}\n\n};\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\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=\"s\"]');\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\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\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\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() {\n\t\treturn Array.from(document.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","\nexport default class InView {\n\tconstructor() {\n\t\tthis.node = document.querySelectorAll('.does--animate');\n\n\t\tif (!this.node) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst config = {\n\t\t\tthreshold: [ 0.75 ]\n\t\t};\n\n\t\tfunction handleIntersection(entries) {\n\t\t\tentries.map((entry) => {\n\t\t\t\tif (entry.isIntersecting) {\n\t\t\t\t\tentry.target.src = entry.target.dataset.src;\n\t\t\t\t\tentry.target.classList.add('visible');\n\t\t\t\t\tobserver.unobserve(entry.target);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tconst observer = new IntersectionObserver(handleIntersection, config);\n\n\t\tthis.node.forEach(item => observer.observe(item));\n\t}\n\n};\n","export default class Popup {\n\tconstructor() {\n\t\tthis.node = document.querySelectorAll('.trigger-popup');\n\n\t\tif (!this.node) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocument.addEventListener('click', (e) => {\n\t\t\tif (e.target.closest('.trigger-popup')) {\n\t\t\t\tlet ee = e;\n\t\t\t\tconst trigger = document.querySelectorAll('.trigger-popup');\n\t\t\t\ttrigger.forEach((node) => {\n\t\t\t\t\tnode.closest('.popup').classList[ ee.target.closest('.trigger-popup') == node ? 'toggle' : 'remove' ]('open')\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdocument.querySelectorAll('.trigger-popup').forEach((node) => node.closest('.popup').classList.remove('open'));\n\t\t\t}\n\t\t});\n\t}\n}\n\n","//Reference: https://www.w3.org/WAI/tutorials/menus/flyout/\nexport default class SectionNav {\n\tconstructor() {\n\t\tthis.node = document.querySelector('.section-nav');\n\n\t\tif (!this.node) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.menuItems = this.node.querySelectorAll('li.has-subnav');\n\t\tlet firstSub = this.node.querySelector('.has-subnav');\n\t\tlet menuToggle = this.node.querySelector('.section-nav__toggle');\n\n\t\tArray.prototype.forEach.call(this.menuItems, function (el, i) {\n\t\t\tconst btn = el.querySelector('.menu-toggle');\n\n\t\t\tbtn.addEventListener(\"click\", function (event) {\n\t\t\t\tconst parent = this.parentNode;\n\t\t\t\tif (parent.classList.contains(\"has-subnav\") && parent.classList.contains(\"open\")) {\n\t\t\t\t\tparent.classList.remove(\"open\");\n\t\t\t\t\t//console.log(this.nextElementSibling);\n\t\t\t\t\tif (this.nextElementSibling.matches('a')) {\n\t\t\t\t\t\tthis.nextElementSibling.setAttribute('aria-expanded', \"false\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.setAttribute('aria-expanded', \"false\");\n\t\t\t\t} else {\n\t\t\t\t\tparent.classList.add(\"open\");\n\t\t\t\t\tif (this.nextElementSibling.matches('a')) {\n\t\t\t\t\t\tthis.nextElementSibling.setAttribute('aria-expanded', \"true\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.setAttribute('aria-expanded', \"true\");\n\t\t\t\t}\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t\t});\n\n\t\tthis.node.addEventListener('mouseleave', function () {\n\t\t\tfirstSub.classList.remove('open');\n\t\t\tmenuToggle.setAttribute('aria-expanded', \"false\");\n\t\t});\n\n\t\tthis.node.addEventListener('focusout', function () {\n\t\t\tsetTimeout(() => {\n\t\t\t\tlet focused = this.querySelector(':focus');\n\t\t\t\tif (focused === null) {\n\t\t\t\t\tfirstSub.classList.remove('open');\n\t\t\t\t\tmenuToggle.setAttribute('aria-expanded', \"false\");\n\t\t\t\t}\n\t\t\t}, 100);\n\n\t\t});\n\t}\n}\n//Clarify: is this menu supposed to be fixed/sticky like our example? Did we discuss that with the client and that content would be 'covered'?\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 Alert from './modules/_alert.js';\nimport Header from './modules/_header.js';\nimport Excerpt from './modules/_excerpt.js';\nimport ExternalURL from './modules/_external_links.js';\nimport FellowsRelated from './modules/_fellows-related.js';\nimport Flyout from './modules/_flyout.js';\nimport InView from './modules/_in-view.js';\nimport Popup from './modules/_popup.js';\nimport SectionNav from './modules/_section-nav.js';\nimport throttle from './base/_throttle.js';\nimport focusWithin from './base/_focus-within.js';\nimport objectFitCover from './base/_object-fit-cover.js';\nimport fitvid from \"./base/_fitvid\";\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\tif (!('objectFit' in document.documentElement.style)) {\n\t\t\tobjectFitCover('.object-fit-cover');\n\t\t}\n\n\t\tthis.alert = new Alert();\n\t\tthis.header = new Header();\n\t\tthis.excerpt = new Excerpt();\n\t\tthis.externalURL = new ExternalURL();\n\t\tthis.fellowsRelated = new FellowsRelated();\n\t\tthis.flyout = new Flyout();\n\t\tthis.inView = new InView();\n\t\tthis.sectionNav = new SectionNav();\n\t\tthis.popup = new Popup();\n\n\t\tthis.header.hamburger.addEventListener('click', () => this.flyout.open('menu'));\n\t\tthis.header.search.addEventListener('click', () => this.flyout.open('search'));\n\n\t\t//fitvid();\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","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","/**\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( nodes, 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"],"names":["Alert","constructor","this","node","document","querySelector","classes","bodyClass","closer","addEventListener","close","dataset","alert","localStorage","getItem","style","display","setItem","module","exports","isBrowser","window","passiveEventsSupported","supported","options","passive","removeEventListener","err","isSupported","bind","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","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","className","classList","add","apply","split","remove","every","cls","contains","pinned","unpinned","initial","factory","DropdownEvent","opts","arguments","length","delay","activate","deactivate","activateEvent","deactivateEvent","opt","hasOwnProperty","active","enterTimeout","leaveTimeout","preventClickEvent","e","preventDefault","stopPropagation","maybeActivate","target","tagName","mouseenter","clearTimeout","mouseleave","touchstart","pointerenter","pointerType","pointerleave","PointerEvent","key","toLowerCase","blur","activeElement","dispatchEvent","eventName","event","Event","createEvent","initEvent","jQuery","fn","dropdownEvent","each","data","Header","headroom","search","hamburger","intentActivate","Array","from","children","filter","intentDeactivate","querySelectorAll","HTMLElement","nodes","isArray","map","n","Excerpt","closest","ExternalURL","website","location","hostname","internalLinkRegex","RegExp","href","getAttribute","test","setAttribute","FellowsRelated","postList","postItems","innerHTML","trim","hidden","Flyout","bodyOpened","contentOpened","menuOpened","opened","toggleActive","navHasToggleActive","content","modeToggle","nav","backs","toggles","searchInput","modes","setMode","mode","focus","searchToggle","handleKeyup","openSubmenu","navItem","submenu","toggle","closeSubmenu","back","item","open","disableTabs","previousActiveElement","CustomEvent","bubbles","cancelable","onTransitionEnd","enableTabs","closeSearch","openSearch","includes","m","getTabs","join","tabs","prevTabIndex","removeAttribute","InView","observer","IntersectionObserver","entries","entry","isIntersecting","src","unobserve","threshold","observe","Popup","ee","SectionNav","menuItems","firstSub","menuToggle","el","i","parent","nextElementSibling","matches","FocusWithin","focused","scripts","ready","time","timer","throttledFn","_len","args","_key","cancel","throttle","resize","focusWithin","img","position","nodesLength","imgNode","backgroundPosition","backgroundSize","backgroundImage","currentSrc","objectFitCover","header","excerpt","externalURL","fellowsRelated","flyout","inView","sectionNav","popup","innerWidth","clientWidth"],"mappings":"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"}