{"version":3,"file":"site.min.js","sources":["../js/_accordion.js","../js/_slide_ajax.js","../js/_panel-slides.js","../js/_get-scroll-y.js","../js/_throttle.js","../js/_panel-half-content.js","../js/_panel-media.js","../js/templates/_home.js","../js/_overlay.js","../js/_header.js","../js/_popup-content.js","../js/_tooltip.js","../js/_clipboard.js","../js/_keyboardFocus.js","../js/site.js","../js/_links.js"],"sourcesContent":["export default class {\n\tconstructor(accordionSet) {\n\t\tthis.accordionSet = accordionSet;\n\n\t\t// Get all accordion items from wrap\n\t\tlet accordionItems = accordionSet.querySelectorAll('.panels__accordion-item');\n\n\t\t// Hide each besides target accordion on click\n\t\taccordionItems.forEach((accordionItem) => {\n\t\t\t// Clicked accordions clickable target\n\t\t\tconst accordionTitleRow = accordionItem.firstElementChild.firstElementChild;\n\t\t\taccordionTitleRow.addEventListener(\"click\", toggleAccordion);\n\t\t});\n\n\t\tfunction toggleAccordion(e) {\n\t\t\tif (e.target.parentElement.parentElement.classList.contains('active')) {\n\t\t\t\te.target.parentElement.parentElement.classList.remove('active');\n\t\t\t\te.target.nextElementSibling.classList.add('hidden');\n\t\t\t} else {\n\t\t\t\te.target.parentElement.parentElement.classList.add('active');\n\t\t\t\te.target.nextElementSibling.classList.remove('hidden');\n\t\t\t}\n\t\t};\n\n\t}\n}\n","import debug from 'bows';\nimport $ from 'jquery';\nimport Flickity from 'flickity';\nimport Accordion from './_accordion';\n\nconst log = debug('buttonLink');\n\nexport default class {\n\tconstructor(url) {\n\t\t//log(url);\n\t\turl += `${url.indexOf('?') > -1 ? '&' : '?'}ajax=1`;\n\t\tlog(url);\n\t\t$.get(url).done((data) => {\n\t\t\tlet popupReceiver = document.querySelector('.popup-content');\n\t\t\tlet popupInner = document.querySelector('.popup-content--inner');\n\t\t\tpopupInner.innerHTML = data;\n\t\t\t//log(data);\n\n\t\t\t// Gallery slides\n\t\t\t// Select all slide flex layouts\n\t\t\tthis.items = popupReceiver.querySelectorAll('.panel__slides__items');\n\t\t\t// For each slide layout\n\n\t\t\tthis.items.forEach(slideGroup => {\n\n\t\t\t\tlet slides = slideGroup.querySelectorAll('.panel__gallery__slides__item');\n\t\t\t\tlet currentSlideOutput = slideGroup.querySelector('.panel__slides__current');\n\t\t\t\tlet totalSlideOutput = slideGroup.querySelector('.panel__slides__total');\n\t\t\t\tlet prevButton = slideGroup.querySelector('.js--slide__prev');\n\t\t\t\tlet nextButton = slideGroup.querySelector('.js--slide__next');\n\t\t\t\tlet captionReceiver = slideGroup.querySelector('.js--caption-receiver');\n\n\n\t\t\t\tlet flickity = new Flickity(slideGroup, {\n\t\t\t\t\tcellAlign: 'left',\n\t\t\t\t\tdraggable: false,\n\t\t\t\t\tpageDots: false,\n\t\t\t\t\tcellSelector: '.panel__gallery__slides__item',\n\t\t\t\t\tprevNextButtons: false,\n\t\t\t\t\ton: {\n\t\t\t\t\t\tselect: (index) => {\n\t\t\t\t\t\t\tlet currentSlide = index + 1;\n\t\t\t\t\t\t\tcurrentSlideOutput.innerHTML = currentSlide.pad();\n\n\t\t\t\t\t\t\tlet totalSlides = slides.length;\n\t\t\t\t\t\t\ttotalSlideOutput.innerHTML = totalSlides.pad();\n\n\t\t\t\t\t\t\tif (currentSlide === 1) {\n\t\t\t\t\t\t\t\tprevButton.classList.add('panel__slides__nav__disabled');\n\t\t\t\t\t\t\t\tnextButton.classList.remove('panel__slides__nav__disabled');\n\t\t\t\t\t\t\t} else if (currentSlide === totalSlides) {\n\t\t\t\t\t\t\t\tnextButton.classList.add('panel__slides__nav__disabled');\n\t\t\t\t\t\t\t\tprevButton.classList.remove('panel__slides__nav__disabled');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tprevButton.classList.remove('panel__slides__nav__disabled');\n\t\t\t\t\t\t\t\tnextButton.classList.remove('panel__slides__nav__disabled');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet caption = slides[index].querySelector('.caption');\n\t\t\t\t\t\t\tif (caption) {\n\t\t\t\t\t\t\t\tlet captionContent = caption.innerHTML;\n\t\t\t\t\t\t\t\tcaptionReceiver.innerHTML = captionContent;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tprevButton.addEventListener('click', e => {\n\t\t\t\t\tflickity.previous();\n\t\t\t\t});\n\t\t\t\tnextButton.addEventListener('click', e => {\n\t\t\t\t\tflickity.next();\n\t\t\t\t});\n\n\t\t\t\tif (slides.length === 1) {\n\t\t\t\t\tlet slideHide = slideGroup.querySelector('.panel__slides__nav-wrapper');\n\t\t\t\t\tslideHide.classList.add('display-none')\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Accordion content\n\t\t\tthis.accordionItems = popupReceiver.querySelectorAll('.panels__accordion-items');\n\t\t\tthis.accordionItems.forEach((accordionSet) => {\n\t\t\t\tnew Accordion(accordionSet);\n\t\t\t});\n\n\t\t\t// PopupContent.open();\n\t\t\tpopupReceiver.classList.add('popup-content--open');\n\t\t\tdocument.body.classList.add('fixed');\n\n\t\t}\n\t\t)\n\t}\n}\n","import debug from 'bows';\nimport Flickity from 'flickity';\n// import actions for popup content\nimport slide_ajax from './_slide_ajax';\n\nconst log = debug('flkty');\n\n// Flickity will only be used for API on main page.\n// THe instance is hidden with display:none;\n\nNumber.prototype.pad = function (size) {\n\tvar s = String(this);\n\twhile (s.length < (size || 2)) { s = \"0\" + s; }\n\treturn s;\n}\n\nexport default class {\n\t// (node) = .panel__slides\n\tconstructor(node) {\n\t\tthis.node = node;\n\t\tthis.wrap = node.querySelector('.panel__slides__items');\n\t\tthis.items = node.querySelectorAll('.panel__slides__item');\n\t\tthis.currentSlideOutput = node.querySelector('.panel__slides__current');\n\t\tthis.totalSlideOutput = node.querySelector('.panel__slides__total');\n\t\tthis.prevButton = node.querySelector('.js--slide__prev');\n\t\tthis.nextButton = node.querySelector('.js--slide__next');\n\t\tthis.leftColumn = node.querySelector('.js--left-column');\n\t\tthis.rightColumn = node.querySelector('.js--right-column');\n\t\tthis.hasClickedNav = true;\n\t\tthis.flickity = new Flickity(this.wrap, {\n\t\t\tcellAlign: 'left',\n\t\t\tdraggable: false,\n\t\t\tpageDots: false,\n\t\t\tcellSelector: '.panel__slides__item',\n\t\t\tprevNextButtons: false,\n\t\t\t// adaptiveHeight: true,\n\t\t\t// watchCSS: true,\n\t\t\t// initialIndex: 1,\n\t\t\ton: {\n\t\t\t\tselect: (index) => {\n\t\t\t\t\tlet flicktiyData = Flickity.data(this.wrap)\n\n\t\t\t\t\tlet currentSlide = flicktiyData.selectedIndex + 1;\n\t\t\t\t\tthis.currentSlideOutput.innerHTML = currentSlide.pad();\n\n\t\t\t\t\tlet totalSlides = flicktiyData.slides.length;\n\t\t\t\t\tthis.totalSlideOutput.innerHTML = totalSlides.pad();\n\n\t\t\t\t\tif (currentSlide === 1) {\n\t\t\t\t\t\tthis.prevButton.classList.add('panel__slides__nav__disabled');\n\t\t\t\t\t\tthis.nextButton.classList.remove('panel__slides__nav__disabled');\n\t\t\t\t\t} else if (currentSlide === totalSlides) {\n\t\t\t\t\t\tthis.nextButton.classList.add('panel__slides__nav__disabled');\n\t\t\t\t\t\tthis.prevButton.classList.remove('panel__slides__nav__disabled');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.prevButton.classList.remove('panel__slides__nav__disabled');\n\t\t\t\t\t\tthis.nextButton.classList.remove('panel__slides__nav__disabled');\n\t\t\t\t\t}\n\n\t\t\t\t\t// Stop flickity from redrawing content on page resize\n\t\t\t\t\tif ((index === flicktiyData.selectedIndex) && !this.hasClickedNav) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tlet leftColumnContent = this.items[index].querySelector('.panel__slides__item--left').innerHTML;\n\t\t\t\t\tthis.leftColumn.innerHTML = leftColumnContent;\n\n\t\t\t\t\tlet rightColumnContent = this.items[index].querySelector('.panel__slides__item__content').innerHTML;\n\t\t\t\t\tthis.rightColumn.innerHTML = rightColumnContent;\n\n\t\t\t\t\tlet buttonLink = this.rightColumn.querySelector('.panel__slides__item__read-more');\n\t\t\t\t\tlog(buttonLink);\n\t\t\t\t\tif (buttonLink !== null) {\n\t\t\t\t\t\tbuttonLink.addEventListener('click', e => {\n\t\t\t\t\t\t\tif (!buttonLink.target) {\n\t\t\t\t\t\t\t\tå\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tnew slide_ajax(buttonLink.href);\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\t// We've rendered the slide. Block subsequent renders on resize.\n\t\t\t\t\tthis.hasClickedNav = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.prevButton.addEventListener('click', e => {\n\t\t\tthis.hasClickedNav = true;\n\t\t\tthis.flickity.previous();\n\t\t});\n\t\tthis.nextButton.addEventListener('click', e => {\n\t\t\tthis.hasClickedNav = true;\n\t\t\tthis.flickity.next();\n\t\t});\n\t}\n}\n","export default function() {\n\treturn window.pageYOffset || document.documentElement.scrollTop || 0;\n}\n","import debug from 'bows';\n\nconst log = debug('throttle');\n\nexport default function(fn, time = 50) {\n\tlet timer = null;\n\n\tlog(fn, time);\n\n\tfunction throttledFn(...args) {\n\t\tif(!timer) {\n\t\t\ttimer = setTimeout( () => {\n\t\t\t\tfn(...args);\n\t\t\t\ttimer = null;\n\t\t\t}, time )\n\t\t}\n\t}\n\n\tthrottledFn.cancel = () => {\n\t\tclearTimeout(timer);\n\t\ttimer = null;\n\t}\n\n\treturn throttledFn;\n}\n","import debug from 'bows';\nimport getScrollY from './_get-scroll-y';\nimport throttle from './_throttle';\nconst log = debug('half-content');\nexport default class {\n\t// (node) = .panel__half-content\n\t/**\n\t * Constructor\n\t * @param {HTMLElement} node\n\t * @param {object} opts\n\t * @return this\n\t */\n\tconstructor(node, opts = {}) {\n\t\tthis.node = (typeof node === 'string') ? document.querySelector(node) : node;\n\t\tthis.opts = Object.assign({\n\t\t\tthreshold: 5,\n\t\t\tthrottle: 5,\n\t\t}, opts);\n\n\t\tthis.innerContent = node.getElementsByClassName('panel__hero__content')[0];\n\t\tthis.scrollY = getScrollY();\n\n\t\tthis.innerContentHeight = this.innerContent ? this.innerContent.offsetHeight : this.node.offsetHeight;\n\n\t\tconst throttled = throttle(() => {\n\t\t\t// Get position of top left corner of window\n\t\t\tlet scrollY = getScrollY();\n\n\t\t\t// Get scroll position of the bottom of window\n\t\t\t//let scrollBottom = scrollY + window.innerHeight;\n\n\t\t\t// Get height of panel content. Height of panel if content is shorter than panel\n\t\t\tthis.innerContentHeight = this.innerContentHeight < this.node.offsetHeight ? this.node.offsetHeight : this.innerContentHeight;\n\t\t\tlet innerContentHeight = this.innerContentHeight;\n\n\t\t\t// scrollTriggerPoint if the topmost point of the element related to the window\n\t\t\tlet scrollTriggerPoint = this.node.offsetTop;\n\n\t\t\t// scrollDepth is the bottom-most point of the element related to the window\n\t\t\tlet scrollDepth = scrollTriggerPoint + innerContentHeight;\n\n\t\t\t// If the panel isn't in view, remove fixed class and do nothing\n\t\t\tif (scrollY < scrollTriggerPoint || scrollY > scrollDepth) {\n\t\t\t\tthis.node.classList.remove('panel--fixed');\n\t\t\t\tthis.node.classList.add('panel--standby');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// If the panel is onscreen, but smaller than 100vh, do nothing\n\t\t\tif (innerContentHeight <= window.innerHeight) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// If element is onscreen, give it the activated class\n\t\t\tif (scrollY >= scrollTriggerPoint && scrollY <= scrollDepth) {\n\t\t\t\tthis.node.classList.add('panel--fixed')\n\t\t\t\tthis.node.classList.remove('panel--standby');\n\t\t\t}\n\t\t\t//log(scrollY, this.node.offsetTop, this.innerContentHeight, scrollDepth);\n\t\t\tlog('test');\n\t\t});\n\n\t\tconst jthrottled = () => {\n\t\t\tlet scrollY = getScrollY();\n\n\t\t\t// Get scroll position of the bottom of window\n\t\t\t//let scrollBottom = scrollY + window.innerHeight;\n\n\t\t\t// Get height of panel content. Height of panel if content is shorter than panel\n\t\t\tthis.innerContentHeight = this.innerContentHeight < this.node.offsetHeight ? this.node.offsetHeight : this.innerContentHeight;\n\t\t\tlet innerContentHeight = this.innerContentHeight;\n\n\t\t\t// scrollTriggerPoint if the topmost point of the element related to the window\n\t\t\tlet scrollTriggerPoint = this.node.offsetTop;\n\n\t\t\t// scrollDepth is the bottom-most point of the element related to the window\n\t\t\tlet scrollDepth = scrollTriggerPoint + innerContentHeight;\n\n\t\t\t// If the panel isn't in view, remove fixed class and do nothing\n\t\t\tif (scrollY < scrollTriggerPoint || scrollY > scrollDepth) {\n\t\t\t\tthis.node.classList.remove('panel--fixed');\n\t\t\t\tthis.node.classList.add('panel--standby');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// If the panel is onscreen, but smaller than 100vh, do nothing\n\t\t\tif (innerContentHeight <= window.innerHeight) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// If element is onscreen, give it the activated class\n\t\t\tif (scrollY >= scrollTriggerPoint && scrollY <= scrollDepth) {\n\t\t\t\tthis.node.classList.add('panel--fixed')\n\t\t\t\tthis.node.classList.remove('panel--standby');\n\t\t\t}\n\t\t\t//log(scrollY, this.node.offsetTop, this.innerContentHeight, scrollDepth);\n\n\t\t}\n\n\t\twindow.addEventListener('scroll', jthrottled);\n\t\twindow.addEventListener('resize', jthrottled);\n\t\twindow.addEventListener('ready', jthrottled);\n\n\t}\n}\n","// TODO - Setup resize throttle to jog video caption between inside play\n// meta or beneath thumbnail\n\nimport debug from 'bows';\nimport throttle from './_throttle';\n\nconst log = debug('media');\n\nexport default class {\n\t// (node) = .panel__half-content\n\t/**\n\t * Constructor\n\t * @param {HTMLElement} node\n\t * @param {object} opts\n\t * @return this\n\t */\n\tconstructor(node, opts = {}) {\n\t\tthis.node = (typeof node === 'string') ? document.querySelector(node) : node;\n\t\tthis.opts = Object.assign({\n\t\t\tthrottle: 50\n\t\t}, opts);\n\t\tthis.playButton = this.node.getElementsByClassName('panel__play-button')[0];\n\t\tthis.panelImage = this.node.getElementsByClassName('panels__figure')[0];\n\t\tthis.panelContentWrapper = this.node.getElementsByClassName('panel__content')[0];\n\t\tthis.panelMediaMeta = this.node.getElementsByClassName('panel__media__meta')[0];\n\n\t\tif (this.playButton) {\n\t\t\tlet swapVideoFrame = (e) => {\n\t\t\t\tlog('swapVideoFrame');\n\n\t\t\t\tif (e && e.preventDefault) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\n\t\t\t\t//this.playButton = e.target;\n\t\t\t\tlet videoLink = this.playButton.dataset.videoLink;\n\n\t\t\t\tlet isWatch = videoLink.split('v=');\n\t\t\t\tif (isWatch.length === 2) {\n\t\t\t\t\tlet isYouTubeId = isWatch[1].split('&');\n\t\t\t\t\tvideoLink = `https://www.youtube.com/embed/${isYouTubeId[0]}`\n\t\t\t\t}\n\t\t\t\tlog(isWatch);\n\t\t\t\tlog(videoLink);\n\t\t\t\tlet iframe = document.createElement('iframe');\n\t\t\t\tiframe.setAttribute(\"frameborder\", \"0\");\n\t\t\t\tiframe.setAttribute(\"allowfullscreen\", \"\");\n\t\t\t\t//iframe.setAttribute(\"src\", 'https://www.youtube.com/embed/gFLigRtBeSI?rel=0&showinfo=0&autoplay=1');\n\t\t\t\tiframe.setAttribute(\"src\", videoLink + \"?rel=0&showinfo=0&autoplay=1\");\n\t\t\t\tthis.panelImage.classList.add('panel--video-embedded');\n\t\t\t\tthis.panelImage.innerHTML = '';\n\t\t\t\tthis.panelContentWrapper.removeChild(this.panelMediaMeta);\n\t\t\t\tthis.panelImage.prepend(iframe);\n\n\t\t\t}\n\n\t\t\tthis.playButton.addEventListener('click', swapVideoFrame);\n\t\t}\n\n\t\tlog(this);\n\t}\n}\n","//import debug from 'bows';\nimport panelSlides from '../_panel-slides';\nimport panelHalfContent from '../_panel-half-content';\nimport panelMedia from '../_panel-media';\n\n\nclass Home {\n\tconstructor(opts) {\n\t\tthis.opts = opts;\n\n\t\tthis.panelSlides = Array.from(document.querySelectorAll('.panel__slides')).map((node) => new panelSlides(node));\n\n\t\tthis.panelHalfContent = Array.from(document.querySelectorAll('.panel__half-content')).map((node) => new panelHalfContent(node));\n\n\t\tthis.panelMedia = Array.from(document.querySelectorAll('.panel__media')).map((node) => new panelMedia(node));\n\t\t// log(this);\n\t}\n}\n\nexport default function (opts = {}) {\n\treturn new Home(opts);\n}\n","import debug from 'bows';\n\nconst log = debug('overlay');\n\nexport default class {\n\t/**\n\t * Menu constructor\n\t */\n\tconstructor(opts = {}) {\n\t\tthis.opts = Object.assign({\n\t\t\toverlay: '.overlay',\n\t\t\tclasses: {\n\t\t\t\topen: 'overlay--open',\n\t\t\t\tbody: 'fixed',\n\t\t\t},\n\t\t\topeners: [\n\t\t\t\t'.header__search',\n\t\t\t\t'.js-menu-open'\n\t\t\t],\n\t\t\tclosers: [\n\t\t\t\t'.overlay__close',\n\t\t\t\t'.js-menu-close',\n\t\t\t\t'.nav__menu__item'\n\t\t\t],\n\t\t\tfocused: 'input[type=\"text\"]',\n\t\t\tregions: '.menu--regions .nav__menu__item a',\n\t\t\tregionsWrapper: '.menu--regions .nav__menu'\n\t\t}, opts);\n\n\t\tthis.node = (typeof this.opts.overlay === 'string') ? document.querySelector(this.opts.overlay) : this.opts.overlay;\n\n\t\tif (!this.node) {\n\t\t\tlog('.overlay missing, abort!');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.overlayBackground = this.node.querySelector('.overlay__background');\n\t\tthis.opened = false;\n\n\t\t// Openers and togglers\n\t\tthis.opener = null;\n\t\tthis.openers = Array.from(document.querySelectorAll(this.opts.openers.join(', ')));\n\n\t\tthis.closer = null;\n\t\tthis.closers = Array.from(document.querySelectorAll(this.opts.closers.join(', ')));\n\n\t\tif (this.openers.length > 0) {\n\t\t\tlet boundOpenClick = (e) => {\n\t\t\t\tif (e && e.preventDefault) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\tthis.opener = e.target;\n\t\t\t\tthis.open();\n\t\t\t}\n\n\t\t\tthis.openers.forEach((opener) => {\n\t\t\t\topener.addEventListener('click', boundOpenClick);\n\t\t\t});\n\t\t}\n\n\t\tif (this.closers.length > 0) {\n\t\t\tlet boundCloseClick = (e) => {\n\t\t\t\t//log('boundCloseClick');\n\t\t\t\t// Only actively link to nav menu clicks\n\t\t\t\tif (e && e.preventDefault && !e.target.parentNode.classList.contains('nav__menu__item')) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tthis.closer = e.target;\n\t\t\t\tthis.close();\n\t\t\t}\n\n\t\t\tthis.closers.forEach((closer) => {\n\t\t\t\t//log(closer);\n\t\t\t\tcloser.addEventListener('click', boundCloseClick);\n\t\t\t});\n\t\t}\n\n\t\t// focused element on open\n\t\tthis.focused = (typeof this.opts.focused === 'string') ? this.node.querySelector(this.opts.focused) : this.opts.focused;\n\n\t\t// listener for esc key\n\t\tthis.keyup = (e) => {\n\t\t\tif (this.opened && e.key === 'Escape') {\n\t\t\t\tthis.close(this.initOpened);\n\t\t\t}\n\t\t};\n\n\t\t// Region Hovers\n\t\tthis.region = null;\n\t\tthis.regions = Array.from(document.querySelectorAll(this.opts.regions));\n\t\tthis.regionsWrapper = document.querySelector(this.opts.regionsWrapper);\n\t\tlog(this.regions);\n\t\tif (this.regions.length > 0) {\n\t\t\tlet boundRegionHover = (e) => {\n\t\t\t\t//log('boundRegionHover');\n\t\t\t\t// Only actively link to nav menu clicks\n\n\t\t\t\tthis.region = e.target;\n\t\t\t\tthis.regionHover();\n\t\t\t}\n\t\t\tlet boundRegionLeave = (e) => {\n\t\t\t\t//log('boundRegionHover');\n\t\t\t\t// Only actively link to nav menu clicks\n\n\t\t\t\tthis.regionsWrapper = e.target;\n\t\t\t\tthis.regionLeave();\n\t\t\t}\n\n\t\t\tthis.regions.forEach((region) => {\n\t\t\t\t//log(regions);\n\t\t\t\tregion.addEventListener('mouseover', boundRegionHover);\n\t\t\t});\n\n\t\t\tthis.regionsWrapper.addEventListener('mouseleave', boundRegionLeave);\n\n\t\t}\n\t}\n\n\t/**\n\t * Open the overlay\n\t */\n\topen() {\n\t\tthis.opened = true;\n\t\tthis.node.classList.add(this.opts.classes.open);\n\t\tdocument.addEventListener('keyup', this.keyup); // start listening for esc key\n\t\tdocument.body.classList.add(this.opts.classes.body);\n\n\t\tif (this.focused) {\n\t\t\tthis.focused.focus();\n\t\t\tthis.focused.select();\n\t\t}\n\n\t\tlog('open');\n\t}\n\n\t/**\n\t * Close the overlay\n\t */\n\tclose() {\n\t\t// 1. Remove listener for esc key\n\t\tdocument.removeEventListener('keyup', this.keyup); // stop listening for esc key\n\n\t\tthis.node.classList.remove(this.opts.classes.open);\n\t\tdocument.body.classList.remove(this.opts.classes.body);\n\n\t\tif (this.opener) {\n\t\t\tthis.opener.focus();\n\t\t}\n\n\t\tthis.opened = false; // internal flag\n\t\tlog('closed');\n\t}\n\n\t/**\n\t * Toggle the overlay\n\t */\n\ttoggle() {\n\t\treturn (this.opened === false) ? this.open() : this.close();\n\t}\n\n\t/**\n\t * Show the region background\n\t */\n\tregionHover() {\n\t\tlet backgroundImageUrl = this.region.parentElement.dataset.hoverImage;\n\n\t\tif (backgroundImageUrl !== undefined) {\n\t\t\tthis.overlayBackground.style.backgroundImage = \"url('\" + backgroundImageUrl + \"')\";\n\t\t} else {\n\t\t\tthis.overlayBackground.style.removeProperty('background-image');\n\t\t}\n\n\n\t}\n\n\t/**\n\t * Reset the region background\n\t */\n\tregionLeave() {\n\n\t\tthis.overlayBackground.style.backgroundImage = \"\";\n\n\t}\n}\n","import debug from 'bows';\n//import throttle from './_throttle';\n//import getScrollY from './_get-scroll-y';\n\n//const log = debug('HeaderReveal');\n\nexport function init() {\n\n\tconst nav = document.getElementById('header');\n\tlet headroom = new Headroom(nav, {\n\t\toffset: 63,\n\t\ttolerance: {\n\t\t\tdown: 0,\n\t\t\tup: 5\n\t\t}\n\t});\n\theadroom.init();\n}\n\nexport default {\n\tinit\n};\n","import debug from 'bows';\n\nconst log = debug('popup');\n\nexport default class {\n\t/**\n\t * Menu constructor\n\t */\n\tconstructor(opts = {}) {\n\t\tthis.opts = Object.assign({\n\t\t\toverlay: '.popup-content',\n\t\t\tclasses: {\n\t\t\t\topen: 'popup-content--open',\n\t\t\t\tbody: 'fixed',\n\t\t\t},\n\t\t\tclosers: [\n\t\t\t\t'.popup-content__close',\n\t\t\t],\n\t\t\tfocused: 'input[type=\"text\"]'\n\t\t}, opts);\n\n\t\tthis.node = (typeof this.opts.overlay === 'string') ? document.querySelector(this.opts.overlay) : this.opts.overlay;\n\n\t\tif (!this.node) {\n\t\t\tlog('.overlay missing, abort!');\n\t\t\treturn;\n\t\t}\n\n\t\t// This action is called from ajax, so it will be open on call\n\t\tthis.opened = true;\n\n\n\t\tthis.closer = null;\n\t\tthis.closers = Array.from(document.querySelectorAll(this.opts.closers.join(', ')));\n\n\t\tif (this.closers.length > 0) {\n\t\t\tlet boundCloseClick = (e) => {\n\t\t\t\tlog('boundCloseClick');\n\t\t\t\t// Only actively link to nav menu clicks\n\t\t\t\tif (e && e.preventDefault) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tthis.closer = e.target;\n\t\t\t\tthis.close();\n\t\t\t}\n\n\t\t\tthis.closers.forEach((closer) => {\n\t\t\t\tlog(closer);\n\t\t\t\tcloser.addEventListener('click', boundCloseClick);\n\t\t\t});\n\t\t}\n\n\t\t// focused element on open\n\t\tthis.focused = (typeof this.opts.focused === 'string') ? this.node.querySelector(this.opts.focused) : this.opts.focused;\n\n\t\t// listener for esc key\n\t\tthis.keyup = (e) => {\n\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tlet pco = document.querySelector('.popup-content--open');\n\t\t\t\tif (pco !== null) {\n\t\t\t\t\tthis.close(this.initOpened);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tlog('pop-constructor')\n\t\tdocument.addEventListener('keyup', this.keyup); // start listening for esc key\n\n\t}\n\n\t/**\n\t * Close the overlay\n\t */\n\tclose() {\n\t\t// 1. Remove listener for esc key\n\t\t// document.removeEventListener('keyup', this.keyup); // stop listening for esc key\n\t\tlog('dan');\n\t\tthis.node.scrollTop = 0;\n\n\t\tthis.node.classList.remove(this.opts.classes.open);\n\t\tdocument.body.classList.remove(this.opts.classes.body);\n\n\t\tif (this.opener) {\n\t\t\tthis.opener.focus();\n\t\t}\n\n\t\tthis.opened = false; // internal flag\n\n\t\tlog('closed');\n\t}\n\n}\n","import debug from 'bows';\n\nconst log = debug('tooltip');\n\nexport default class {\n\tconstructor(opts) {\n\t\tthis.opts = Object.assign( {\n\t\t\tnode : document.body,\n\t\t\tclass : 'tooltip',\n\t\t\tparentNode : document.body,\n\t\t\tduration : 1500,\n\t\t\tfadeDuration: 800,\n\t\t}, opts );\n\n\t\tif ( ! this.opts.text ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.opts.class = this.opts.class.trim();\n\n\t\t// create our tooltip node\n\t\tthis.tip = document.createElement('span');\n\t\tthis.tip.className = this.opts.class;\n\t\tthis.tip.appendChild( document.createTextNode( this.opts.text ) );\n\n\t\t// the arrow on top/bottom\n\t\tthis.arrow = document.createElement('span');\n\t\tthis.arrow.className = `${this.opts.class}__arrow`;\n\t\tthis.tip.appendChild(this.arrow);\n\n\t\tthis.show();\n\n\t\t// static listener so we can remove it\n\t\tthis._remove = () => {\n\t\t\tthis.tip.removeEventListener('transitionend', this._remove);\n\t\t\tthis.tip.parentNode.removeChild(this.tip);\n\t\t}\n\n\t\tlog(this);\n\t}\n\n\tposition() {\n\t\t// measure the target node\n\t\tconst rect = this.opts.node.getBoundingClientRect();\n\n\t\t// add the fixed top position + the document scroll\n\t\tlet top = rect.top + document.documentElement.scrollTop - this.tip.offsetHeight;\n\n\t\t// add the fixed left position plus\n\t\tlet left = rect.left + (rect.width / 2) + document.documentElement.scrollLeft - (this.tip.offsetWidth / 2);\n\n\t\tthis.tip.style.position = 'absolute';\n\t\tthis.tip.style.top = `${top}px`;\n\t\tthis.tip.style.left = `${left}px`;\n\n\t\tlet tipRect = this.tip.getBoundingClientRect();\n\t\tlet gutter = 5;\n\n\t\t// if our tooltip if above the viewport, flip it down\n\t\tif (tipRect.top < 1) {\n\t\t\tthis.tip.classList.add(`${this.opts.class}--below`);\n\t\t\tthis.tip.style.top = `${top + this.opts.node.offsetHeight + tipRect.height }px`\n\t\t\tlog('tooltip below');\n\t\t}\n\n\t\tif ( left < 0 ) {\n\t\t\tthis.tip.classList.add(`${this.opts.class}--offleft`);\n\t\t\tthis.tip.style.left = `${0 + gutter}px`;\n\t\t\tthis.arrow.style.left = `${Math.abs(left) - gutter}px`;\n\t\t\tlog('tooltip offleft', tipRect);\n\t\t} else if ( left + tipRect.width > document.documentElement.clientWidth ) {\n\t\t\tthis.tip.classList.add(`${this.opts.class}--right`);\n\t\t\tthis.tip.style.left = 'auto';\n\t\t\tthis.tip.style.right = `${0 + gutter}px`;\n\t\t\tthis.arrow.style.left = 'auto';\n\t\t\tthis.arrow.style.right = `${0 + gutter}px`;\n\t\t\tlog('tooltip offright', tipRect);\n\t\t}\n\t}\n\n\tshow() {\n\t\tif ( ! this.tip.parentNode ) {\n\t\t\t// add our tooltip to our target\n\t\t\tthis.opts.parentNode.appendChild(this.tip);\n\t\t}\n\n\t\tthis.position();\n\n\t\tif ( this.opts.duration > 0 ) {\n\t\t\tsetTimeout( this.remove.bind(this), this.opts.duration );\n\t\t}\n\t}\n\n\tremove() {\n\t\tthis.tip.classList.add('tooltip--removing');\n\t\tthis.tip.addEventListener('transitionend', this._remove);\n\t}\n}\n","import debug from 'bows';\nimport ClipboardJS from 'clipboardjs';\nimport Tooltip from './_tooltip';\n\nconst log = debug('clipboard');\n\nexport default class {\n constructor(selector) {\n this.selector = selector;\n\n if (!ClipboardJS.isSupported()) {\n return;\n }\n\n this._clipboardjs = new ClipboardJS(this.selector);\n\n this._clipboardjs.on('success', (e) => {\n log('clipboard copied', e);\n\n new Tooltip({\n node: e.trigger,\n text: e.trigger.dataset['clipboard-tooltip'] || 'Copied!',\n duration: parseInt(e.trigger.dataset['clipboard-tooltip-duration'], 10) || 1500\n });\n });\n\n this._clipboardjs.on('error', (e) => {\n log('error', e);\n });\n\n log(this);\n }\n}\n","import debug from 'bows';\n\nconst log = debug('keyboardFocus');\nconst keyboardFocusClass = 'keyboard--focus';\n\n// Internal flag\nlet keyboardFocus = false;\n\nexport function init() {\n\t// Keydown event trigger\n\twindow.addEventListener('keydown', (e) => {\n\t\tif (e.defaultPrevented || keyboardFocus) {\n\t\t\treturn; // Do nothing\n\t\t}\n\t\t// Capture certain keys (or alt key press)\n\t\tif ('Tab' === e.key || 'Enter' === e.key || e.altKey) {\n\t\t\tkeyboardFocus = true;\n\t\t\tdocument.body.classList.add(keyboardFocusClass);\n\t\t\tlog('site.keyboardFocus', keyboardFocus);\n\t\t}\n\t});\n\n\t// Mousedown event cancel\n\twindow.addEventListener('mousedown', (e) => {\n\t\tif (e.defaultPrevented || !keyboardFocus) {\n\t\t\treturn; // Do nothing\n\t\t}\n\t\t// Cancel keyboard active\n\t\tkeyboardFocus = false;\n\t\tdocument.body.classList.remove(keyboardFocusClass);\n\t\tlog('site.keyboardFocus', keyboardFocus);\n\t});\n};\n\nexport default {\n\tinit: init\n};\n","// external scripts\nimport debug from 'bows';\n\nimport { emptyLinks, externalLinks } from './_links';\nimport home from './templates/_home';\nimport header from './_header';\nimport Overlay from './_overlay';\nimport PopupContent from './_popup-content';\nimport Clipboard from './_clipboard';\nimport keyboardFocus from './_keyboardFocus';\n\nconst log = debug('site');\nclass Site {\n\tconstructor() {\n\n\t\tdocument.addEventListener('DOMContentLoaded', () => this.ready());\n\t\twindow.addEventListener('load', () => this.load());\n\t}\n\n\tready() {\n\t\texternalLinks();\n\n\t\tthis.overlay = new Overlay();\n\t\tthis.popup = new PopupContent();\n\t\tthis.clipboard = new Clipboard('[data-clipboard-text]');\n\t\tkeyboardFocus.init();\n\t\tif (document.body.classList.contains('single-annual_report')) {\n\t\t\tthis.home = home();\n\t\t}\n\n\t\tthis.header = header.init();\n\n\t\tlog('document.DOMContentLoaded');\n\t}\n\n\tload() {\n\t\t// example of ES2015 modules loading & tree shaking\n\t\temptyLinks();\n\n\t\tlog('window.load');\n\t}\n}\n\nexport default Site;\n","import debug from 'bows';\n\nexport function emptyLinks() {\n\tconst log = debug('links:emptyLinks');\n\tconst links = Array.prototype.slice.call(document.querySelectorAll('a[href=\"\"], a[href=\"#\"]'));\n\n\tlinks.forEach((link) => {\n\t\tlink.addEventListener('click', (e) => {\n\t\t\te.preventDefault();\n\t\t\tlog('empty link not followed', link);\n\t\t});\n\t});\n\tlog(`There are ${links.length} empty links on this page`, links);\n}\n\nexport function externalLinks() {\n\tconst log = debug('links:externalLinks');\n\tconst links = Array.prototype.slice.call(document.querySelectorAll('a[href]:not([target])')).filter((link) => {\n\t\tconst href = link.href.trim();\n\t\tconst isEmpty = href === '';\n\t\tconst isLocal = href.indexOf(document.location.origin) === 0;\n\t\tconst isAnchor = href.indexOf('#') === 0;\n\n\t\tif (isEmpty || isLocal || isAnchor) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t});\n\n\tlinks.forEach((link) => {\n\t\tlink.target = '_blank';\n\t});\n\n\tlog(`There are ${links.length} external links on this page`, links);\n}\n\nexport default {\n\temptyLinks : emptyLinks,\n\texternalLinks: externalLinks\n};\n"],"names":["accordionSet","toggleAccordion","e","target","parentElement","classList","contains","remove","nextElementSibling","add","this","querySelectorAll","forEach","accordionItem","firstElementChild","addEventListener","url","indexOf","log","$","get","done","data","let","popupReceiver","document","querySelector","innerHTML","items","slideGroup","slides","currentSlideOutput","totalSlideOutput","prevButton","nextButton","captionReceiver","flickity","Flickity","cellAlign","draggable","pageDots","cellSelector","prevNextButtons","on","select","index","currentSlide","pad","totalSlides","length","caption","captionContent","previous","next","accordionItems","Accordion","body","debug","Number","prototype","size","s","String","node","wrap","leftColumn","rightColumn","hasClickedNav","flicktiyData","selectedIndex","leftColumnContent","rightColumnContent","buttonLink","preventDefault","slide_ajax","href","window","pageYOffset","documentElement","scrollTop","const","opts","jthrottled","scrollY","getScrollY","innerContentHeight","offsetHeight","scrollTriggerPoint","offsetTop","scrollDepth","innerHeight","Object","assign","threshold","throttle","innerContent","getElementsByClassName","fn","time","timer","throttledFn","setTimeout","args","cancel","clearTimeout","playButton","panelImage","panelContentWrapper","panelMediaMeta","videoLink","dataset","isWatch","split","iframe","createElement","setAttribute","removeChild","prepend","Home","panelSlides","Array","from","map","panelHalfContent","panelMedia","overlay","classes","open","openers","closers","focused","regions","regionsWrapper","overlayBackground","opened","opener","join","closer","boundOpenClick","boundCloseClick","parentNode","close","keyup","key","initOpened","region","boundRegionHover","regionHover","regionLeave","nav","getElementById","Headroom","offset","tolerance","down","up","init","focus","removeEventListener","toggle","backgroundImageUrl","hoverImage","undefined","style","backgroundImage","removeProperty","class","duration","fadeDuration","text","trim","tip","className","appendChild","createTextNode","arrow","show","_remove","position","rect","getBoundingClientRect","top","left","width","scrollLeft","offsetWidth","tipRect","height","Math","abs","clientWidth","right","bind","selector","ClipboardJS","isSupported","_clipboardjs","Tooltip","trigger","parseInt","keyboardFocusClass","keyboardFocus","Site","ready","load","defaultPrevented","altKey","links","slice","call","filter","link","isEmpty","isLocal","location","origin","isAnchor","Overlay","popup","PopupContent","clipboard","Clipboard","home","header"],"mappings":"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"}