{"version":3,"file":"site.js","sources":["../../node_modules/bows/dist/bows.min.js","../js/base/_size.js","../js/base/_isTouch.js","../js/base/_fitvid.js","../js/base/_keyboardFocus.js","../js/base/_smoothScroll.js","../../node_modules/clipboard/dist/clipboard.js","../js/base/_share.js","../../node_modules/lazysizes/lazysizes.js","../../node_modules/lazysizes/plugins/print/ls.print.js","../js/_general.js","../js/_dropdown.js","../../node_modules/object-fit-images/dist/ofi.common-js.js","../../node_modules/focus-within-polyfill/dist/focus-within-polyfill.js","../../node_modules/picturefill/dist/picturefill.js","../../node_modules/@glidejs/glide/dist/glide.esm.js","../js/_storyslider.js","../js/_resources.js","../js/_modal.js","../../node_modules/headroom.js/dist/headroom.js","../../node_modules/hoverintent/index.js","../js/_nav.js","../js/base/_tabs.js","../js/_breadcrumbs.js","../js/_tables.js","../js/_report.js","../js/gtm-tracking.js","../js/_covid-report.js","../js/site.js"],"sourcesContent":["!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var n;\"undefined\"!=typeof window?n=window:\"undefined\"!=typeof global?n=global:\"undefined\"!=typeof self&&(n=self),n.bows=e()}}(function(){return function e(n,o,r){function t(f,d){if(!o[f]){if(!n[f]){var u=\"function\"==typeof require&&require;if(!d&&u)return u(f,!0);if(i)return i(f,!0);var a=new Error(\"Cannot find module '\"+f+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var s=o[f]={exports:{}};n[f][0].call(s.exports,function(e){var o=n[f][1][e];return t(o||e)},s,s.exports,e,n,o,r)}return o[f].exports}for(var i=\"function\"==typeof require&&require,f=0;f=31||t}(),v=null,h=null,y=!1,m={};d&&\"!\"===d[0]&&\"/\"===d[1]&&(y=!0,d=d.slice(1)),h=d&&\"/\"===d[0]&&new RegExp(d.substring(1,d.length-1));for(var b=[\"log\",\"debug\",\"warn\",\"error\",\"info\"],x=0,E=b.length;x1){var v=Array.prototype.slice.call(arguments,1);d=d.concat(v)}return t=a.apply(u.log,d),b.forEach(function(e){t[e]=a.apply(u[e]||t,d)}),t},v.config=function(e){e.padLength&&(p=e.padLength),\"boolean\"==typeof e.padding&&(c=e.padding),e.separator?l=e.separator:!1!==e.separator&&\"\"!==e.separator||(l=\"\")},void 0!==n?n.exports=v:window.bows=v}).call()}).call(this,e(\"_process\"))},{_process:3,andlog:2}],2:[function(e,n,o){!function(){var e=\"undefined\"==typeof window,r=!e&&function(){var e;try{e=window.localStorage}catch(e){}return e}(),t={};if(e||!r)return void(n.exports=console);var i=r.andlogKey||\"debug\";if(r&&r[i]&&window.console)t=window.console;else for(var f=\"assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn\".split(\",\"),d=f.length,u=function(){};d--;)t[f[d]]=u;void 0!==o?n.exports=t:window.console=t}()},{}],3:[function(e,n,o){function r(){}var t=n.exports={};t.nextTick=function(){var e=\"undefined\"!=typeof window&&window.setImmediate,n=\"undefined\"!=typeof window&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(n){var o=[];return window.addEventListener(\"message\",function(e){var n=e.source;if((n===window||null===n)&&\"process-tick\"===e.data&&(e.stopPropagation(),o.length>0)){o.shift()()}},!0),function(e){o.push(e),window.postMessage(\"process-tick\",\"*\")}}return function(e){setTimeout(e,0)}}(),t.title=\"browser\",t.browser=!0,t.env={},t.argv=[],t.on=r,t.addListener=r,t.once=r,t.off=r,t.removeListener=r,t.removeAllListeners=r,t.emit=r,t.binding=function(e){throw new Error(\"process.binding is not supported\")},t.cwd=function(){return\"/\"},t.chdir=function(e){throw new Error(\"process.chdir is not supported\")}},{}]},{},[1])(1)});","import debug from 'bows/dist/bows.min.js';\n\nconst sizeResize = {\n\txlarge: [],\n\tlarge: [],\n\tmedium: [],\n\tsmall: [],\n\tany: [],\n\tbody: document.body,\n\tsmall_max: 640,\n\tmedium_max: 1000,\n\tlarge_max: 1200,\n\tpause: 100,\n\tcurrentSize: '',\n\tpreviousSize: ''\n};\n\n\nexport function addXlarge(func, params) {\n\tsizeResize.xlarge.push([func, params]);\n}\n\nexport function addLarge(func, params) {\n\tsizeResize.large.push([func, params]);\n}\n\nexport function addMedium(func, params) {\n\tsizeResize.medium.push([func, params]);\n}\n\nexport function addSmall(func, params) {\n\tsizeResize.small.push([func, params]);\n}\n\nexport function addAny(func, params) {\n\tsizeResize.any.push([func, params]);\n}\n\nexport function getWidth() {\n\treturn sizeResize.body.clientWidth;\n}\n\nexport function getCurrent(width) {\n\tsizeResize.previousSize = sizeResize.currentSize;\n\tif (width <= sizeResize.small_max) {\n\t\tsizeResize.currentSize = 'small';\n\t} else if (width > sizeResize.small_max && width <= sizeResize.medium_max) {\n\t\tsizeResize.currentSize = 'medium';\n\t} else if (width > sizeResize.medium_max && width <= sizeResize.large_max) {\n\t\tsizeResize.currentSize = 'large';\n\t} else {\n\t\tsizeResize.currentSize = 'xlarge';\n\t}\n\treturn sizeResize.currentSize;\n}\n\nexport function runFunctions() {\n\tsizeResize.body.classList.remove('size--xlarge');\n\tsizeResize.body.classList.remove('size--large');\n\tsizeResize.body.classList.remove('size--medium');\n\tsizeResize.body.classList.remove('size--small');\n\tif (sizeResize.currentSize === 'small') {\n\t\tsizeResize.body.classList.add('size--small');\n\t\tfor (var i = 0; i < sizeResize.small.length; i++) {\n\t\t\tsizeResize.small[i][0].apply(this, sizeResize.small[i][1]);\n\t\t}\n\t} else if (sizeResize.currentSize === 'medium') {\n\t\tsizeResize.body.classList.add('size--medium');\n\t\tfor (var i = 0; i < sizeResize.medium.length; i++) {\n\t\t\tsizeResize.medium[i][0].apply(this, sizeResize.medium[i][1]);\n\t\t}\n\t} else if (sizeResize.currentSize === 'large') {\n\t\tsizeResize.body.classList.add('size--large');\n\t\tfor (var i = 0; i < sizeResize.large.length; i++) {\n\t\t\tsizeResize.large[i][0].apply(this, sizeResize.large[i][1]);\n\t\t}\n\t} else if (sizeResize.currentSize === 'xlarge') {\n\t\tsizeResize.body.classList.add('size--xlarge');\n\t\tfor (var i = 0; i < sizeResize.xlarge.length; i++) {\n\t\t\tsizeResize.xlarge[i][0].apply(this, sizeResize.xlarge[i][1]);\n\t\t}\n\t}\n\n\tfor (var i = 0; i < sizeResize.any.length; i++) {\n\t\tsizeResize.any[i][0].apply(this, sizeResize.any[i][1]);\n\t}\n}\n\nexport function sizeCheck() {\n\tconst _this = this;\n\tif (_this.getCurrent(_this.getWidth()) === sizeResize.previousSize) {\n\t\treturn false;\n\t}\n\n\t_this.runFunctions();\n}\n\nexport function init() {\n\tconst _this = this;\n\t_this.getCurrent(_this.getWidth());\n\t_this.runFunctions();\n\n\tvar endResizeEvent;\n\twindow.onresize = function () {\n\t\tclearTimeout(endResizeEvent);\n\t\tendResizeEvent = setTimeout(function () {\n\t\t\t// Run code here, resizing has \"stopped\"\n\t\t\t_this.sizeCheck();\n\t\t}, sizeResize.pause);\n\t}\n}\n\n\nexport default {\n\tinit: init,\n\taddXlarge: addXlarge,\n\taddLarge: addLarge,\n\taddMedium: addMedium,\n\taddSmall: addSmall,\n\taddAny: addAny,\n\tgetWidth: getWidth,\n\tgetCurrent: getCurrent,\n\trunFunctions: runFunctions,\n\tsizeCheck: sizeCheck\n};\n","let istouch = {\n $html: ''\n};\n\nexport function is_touch_device() {\n return (('ontouchstart' in window) || (navigator.MaxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0));\n}\n\nexport function init() {\n const _this = this;\n istouch.$html = document.querySelector('html');\n if (!_this.is_touch_device()) {\n istouch.$html.classList.add('no-touchevents');\n } else {\n istouch.$html.classList.add('touchevents');\n }\n}\n\n\nexport default {\n init: init,\n is_touch_device: is_touch_device\n};\n","/**\n * this implementation of fitvid doesn't force items to 16/9. It measures them and then keeps the ratio unique per embed\n *\n * @var selectors (string|array) additional selectors search for in the DOM\n * @return nodes - array of matched items\n */\n\nexport default function (selectors) {\n\tconst config = {\n\t\tselectors: [\n\t\t\t'iframe[src*=\"player.vimeo.com\"]',\n\t\t\t'iframe[src*=\"youtube.com\"]',\n\t\t\t'iframe[src*=\"youtube-nocookie.com\"]',\n\t\t\t//'object',\n\t\t\t'embed'\n\t\t]\n\t};\n\n\tif (selectors) {\n\t\tif (!Array.isArray(selectors)) {\n\t\t\tselectors = [selectors];\n\t\t}\n\t\tconfig.selectors = config.selectors.concat(opts.selectors).filter((val, index, arr) => arr.indexOf(val) === index);\n\t}\n\n\tconst nodes = Array.prototype.slice.call(document.querySelectorAll(config.selectors.join(',')));\n\n\tif (nodes.length > 0) {\n\t\tnodes.forEach((node) => {\n\t\t\tif (node.getAttribute('data-fitvid')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst wrapper = document.createElement('div');\n\t\t\tconst computed = window.getComputedStyle(node);\n\t\t\tconst ratio = ((computed.height > 0 && computed.width > 0) ? computed.height / computed.width : 9 / 16) * 100;\n\n\t\t\twrapper.className = 'fitvid';\n\t\t\twrapper.style.width = '100%';\n\t\t\twrapper.style.height = 0;\n\t\t\twrapper.style.position = 'relative';\n\t\t\twrapper.style.paddingTop = `${ratio}%`;\n\n\t\t\tnode.style.position = 'absolute';\n\t\t\tnode.style.top = 0;\n\t\t\tnode.style.left = 0;\n\t\t\tnode.style.width = '100%';\n\t\t\tnode.style.height = '100%';\n\t\t\tnode.setAttribute('data-fitvid', ratio);\n\t\t\tnode.parentNode.insertBefore(wrapper, node);\n\n\t\t\twrapper.appendChild(node);\n\t\t});\n\t}\n\n\treturn nodes;\n}\n","import debug from 'bows/dist/bows.min.js';\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","import $ from \"jquery\";\nimport debug from 'bows/dist/bows.min.js';\n\n//const linksToAnchors = $('ul#mega-menu-modern_global a[href*=\"#\"]');\nconst linksToAnchors = $('*:not(.owl-carousel) a[href*=\"#\"]:not(.kt-tab-title)');\n\nconst log = debug(\"scroll\");\nconst $jmm = $('.jump-menu-mobile');\n\nexport function anchorLinkHandler(e) {\n\t\n\t// /alert('whyyy');\n\tlet href = $(this).prop('hash');\n\tlet pathname = $(this).prop('pathname');\n\tlet $where = $(href);\n\tconsole.log('Starting jump element ' + href);\n\tif ($where.length && $($where).hasClass('is-style-modal-content')) {\n\t\t$($where).modal();\n\t\treturn false;\n\t} else if ($where.length) {\n\t\te.preventDefault();\n\t\tconsole.log('Found jump element ' + href);\n\t\tif ($('#mega-menu-wrap-modern_global .mega-menu-toggle').hasClass('mega-menu-open')){\n\t\t\t\n\t\t\t$('#mega-menu-wrap-modern_global .mega-menu-toggle').trigger( \"click\" );\n\t\t}\n\t\tvar elem = document.querySelector(href);\n\t\tvar topDistance = elem.offsetTop;//getBoundingClientRect().top;\n\t\t//let topDistance = $where.offset().top;\n\t\tlet $header = $('#header-modern');\n\t\t/*if ($jmm.css('display') === 'block') {\n\t\t\ttopDistance -= 40;\n\t\t} else {\n\t\t\ttopDistance -= 80;\n\t\t}*/\n\t\tlet $offset = 75;\n\t\tif ($(window).width()<901){\n\t\t\t$offset = 80;\n\t\t}\n\t\ttopDistance = parseInt(topDistance) - $header.height() - $offset;\n\t\t$(window).scrollTop(topDistance);\n\t\tdocument.scrollingElement.scrollTop = topDistance;\n\t\t$('.debug-element').html(topDistance + ' ' +href);\n\t\tconsole.log('vert scroll ' + topDistance);\n\t\t//window.history.hash = href;\n\t\t//if ($(location).attr(\"pathname\") == pathname){\n\n\t\t\twindow.history.pushState(null, null, href);\n\t\t\t/*\n\t\t\t$('html, body').animate({ scrollTop: topDistance }, 500, function () {\n\t\t\t\tlet current = $(`.jump-menu__link[href=\"${href}\"]`);\n\t\t\t\tif (current.length) {\n\t\t\t\t\tlet text = current.eq(0).text();\n\t\t\t\t\t$('.jump-menu-mobile').find('.dropdown__select').text(text);\n\t\t\t\t\t$('.jump-menu__link--mobile').removeClass('jump-menu__link--active');\n\t\t\t\t\t$('.jump-menu__item').children().removeClass('jump-menu__link--active');\n\t\t\t\t\tcurrent.addClass('jump-menu__link--active');\n\t\t\t\t}\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif ($header.hasClass('headroom--not-top') === true) {\n\t\t\t\t\t\t$header.removeClass('headroom--pinned').addClass('headroom--unpinned');\n\t\t\t\t\t}\n\t\t\t\t}, 100);\n\n\t\t\t});*/\n\t\t\t\n\t\t\te.preventDefault();\n\t\t//}\n\t}\n\n\n\t// log(topDistance);\n\t// const distanceToTop = el => Math.floor(el.getBoundingClientRect().top);\n\n\n\t// const targetID = this.getAttribute(\"href\");\n\t// const targetCheck = targetID.split('#');\n\n\t// if (targetCheck[1] === '') { return; }\n\n\t// const targetAnchor = document.querySelector(targetID);\n\t// if (!targetAnchor) return;\n\t// let originalTop = distanceToTop(targetAnchor);\n\n\t// if ($jmm.css('display') === 'block') {\n\n\t// \toriginalTop -= 20;\n\t// }\n\n\t// window.scrollBy({ top: originalTop, left: 0, behavior: \"smooth\" });\n\n\t// const checkIfDone = setInterval(function () {\n\t// \tconst atBottom =\n\t// \t\twindow.innerHeight + window.pageYOffset >= document.body.offsetHeight - 2;\n\t// \tif (distanceToTop(targetAnchor) === 0 || atBottom) {\n\t// \t\ttargetAnchor.tabIndex = \"-1\";\n\t// \t\ttargetAnchor.focus();\n\n\t// \t\twindow.history.pushState(\"\", \"\", targetID);\n\t// \t\tclearInterval(checkIfDone);\n\n\t// \t}\n\t// \ttargetAnchor.addEventListener(\"blur\", function () {\n\t// \t\ttargetAnchor.removeAttribute('tabIndex');\n\n\t// \t});\n\n\t// \tlog('done');\n\t// let current = $(`.jump-menu__link[href=\"${targetID}\"]`);\n\t// if (current.length) {\n\t// \tlet text = current.eq(0).text();\n\t// \t$('.jump-menu-mobile').find('.dropdown__select').text(text);\n\t// \t$('.jump-menu__link--mobile').removeClass('jump-menu__link--active');\n\t// \t$('.jump-menu__item').children().removeClass('jump-menu__link--active');\n\t// \tcurrent.addClass('jump-menu__link--active');\n\t// }\n\t// }, 100);\n}\n\nexport function init() {\n\tconsole.log('init scroll jumpy thing');\n\t//log(`scroll init`);\n\tconsole.log(linksToAnchors);\n\t$(linksToAnchors).off();\n\t$(linksToAnchors).addClass('fancy-jump');\n\tif (linksToAnchors.length) {\n\t\tlinksToAnchors.on('click', anchorLinkHandler);\n\t}\n\t$('.owl-carousel').on('click', 'a[href*=\"#\"]', anchorLinkHandler);\n/*\n\t$(\"ul#mega-menu-modern_global\").on(\"mmm:showMobileMenu\", function() {\n\t\tlet megaAnchors = $('ul#mega-menu-modern_global a[href^=\"#\"]');\n\t\tconsole.log(megaAnchors);\n\t\tif(megaAnchors.length){\n\t\t\tmegaAnchors.on('click', anchorLinkHandler);\n\t\t}\n\t});*/\n}\n\nexport default {\n\tinit: init,\n\tanchorLinkHandler: anchorLinkHandler\n};\n","/*!\n * clipboard.js v2.0.4\n * https://zenorocha.github.io/clipboard.js\n * \n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clipboardAction = __webpack_require__(1);\n\nvar _clipboardAction2 = _interopRequireDefault(_clipboardAction);\n\nvar _tinyEmitter = __webpack_require__(3);\n\nvar _tinyEmitter2 = _interopRequireDefault(_tinyEmitter);\n\nvar _goodListener = __webpack_require__(4);\n\nvar _goodListener2 = _interopRequireDefault(_goodListener);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\nvar Clipboard = function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));\n\n _this.resolveOptions(options);\n _this.listenClick(trigger);\n return _this;\n }\n\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = _typeof(options.container) === 'object' ? options.container : document.body;\n }\n\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: 'listenClick',\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: 'onClick',\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new _clipboardAction2.default({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n container: this.container,\n trigger: trigger,\n emitter: this\n });\n }\n\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultAction',\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultTarget',\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: 'defaultText',\n\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n }\n }], [{\n key: 'isSupported',\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n\n return support;\n }\n }]);\n\n return Clipboard;\n}(_tinyEmitter2.default);\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\n\nfunction getAttributeValue(suffix, element) {\n var attribute = 'data-clipboard-' + suffix;\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n\nmodule.exports = Clipboard;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _select = __webpack_require__(2);\n\nvar _select2 = _interopRequireDefault(_select);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\nvar ClipboardAction = function () {\n /**\n * @param {Object} options\n */\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n\n _createClass(ClipboardAction, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = options.action;\n this.container = options.container;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n\n this.selectedText = '';\n }\n\n /**\n * Decides which selection strategy is going to be applied based\n * on the existence of `text` and `target` properties.\n */\n\n }, {\n key: 'initSelection',\n value: function initSelection() {\n if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n }\n }\n\n /**\n * Creates a fake textarea element, sets its value from `text` property,\n * and makes a selection on it.\n */\n\n }, {\n key: 'selectFake',\n value: function selectFake() {\n var _this = this;\n\n var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\n\n this.removeFake();\n\n this.fakeHandlerCallback = function () {\n return _this.removeFake();\n };\n this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n\n this.fakeElem = document.createElement('textarea');\n // Prevent zooming on iOS\n this.fakeElem.style.fontSize = '12pt';\n // Reset box model\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0';\n // Move element out of screen horizontally\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\n // Move element to the same position vertically\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n this.fakeElem.style.top = yPosition + 'px';\n\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n\n this.container.appendChild(this.fakeElem);\n\n this.selectedText = (0, _select2.default)(this.fakeElem);\n this.copyText();\n }\n\n /**\n * Only removes the fake element after another click event, that way\n * a user can hit `Ctrl+C` to copy because selection still exists.\n */\n\n }, {\n key: 'removeFake',\n value: function removeFake() {\n if (this.fakeHandler) {\n this.container.removeEventListener('click', this.fakeHandlerCallback);\n this.fakeHandler = null;\n this.fakeHandlerCallback = null;\n }\n\n if (this.fakeElem) {\n this.container.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n }\n\n /**\n * Selects the content from element passed on `target` property.\n */\n\n }, {\n key: 'selectTarget',\n value: function selectTarget() {\n this.selectedText = (0, _select2.default)(this.target);\n this.copyText();\n }\n\n /**\n * Executes the copy operation based on the current selection.\n */\n\n }, {\n key: 'copyText',\n value: function copyText() {\n var succeeded = void 0;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n }\n\n /**\n * Fires an event based on the copy operation result.\n * @param {Boolean} succeeded\n */\n\n }, {\n key: 'handleResult',\n value: function handleResult(succeeded) {\n this.emitter.emit(succeeded ? 'success' : 'error', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n\n /**\n * Moves focus away from `target` and back to the trigger, removes current selection.\n */\n\n }, {\n key: 'clearSelection',\n value: function clearSelection() {\n if (this.trigger) {\n this.trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n\n /**\n * Sets the `action` to be performed which can be either 'copy' or 'cut'.\n * @param {String} action\n */\n\n }, {\n key: 'destroy',\n\n\n /**\n * Destroy lifecycle.\n */\n value: function destroy() {\n this.removeFake();\n }\n }, {\n key: 'action',\n set: function set() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n\n this._action = action;\n\n if (this._action !== 'copy' && this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n }\n\n /**\n * Gets the `action` property.\n * @return {String}\n */\n ,\n get: function get() {\n return this._action;\n }\n\n /**\n * Sets the `target` property using an element\n * that will be have its content copied.\n * @param {Element} target\n */\n\n }, {\n key: 'target',\n set: function set(target) {\n if (target !== undefined) {\n if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n }\n\n /**\n * Gets the `target` property.\n * @return {String|HTMLElement}\n */\n ,\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n}();\n\nmodule.exports = ClipboardAction;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar is = __webpack_require__(5);\nvar delegate = __webpack_require__(6);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar closest = __webpack_require__(7);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ })\n/******/ ]);\n});","//import $ from \"jquery\";\nimport debug from 'bows/dist/bows.min.js';\nimport ClipboardJS from 'clipboard';\n\nconst elem = document.querySelectorAll(\".share__link--modal\");\nconst log = debug(\"share\");\n\nexport function sharePop(e) {\n\t//elem.addEventListener(\"click\", function(e) {\n\n\tconst href = $(this).attr(\"href\");\n\tconst t = (window.screen.height - 350) / 2;\n\tconst l = (window.screen.width - 550) / 2;\n\tlog(l);\n\tconst opts = [\n\t\t\"scrollbars=yes\",\n\t\t\"resizable=yes\",\n\t\t\"toolbar=no\",\n\t\t\"location=yes\",\n\t\t\"width=550\",\n\t\t\"height=350\",\n\t\t\"top=\" + t,\n\t\t\"left=\" + l\n\t];\n\treturn window.open(href, \"sharer\", opts.join(\",\"));\n\t//});\n}\n\nexport function init() {\n\tlog(`share init`);\n\tif (elem !== undefined) {\n\t\tfor (let i = 0; i < elem.length; i++) {\n\t\t\telem[i].addEventListener(\"click\", sharePop);\n\t\t}\n\t}\n\n\tlet clipboard = new ClipboardJS('[data-clipboard-text]');\n\tlet copied = document.querySelector('.share__copied');\n\n\tclipboard.on('success', function (e) {\n\t\tcopied.textContent = \"Page URL Copied\";\n\t\tcopied.classList.add('share__copied--success');\n\t\tsetTimeout(() => {\n\t\t\tcopied.classList.remove('share__copied--success');\n\t\t}, 3000);\n\t\tsetTimeout(() => {\n\t\t\tcopied.textContent = \"\";\n\t\t}, 3500);\n\t});\n\n\tclipboard.on('error', function (e) {\n\t\tcopied.textContent = \"URL not copied\";\n\t\tcopied.classList.add('share__copied--error');\n\t\tsetTimeout(() => {\n\t\t\tcopied.classList.remove('share__copied--error');\n\t\t}, 1000);\n\t\tsetTimeout(() => {\n\t\t\tcopied.textContent = \"\";\n\t\t}, 1250);\n\t});\n}\n\nexport default {\n\tinit: init,\n\tsharePop: sharePop\n};\n","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\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\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","/*\nThis lazySizes extension adds better support for print.\nIn case the user starts to print lazysizes will load all images.\n*/\n(function(window, factory) {\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(window, function(window, document, lazySizes) {\n\t/*jshint eqnull:true */\n\t'use strict';\n\tvar config, elements, onprint, printMedia;\n\t// see also: http://tjvantoll.com/2012/06/15/detecting-print-requests-with-javascript/\n\tif(window.addEventListener){\n\t\tconfig = lazySizes && lazySizes.cfg;\n\t\telements = config.lazyClass || 'lazyload';\n\t\tonprint = function(){\n\t\t\tvar i, len;\n\t\t\tif(typeof elements == 'string'){\n\t\t\t\telements = document.getElementsByClassName(elements);\n\t\t\t}\n\n\t\t\tif(lazySizes){\n\t\t\t\tfor(i = 0, len = elements.length; i < len; i++){\n\t\t\t\t\tlazySizes.loader.unveil(elements[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\taddEventListener('beforeprint', onprint, false);\n\n\t\tif(!('onbeforeprint' in window) && window.matchMedia && (printMedia = matchMedia('print')) && printMedia.addListener){\n\t\t\tprintMedia.addListener(function(){\n\t\t\t\tif(printMedia.matches){\n\t\t\t\t\tonprint();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}));\n","import $ from \"jquery\";\nimport debug from 'bows/dist/bows.min.js';\nimport 'lazysizes';\nimport 'lazysizes/plugins/print/ls.print';\nimport 'waypoints';\n\n\nconst log = debug(\"general\");\nconst body = $('body');\n\nlet $jump = $('.jump-menu');\nlet $jm = $('.section, #overview, .region, .area');\nlet $jmi = $('.jump-menu__item');\nlet $jlm = $('.jump-menu__link--mobile');\nlet $overview = $(`.jump-menu__link[href=\"#overview\"]`);\nlet isOverview = false;\n\n\nfunction mobileJumpNav() {\n\tif (body.width() >= 1024) {\n\t\tlet $vH = $(window).height() - $('.header').height();\n\t\t//get jump menu width instead of height b/c menu is inverted\n\t\tlet $jmw = $jump.width();\n\t\tif ($jmw > $vH) {\n\t\t\t$jump.hide();\n\t\t\tbody.addClass('page-wide');\n\t\t\t$('.jump-menu-mobile').addClass('jump-menu-mobile--active');\n\t\t} else {\n\t\t\tbody.removeClass('page-wide');\n\t\t\t$('.jump-menu-mobile').removeClass('jump-menu-mobile--active');\n\t\t\t$jump.removeAttr('style');\n\t\t\t$jump.css({\n\t\t\t\t'width': $jump.width(),\n\t\t\t\t'display': 'block',\n\t\t\t\t'opacity': 1\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction jumpReset() {\n\tlet text = $overview.eq(0).text();\n\t$('.jump-menu-mobile').find('.dropdown__select').text(text);\n\t$jlm.removeClass('jump-menu__link--active');\n\t$jmi.children().removeClass('jump-menu__link--active');\n\t$overview.addClass('jump-menu__link--active');\n}\n\n\n\nexport function init() {\n\tif ($(window).width() < 1024) {\n\t\tvar translation = $('.main-nav--large .translation-wrapper');\n\t\t$(translation).clone();\n\t\t$('.main-nav--small .main-nav__searchbox').prepend(translation);\n\t}\n\n\t$(window).on('resize', function(){\n\t\tif($(window).width() < 1024) {\n\t\t\tif($('.main-nav--small .translation-wrapper').length) {\n\t\t\t} else {\n\t\t\t\tvar translationLarge = $('.main-nav--large .translation-wrapper');\n\t\t\t\t$('.main-nav--small .main-nav__searchbox').prepend(translationLarge);\n\t\t\t}\t\t\n\t\t} else {\n\t\t\tif($('.main-nav--large .translation-wrapper').length) {\n\t\t\t} else {\n\t\t\t\tvar translationSmall = $('.main-nav--small .translation-wrapper');\n\t\t\t\t$('.main-nav--large .main-nav__bar').append(translationSmall);\n\t\t\t}\n\t\t}\n \t});\n\t\n\t\n\n\t$('.page-template-donate').find('.main-nav__logo').attr('target', '_blank');\n\n\tvar paragraphAlginment = $('.hp-intro__title').children().first().css(\"text-align\");\n\t$('.hp-intro-content .button-wrapper').css('text-align', paragraphAlginment);\n\n\t$('.wysiwyg').find('img.full-width-image').each(function () {\n\t\t$(this).wrap('
');\n\t\t$(this).removeClass('full-width-image');\n });\n \n // $(document).ready(function () {\n $('.wp-block-columns').each(function () {\n var totalCount = $(this).children('.wp-block-column').length.toString();\n $(this).addClass('has-' + totalCount + '-columns');\n });\n // });\n\n\t//section\n\n\tif ($jump.length) {\n\n\t\t//set Overview\n\t\tif ($overview.length) {\n\t\t\tjumpReset();\n\t\t}\n\n\t\t$overview.on('click', function () {\n\t\t\tisOverview = true;\n\n\t\t});\n\n\t\tlet endResizeEvent;\n\t\t$(window).on('resize', function () {\n\t\t\tlog('resize');\n\t\t\tclearTimeout(endResizeEvent);\n\t\t\tendResizeEvent = setTimeout(function () {\n\t\t\t\tmobileJumpNav();\n\t\t\t}, 100);\n\t\t});\n\n\t\tlet endScrollEvent;\n\t\t$(window).on('scroll', function () {\n\t\t\tclearTimeout(endScrollEvent);\n\t\t\tendScrollEvent = setTimeout(function () {\n\t\t\t\tif (isOverview === true) {\n\t\t\t\t\tjumpReset();\n\t\t\t\t\tisOverview = false;\n\t\t\t\t}\n\n\t\t\t}, 100);\n\t\t});\n\n mobileJumpNav();\n\t}\n\n\t//facets hide featured on paginated or filtered and scroll to top on load\n\n\t$(document).on('facetwp-loaded', function () {\n\t\tif (window.location.href.indexOf(\"fwp_\") > -1) {\n\t\t\t$('.archive-listing--featured').hide();\n\t\t} else {\n\t\t\t$('.archive-listing--featured').show();\n\t\t}\n\t\t$('html, body').animate({\n\t\t\tscrollTop: 0\n\t\t}, 500);\n\n });\n \n\t$('figure[aria-describedby], .wp-caption').each(function () {\n\t\tlog($(this).width());\n\t\tlet maxWidth = $(this).find('img').width();\n\t\t$(this).find('figcaption').css('max-width', maxWidth);\n });\n\n}\n\nexport default {\n\tinit\n};\n\n//jump menu. need to determine height of menu vs viewport height and show/hide mobile or non-mobile based on that\n//if jump menu length > viewport height, show mobile (hide non-mobile)\n","import $ from \"jquery\";\nimport debug from 'bows/dist/bows.min.js';\n\n\nconst log = debug(\"dropdown\");\nconst body = $('body');\n\nexport function init() {\n\t$('.dropdown__select').on('click', function () {\n\t\t$(this).toggleClass('dropdown__select--open');\n\t\t$(this).next('.dropdown__items').slideToggle();\n\t});\n\n\t$('.jump-menu__link--mobile').on('click', function () {\n\t\tlet $dropdown = $(this).closest('.dropdown');\n\t\t$dropdown.find('.dropdown__select').toggleClass('dropdown__select--open');\n\t\t$dropdown.find('.dropdown__items').slideToggle();\n\n\t});\n}\n\nexport default {\n\tinit\n};\n","/*! npm.im/object-fit-images 3.2.4 */\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\n}\n\nfunction polyfillCurrentSrc(el) {\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\n\t}\n}\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction setPlaceholder(img, width, height) {\n\t// Default: fill width, no height\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\n\n\t// Only set placeholder if it's different\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\n\t}\n}\n\nfunction onImageReady(img, callback) {\n\t// naturalWidth is only available when the image headers are loaded,\n\t// this loop will poll it every 100ms.\n\tif (img.naturalWidth) {\n\t\tcallback(img);\n\t} else {\n\t\tsetTimeout(onImageReady, 100, img, callback);\n\t}\n}\n\nfunction fixOne(el) {\n\tvar style = getStyle(el);\n\tvar ofi = el[OFI];\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// Avoid running where unnecessary, unless OFI had already done its deed\n\tif (!ofi.img) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// keep a clone in memory while resetting the original to a blank\n\tif (!ofi.img) {\n\t\tofi.img = new Image(el.width, el.height);\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\n\n\t\t// preserve for any future cloneNode calls\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\t\tif (el.srcset) {\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n\t\t}\n\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\n\n\t\t// remove srcset because it overrides src\n\t\tif (el.srcset) {\n\t\t\tel.srcset = '';\n\t\t}\n\t\ttry {\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tif (window.console) {\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\n\t\t\t}\n\t\t}\n\t}\n\n\tpolyfillCurrentSrc(ofi.img);\n\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\tel.style.backgroundOrigin = 'content-box';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\tonImageReady(ofi.img, function () {\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t} else {\n\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t}\n\t\t});\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n\n\tonImageReady(ofi.img, function (img) {\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\n\t});\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get(prop) {\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\n\t\t},\n\t\tset: function set(value, prop) {\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\n\t\t\tfixOne(el);\n\t\t\treturn value;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {\n\t\tget: function () { return descriptors.get('currentSrc'); }\n\t});\n\tObject.defineProperty(el, 'srcset', {\n\t\tget: function () { return descriptors.get('srcset'); },\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\n\t});\n}\n\nfunction hijackAttributes() {\n\tfunction getOfiImageMaybe(el, name) {\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n\t}\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (imgs === 'img') {\n\t\timgs = document.getElementsByTagName('img');\n\t} else if (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll(imgs);\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][OFI] = imgs[i][OFI] || {\n\t\t\tskipTest: opts.skipTest\n\t\t};\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nmodule.exports = fix;\n","'use strict';(function(){function e(b){for(var a=[];b=b.parentNode||b.host||b.defaultView;)a.push(b);return a}function f(b){return function(a){var c=\"undefined\"!==typeof a.getAttribute?a.getAttribute(\"class\")||\"\":void 0;\"undefined\"!==typeof c&&-1===c.indexOf(b)&&a.setAttribute(\"class\",c.concat(\" \",b).trim())}}function g(b){return function(a){var c=\"undefined\"!==typeof a.getAttribute?a.getAttribute(\"class\")||\"\":void 0;if(c){var d=c.indexOf(b);0<=d&&(0===d||0<=h.indexOf(c.charAt(d-1)))&&(c=c.replace(b,\n\"\").trim(),\"\"===c?a.removeAttribute(\"class\"):a.setAttribute(\"class\",c))}}}function k(){function b(a){function c(){d=!1;\"blur\"===a.type&&Array.prototype.slice.call(e(a.target)).forEach(g(\"focus-within\"));\"focus\"===a.type&&Array.prototype.slice.call(e(a.target)).forEach(f(\"focus-within\"))}if(!d){window.requestAnimationFrame(c);var d=!0}}document.addEventListener(\"focus\",b,!0);document.addEventListener(\"blur\",b,!0);f(\"js-focus-within\")(document.body);return!0}var h=[\"\\n\",\"\\t\",\" \",\"\\r\"];try{return!document.querySelector(\":focus-within\")}catch(b){return k()}})();\n//# sourceMappingURL=focus-within-polyfill.js.map\n","/*! picturefill - v3.0.2 - 2016-02-12\n * https://scottjehl.github.io/picturefill/\n * Copyright (c) 2016 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT\n */\n/*! Gecko-Picture - v1.0\n * https://github.com/scottjehl/picturefill/tree/3.0/src/plugins/gecko-picture\n * Firefox's early picture implementation (prior to FF41) is static and does\n * not react to viewport changes. This tiny module fixes this.\n */\n(function(window) {\n\t/*jshint eqnull:true */\n\tvar ua = navigator.userAgent;\n\n\tif ( window.HTMLPictureElement && ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 < 45) ) {\n\t\taddEventListener(\"resize\", (function() {\n\t\t\tvar timer;\n\n\t\t\tvar dummySrc = document.createElement(\"source\");\n\n\t\t\tvar fixRespimg = function(img) {\n\t\t\t\tvar source, sizes;\n\t\t\t\tvar picture = img.parentNode;\n\n\t\t\t\tif (picture.nodeName.toUpperCase() === \"PICTURE\") {\n\t\t\t\t\tsource = dummySrc.cloneNode();\n\n\t\t\t\t\tpicture.insertBefore(source, picture.firstElementChild);\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpicture.removeChild(source);\n\t\t\t\t\t});\n\t\t\t\t} else if (!img._pfLastSize || img.offsetWidth > img._pfLastSize) {\n\t\t\t\t\timg._pfLastSize = img.offsetWidth;\n\t\t\t\t\tsizes = img.sizes;\n\t\t\t\t\timg.sizes += \",100vw\";\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\timg.sizes = sizes;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar findPictureImgs = function() {\n\t\t\t\tvar i;\n\t\t\t\tvar imgs = document.querySelectorAll(\"picture > img, img[srcset][sizes]\");\n\t\t\t\tfor (i = 0; i < imgs.length; i++) {\n\t\t\t\t\tfixRespimg(imgs[i]);\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar onResize = function() {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = setTimeout(findPictureImgs, 99);\n\t\t\t};\n\t\t\tvar mq = window.matchMedia && matchMedia(\"(orientation: landscape)\");\n\t\t\tvar init = function() {\n\t\t\t\tonResize();\n\n\t\t\t\tif (mq && mq.addListener) {\n\t\t\t\t\tmq.addListener(onResize);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdummySrc.srcset = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n\t\t\tif (/^[c|i]|d$/.test(document.readyState || \"\")) {\n\t\t\t\tinit();\n\t\t\t} else {\n\t\t\t\tdocument.addEventListener(\"DOMContentLoaded\", init);\n\t\t\t}\n\n\t\t\treturn onResize;\n\t\t})());\n\t}\n})(window);\n\n/*! Picturefill - v3.0.2\n * http://scottjehl.github.io/picturefill\n * Copyright (c) 2015 https://github.com/scottjehl/picturefill/blob/master/Authors.txt;\n * License: MIT\n */\n\n(function( window, document, undefined ) {\n\t// Enable strict mode\n\t\"use strict\";\n\n\t// HTML shim|v it for old IE (IE9 will still need the HTML video tag workaround)\n\tdocument.createElement( \"picture\" );\n\n\tvar warn, eminpx, alwaysCheckWDescriptor, evalId;\n\t// local object for method references and testing exposure\n\tvar pf = {};\n\tvar isSupportTestReady = false;\n\tvar noop = function() {};\n\tvar image = document.createElement( \"img\" );\n\tvar getImgAttr = image.getAttribute;\n\tvar setImgAttr = image.setAttribute;\n\tvar removeImgAttr = image.removeAttribute;\n\tvar docElem = document.documentElement;\n\tvar types = {};\n\tvar cfg = {\n\t\t//resource selection:\n\t\talgorithm: \"\"\n\t};\n\tvar srcAttr = \"data-pfsrc\";\n\tvar srcsetAttr = srcAttr + \"set\";\n\t// ua sniffing is done for undetectable img loading features,\n\t// to do some non crucial perf optimizations\n\tvar ua = navigator.userAgent;\n\tvar supportAbort = (/rident/).test(ua) || ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 > 35 );\n\tvar curSrcProp = \"currentSrc\";\n\tvar regWDesc = /\\s+\\+?\\d+(e\\d+)?w/;\n\tvar regSize = /(\\([^)]+\\))?\\s*(.+)/;\n\tvar setOptions = window.picturefillCFG;\n\t/**\n\t * Shortcut property for https://w3c.github.io/webappsec/specs/mixedcontent/#restricts-mixed-content ( for easy overriding in tests )\n\t */\n\t// baseStyle also used by getEmValue (i.e.: width: 1em is important)\n\tvar baseStyle = \"position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)\";\n\tvar fsCss = \"font-size:100%!important;\";\n\tvar isVwDirty = true;\n\n\tvar cssCache = {};\n\tvar sizeLengthCache = {};\n\tvar DPR = window.devicePixelRatio;\n\tvar units = {\n\t\tpx: 1,\n\t\t\"in\": 96\n\t};\n\tvar anchor = document.createElement( \"a\" );\n\t/**\n\t * alreadyRun flag used for setOptions. is it true setOptions will reevaluate\n\t * @type {boolean}\n\t */\n\tvar alreadyRun = false;\n\n\t// Reusable, non-\"g\" Regexes\n\n\t// (Don't use \\s, to avoid matching non-breaking space.)\n\tvar regexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t regexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t regexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t regexTrailingCommas = /[,]+$/,\n\t regexNonNegativeInteger = /^\\d+$/,\n\n\t // ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t // Must include at least one digit.\n\t // According to spec tests any decimal point must be followed by a digit.\n\t // No leading plus sign is allowed.)\n\t // https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/;\n\n\tvar on = function(obj, evt, fn, capture) {\n\t\tif ( obj.addEventListener ) {\n\t\t\tobj.addEventListener(evt, fn, capture || false);\n\t\t} else if ( obj.attachEvent ) {\n\t\t\tobj.attachEvent( \"on\" + evt, fn);\n\t\t}\n\t};\n\n\t/**\n\t * simple memoize function:\n\t */\n\n\tvar memoize = function(fn) {\n\t\tvar cache = {};\n\t\treturn function(input) {\n\t\t\tif ( !(input in cache) ) {\n\t\t\t\tcache[ input ] = fn(input);\n\t\t\t}\n\t\t\treturn cache[ input ];\n\t\t};\n\t};\n\n\t// UTILITY FUNCTIONS\n\n\t// Manual is faster than RegEx\n\t// http://jsperf.com/whitespace-character/5\n\tfunction isSpace(c) {\n\t\treturn (c === \"\\u0020\" || // space\n\t\t c === \"\\u0009\" || // horizontal tab\n\t\t c === \"\\u000A\" || // new line\n\t\t c === \"\\u000C\" || // form feed\n\t\t c === \"\\u000D\"); // carriage return\n\t}\n\n\t/**\n\t * gets a mediaquery and returns a boolean or gets a css length and returns a number\n\t * @param css mediaqueries or css length\n\t * @returns {boolean|number}\n\t *\n\t * based on: https://gist.github.com/jonathantneal/db4f77009b155f083738\n\t */\n\tvar evalCSS = (function() {\n\n\t\tvar regLength = /^([\\d\\.]+)(em|vw|px)$/;\n\t\tvar replace = function() {\n\t\t\tvar args = arguments, index = 0, string = args[0];\n\t\t\twhile (++index in args) {\n\t\t\t\tstring = string.replace(args[index], args[++index]);\n\t\t\t}\n\t\t\treturn string;\n\t\t};\n\n\t\tvar buildStr = memoize(function(css) {\n\n\t\t\treturn \"return \" + replace((css || \"\").toLowerCase(),\n\t\t\t\t// interpret `and`\n\t\t\t\t/\\band\\b/g, \"&&\",\n\n\t\t\t\t// interpret `,`\n\t\t\t\t/,/g, \"||\",\n\n\t\t\t\t// interpret `min-` as >=\n\t\t\t\t/min-([a-z-\\s]+):/g, \"e.$1>=\",\n\n\t\t\t\t// interpret `max-` as <=\n\t\t\t\t/max-([a-z-\\s]+):/g, \"e.$1<=\",\n\n\t\t\t\t//calc value\n\t\t\t\t/calc([^)]+)/g, \"($1)\",\n\n\t\t\t\t// interpret css values\n\t\t\t\t/(\\d+[\\.]*[\\d]*)([a-z]+)/g, \"($1 * e.$2)\",\n\t\t\t\t//make eval less evil\n\t\t\t\t/^(?!(e.[a-z]|[0-9\\.&=|><\\+\\-\\*\\(\\)\\/])).*/ig, \"\"\n\t\t\t) + \";\";\n\t\t});\n\n\t\treturn function(css, length) {\n\t\t\tvar parsedLength;\n\t\t\tif (!(css in cssCache)) {\n\t\t\t\tcssCache[css] = false;\n\t\t\t\tif (length && (parsedLength = css.match( regLength ))) {\n\t\t\t\t\tcssCache[css] = parsedLength[ 1 ] * units[parsedLength[ 2 ]];\n\t\t\t\t} else {\n\t\t\t\t\t/*jshint evil:true */\n\t\t\t\t\ttry{\n\t\t\t\t\t\tcssCache[css] = new Function(\"e\", buildStr(css))(units);\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t\t/*jshint evil:false */\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cssCache[css];\n\t\t};\n\t})();\n\n\tvar setResolution = function( candidate, sizesattr ) {\n\t\tif ( candidate.w ) { // h = means height: || descriptor.type === 'h' do not handle yet...\n\t\t\tcandidate.cWidth = pf.calcListLength( sizesattr || \"100vw\" );\n\t\t\tcandidate.res = candidate.w / candidate.cWidth ;\n\t\t} else {\n\t\t\tcandidate.res = candidate.d;\n\t\t}\n\t\treturn candidate;\n\t};\n\n\t/**\n\t *\n\t * @param opt\n\t */\n\tvar picturefill = function( opt ) {\n\n\t\tif (!isSupportTestReady) {return;}\n\n\t\tvar elements, i, plen;\n\n\t\tvar options = opt || {};\n\n\t\tif ( options.elements && options.elements.nodeType === 1 ) {\n\t\t\tif ( options.elements.nodeName.toUpperCase() === \"IMG\" ) {\n\t\t\t\toptions.elements = [ options.elements ];\n\t\t\t} else {\n\t\t\t\toptions.context = options.elements;\n\t\t\t\toptions.elements = null;\n\t\t\t}\n\t\t}\n\n\t\telements = options.elements || pf.qsa( (options.context || document), ( options.reevaluate || options.reselect ) ? pf.sel : pf.selShort );\n\n\t\tif ( (plen = elements.length) ) {\n\n\t\t\tpf.setupRun( options );\n\t\t\talreadyRun = true;\n\n\t\t\t// Loop through all elements\n\t\t\tfor ( i = 0; i < plen; i++ ) {\n\t\t\t\tpf.fillImg(elements[ i ], options);\n\t\t\t}\n\n\t\t\tpf.teardownRun( options );\n\t\t}\n\t};\n\n\t/**\n\t * outputs a warning for the developer\n\t * @param {message}\n\t * @type {Function}\n\t */\n\twarn = ( window.console && console.warn ) ?\n\t\tfunction( message ) {\n\t\t\tconsole.warn( message );\n\t\t} :\n\t\tnoop\n\t;\n\n\tif ( !(curSrcProp in image) ) {\n\t\tcurSrcProp = \"src\";\n\t}\n\n\t// Add support for standard mime types.\n\ttypes[ \"image/jpeg\" ] = true;\n\ttypes[ \"image/gif\" ] = true;\n\ttypes[ \"image/png\" ] = true;\n\n\tfunction detectTypeSupport( type, typeUri ) {\n\t\t// based on Modernizr's lossless img-webp test\n\t\t// note: asynchronous\n\t\tvar image = new window.Image();\n\t\timage.onerror = function() {\n\t\t\ttypes[ type ] = false;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.onload = function() {\n\t\t\ttypes[ type ] = image.width === 1;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.src = typeUri;\n\t\treturn \"pending\";\n\t}\n\n\t// test svg support\n\ttypes[ \"image/svg+xml\" ] = document.implementation.hasFeature( \"http://www.w3.org/TR/SVG11/feature#Image\", \"1.1\" );\n\n\t/**\n\t * updates the internal vW property with the current viewport width in px\n\t */\n\tfunction updateMetrics() {\n\n\t\tisVwDirty = false;\n\t\tDPR = window.devicePixelRatio;\n\t\tcssCache = {};\n\t\tsizeLengthCache = {};\n\n\t\tpf.DPR = DPR || 1;\n\n\t\tunits.width = Math.max(window.innerWidth || 0, docElem.clientWidth);\n\t\tunits.height = Math.max(window.innerHeight || 0, docElem.clientHeight);\n\n\t\tunits.vw = units.width / 100;\n\t\tunits.vh = units.height / 100;\n\n\t\tevalId = [ units.height, units.width, DPR ].join(\"-\");\n\n\t\tunits.em = pf.getEmValue();\n\t\tunits.rem = units.em;\n\t}\n\n\tfunction chooseLowRes( lowerValue, higherValue, dprValue, isCached ) {\n\t\tvar bonusFactor, tooMuch, bonus, meanDensity;\n\n\t\t//experimental\n\t\tif (cfg.algorithm === \"saveData\" ){\n\t\t\tif ( lowerValue > 2.7 ) {\n\t\t\t\tmeanDensity = dprValue + 1;\n\t\t\t} else {\n\t\t\t\ttooMuch = higherValue - dprValue;\n\t\t\t\tbonusFactor = Math.pow(lowerValue - 0.6, 1.5);\n\n\t\t\t\tbonus = tooMuch * bonusFactor;\n\n\t\t\t\tif (isCached) {\n\t\t\t\t\tbonus += 0.1 * bonusFactor;\n\t\t\t\t}\n\n\t\t\t\tmeanDensity = lowerValue + bonus;\n\t\t\t}\n\t\t} else {\n\t\t\tmeanDensity = (dprValue > 1) ?\n\t\t\t\tMath.sqrt(lowerValue * higherValue) :\n\t\t\t\tlowerValue;\n\t\t}\n\n\t\treturn meanDensity > dprValue;\n\t}\n\n\tfunction applyBestCandidate( img ) {\n\t\tvar srcSetCandidates;\n\t\tvar matchingSet = pf.getSet( img );\n\t\tvar evaluated = false;\n\t\tif ( matchingSet !== \"pending\" ) {\n\t\t\tevaluated = evalId;\n\t\t\tif ( matchingSet ) {\n\t\t\t\tsrcSetCandidates = pf.setRes( matchingSet );\n\t\t\t\tpf.applySetCandidate( srcSetCandidates, img );\n\t\t\t}\n\t\t}\n\t\timg[ pf.ns ].evaled = evaluated;\n\t}\n\n\tfunction ascendingSort( a, b ) {\n\t\treturn a.res - b.res;\n\t}\n\n\tfunction setSrcToCur( img, src, set ) {\n\t\tvar candidate;\n\t\tif ( !set && src ) {\n\t\t\tset = img[ pf.ns ].sets;\n\t\t\tset = set && set[set.length - 1];\n\t\t}\n\n\t\tcandidate = getCandidateForSrc(src, set);\n\n\t\tif ( candidate ) {\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\timg[ pf.ns ].curSrc = src;\n\t\t\timg[ pf.ns ].curCan = candidate;\n\n\t\t\tif ( !candidate.res ) {\n\t\t\t\tsetResolution( candidate, candidate.set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getCandidateForSrc( src, set ) {\n\t\tvar i, candidate, candidates;\n\t\tif ( src && set ) {\n\t\t\tcandidates = pf.parseSet( set );\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\tfor ( i = 0; i < candidates.length; i++ ) {\n\t\t\t\tif ( src === pf.makeUrl(candidates[ i ].url) ) {\n\t\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getAllSourceElements( picture, candidates ) {\n\t\tvar i, len, source, srcset;\n\n\t\t// SPEC mismatch intended for size and perf:\n\t\t// actually only source elements preceding the img should be used\n\t\t// also note: don't use qsa here, because IE8 sometimes doesn't like source as the key part in a selector\n\t\tvar sources = picture.getElementsByTagName( \"source\" );\n\n\t\tfor ( i = 0, len = sources.length; i < len; i++ ) {\n\t\t\tsource = sources[ i ];\n\t\t\tsource[ pf.ns ] = true;\n\t\t\tsrcset = source.getAttribute( \"srcset\" );\n\n\t\t\t// if source does not have a srcset attribute, skip\n\t\t\tif ( srcset ) {\n\t\t\t\tcandidates.push( {\n\t\t\t\t\tsrcset: srcset,\n\t\t\t\t\tmedia: source.getAttribute( \"media\" ),\n\t\t\t\t\ttype: source.getAttribute( \"type\" ),\n\t\t\t\t\tsizes: source.getAttribute( \"sizes\" )\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Srcset Parser\n\t * By Alex Bell | MIT License\n\t *\n\t * @returns Array [{url: _, d: _, w: _, h:_, set:_(????)}, ...]\n\t *\n\t * Based super duper closely on the reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n\t */\n\n\t// 1. Let input be the value passed to this algorithm.\n\t// (TO-DO : Explain what \"set\" argument is here. Maybe choose a more\n\t// descriptive & more searchable name. Since passing the \"set\" in really has\n\t// nothing to do with parsing proper, I would prefer this assignment eventually\n\t// go in an external fn.)\n\tfunction parseSrcset(input, set) {\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t match = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\t\t url,\n\t\t descriptors,\n\t\t currentDescriptor,\n\t\t state,\n\t\t c,\n\n\t\t // 2. Let position be a pointer into input, initially pointing at the start\n\t\t // of the string.\n\t\t pos = 0,\n\n\t\t // 3. Let candidates be an initially empty source set.\n\t\t candidates = [];\n\n\t\t/**\n\t\t* Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t* @return undefined\n\t\t*/\n\t\t// (Declared outside of the while loop so that it's only created once.\n\t\t// (This fn is defined before it is used, in order to pass JSHINT.\n\t\t// Unfortunately this breaks the sequencing of the spec comments. :/ )\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t// 10. Let width be absent.\n\t\t\t// 11. Let density be absent.\n\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t w, d, h, i,\n\t\t\t candidate = {},\n\t\t\t desc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tif (!h && !d && !w) {candidate.d = 1;}\n\t\t\t\tif (candidate.d === 1) {set.has1x = true;}\n\t\t\t\tcandidate.set = set;\n\n\t\t\t\tcandidates.push(candidate);\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t\t/**\n\t\t* Tokenizes descriptor properties prior to parsing\n\t\t* Returns undefined.\n\t\t* (Again, this fn is defined before it is used, in order to pass JSHINT.\n\t\t* Unfortunately this breaks the logical sequencing of the spec comments. :/ )\n\t\t*/\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t// Do the following depending on the value of state.\n\t\t\t\t// For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t// that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t // Space character\n\t\t\t\t // If current descriptor is not empty, append current descriptor to\n\t\t\t\t // descriptors and let current descriptor be the empty string.\n\t\t\t\t // Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t// characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t// were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t// and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t// more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\t}\n\n\t/*\n\t * Sizes Parser\n\t *\n\t * By Alex Bell | MIT License\n\t *\n\t * Non-strict but accurate and lightweight JS Parser for the string value \n\t *\n\t * Reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-sizes-attribute\n\t *\n\t * Most comments are copied in directly from the spec\n\t * (except for comments in parens).\n\t *\n\t * Grammar is:\n\t * = # [ , ]? | \n\t * = \n\t * = \n\t * http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#attr-img-sizes\n\t *\n\t * E.g. \"(max-width: 30em) 100vw, (max-width: 50em) 70vw, 100vw\"\n\t * or \"(min-width: 30em), calc(30vw - 15px)\" or just \"30vw\"\n\t *\n\t * Returns the first valid with a media condition that evaluates to true,\n\t * or \"100vw\" if all valid media conditions evaluate to false.\n\t *\n\t */\n\n\tfunction parseSizes(strValue) {\n\n\t\t// (Percentage CSS lengths are not allowed in this case, to avoid confusion:\n\t\t// https://html.spec.whatwg.org/multipage/embedded-content.html#valid-source-size-list\n\t\t// CSS allows a single optional plus or minus sign:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#numbers\n\t\t// CSS is ASCII case-insensitive:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#characters )\n\t\t// Spec allows exponential notation for type:\n\t\t// http://dev.w3.org/csswg/css-values/#numbers\n\t\tvar regexCssLengthWithUnits = /^(?:[+-]?[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i;\n\n\t\t// (This is a quick and lenient test. Because of optional unlimited-depth internal\n\t\t// grouping parens and strict spacing rules, this could get very complicated.)\n\t\tvar regexCssCalc = /^calc\\((?:[0-9a-z \\.\\+\\-\\*\\/\\(\\)]+)\\)$/i;\n\n\t\tvar i;\n\t\tvar unparsedSizesList;\n\t\tvar unparsedSizesListLength;\n\t\tvar unparsedSize;\n\t\tvar lastComponentValue;\n\t\tvar size;\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// (Toy CSS parser. The goals here are:\n\t\t// 1) expansive test coverage without the weight of a full CSS parser.\n\t\t// 2) Avoiding regex wherever convenient.\n\t\t// Quick tests: http://jsfiddle.net/gtntL4gr/3/\n\t\t// Returns an array of arrays.)\n\t\tfunction parseComponentValues(str) {\n\t\t\tvar chrctr;\n\t\t\tvar component = \"\";\n\t\t\tvar componentArray = [];\n\t\t\tvar listArray = [];\n\t\t\tvar parenDepth = 0;\n\t\t\tvar pos = 0;\n\t\t\tvar inComment = false;\n\n\t\t\tfunction pushComponent() {\n\t\t\t\tif (component) {\n\t\t\t\t\tcomponentArray.push(component);\n\t\t\t\t\tcomponent = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction pushComponentArray() {\n\t\t\t\tif (componentArray[0]) {\n\t\t\t\t\tlistArray.push(componentArray);\n\t\t\t\t\tcomponentArray = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// (Loop forwards from the beginning of the string.)\n\t\t\twhile (true) {\n\t\t\t\tchrctr = str.charAt(pos);\n\n\t\t\t\tif (chrctr === \"\") { // ( End of string reached.)\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\treturn listArray;\n\t\t\t\t} else if (inComment) {\n\t\t\t\t\tif ((chrctr === \"*\") && (str[pos + 1] === \"/\")) { // (At end of a comment.)\n\t\t\t\t\t\tinComment = false;\n\t\t\t\t\t\tpos += 2;\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpos += 1; // (Skip all characters inside comments.)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (isSpace(chrctr)) {\n\t\t\t\t\t// (If previous character in loop was also a space, or if\n\t\t\t\t\t// at the beginning of the string, do not add space char to\n\t\t\t\t\t// component.)\n\t\t\t\t\tif ( (str.charAt(pos - 1) && isSpace( str.charAt(pos - 1) ) ) || !component ) {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (parenDepth === 0) {\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tpos +=1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// (Replace any space character with a plain space for legibility.)\n\t\t\t\t\t\tchrctr = \" \";\n\t\t\t\t\t}\n\t\t\t\t} else if (chrctr === \"(\") {\n\t\t\t\t\tparenDepth += 1;\n\t\t\t\t} else if (chrctr === \")\") {\n\t\t\t\t\tparenDepth -= 1;\n\t\t\t\t} else if (chrctr === \",\") {\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\tpos += 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if ( (chrctr === \"/\") && (str.charAt(pos + 1) === \"*\") ) {\n\t\t\t\t\tinComment = true;\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcomponent = component + chrctr;\n\t\t\t\tpos += 1;\n\t\t\t}\n\t\t}\n\n\t\tfunction isValidNonNegativeSourceSizeValue(s) {\n\t\t\tif (regexCssLengthWithUnits.test(s) && (parseFloat(s) >= 0)) {return true;}\n\t\t\tif (regexCssCalc.test(s)) {return true;}\n\t\t\t// ( http://www.w3.org/TR/CSS2/syndata.html#numbers says:\n\t\t\t// \"-0 is equivalent to 0 and is not a negative number.\" which means that\n\t\t\t// unitless zero and unitless negative zero must be accepted as special cases.)\n\t\t\tif ((s === \"0\") || (s === \"-0\") || (s === \"+0\")) {return true;}\n\t\t\treturn false;\n\t\t}\n\n\t\t// When asked to parse a sizes attribute from an element, parse a\n\t\t// comma-separated list of component values from the value of the element's\n\t\t// sizes attribute (or the empty string, if the attribute is absent), and let\n\t\t// unparsed sizes list be the result.\n\t\t// http://dev.w3.org/csswg/css-syntax/#parse-comma-separated-list-of-component-values\n\n\t\tunparsedSizesList = parseComponentValues(strValue);\n\t\tunparsedSizesListLength = unparsedSizesList.length;\n\n\t\t// For each unparsed size in unparsed sizes list:\n\t\tfor (i = 0; i < unparsedSizesListLength; i++) {\n\t\t\tunparsedSize = unparsedSizesList[i];\n\n\t\t\t// 1. Remove all consecutive s from the end of unparsed size.\n\t\t\t// ( parseComponentValues() already omits spaces outside of parens. )\n\n\t\t\t// If unparsed size is now empty, that is a parse error; continue to the next\n\t\t\t// iteration of this algorithm.\n\t\t\t// ( parseComponentValues() won't push an empty array. )\n\n\t\t\t// 2. If the last component value in unparsed size is a valid non-negative\n\t\t\t// , let size be its value and remove the component value\n\t\t\t// from unparsed size. Any CSS function other than the calc() function is\n\t\t\t// invalid. Otherwise, there is a parse error; continue to the next iteration\n\t\t\t// of this algorithm.\n\t\t\t// http://dev.w3.org/csswg/css-syntax/#parse-component-value\n\t\t\tlastComponentValue = unparsedSize[unparsedSize.length - 1];\n\n\t\t\tif (isValidNonNegativeSourceSizeValue(lastComponentValue)) {\n\t\t\t\tsize = lastComponentValue;\n\t\t\t\tunparsedSize.pop();\n\t\t\t} else {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 3. Remove all consecutive s from the end of unparsed\n\t\t\t// size. If unparsed size is now empty, return size and exit this algorithm.\n\t\t\t// If this was not the last item in unparsed sizes list, that is a parse error.\n\t\t\tif (unparsedSize.length === 0) {\n\t\t\t\treturn size;\n\t\t\t}\n\n\t\t\t// 4. Parse the remaining component values in unparsed size as a\n\t\t\t// . If it does not parse correctly, or it does parse\n\t\t\t// correctly but the evaluates to false, continue to the\n\t\t\t// next iteration of this algorithm.\n\t\t\t// (Parsing all possible compound media conditions in JS is heavy, complicated,\n\t\t\t// and the payoff is unclear. Is there ever an situation where the\n\t\t\t// media condition parses incorrectly but still somehow evaluates to true?\n\t\t\t// Can we just rely on the browser/polyfill to do it?)\n\t\t\tunparsedSize = unparsedSize.join(\" \");\n\t\t\tif (!(pf.matchesMedia( unparsedSize ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 5. Return size and exit this algorithm.\n\t\t\treturn size;\n\t\t}\n\n\t\t// If the above algorithm exhausts unparsed sizes list without returning a\n\t\t// size value, return 100vw.\n\t\treturn \"100vw\";\n\t}\n\n\t// namespace\n\tpf.ns = (\"pf\" + new Date().getTime()).substr(0, 9);\n\n\t// srcset support test\n\tpf.supSrcset = \"srcset\" in image;\n\tpf.supSizes = \"sizes\" in image;\n\tpf.supPicture = !!window.HTMLPictureElement;\n\n\t// UC browser does claim to support srcset and picture, but not sizes,\n\t// this extended test reveals the browser does support nothing\n\tif (pf.supSrcset && pf.supPicture && !pf.supSizes) {\n\t\t(function(image2) {\n\t\t\timage.srcset = \"data:,a\";\n\t\t\timage2.src = \"data:,a\";\n\t\t\tpf.supSrcset = image.complete === image2.complete;\n\t\t\tpf.supPicture = pf.supSrcset && pf.supPicture;\n\t\t})(document.createElement(\"img\"));\n\t}\n\n\t// Safari9 has basic support for sizes, but does't expose the `sizes` idl attribute\n\tif (pf.supSrcset && !pf.supSizes) {\n\n\t\t(function() {\n\t\t\tvar width2 = \"data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==\";\n\t\t\tvar width1 = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\t\t\tvar img = document.createElement(\"img\");\n\t\t\tvar test = function() {\n\t\t\t\tvar width = img.width;\n\n\t\t\t\tif (width === 2) {\n\t\t\t\t\tpf.supSizes = true;\n\t\t\t\t}\n\n\t\t\t\talwaysCheckWDescriptor = pf.supSrcset && !pf.supSizes;\n\n\t\t\t\tisSupportTestReady = true;\n\t\t\t\t// force async\n\t\t\t\tsetTimeout(picturefill);\n\t\t\t};\n\n\t\t\timg.onload = test;\n\t\t\timg.onerror = test;\n\t\t\timg.setAttribute(\"sizes\", \"9px\");\n\n\t\t\timg.srcset = width1 + \" 1w,\" + width2 + \" 9w\";\n\t\t\timg.src = width1;\n\t\t})();\n\n\t} else {\n\t\tisSupportTestReady = true;\n\t}\n\n\t// using pf.qsa instead of dom traversing does scale much better,\n\t// especially on sites mixing responsive and non-responsive images\n\tpf.selShort = \"picture>img,img[srcset]\";\n\tpf.sel = pf.selShort;\n\tpf.cfg = cfg;\n\n\t/**\n\t * Shortcut property for `devicePixelRatio` ( for easy overriding in tests )\n\t */\n\tpf.DPR = (DPR || 1 );\n\tpf.u = units;\n\n\t// container of supported mime types that one might need to qualify before using\n\tpf.types = types;\n\n\tpf.setSize = noop;\n\n\t/**\n\t * Gets a string and returns the absolute URL\n\t * @param src\n\t * @returns {String} absolute URL\n\t */\n\n\tpf.makeUrl = memoize(function(src) {\n\t\tanchor.href = src;\n\t\treturn anchor.href;\n\t});\n\n\t/**\n\t * Gets a DOM element or document and a selctor and returns the found matches\n\t * Can be extended with jQuery/Sizzle for IE7 support\n\t * @param context\n\t * @param sel\n\t * @returns {NodeList|Array}\n\t */\n\tpf.qsa = function(context, sel) {\n\t\treturn ( \"querySelector\" in context ) ? context.querySelectorAll(sel) : [];\n\t};\n\n\t/**\n\t * Shortcut method for matchMedia ( for easy overriding in tests )\n\t * wether native or pf.mMQ is used will be decided lazy on first call\n\t * @returns {boolean}\n\t */\n\tpf.matchesMedia = function() {\n\t\tif ( window.matchMedia && (matchMedia( \"(min-width: 0.1em)\" ) || {}).matches ) {\n\t\t\tpf.matchesMedia = function( media ) {\n\t\t\t\treturn !media || ( matchMedia( media ).matches );\n\t\t\t};\n\t\t} else {\n\t\t\tpf.matchesMedia = pf.mMQ;\n\t\t}\n\n\t\treturn pf.matchesMedia.apply( this, arguments );\n\t};\n\n\t/**\n\t * A simplified matchMedia implementation for IE8 and IE9\n\t * handles only min-width/max-width with px or em values\n\t * @param media\n\t * @returns {boolean}\n\t */\n\tpf.mMQ = function( media ) {\n\t\treturn media ? evalCSS(media) : true;\n\t};\n\n\t/**\n\t * Returns the calculated length in css pixel from the given sourceSizeValue\n\t * http://dev.w3.org/csswg/css-values-3/#length-value\n\t * intended Spec mismatches:\n\t * * Does not check for invalid use of CSS functions\n\t * * Does handle a computed length of 0 the same as a negative and therefore invalid value\n\t * @param sourceSizeValue\n\t * @returns {Number}\n\t */\n\tpf.calcLength = function( sourceSizeValue ) {\n\n\t\tvar value = evalCSS(sourceSizeValue, true) || false;\n\t\tif (value < 0) {\n\t\t\tvalue = false;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\t/**\n\t * Takes a type string and checks if its supported\n\t */\n\n\tpf.supportsType = function( type ) {\n\t\treturn ( type ) ? types[ type ] : true;\n\t};\n\n\t/**\n\t * Parses a sourceSize into mediaCondition (media) and sourceSizeValue (length)\n\t * @param sourceSizeStr\n\t * @returns {*}\n\t */\n\tpf.parseSize = memoize(function( sourceSizeStr ) {\n\t\tvar match = ( sourceSizeStr || \"\" ).match(regSize);\n\t\treturn {\n\t\t\tmedia: match && match[1],\n\t\t\tlength: match && match[2]\n\t\t};\n\t});\n\n\tpf.parseSet = function( set ) {\n\t\tif ( !set.cands ) {\n\t\t\tset.cands = parseSrcset(set.srcset, set);\n\t\t}\n\t\treturn set.cands;\n\t};\n\n\t/**\n\t * returns 1em in css px for html/body default size\n\t * function taken from respondjs\n\t * @returns {*|number}\n\t */\n\tpf.getEmValue = function() {\n\t\tvar body;\n\t\tif ( !eminpx && (body = document.body) ) {\n\t\t\tvar div = document.createElement( \"div\" ),\n\t\t\t\toriginalHTMLCSS = docElem.style.cssText,\n\t\t\t\toriginalBodyCSS = body.style.cssText;\n\n\t\t\tdiv.style.cssText = baseStyle;\n\n\t\t\t// 1em in a media query is the value of the default font size of the browser\n\t\t\t// reset docElem and body to ensure the correct value is returned\n\t\t\tdocElem.style.cssText = fsCss;\n\t\t\tbody.style.cssText = fsCss;\n\n\t\t\tbody.appendChild( div );\n\t\t\teminpx = div.offsetWidth;\n\t\t\tbody.removeChild( div );\n\n\t\t\t//also update eminpx before returning\n\t\t\teminpx = parseFloat( eminpx, 10 );\n\n\t\t\t// restore the original values\n\t\t\tdocElem.style.cssText = originalHTMLCSS;\n\t\t\tbody.style.cssText = originalBodyCSS;\n\n\t\t}\n\t\treturn eminpx || 16;\n\t};\n\n\t/**\n\t * Takes a string of sizes and returns the width in pixels as a number\n\t */\n\tpf.calcListLength = function( sourceSizeListStr ) {\n\t\t// Split up source size list, ie ( max-width: 30em ) 100%, ( max-width: 50em ) 50%, 33%\n\t\t//\n\t\t// or (min-width:30em) calc(30% - 15px)\n\t\tif ( !(sourceSizeListStr in sizeLengthCache) || cfg.uT ) {\n\t\t\tvar winningLength = pf.calcLength( parseSizes( sourceSizeListStr ) );\n\n\t\t\tsizeLengthCache[ sourceSizeListStr ] = !winningLength ? units.width : winningLength;\n\t\t}\n\n\t\treturn sizeLengthCache[ sourceSizeListStr ];\n\t};\n\n\t/**\n\t * Takes a candidate object with a srcset property in the form of url/\n\t * ex. \"images/pic-medium.png 1x, images/pic-medium-2x.png 2x\" or\n\t * \"images/pic-medium.png 400w, images/pic-medium-2x.png 800w\" or\n\t * \"images/pic-small.png\"\n\t * Get an array of image candidates in the form of\n\t * {url: \"/foo/bar.png\", resolution: 1}\n\t * where resolution is http://dev.w3.org/csswg/css-values-3/#resolution-value\n\t * If sizes is specified, res is calculated\n\t */\n\tpf.setRes = function( set ) {\n\t\tvar candidates;\n\t\tif ( set ) {\n\n\t\t\tcandidates = pf.parseSet( set );\n\n\t\t\tfor ( var i = 0, len = candidates.length; i < len; i++ ) {\n\t\t\t\tsetResolution( candidates[ i ], set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidates;\n\t};\n\n\tpf.setRes.res = setResolution;\n\n\tpf.applySetCandidate = function( candidates, img ) {\n\t\tif ( !candidates.length ) {return;}\n\t\tvar candidate,\n\t\t\ti,\n\t\t\tj,\n\t\t\tlength,\n\t\t\tbestCandidate,\n\t\t\tcurSrc,\n\t\t\tcurCan,\n\t\t\tcandidateSrc,\n\t\t\tabortCurSrc;\n\n\t\tvar imageData = img[ pf.ns ];\n\t\tvar dpr = pf.DPR;\n\n\t\tcurSrc = imageData.curSrc || img[curSrcProp];\n\n\t\tcurCan = imageData.curCan || setSrcToCur(img, curSrc, candidates[0].set);\n\n\t\t// if we have a current source, we might either become lazy or give this source some advantage\n\t\tif ( curCan && curCan.set === candidates[ 0 ].set ) {\n\n\t\t\t// if browser can abort image request and the image has a higher pixel density than needed\n\t\t\t// and this image isn't downloaded yet, we skip next part and try to save bandwidth\n\t\t\tabortCurSrc = (supportAbort && !img.complete && curCan.res - 0.1 > dpr);\n\n\t\t\tif ( !abortCurSrc ) {\n\t\t\t\tcurCan.cached = true;\n\n\t\t\t\t// if current candidate is \"best\", \"better\" or \"okay\",\n\t\t\t\t// set it to bestCandidate\n\t\t\t\tif ( curCan.res >= dpr ) {\n\t\t\t\t\tbestCandidate = curCan;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( !bestCandidate ) {\n\n\t\t\tcandidates.sort( ascendingSort );\n\n\t\t\tlength = candidates.length;\n\t\t\tbestCandidate = candidates[ length - 1 ];\n\n\t\t\tfor ( i = 0; i < length; i++ ) {\n\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\tif ( candidate.res >= dpr ) {\n\t\t\t\t\tj = i - 1;\n\n\t\t\t\t\t// we have found the perfect candidate,\n\t\t\t\t\t// but let's improve this a little bit with some assumptions ;-)\n\t\t\t\t\tif (candidates[ j ] &&\n\t\t\t\t\t\t(abortCurSrc || curSrc !== pf.makeUrl( candidate.url )) &&\n\t\t\t\t\t\tchooseLowRes(candidates[ j ].res, candidate.res, dpr, candidates[ j ].cached)) {\n\n\t\t\t\t\t\tbestCandidate = candidates[ j ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbestCandidate = candidate;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( bestCandidate ) {\n\n\t\t\tcandidateSrc = pf.makeUrl( bestCandidate.url );\n\n\t\t\timageData.curSrc = candidateSrc;\n\t\t\timageData.curCan = bestCandidate;\n\n\t\t\tif ( candidateSrc !== curSrc ) {\n\t\t\t\tpf.setSrc( img, bestCandidate );\n\t\t\t}\n\t\t\tpf.setSize( img );\n\t\t}\n\t};\n\n\tpf.setSrc = function( img, bestCandidate ) {\n\t\tvar origWidth;\n\t\timg.src = bestCandidate.url;\n\n\t\t// although this is a specific Safari issue, we don't want to take too much different code paths\n\t\tif ( bestCandidate.set.type === \"image/svg+xml\" ) {\n\t\t\torigWidth = img.style.width;\n\t\t\timg.style.width = (img.offsetWidth + 1) + \"px\";\n\n\t\t\t// next line only should trigger a repaint\n\t\t\t// if... is only done to trick dead code removal\n\t\t\tif ( img.offsetWidth + 1 ) {\n\t\t\t\timg.style.width = origWidth;\n\t\t\t}\n\t\t}\n\t};\n\n\tpf.getSet = function( img ) {\n\t\tvar i, set, supportsType;\n\t\tvar match = false;\n\t\tvar sets = img [ pf.ns ].sets;\n\n\t\tfor ( i = 0; i < sets.length && !match; i++ ) {\n\t\t\tset = sets[i];\n\n\t\t\tif ( !set.srcset || !pf.matchesMedia( set.media ) || !(supportsType = pf.supportsType( set.type )) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( supportsType === \"pending\" ) {\n\t\t\t\tset = supportsType;\n\t\t\t}\n\n\t\t\tmatch = set;\n\t\t\tbreak;\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tpf.parseSets = function( element, parent, options ) {\n\t\tvar srcsetAttribute, imageSet, isWDescripor, srcsetParsed;\n\n\t\tvar hasPicture = parent && parent.nodeName.toUpperCase() === \"PICTURE\";\n\t\tvar imageData = element[ pf.ns ];\n\n\t\tif ( imageData.src === undefined || options.src ) {\n\t\t\timageData.src = getImgAttr.call( element, \"src\" );\n\t\t\tif ( imageData.src ) {\n\t\t\t\tsetImgAttr.call( element, srcAttr, imageData.src );\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcAttr );\n\t\t\t}\n\t\t}\n\n\t\tif ( imageData.srcset === undefined || options.srcset || !pf.supSrcset || element.srcset ) {\n\t\t\tsrcsetAttribute = getImgAttr.call( element, \"srcset\" );\n\t\t\timageData.srcset = srcsetAttribute;\n\t\t\tsrcsetParsed = true;\n\t\t}\n\n\t\timageData.sets = [];\n\n\t\tif ( hasPicture ) {\n\t\t\timageData.pic = true;\n\t\t\tgetAllSourceElements( parent, imageData.sets );\n\t\t}\n\n\t\tif ( imageData.srcset ) {\n\t\t\timageSet = {\n\t\t\t\tsrcset: imageData.srcset,\n\t\t\t\tsizes: getImgAttr.call( element, \"sizes\" )\n\t\t\t};\n\n\t\t\timageData.sets.push( imageSet );\n\n\t\t\tisWDescripor = (alwaysCheckWDescriptor || imageData.src) && regWDesc.test(imageData.srcset || \"\");\n\n\t\t\t// add normal src as candidate, if source has no w descriptor\n\t\t\tif ( !isWDescripor && imageData.src && !getCandidateForSrc(imageData.src, imageSet) && !imageSet.has1x ) {\n\t\t\t\timageSet.srcset += \", \" + imageData.src;\n\t\t\t\timageSet.cands.push({\n\t\t\t\t\turl: imageData.src,\n\t\t\t\t\td: 1,\n\t\t\t\t\tset: imageSet\n\t\t\t\t});\n\t\t\t}\n\n\t\t} else if ( imageData.src ) {\n\t\t\timageData.sets.push( {\n\t\t\t\tsrcset: imageData.src,\n\t\t\t\tsizes: null\n\t\t\t} );\n\t\t}\n\n\t\timageData.curCan = null;\n\t\timageData.curSrc = undefined;\n\n\t\t// if img has picture or the srcset was removed or has a srcset and does not support srcset at all\n\t\t// or has a w descriptor (and does not support sizes) set support to false to evaluate\n\t\timageData.supported = !( hasPicture || ( imageSet && !pf.supSrcset ) || (isWDescripor && !pf.supSizes) );\n\n\t\tif ( srcsetParsed && pf.supSrcset && !imageData.supported ) {\n\t\t\tif ( srcsetAttribute ) {\n\t\t\t\tsetImgAttr.call( element, srcsetAttr, srcsetAttribute );\n\t\t\t\telement.srcset = \"\";\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcsetAttr );\n\t\t\t}\n\t\t}\n\n\t\tif (imageData.supported && !imageData.srcset && ((!imageData.src && element.src) || element.src !== pf.makeUrl(imageData.src))) {\n\t\t\tif (imageData.src === null) {\n\t\t\t\telement.removeAttribute(\"src\");\n\t\t\t} else {\n\t\t\t\telement.src = imageData.src;\n\t\t\t}\n\t\t}\n\n\t\timageData.parsed = true;\n\t};\n\n\tpf.fillImg = function(element, options) {\n\t\tvar imageData;\n\t\tvar extreme = options.reselect || options.reevaluate;\n\n\t\t// expando for caching data on the img\n\t\tif ( !element[ pf.ns ] ) {\n\t\t\telement[ pf.ns ] = {};\n\t\t}\n\n\t\timageData = element[ pf.ns ];\n\n\t\t// if the element has already been evaluated, skip it\n\t\t// unless `options.reevaluate` is set to true ( this, for example,\n\t\t// is set to true when running `picturefill` on `resize` ).\n\t\tif ( !extreme && imageData.evaled === evalId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !imageData.parsed || options.reevaluate ) {\n\t\t\tpf.parseSets( element, element.parentNode, options );\n\t\t}\n\n\t\tif ( !imageData.supported ) {\n\t\t\tapplyBestCandidate( element );\n\t\t} else {\n\t\t\timageData.evaled = evalId;\n\t\t}\n\t};\n\n\tpf.setupRun = function() {\n\t\tif ( !alreadyRun || isVwDirty || (DPR !== window.devicePixelRatio) ) {\n\t\t\tupdateMetrics();\n\t\t}\n\t};\n\n\t// If picture is supported, well, that's awesome.\n\tif ( pf.supPicture ) {\n\t\tpicturefill = noop;\n\t\tpf.fillImg = noop;\n\t} else {\n\n\t\t // Set up picture polyfill by polling the document\n\t\t(function() {\n\t\t\tvar isDomReady;\n\t\t\tvar regReady = window.attachEvent ? /d$|^c/ : /d$|^c|^i/;\n\n\t\t\tvar run = function() {\n\t\t\t\tvar readyState = document.readyState || \"\";\n\n\t\t\t\ttimerId = setTimeout(run, readyState === \"loading\" ? 200 : 999);\n\t\t\t\tif ( document.body ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t\tisDomReady = isDomReady || regReady.test(readyState);\n\t\t\t\t\tif ( isDomReady ) {\n\t\t\t\t\t\tclearTimeout( timerId );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar timerId = setTimeout(run, document.body ? 9 : 99);\n\n\t\t\t// Also attach picturefill on resize and readystatechange\n\t\t\t// http://modernjavascript.blogspot.com/2013/08/building-better-debounce.html\n\t\t\tvar debounce = function(func, wait) {\n\t\t\t\tvar timeout, timestamp;\n\t\t\t\tvar later = function() {\n\t\t\t\t\tvar last = (new Date()) - timestamp;\n\n\t\t\t\t\tif (last < wait) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait - last);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimeout = null;\n\t\t\t\t\t\tfunc();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn function() {\n\t\t\t\t\ttimestamp = new Date();\n\n\t\t\t\t\tif (!timeout) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t\tvar lastClientWidth = docElem.clientHeight;\n\t\t\tvar onResize = function() {\n\t\t\t\tisVwDirty = Math.max(window.innerWidth || 0, docElem.clientWidth) !== units.width || docElem.clientHeight !== lastClientWidth;\n\t\t\t\tlastClientWidth = docElem.clientHeight;\n\t\t\t\tif ( isVwDirty ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ton( window, \"resize\", debounce(onResize, 99 ) );\n\t\t\ton( document, \"readystatechange\", run );\n\t\t})();\n\t}\n\n\tpf.picturefill = picturefill;\n\t//use this internally for easy monkey patching/performance testing\n\tpf.fillImgs = picturefill;\n\tpf.teardownRun = noop;\n\n\t/* expose methods for testing */\n\tpicturefill._ = pf;\n\n\twindow.picturefillCFG = {\n\t\tpf: pf,\n\t\tpush: function(args) {\n\t\t\tvar name = args.shift();\n\t\t\tif (typeof pf[name] === \"function\") {\n\t\t\t\tpf[name].apply(pf, args);\n\t\t\t} else {\n\t\t\t\tcfg[name] = args[0];\n\t\t\t\tif (alreadyRun) {\n\t\t\t\t\tpf.fillImgs( { reselect: true } );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\twhile (setOptions && setOptions.length) {\n\t\twindow.picturefillCFG.push(setOptions.shift());\n\t}\n\n\t/* expose picturefill */\n\twindow.picturefill = picturefill;\n\n\t/* expose picturefill */\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// CommonJS, just export\n\t\tmodule.exports = picturefill;\n\t} else if ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD support\n\t\tdefine( \"picturefill\", function() { return picturefill; } );\n\t}\n\n\t// IE8 evals this sync, so it must be the last thing we do\n\tif ( !pf.supPicture ) {\n\t\ttypes[ \"image/webp\" ] = detectTypeSupport(\"image/webp\", \"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==\" );\n\t}\n\n} )( window, document );\n","/*!\n * Glide.js v3.4.1\n * (c) 2013-2019 Jędrzej Chałubek (http://jedrzejchalubek.com/)\n * Released under the MIT License.\n */\n\nvar defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */\n type: 'slider',\n\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */\n startAt: 0,\n\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */\n perView: 1,\n\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */\n focusAt: 0,\n\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */\n gap: 10,\n\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */\n autoplay: false,\n\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */\n hoverpause: true,\n\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */\n keyboard: true,\n\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */\n bound: false,\n\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */\n swipeThreshold: 80,\n\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */\n dragThreshold: 120,\n\n /**\n * A maximum number of slides to which movement will be made on swiping or dragging. Use `false` for unlimited.\n *\n * @type {Number|Boolean}\n */\n perTouch: false,\n\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */\n touchRatio: 0.5,\n\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */\n touchAngle: 45,\n\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */\n animationDuration: 400,\n\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */\n rewind: true,\n\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */\n rewindDuration: 800,\n\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */\n animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */\n throttle: 10,\n\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */\n direction: 'ltr',\n\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */\n peek: 0,\n\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */\n breakpoints: {},\n\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */\n classes: {\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n slider: 'glide--slider',\n carousel: 'glide--carousel',\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n cloneSlide: 'glide__slide--clone',\n activeNav: 'glide__bullet--active',\n activeSlide: 'glide__slide--active',\n disabledArrow: 'glide__arrow--disabled'\n }\n};\n\n/**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\nfunction warn(msg) {\n console.error(\"[Glide warn]: \" + msg);\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n/**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toInt(value) {\n return parseInt(value);\n}\n\n/**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toFloat(value) {\n return parseFloat(value);\n}\n\n/**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isString(value) {\n return typeof value === 'string';\n}\n\n/**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\nfunction isObject(value) {\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n}\n\n/**\n * Indicates whether the specified value is a number.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n\n/**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\n/**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\n\n/**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isArray(value) {\n return value.constructor === Array;\n}\n\n/**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\nfunction mount(glide, extensions, events) {\n var components = {};\n\n for (var name in extensions) {\n if (isFunction(extensions[name])) {\n components[name] = extensions[name](glide, components, events);\n } else {\n warn('Extension must be a function');\n }\n }\n\n for (var _name in components) {\n if (isFunction(components[_name].mount)) {\n components[_name].mount();\n }\n }\n\n return components;\n}\n\n/**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */\nfunction define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n}\n\n/**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n\n return r[k], r;\n }, {});\n}\n\n/**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */\nfunction mergeOptions(defaults, settings) {\n var options = _extends({}, defaults, settings);\n\n // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n if (settings.hasOwnProperty('classes')) {\n options.classes = _extends({}, defaults.classes, settings.classes);\n\n if (settings.classes.hasOwnProperty('direction')) {\n options.classes.direction = _extends({}, defaults.classes.direction, settings.classes.direction);\n }\n }\n\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = _extends({}, defaults.breakpoints, settings.breakpoints);\n }\n\n return options;\n}\n\nvar EventsBus = function () {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */\n function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, EventsBus);\n\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n createClass(EventsBus, [{\n key: 'on',\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n }\n\n // Create the event's object if not yet created\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n }\n\n // Add the handler to queue\n var index = this.events[event].push(handler) - 1;\n\n // Provide handle back for removal of event\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: 'emit',\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n }\n\n // If the event doesn't exist, or there's no handlers in queue, just leave\n if (!this.hop.call(this.events, event)) {\n return;\n }\n\n // Cycle through events queue, fire!\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n return EventsBus;\n}();\n\nvar Glide = function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, Glide);\n\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n\n createClass(Glide, [{\n key: 'mount',\n value: function mount$$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after');\n\n return this;\n }\n\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n\n }, {\n key: 'mutate',\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'update',\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'go',\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'move',\n value: function move(distance) {\n this._c.Transition.disable();\n this._c.Move.make(distance);\n\n return this;\n }\n\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'play',\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'pause',\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'disable',\n value: function disable() {\n this.disabled = true;\n\n return this;\n }\n\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'enable',\n value: function enable() {\n this.disabled = false;\n\n return this;\n }\n\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'on',\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'isType',\n value: function isType(name) {\n return this.settings.type === name;\n }\n\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: 'settings',\n get: function get$$1() {\n return this._o;\n }\n\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */\n ,\n set: function set$$1(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: 'index',\n get: function get$$1() {\n return this._i;\n }\n\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */\n ,\n set: function set$$1(i) {\n this._i = toInt(i);\n }\n\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n\n }, {\n key: 'type',\n get: function get$$1() {\n return this.settings.type;\n }\n\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'disabled',\n get: function get$$1() {\n return this._d;\n }\n\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n ,\n set: function set$$1(status) {\n this._d = !!status;\n }\n }]);\n return Glide;\n}();\n\nfunction Run (Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n Glide.disable();\n\n this.move = move;\n\n Events.emit('run.before', this.move);\n\n this.calculate();\n\n Events.emit('run', this.move);\n\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n\n if (_this.isOffset('<') || _this.isOffset('>')) {\n _this._o = false;\n\n Events.emit('run.offset', _this.move);\n }\n\n Events.emit('run.after', _this.move);\n\n Glide.enable();\n });\n }\n },\n\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Void}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction;\n\n\n var countableSteps = isNumber(toInt(steps)) && toInt(steps) !== 0;\n\n switch (direction) {\n case '>':\n if (steps === '>') {\n Glide.index = length;\n } else if (this.isEnd()) {\n if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n this._o = true;\n\n Glide.index = 0;\n }\n } else if (countableSteps) {\n Glide.index += Math.min(length - Glide.index, -toInt(steps));\n } else {\n Glide.index++;\n }\n break;\n\n case '<':\n if (steps === '<') {\n Glide.index = 0;\n } else if (this.isStart()) {\n if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n this._o = true;\n\n Glide.index = length;\n }\n } else if (countableSteps) {\n Glide.index -= Math.min(Glide.index, toInt(steps));\n } else {\n Glide.index--;\n }\n break;\n\n case '=':\n Glide.index = steps;\n break;\n\n default:\n warn('Invalid direction pattern [' + direction + steps + '] has been used');\n break;\n }\n },\n\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index === 0;\n },\n\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index === this.length;\n },\n\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset(direction) {\n return this._o && this.move.direction === direction;\n }\n };\n\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length;\n\n // If the `bound` option is acitve, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (Glide.isType('slider') && settings.focusAt !== 'center' && settings.bound) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n\n return Run;\n}\n\n/**\n * Returns a current time.\n *\n * @return {Number}\n */\nfunction now() {\n return new Date().getTime();\n}\n\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\nfunction throttle(func, wait, options) {\n var timeout = void 0,\n context = void 0,\n args = void 0,\n result = void 0;\n var previous = 0;\n if (!options) options = {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\nvar MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n};\n\nfunction Gaps (Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = this.value / 2 + 'px';\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = this.value / 2 + 'px';\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n\n define(Gaps, 'grow', {\n /**\n * Gets additional dimentions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * (Components.Sizes.length - 1);\n }\n });\n\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n\n return Gaps.value * (perView - 1) / perView;\n }\n });\n\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n\n return Gaps;\n}\n\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\nfunction siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n}\n\n/**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\nfunction exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\n}\n\nvar TRACK_SELECTOR = '[data-glide-el=\"track\"]';\n\nfunction Html (Glide, Components) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.slides = Array.prototype.slice.call(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.cloneSlide);\n });\n }\n };\n\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn('Could not find track element. Please use ' + TRACK_SELECTOR + ' attribute.');\n }\n }\n });\n\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n\n return Html;\n}\n\nfunction Peek (Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n\n return Peek;\n}\n\nfunction Move (Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n this.offset = offset;\n\n Events.emit('move', {\n movement: this.value\n });\n\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n\n return Move;\n}\n\nfunction Sizes (Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimentions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = this.slideWidth + 'px';\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n\n /**\n * Setups dimentions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper(dimention) {\n Components.Html.wrapper.style.width = this.wrapperSize + 'px';\n },\n\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n\n define(Sizes, 'width', {\n /**\n * Gets width value of the glide.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.root.offsetWidth;\n }\n });\n\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of the single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimentions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Sizes.remove();\n });\n\n return Sizes;\n}\n\nfunction Build (Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n\n this.typeClass();\n this.activeClass();\n\n Events.emit('build.after');\n },\n\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes[Glide.settings.type]);\n },\n\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.activeSlide);\n\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.activeSlide);\n });\n }\n },\n\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var classes = Glide.settings.classes;\n\n Components.Html.root.classList.remove(classes[Glide.settings.type]);\n\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(classes.activeSlide);\n });\n }\n };\n\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimentions\n * - on updating settings via API\n */\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n Events.on('move.after', function () {\n Build.activeClass();\n });\n\n return Build;\n}\n\nfunction Clones (Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n\n /**\n * Collect clones with pattern.\n *\n * @return {Void}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes;\n\n\n var peekIncrementer = +!!Glide.settings.peek;\n var part = perView + peekIncrementer;\n var start = slides.slice(0, part);\n var end = slides.slice(-part);\n\n for (var r = 0; r < Math.max(1, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < start.length; i++) {\n var clone = start[i].cloneNode(true);\n\n clone.classList.add(classes.cloneSlide);\n\n items.push(clone);\n }\n\n for (var _i = 0; _i < end.length; _i++) {\n var _clone = end[_i].cloneNode(true);\n\n _clone.classList.add(classes.cloneSlide);\n\n items.unshift(_clone);\n }\n }\n\n return items;\n },\n\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n\n\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half, items.length);\n var width = Components.Sizes.slideWidth + 'px';\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n\n define(Clones, 'grow', {\n /**\n * Gets additional dimentions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n Events.on('destroy', function () {\n Clones.remove();\n });\n\n return Clones;\n}\n\nvar EventsBinder = function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, EventsBinder);\n\n this.listeners = listeners;\n }\n\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n createClass(EventsBinder, [{\n key: 'on',\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: 'off',\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n return EventsBinder;\n}();\n\nfunction Resize (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n\n return Resize;\n}\n\nvar VALID_DIRECTIONS = ['ltr', 'rtl'];\nvar FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n};\n\nfunction Direction (Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n Events.on('update', function () {\n Direction.mount();\n });\n\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n\n return Direction;\n}\n\n/**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Rtl (Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Gap (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Gaps.value * Glide.index;\n }\n };\n}\n\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Grow (Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n}\n\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Peeking (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Focusing (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n}\n\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction mutator (Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n}\n\nfunction Translate (Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n\n Components.Html.wrapper.style.transform = 'translate3d(' + -1 * transform + 'px, 0px, 0px)';\n },\n\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n }\n };\n\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n Events.on('move', function (context) {\n var gap = Components.Gaps.value;\n var length = Components.Sizes.length;\n var width = Components.Sizes.slideWidth;\n\n if (Glide.isType('carousel') && Components.Run.isOffset('<')) {\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n\n Translate.set(width * (length - 1));\n });\n\n return Translate.set(-width - gap * length);\n }\n\n if (Glide.isType('carousel') && Components.Run.isOffset('>')) {\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n\n Translate.set(0);\n });\n\n return Translate.set(width * length + gap * length);\n }\n\n return Translate.set(context.movement);\n });\n\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Translate.remove();\n });\n\n return Translate;\n}\n\nfunction Transition (Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (!disabled) {\n return property + ' ' + this.duration + 'ms ' + settings.animationTimingFunc;\n }\n\n return property + ' 0ms ' + settings.animationTimingFunc;\n },\n\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n\n this.set();\n },\n\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n\n this.set();\n }\n };\n\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n Events.on('move', function () {\n Transition.set();\n });\n\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimentions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n Events.on('run', function () {\n Transition.enable();\n });\n\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Transition.remove();\n });\n\n return Transition;\n}\n\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\n\nvar supportsPassive = false;\n\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\n\nvar supportsPassive$1 = supportsPassive;\n\nvar START_EVENTS = ['touchstart', 'mousedown'];\nvar MOVE_EVENTS = ['touchmove', 'mousemove'];\nvar END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\nvar MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\n\nfunction Swipe (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? { passive: true } : false;\n\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n\n var swipe = this.touches(event);\n\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n\n this.bindSwipeMove();\n this.bindSwipeEnd();\n\n Events.emit('swipe.start');\n }\n },\n\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n\n\n var swipe = this.touches(event);\n\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n\n Components.Move.make(subExSx * toFloat(touchRatio));\n\n Components.Html.root.classList.add(classes.dragging);\n\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var settings = Glide.settings;\n\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n var steps = Math.round(swipeDistance / Components.Sizes.slideWidth);\n\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < settings.touchAngle) {\n // While swipe is positive and greater than threshold move backward.\n if (settings.perTouch) {\n steps = Math.min(steps, toInt(settings.perTouch));\n }\n\n if (Components.Direction.is('rtl')) {\n steps = -steps;\n }\n\n Components.Run.make(Components.Direction.resolve('<' + steps));\n } else if (swipeDistance < -threshold && swipeDeg < settings.touchAngle) {\n // While swipe is negative and lower than negative threshold move forward.\n if (settings.perTouch) {\n steps = Math.max(steps, -toInt(settings.perTouch));\n }\n\n if (Components.Direction.is('rtl')) {\n steps = -steps;\n }\n\n Components.Run.make(Components.Direction.resolve('>' + steps));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(settings.classes.dragging);\n\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n\n Events.emit('swipe.end');\n }\n },\n\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var settings = Glide.settings;\n\n if (settings.swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (settings.dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n\n Components.Transition.enable();\n\n return this;\n },\n\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n\n Components.Transition.disable();\n\n return this;\n }\n };\n\n /**\n * Add component class:\n * - after initial building\n */\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n\n return Swipe;\n}\n\nfunction Images (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n\n return Images;\n}\n\nfunction Anchors (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n var detached = false;\n\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n var prevented = false;\n\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n\n this.bind();\n },\n\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n\n this.items[i].setAttribute('data-href', this.items[i].getAttribute('href'));\n\n this.items[i].removeAttribute('href');\n }\n\n detached = true;\n }\n\n return this;\n },\n\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n\n this.items[i].setAttribute('href', this.items[i].getAttribute('data-href'));\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n\n return Anchors;\n}\n\nvar NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\n\nfunction Controls (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var capture = supportsPassive$1 ? { passive: true } : false;\n\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n\n this.addBindings();\n },\n\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.add(settings.classes.activeNav);\n\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.activeNav);\n });\n }\n },\n\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.remove(Glide.settings.classes.activeNav);\n }\n },\n\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in driection precised in\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n event.preventDefault();\n\n Components.Run.make(Components.Direction.resolve(event.currentTarget.getAttribute('data-glide-dir')));\n }\n };\n\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n\n return Controls;\n}\n\nfunction Keyboard (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n if (event.keyCode === 39) {\n Components.Run.make(Components.Direction.resolve('>'));\n }\n\n if (event.keyCode === 37) {\n Components.Run.make(Components.Direction.resolve('<'));\n }\n }\n };\n\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n Events.on('update', function () {\n Keyboard.mount();\n });\n\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n Events.on('destroy', function () {\n Binder.destroy();\n });\n\n return Keyboard;\n}\n\nfunction Autoplay (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n }, this.time);\n }\n }\n },\n\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n _this2.stop();\n });\n\n Binder.on('mouseout', Components.Html.root, function () {\n _this2.start();\n });\n },\n\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n Events.on(['run.before', 'pause', 'destroy', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n Events.on(['run.after', 'play', 'swipe.end'], function () {\n Autoplay.start();\n });\n\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n Events.on('update', function () {\n Autoplay.mount();\n });\n\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n Events.on('destroy', function () {\n Binder.destroy();\n });\n\n return Autoplay;\n}\n\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\nfunction sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn('Breakpoints option must be an object');\n }\n\n return {};\n}\n\nfunction Breakpoints (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n var settings = Glide.settings;\n\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n var points = sortBreakpoints(settings.breakpoints);\n\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n var defaults = _extends({}, settings);\n\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia('(max-width: ' + point + 'px)').matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n _extends(settings, Breakpoints.match(points));\n\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n Events.on('update', function () {\n points = sortBreakpoints(points);\n\n defaults = _extends({}, settings);\n });\n\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n\n return Breakpoints;\n}\n\nvar COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n};\n\nvar Glide$1 = function (_Core) {\n inherits(Glide$$1, _Core);\n\n function Glide$$1() {\n classCallCheck(this, Glide$$1);\n return possibleConstructorReturn(this, (Glide$$1.__proto__ || Object.getPrototypeOf(Glide$$1)).apply(this, arguments));\n }\n\n createClass(Glide$$1, [{\n key: 'mount',\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return get(Glide$$1.prototype.__proto__ || Object.getPrototypeOf(Glide$$1.prototype), 'mount', this).call(this, _extends({}, COMPONENTS, extensions));\n }\n }]);\n return Glide$$1;\n}(Glide);\n\nexport default Glide$1;\n","// import $ from \"jquery\";\nimport debug from 'bows/dist/bows.min.js';\nimport Glide from '@glidejs/glide'\n\nconst log = debug(\"general\");\n\nfunction glide_arrows(glide) {\n\tlet body = document.querySelector('body');\n\tlet bodyWidth = body.offsetWidth;\n\n\tif (bodyWidth >= 768) {\n\t\tsetTimeout(() => {\n\n\n\t\t\tlet active = glide.querySelector('.glide__slide--active');\n\t\t\tlet activeImage = active.querySelector('img');\n\t\t\tlet activeImageHeight = activeImage.offsetHeight;\n\n\t\t\tlet arrows = glide.querySelector('.glide-controls');\n\t\t\tlet arrowsHeight = arrows.offsetHeight;\n\n\t\t\tlet arrowPosition = activeImageHeight - arrowsHeight;\n\n\t\t\tarrows.style.top = `${arrowPosition}px`;\n\t\t}, 250);\n\t}\n\n}\n\nexport function init() {\n\tArray.prototype.slice.call(document.querySelectorAll('.glide')).forEach(function (glide) {\n\t\tlet slides = glide.querySelectorAll('.glide__slide');\n\t\tif (slides.length > 1) {\n\t\t\tlet glider = new Glide(glide, {\n\t\t\t\ttype: 'carousel',\n\t\t\t\tperView: 1,\n\t\t\t\tgap: 5,\n\t\t\t});\n\n\t\t\tglider.on('mount.after', function () {\n\t\t\t\tglide_arrows(glide);\n\t\t\t\t//Forced resize event to fix wonky issue\n\t\t\t\tvar resizeEvent = window.document.createEvent('UIEvents');\n\t\t\t\tresizeEvent.initUIEvent('resize', true, false, window, 0);\n\t\t\t\twindow.dispatchEvent(resizeEvent);\n\t\t\t});\n\n\t\t\tglider.on('move.after', function () {\n\t\t\t\tglide_arrows(glide);\n\t\t\t});\n\t\t\tglider.on('resize', function () {\n\t\t\t\tglide_arrows(glide);\n\n\t\t\t});\n\t\t\tglider.mount();\n\t\t}\n\t});\n}\n\nexport default {\n\tinit\n};\n","import $ from \"jquery\";\nimport debug from 'bows/dist/bows.min.js';\n\n\nconst log = debug(\"resouces\");\nconst body = $('body');\n\nexport function init() {\n\n\t$('#resources-listing-more').on('click', function () {\n\t\tlet $hidden = $(this).closest('.resources-listing').find('.resource--hide');\n\t\tlet count = 0;\n\t\tlet show = 3;\n\t\tlet show_count = show - 1;\n\t\t$hidden.each(function () {\n\t\t\tif (count <= show_count) {\n\t\t\t\t$hidden.eq(count).fadeIn().removeClass('resource--hide');\n\t\t\t}\n\t\t\tcount++\n\t\t});\n\n\t\tif ($hidden.length <= show) {\n\t\t\t$(this).fadeOut();\n\t\t}\n\n\t});\n}\n\nexport default {\n\tinit\n};\n","//import $ from \"jquery\";\nimport debug from 'bows/dist/bows.min.js';\nimport fitvid from \"./base/_fitvid\";\n\nconst log = debug(\"modal\");\nconst modalBtn = document.querySelectorAll(\"[data-modal]\");\nconst body = document.querySelector(\"body\");\nconst top = document.getElementById(\"top\");\nconst modalOverlay = document.getElementById(\"modal-overlay\");\nconst mapModal = document.getElementById('map');\n\nlet focusable = top.querySelectorAll(\n\t\"a,button,input,select,iframe,video,audio, textarea\"\n);\n\nlet current_modal = \"\";\n\n\nexport function esc() {\n\tdocument.addEventListener(\"keydown\", function (evt) {\n\t\tevt = evt || window.event;\n\t\tvar isEscape = false;\n\t\tif (\"key\" in evt) {\n\t\t\tisEscape = evt.key == \"Escape\" || evt.key == \"Esc\";\n\t\t} else {\n\t\t\tisEscape = evt.keyCode == 27;\n\t\t}\n\n\t\tif (isEscape && body.classList.contains(\"modal-open\")) {\n\t\t\tcloseModal();\n\t\t}\n\t});\n}\n\nfunction removeFocus() {\n\tfocusable.forEach(elm => {\n\t\telm.setAttribute(\"tabindex\", \"-1\");\n\t});\n}\n\nfunction enableFocus() {\n\tfocusable.forEach(elm => {\n\t\telm.removeAttribute(\"tabindex\");\n\t});\n}\n\nexport function closeModal() {\n\tconst return_focus = document.querySelector(\".return_focus\");\n\tlet iframe = current_modal.querySelector('iframe');\n\tif (iframe !== null) {\n\t\tlet iframeSrc = iframe.getAttribute('src');\n\t\tlet newIframeSrc = iframeSrc.replace('&autoplay=1', '').replace('?autoplay=1', '');\n\t\tiframe.setAttribute('src', newIframeSrc);\n\t}\n\n\tcurrent_modal.classList.remove(\"modal--show\");\n\tsetTimeout(() => {\n\t\tcurrent_modal.setAttribute(\"aria-hidden\", true);\n\t\tbody.classList.remove(\"modal-open\");\n\t\tbody.classList.remove(\"modal-hide\");\n\t}, 250);\n\n\tenableFocus();\n\treturn_focus.focus();\n\treturn_focus.classList.remove(\"return_focus\");\n}\n\nfunction doModal(cm, which, showOverlay) {\n\tif (showOverlay) {\n\t\tbody.classList.add(\"modal-open\");\n\t} else {\n\t\tbody.classList.add(\"modal-hide\");\n\n\t}\n\n\tcm.setAttribute(\"aria-hidden\", false);\n\tcm.setAttribute(\"tabindex\", \"-1\");\n\tsetTimeout(() => {\n\t\tcm.classList.add(\"modal--show\");\n\n\t\tlet embed = cm.querySelector('[data-embed]');\n\n\t\tif (embed !== null) {\n\t\t\tlet embedCode = embed.getAttribute('data-embed');\n\t\t\tlet newFitVid = document.createElement('div');\n\t\t\tnewFitVid.classList.add('video-fit-vid');\n\t\t\tembed.after(newFitVid);\n\t\t\tnewFitVid.insertAdjacentHTML('afterbegin', embedCode);\n\t\t\tembed.parentNode.removeChild(embed);\n\n\t\t}\n\n\t\tlet iframe = cm.querySelector('iframe');\n\n\t\tif (iframe !== null) {\n\t\t\tlet iframeSrc = iframe.getAttribute('src');\n\t\t\tlet hasParams = iframeSrc.split('?');\n\t\t\tif (hasParams.length > 1) {\n\t\t\t\tiframeSrc += '&autoplay=1&enablejsapi=1'\n\t\t\t} else {\n\t\t\t\tiframeSrc += '?autoplay=1&enablejsapi=1'\n\t\t\t}\n\t\t\tiframe.setAttribute('src', iframeSrc);\n\t\t}\n\t}, 150);\n\n\tfocusable = top.querySelectorAll(\n\t\t\"a,button,input,select,iframe,video,audio, textarea\"\n\t);\n\tremoveFocus();\n\tif (which !== undefined && which !== null) {\n\t\tif (which !== 'main-search') {\n\t\t\tcm.focus();\n\t\t} else {\n\n\t\t\tlet focusInput = cm.querySelector('input[type=\"text\"]');\n\t\t\tsetTimeout(() => {\n\t\t\t\tfocusInput.focus();\n\t\t\t}, 250);\n\t\t}\n\t}\n\tvar resizeEvent = window.document.createEvent('UIEvents');\n\tresizeEvent.initUIEvent('resize', true, false, window, 0);\n\twindow.dispatchEvent(resizeEvent);\n\n\tif (mapModal !== null) {\n\t\tvar modalHeight = cm.clientHeight;\n\t\tmapModal.style.height = `${modalHeight}px`;\n\t}\n}\n\nexport function showModal(e) {\n\tconst which = this.getAttribute(\"data-modal\");\n\tlet showOverlay = true;\n\tif (which == 'utility-nav') {\n\t\tshowOverlay = false;\n\t}\n\n\tcurrent_modal = document.getElementById(which);\n\tlog(which);\n\tthis.classList.add(\"return_focus\");\n\tdoModal(current_modal, which, showOverlay);\n}\n\n\nexport function init() {\n\tlog(`modal init`);\n\n\tconst modal_close = document.querySelectorAll(\".modal__close\");\n\tmodal_close.forEach(btn => {\n\t\tbtn.addEventListener(\"click\", closeModal);\n\t});\n\n\tesc();\n\n\tif (modalBtn) {\n\t\tmodalBtn.forEach(btn => {\n\t\t\tbtn.addEventListener(\"click\", showModal);\n\t\t});\n\t}\n\n\n\tif (modalOverlay) {\n\t\tmodalOverlay.addEventListener(\"click\", closeModal);\n\t}\n\n\n\n\tif (mapModal !== null) {\n\t\tvar map = document.getElementById('map-modal');\n\t\tvar endResizeEvent;\n\t\twindow.onresize = function () {\n\t\t\tclearTimeout(endResizeEvent);\n\t\t\tendResizeEvent = setTimeout(function () {\n\t\t\t\tif (map.classList.contains('modal--show')) {\n\t\t\t\t\tvar modalHeight = map.clientHeight;\n\t\t\t\t\tmapModal.style.height = `${modalHeight}px`;\n\t\t\t\t}\n\t\t\t}, 150);\n\t\t}\n\t}\n\n}\n\nexport default {\n\tinit: init,\n\tshowModal: showModal,\n\tcloseModal: closeModal\n};\n","/*!\n * headroom.js v0.10.3 - Give your page some headroom. Hide your header until you need it\n * Copyright (c) 2019 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;\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 element.addEventListener(\"scroll\", handleScroll, eventOptions);\n\n return {\n destroy: function() {\n cancelAnimationFrame(rafId);\n element.removeEventListener(\"scroll\", handleScroll, eventOptions);\n }\n };\n }\n\n function normalizeTolerance(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 = normalizeTolerance(this.tolerance);\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(this.classes[className]);\n },\n\n removeClass: function(className) {\n this.elem.classList.remove(this.classes[className]);\n },\n\n hasClass: function(className) {\n return this.elem.classList.contains(this.classes[className]);\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","'use strict';\n\nmodule.exports = function(el, onOver, onOut) {\n var x, y, pX, pY;\n var mouseOver = false;\n var focused = false;\n var h = {},\n state = 0,\n timer = 0;\n\n var options = {\n sensitivity: 7,\n interval: 100,\n timeout: 0,\n handleFocus: false\n };\n\n function delay(el, e) {\n if (timer) timer = clearTimeout(timer);\n state = 0;\n return focused ? undefined : onOut.call(el, e);\n }\n\n function tracker(e) {\n x = e.clientX;\n y = e.clientY;\n }\n\n function compare(el, e) {\n if (timer) timer = clearTimeout(timer);\n if ((Math.abs(pX - x) + Math.abs(pY - y)) < options.sensitivity) {\n state = 1;\n return focused ? undefined : onOver.call(el, e);\n } else {\n pX = x;\n pY = y;\n timer = setTimeout(function() {\n compare(el, e);\n }, options.interval);\n }\n }\n\n // Public methods\n h.options = function(opt) {\n var focusOptionChanged = opt.handleFocus !== options.handleFocus;\n options = Object.assign({}, options, opt);\n if (focusOptionChanged) {\n options.handleFocus ? addFocus() : removeFocus();\n }\n return h;\n };\n\n function dispatchOver(e) {\n mouseOver = true;\n if (timer) timer = clearTimeout(timer);\n el.removeEventListener('mousemove', tracker, false);\n\n if (state !== 1) {\n pX = e.clientX;\n pY = e.clientY;\n\n el.addEventListener('mousemove', tracker, false);\n\n timer = setTimeout(function() {\n compare(el, e);\n }, options.interval);\n }\n\n return this;\n }\n\n function dispatchOut(e) {\n mouseOver = false;\n if (timer) timer = clearTimeout(timer);\n el.removeEventListener('mousemove', tracker, false);\n\n if (state === 1) {\n timer = setTimeout(function() {\n delay(el, e);\n }, options.timeout);\n }\n\n return this;\n }\n\n function dispatchFocus(e) {\n if (!mouseOver) {\n focused = true;\n onOver.call(el, e);\n }\n }\n\n function dispatchBlur(e) {\n if (!mouseOver && focused) {\n focused = false;\n onOut.call(el, e);\n }\n }\n\n function addFocus() {\n el.addEventListener('focus', dispatchFocus, false);\n el.addEventListener('blur', dispatchBlur, false);\n }\n\n function removeFocus() {\n el.removeEventListener('focus', dispatchFocus, false);\n el.removeEventListener('blur', dispatchBlur, false);\n }\n\n h.remove = function() {\n if (!el) return;\n el.removeEventListener('mouseover', dispatchOver, false);\n el.removeEventListener('mouseout', dispatchOut, false);\n removeFocus();\n };\n\n if (el) {\n el.addEventListener('mouseover', dispatchOver, false);\n el.addEventListener('mouseout', dispatchOut, false);\n }\n\n return h;\n};\n","import $ from \"jquery\";\nimport debug from 'bows/dist/bows.min.js';\nimport Headroom from 'headroom.js';\nimport hoverintent from 'hoverintent';\n\nconst log = debug(\"navigation\");\nconst body = document.body;\n\nconst top = document.getElementById(\"top\");\nconst navigationDropdown = $('#main-nav__wrap');\n\nconst navMainBtn = document.querySelector('.primary-nav__toggle');\nconst navPrimaryDesktop = document.querySelector('.main-nav--large');\n\nconst mobileSubNavBack = document.querySelectorAll('.nav__menu-back');\nconst mobileSubNavButton = document.querySelectorAll('.nav__menu-btn');\n\nconst searchBtn = document.querySelector('.main-nav__search');\n\nlet focusable = top.querySelectorAll(\n\t\"a,button,input,select,iframe,video,audio, textarea\"\n);\n\n\nfunction removeFocus() {\n\tfocusable.forEach(elm => {\n\t\telm.setAttribute(\"tabindex\", \"-1\");\n\t});\n}\n\nfunction enableFocus() {\n\tfocusable.forEach(elm => {\n\t\telm.removeAttribute(\"tabindex\");\n\t});\n}\n\n\n\nfunction openMenu() {\n\tfocusable = top.querySelectorAll(\n\t\t\"a,button,input,select,iframe,video,audio, textarea\"\n\t);\n\n\tremoveFocus();\n\n\tbody.classList.add('menu-opened');\n\tsetTimeout(() => {\n\t\tbody.classList.add('menu-open');\n\t}, 100);\n\tnavigationDropdown.focus().slideDown();\n\n\n}\n\nfunction closeMenu() {\n\tenableFocus();\n\tbody.classList.remove('menu-open');\n\tnavigationDropdown.slideUp();\n\tsetTimeout(() => {\n\t\tbody.classList.remove('menu-opened');\n\t}, 500);\n\n\tlet returnFocus = document.querySelector('.return-focus');\n\tif (returnFocus !== null) {\n\t\treturnFocus.focus();\n\t}\n\tcloseSubMenu();\n}\n\n\nfunction toggleMenu() {\n\tif (body.classList.contains('menu-opened') === false) {\n\t\tthis.classList.add('return-focus');\n\t\topenMenu();\n\t} else {\n\t\tcloseMenu();\n\t}\n}\n\n\n\nfunction esc() {\n\tdocument.addEventListener(\"keydown\", function (evt) {\n\t\tevt = evt || window.event;\n\t\tvar isEscape = false;\n\t\tif (\"key\" in evt) {\n\t\t\tisEscape = evt.key == \"Escape\" || evt.key == \"Esc\";\n\t\t} else {\n\t\t\tisEscape = evt.keyCode == 27;\n\t\t}\n\n\t\tif (isEscape && body.classList.contains('menu-opened') === true) {\n\t\t\tcloseMenu();\n\t\t}\n\t});\n}\n\n\nfunction openSubMenu() {\n\tlog(this);\n\tlet nextSibling = this.nextElementSibling;\n\tnextSibling.classList.add('sub-nav--visible');\n\tsetTimeout(() => {\n\t\tnextSibling.classList.add('sub-nav--active');\n\t}, 100);\n\n}\n\nfunction closeSubMenu() {\n\t// let thisParent = this.parentNode;\n\tlet thisParent = document.querySelector('.sub-nav--active');\n\tlog(thisParent);\n\tif (thisParent !== null) {\n\t\tthisParent.classList.remove('sub-nav--active');\n\t\tthisParent.previousElementSibling.focus();\n\t\tsetTimeout(() => {\n\t\t\tthisParent.classList.remove('sub-nav--visible');\n\t\t}, 300);\n\t}\n}\n\nfunction openSearch() {\n\tfocusable = top.querySelectorAll(\n\t\t\"a,button,input,select,iframe,video,audio, textarea\"\n\t);\n\n\tremoveFocus();\n\n\tbody.classList.add('search-opened');\n\tsetTimeout(() => {\n\t\tbody.classList.add('search-open');\n\t}, 100);\n\tnavigationDropdown.focus().slideDown();\n\n\n}\n\nfunction closeSearch() {\n\tenableFocus();\n\tbody.classList.remove('search-open');\n\tnavigationDropdown.slideUp();\n\tsetTimeout(() => {\n\t\tbody.classList.remove('search-opened');\n\t}, 500);\n\n\tlet returnFocus = document.querySelector('.return-focus');\n\tif (returnFocus) {\n\n\t}\n}\n\nfunction toggleSearch() {\n\tif (body.classList.contains('search-opened') === false) {\n\t\tthis.classList.add('return-focus');\n\t\topenSearch();\n\t} else {\n\t\tcloseSearch();\n\t}\n}\n\nfunction itemHoverIntent(element, theClass, time) {\n\tvar opts = {\n\t\ttimeout: time\n\t}\n\tlog(element);\n\telement.forEach(function (elem) {\n\t\tvar hoverListener = hoverintent(elem,\n\t\t\tfunction () {\n\t\t\t\telem.classList.add(theClass);\n\t\t\t\tbody.classList.add('no-scroll');\n\t\t\t},\n\t\t\tfunction () {\n\t\t\t\telem.classList.remove(theClass);\n\t\t\t\tbody.classList.remove('no-scroll');\n\t\t\t}).options(opts);\n\t});\n}\n\nfunction touchOpen($this) {\n\tlog('touchOpen');\n\t$this.classList.add('nav__menu-item--active');\n\t$this.classList.add('nav__menu-item--hover');\n\tbody.classList.add('fixed');\n}\n\nfunction touchClose($this) {\n\tlog('touchClose');\n\t$this.classList.remove('nav__menu-item--active');\n\t$this.classList.remove('nav__menu-item--hover');\n\tbody.classList.remove('fixed');\n}\n\nfunction touchstart(e) {\n\t// log('touched');\n\t// if (this.classList.contains('nav__menu-item--hover') === true) {\n\t// \ttouchClose(this);\n\t// } else {\n\t// \tlet openNav = document.querySelector('.nav__menu-item--hover');\n\t// \tlog(openNav);\n\t// \tif (openNav !== null) {\n\t// \t\ttouchClose(openNav);\n\t// \t}\n\t// \ttouchOpen(this);\n\t// }\n}\n\nfunction preventOpen(e) {\n\te.preventDefault();\n\n\tif (this.parentElement.classList.contains('nav__menu-item--hover') === true) {\n\t\ttouchClose(this.parentElement);\n\t} else {\n\t\tlet openNav = document.querySelector('.nav__menu-item--hover');\n\t\tlog(openNav);\n\t\tif (openNav !== null) {\n\t\t\ttouchClose(openNav);\n\t\t}\n\t\ttouchOpen(this.parentElement);\n\t}\n}\n\nexport function init() {\n\tif (navPrimaryDesktop) {\n\n\t\tconst navMenuItem0 = document.querySelectorAll('.main-nav--large .nav__menu-item--level-0');\n\n\t\tconst navMenuItem0Link = document.querySelectorAll('.main-nav--large .nav__menu-item--level-0.nav__menu-item--has-children > a');\n\n\t\titemHoverIntent(navMenuItem0, 'nav__menu-item--active', 200);\n\n\t\tnavMenuItem0.forEach(navItem => {\n\t\t\tnavItem.addEventListener('touchstart', touchstart);\n\n\t\t});\n\n\t\tnavMenuItem0Link.forEach(navItemLink => {\n\t\t\tnavItemLink.addEventListener('touchstart', preventOpen);\n\n\t\t});\n\t}\n\n\n\tif (navMainBtn) {\n\t\tnavMainBtn.addEventListener('click', toggleMenu);\n\t\tesc();\n\t}\n\n\tif (searchBtn) {\n\t\tsearchBtn.addEventListener('click', toggleSearch);\n\t\tesc();\n\t}\n\n\tmobileSubNavButton.forEach((msnb) => {\n\t\tmsnb.addEventListener('click', openSubMenu);\n\t});\n\n\tmobileSubNavBack.forEach((msnb) => {\n\t\tmsnb.addEventListener('click', closeSubMenu);\n\t});\n\n\n\tconst nav = document.getElementById('header');\n\tconst headroom = new Headroom(nav, {\n\t\toffset: 0,\n\t\ttolerance: {\n\t\t\tdown: 25,\n\t\t\tup: 25\n\t\t}\n\t});\n\t//headroom.init();\n}\n\nexport default {\n\tinit\n};\n","// https://codepen.io/heydon/pen/veeaEa\n// import $ from \"jquery\";\n\n\n// Get relevant elements and collections\nconst tabbed = document.querySelectorAll('.js-wikit-tabbed');\nlet switchTab = '';\nfunction doEachTab(tablist, tabs, panels) {\n\n\t// The tab switching function\n\tswitchTab = (oldTab, newTab, isFocus) => {\n\t\tif (isFocus !== false) {\n\t\t\tnewTab.focus();\n\t\t} else\n\n\t\t\t// Make the active tab focusable by the user (Tab key)\n\t\t\tnewTab.removeAttribute('tabindex');\n\t\t// Set the selected state\n\t\tnewTab.setAttribute('aria-selected', 'true');\n\t\tnewTab.removeAttribute('tabindex');\n\t\toldTab.removeAttribute('aria-selected');\n\t\toldTab.setAttribute('tabindex', '-1');\n\t\toldTab.setAttribute('aria-selected', 'false');\n\t\t// Get the indices of the new and old tabs to find the correct\n\t\t// tab panels to show and hide\n\t\tlet index = Array.prototype.indexOf.call(tabs, newTab);\n\t\tlet oldIndex = Array.prototype.indexOf.call(tabs, oldTab);\n\n\t\tpanels[oldIndex].hidden = true;\n\t\tpanels[index].hidden = false;\n\n\t}\n\n\n\n\t// Add the tablist role to the first
    in the .tabbed container\n\ttablist.setAttribute('role', 'tablist');\n\n\t// Add semantics are remove user focusability for each tab\n\tArray.prototype.forEach.call(tabs, (tab, i) => {\n\t\ttab.setAttribute('role', 'tab');\n\t\t// tab.setAttribute('id', 'tab' + (i + 1));\n\t\ttab.setAttribute('tabindex', '-1');\n\t\ttab.parentNode.setAttribute('role', 'presentation');\n\n\t\t// Handle clicking of tabs for mouse users\n\t\ttab.addEventListener('click', e => {\n\t\t\te.preventDefault();\n\t\t\tlet currentTab = tablist.querySelector('[aria-selected=\"true\"]');\n\t\t\tif (e.currentTarget !== currentTab) {\n\n\t\t\t\tswitchTab(currentTab, e.currentTarget, true);\n\t\t\t}\n\t\t});\n\n\n\t\t// Handle keydown events for keyboard users\n\t\ttab.addEventListener('keydown', e => {\n\t\t\t// Get the index of the current tab in the tabs node list\n\t\t\tlet index = Array.prototype.indexOf.call(tabs, e.currentTarget);\n\t\t\t// Work out which key the user is pressing and\n\t\t\t// Calculate the new tab's index where appropriate\n\t\t\tlet dir = e.which === 37 ? index - 1 : e.which === 39 ? index + 1 : e.which === 40 ? 'down' : null;\n\t\t\tif (dir !== null) {\n\t\t\t\te.preventDefault();\n\t\t\t\t// If the down key is pressed, move focus to the open panel,\n\t\t\t\t// otherwise switch to the adjacent tab\n\n\t\t\t\tdir === 'down' ? panels[i].focus() : tabs[dir] ? switchTab(e.currentTarget, tabs[dir]) : void 0;\n\t\t\t}\n\t\t});\n\t});\n\n\t// Add tab panel semantics and hide them all\n\tArray.prototype.forEach.call(panels, (panel, i) => {\n\t\tpanel.setAttribute('role', 'tabpanel');\n\t\tpanel.setAttribute('tabindex', '-1');\n\t\tlet id = panel.getAttribute('id');\n\t\tpanel.setAttribute('aria-labelledby', tabs[i].id);\n\t\tpanel.hidden = true;\n\t});\n\n\n\n\t// Initially activate the first tab and reveal the first tab panel\n\ttabs[0].removeAttribute('tabindex');\n\ttabs[0].setAttribute('aria-selected', 'true');\n\n\tpanels[0].hidden = false;\n\n}\n\n\nfunction init() {\n\tif (tabbed.length > 0) {\n\t\tfor (let i = 0; i < tabbed.length; i++) {\n\t\t\tlet tablist = tabbed[i].querySelector('ul');\n\t\t\tlet tabs = tablist.querySelectorAll('a');\n\t\t\tlet panels = tabbed[i].querySelectorAll('[id^=\"tabpanel\"]');\n\t\t\tdoEachTab(tablist, tabs, panels);\n\t\t}\n\t}\n}\n\nexport default {\n\tinit\n};\n","import debug from 'bows/dist/bows.min.js';\n\n\nconst log = debug(\"breadcrumbs\");\n\n\nexport function init() {\n\t//check for custom post type in breadcrumb links: stories, projects, blogs, resources\n\t//add post_type= to any subsequent links in breadcrumbs\\\n\tconst currentUrl = window.location.href.toString();\n\tconst cpt = currentUrl.split('post_type=');\n\n\tif (cpt.length > 1) {\n\t\tconst taxCrumb = document.querySelectorAll('.breadcrumb__item span a');\n\n\t\ttaxCrumb.forEach(elm => {\n\t\t\tlet currentHref = elm.getAttribute('href');\n\t\t\tlet hrefSplit = currentHref.split('?');\n\t\t\tif (hrefSplit > 1) {\n\t\t\t\tcurrentHref += `&post_type=${cpt[1]}`;\n\n\t\t\t} else {\n\t\t\t\tcurrentHref += `?post_type=${cpt[1]}`;\n\t\t\t}\n\t\t\telm.setAttribute('href', currentHref);\n\t\t});\n\t}\n}\n\nexport default {\n\tinit\n};\n","import $ from \"jquery\";\nimport debug from 'bows/dist/bows.min.js';\n\n\nconst log = debug(\"table\");\nconst body = $('body');\n\nexport function init() {\n\t//add surrounding div to wysiwyg tables to force horizontal scroll\n\tvar wizTable = $('.wysiwyg > table');\n\n\n\tif (wizTable.length) {\n\t\twizTable.wrap('
    ');\n\t}\n}\n\nexport default {\n\tinit\n};\n","import $ from \"jquery\";\n\nexport function init() {\n\t// $(document).click(function () {\n\t// \t$(\".ar-impactc__tooltip\").hide();\n\t// });\n\n\t// $(\".ar-impactc__tooltip\").hover(function () {\n\t// \tjQuery(\".ar-impactc__tooltip\").show();\n\t// });\n\n\t$(document).on(\"click\", \".ar-intro__hide\", function () {\n\t\t$(this).closest(\".ar-section\").toggleClass(\"ar-intro-hide\");\n\t\tif ($(this).closest(\".ar-section\").hasClass(\"ar-intro-hide\")) {\n\t\t\t$(this).css(\"background\", \"\");\n\t\t\t$(this).find(\"span\").text(\"Show More\");\n\t\t} else {\n\t\t\t$(this).css(\"background\", \"transparent\");\n\t\t\t$(this).find(\"span\").text(\"Show Less\");\n\t\t}\n\t});\n\n\t$(document).on(\"click\", \".ar-impacts-toggle\", function () {\n\t\tif (\n\t\t\t$(this)\n\t\t\t\t.closest(\".ar-impacts__item\")\n\t\t\t\t.find(\"table tbody\")\n\t\t\t\t.hasClass(\"active\")\n\t\t) {\n\t\t\t$(this).find(\".ar-impacts-toggle__text\").text(\"Show More\");\n\t\t} else {\n\t\t\t$(this).find(\".ar-impacts-toggle__text\").text(\"Show Less\");\n\t\t}\n\t\t$(this)\n\t\t\t.closest(\".ar-impacts__item\")\n\t\t\t.find(\"table tbody\")\n\t\t\t.toggleClass(\"active\");\n\t});\n\n\t$(document).on(\n\t\t\"click\",\n\t\t\".ar-trans__outer .ar-trans__item\",\n\t\tfunction (e, fromArrow = false) {\n\t\t\tif (\n\t\t\t\t$(this).find(\".ar-trans__title\").css(\"font-weight\") == \"700\" ||\n\t\t\t\t$(this).find(\".ar-trans__title\").css(\"font-weight\") == \"bold\"\n\t\t\t) {\n\t\t\t\t// active\n\t\t\t\t$(\".ar-trans__title, .ar-trans__country\").css(\"font-weight\", \"\");\n\t\t\t\t$(\".ar-trans-popup\").remove();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar outerCount = parseInt(\n\t\t\t\t$(this).closest(\".ar-trans__outer\").data(\"count\")\n\t\t\t);\n\t\t\tvar count = parseInt($(this).data(\"count\"));\n\t\t\tvar maxCount = parseInt(\n\t\t\t\t$(this)\n\t\t\t\t\t.closest(\".ar-trans__items\")\n\t\t\t\t\t.find(\".ar-trans__item\")\n\t\t\t\t\t.last()\n\t\t\t\t\t.data(\"count\")\n\t\t\t);\n\t\t\tvar prevCount = count - 1;\n\t\t\tvar nextCount = count + 1;\n\t\t\tif (prevCount <= 0) {\n\t\t\t\tprevCount = maxCount;\n\t\t\t}\n\t\t\tif (nextCount > maxCount) {\n\t\t\t\tnextCount = 1;\n\t\t\t}\n\t\t\tvar windowWidth = $(window).width();\n\n\t\t\t$(\".ar-trans__title, .ar-trans__country\").css(\"font-weight\", \"\");\n\t\t\t$(this)\n\t\t\t\t.find(\".ar-trans__title, .ar-trans__country\")\n\t\t\t\t.css(\"font-weight\", \"bold\");\n\t\t\tvar title = $(this).find(\".ar-trans__title\").text();\n\t\t\tvar desc = $(this).find(\".ar-trans__popup-content\").html();\n\t\t\tvar image = $(this).find(\".ar-trans__popup-content\").data(\"image\");\n\t\t\tvar backgroundColor = $(this)\n\t\t\t\t.closest(\".ar-trans__item\")\n\t\t\t\t.find(\".ar-trans__meta\")\n\t\t\t\t.css(\"background-color\");\n\t\t\tvar iconBaseUrl = \"/wp-content/themes/technoserve/assets/img/\";\n\t\t\tvar html =\n\t\t\t\t'
    \\\n
    \\\n
    \\\n
    \\\n \\\n \\\n \\\n \\\n \\\n \\\n
    \\\n \\\n \\\n \\\n
    \\\n
    \\\n \\\n

    ' +\n\t\t\t\ttitle +\n\t\t\t\t'

    \\\n
    ' +\n\t\t\t\tdesc +\n\t\t\t\t\"
    \\\n
    \\\n
    \\\n
    \\\n \";\n\t\t\tvar $popup = $(\".ar-trans-popup\");\n\t\t\tif (windowWidth > 768) {\n\t\t\t\tvar $ele = null;\n\t\t\t\tvar prevTop = null;\n\t\t\t\tvar foundActive = false;\n\t\t\t\tif (!fromArrow) {\n\t\t\t\t\tjQuery(\".ar-trans__item\").removeClass(\"active\");\n\t\t\t\t\tjQuery(this).addClass(\"active\");\n\t\t\t\t}\n\t\t\t\tjQuery(this)\n\t\t\t\t\t.closest(\".ar-trans__outer\")\n\t\t\t\t\t.find(\".ar-trans__item\")\n\t\t\t\t\t.each(function () {\n\t\t\t\t\t\tif (!foundActive) {\n\t\t\t\t\t\t\tprevTop = jQuery(this).offset().top;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (jQuery(this).hasClass(\"active\")) {\n\t\t\t\t\t\t\tfoundActive = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (prevTop) {\n\t\t\t\t\t\t\tif ($ele === null && jQuery(this).offset().top != prevTop) {\n\t\t\t\t\t\t\t\t$ele = jQuery(this);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprevTop = jQuery(this).offset().top;\n\t\t\t\t\t});\n\t\t\t\tif ($ele) {\n\t\t\t\t\t$(html).insertBefore($ele);\n\t\t\t\t} else {\n\t\t\t\t\t$(html).insertAfter(jQuery(this).closest(\".ar-trans__outer\"));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (fromArrow) {\n\t\t\t\t\t$(html).insertAfter(jQuery(\".ar-trans-popup\"));\n\t\t\t\t} else {\n\t\t\t\t\tif (count <= 2) {\n\t\t\t\t\t\t$(html).insertAfter(\n\t\t\t\t\t\t\tjQuery(this)\n\t\t\t\t\t\t\t\t.closest(\".ar-trans__outer\")\n\t\t\t\t\t\t\t\t.find('.ar-trans__item[data-count=\"2\"]')\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(html).insertAfter(jQuery(this).closest(\".ar-trans__outer\"));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t$popup.remove();\n\t\t}\n\t);\n\n\t$(document).on(\n\t\t\"click\",\n\t\t\".ar-trans-popup__arrow-left, .ar-trans-popup__arrow-right\",\n\t\tfunction () {\n\t\t\tvar count = $(this).data(\"count\");\n\t\t\tvar outerCount = $(this).data(\"outercount\");\n\t\t\t$(this)\n\t\t\t\t.closest(\".container\")\n\t\t\t\t.find(\n\t\t\t\t\t'.ar-trans__outer[data-count=\"' +\n\t\t\t\t\t\touterCount +\n\t\t\t\t\t\t'\"] .ar-trans__item[data-count=\"' +\n\t\t\t\t\t\tcount +\n\t\t\t\t\t\t'\"]'\n\t\t\t\t)\n\t\t\t\t.trigger(\"click\", [true]);\n\t\t}\n\t);\n\n\t$(document).on(\"click\", \".ar-trans-popup__close\", function () {\n\t\t$(\".ar-trans__title, .ar-trans__country\").css(\"font-weight\", \"\");\n\t\t$(\".ar-trans-popup\").remove();\n\t});\n\n\t$(document).on(\"click\", \".ar-totop__container\", function () {\n\t\t$(\"html, body\").animate({ scrollTop: 0 }, \"slow\");\n\t\treturn false;\n\t});\n\n\t$(document).on(\"click\", \".ar-menu__container a\", function (e) {\n\t\te.preventDefault();\n\t\tvar id = $(this).data(\"scrollto\");\n\t\tvar top = $(id).offset().top - ($(\"#header\").height() + 40);\n\t\t$(\"html, body\").animate({ scrollTop: top }, \"slow\");\n\t\treturn false;\n\t});\n\n\tfadeInSections();\n\t$(window).scroll(function () {\n\t\tfadeInSections();\n\t\t// fadeInLogos();\n\t\t// hideMapTooltip();\n\t});\n\n\t// if ($(window).width() <= 480 && $(\".ar-impactc__map\").length) {\n\t// \tvar svgPanZoom = $(\".ar-impactc__map svg\").svgPanZoom({\n\t// \t\tzoomFactor: 2,\n\t// \t});\n\t// \t$(document).on(\"click\", \".ar-impactc-controls__zoom-in\", function (e) {\n\t// \t\tsvgPanZoom.zoomIn();\n\t// \t});\n\t// \t$(document).on(\"click\", \".ar-impactc-controls__zoom-out\", function (e) {\n\t// \t\tsvgPanZoom.zoomOut();\n\t// \t});\n\t// } else {\n\t// \t$(document).on(\"click\", \".ar-impactc__map svg path\", function (e) {\n\t// \t\te.stopPropagation();\n\t// \t\tvar _this = this;\n\t// \t\tvar pathClass = $(this).attr(\"class\");\n\t// \t\tvar country = pathClass.split(\"clsc-\");\n\t// \t\tif (country[1]) {\n\t// \t\t\tcountry = country[1].toLowerCase();\n\t// \t\t\tmapData.forEach(function (item) {\n\t// \t\t\t\tif (country == item.country_code.toLowerCase()) {\n\t// \t\t\t\t\t// show tooltip\n\t// \t\t\t\t\tjQuery(\".ar-impactc__tooltip-country\").html(item.country);\n\t// \t\t\t\t\tjQuery(\".ar-impactc__tooltip-data\").html(item.value);\n\t// \t\t\t\t\tjQuery(\".ar-impactc__tooltip\").show();\n\t// \t\t\t\t\tvar top =\n\t// \t\t\t\t\t\tjQuery(_this).get(0).getBoundingClientRect().top +\n\t// \t\t\t\t\t\twindow.scrollY -\n\t// \t\t\t\t\t\tjQuery(window).scrollTop() -\n\t// \t\t\t\t\t\tjQuery(\".ar-impactc__tooltip\").outerHeight() -\n\t// \t\t\t\t\t\t8;\n\t// \t\t\t\t\tif (top < 0) {\n\t// \t\t\t\t\t\ttop = 0;\n\t// \t\t\t\t\t}\n\t// \t\t\t\t\tvar left =\n\t// \t\t\t\t\t\tjQuery(_this).get(0).getBoundingClientRect().left +\n\t// \t\t\t\t\t\tjQuery(_this).get(0).getBoundingClientRect().width / 2 -\n\t// \t\t\t\t\t\tjQuery(\".ar-impactc__tooltip\").width() / 2;\n\n\t// \t\t\t\t\tif (left <= 0) {\n\t// \t\t\t\t\t\tleft = 0;\n\t// \t\t\t\t\t}\n\n\t// \t\t\t\t\tvar arrowLeft =\n\t// \t\t\t\t\t\tjQuery(_this).get(0).getBoundingClientRect().left +\n\t// \t\t\t\t\t\tjQuery(_this).get(0).getBoundingClientRect().width / 2 -\n\t// \t\t\t\t\t\tleft -\n\t// \t\t\t\t\t\t28 -\n\t// \t\t\t\t\t\t18;\n\t// \t\t\t\t\t$(\"#svgstyle\").remove();\n\t// \t\t\t\t\tvar style =\n\t// \t\t\t\t\t\t'\";\n\t// \t\t\t\t\t$(\"body\").append(style);\n\t// \t\t\t\t\tjQuery(\".ar-impactc__tooltip\").css({\n\t// \t\t\t\t\t\ttop: top + \"px\",\n\t// \t\t\t\t\t\tleft: left + \"px\",\n\t// \t\t\t\t\t});\n\t// \t\t\t\t}\n\t// \t\t\t});\n\t// \t\t}\n\t// \t});\n\t// }\n\n\t// $(\".ar-impactc__map svg path\").hover(\n\t// \tfunction () {\n\t// \t\tvar _this = this;\n\t// \t\tvar pathClass = jQuery(this).attr(\"class\");\n\t// \t\tvar country = pathClass.split(\"clsc-\");\n\t// \t\tif (country[1]) {\n\t// \t\t\tcountry = country[1].toLowerCase();\n\t// \t\t\tmapData.forEach(function (item) {\n\t// \t\t\t\tif (country == item.country_code.toLowerCase()) {\n\t// \t\t\t\t\t$(_this).closest(\"svg\").find(\"title\").text(item.country);\n\t// \t\t\t\t\treturn;\n\t// \t\t\t\t} else {\n\t// \t\t\t\t\t$(_this).closest(\"svg\").find(\"title\").text(\"map\");\n\t// \t\t\t\t}\n\t// \t\t\t});\n\t// \t\t}\n\t// \t},\n\t// \tfunction () {\n\t// \t\t$(this).closest(\"svg\").find(\"title\").text(\"map\");\n\t// \t}\n\t// );\n\n\tfunction fadeInSections() {\n\t\t$(\".ar-section\").each(function (i) {\n\t\t\tvar bottom_of_element = $(this).offset().top + 150;\n\t\t\tvar bottom_of_window = $(window).scrollTop() + $(window).height();\n\t\t\tif (bottom_of_window > bottom_of_element) {\n\t\t\t\t$(this).animate({ opacity: \"1\" }, 1000);\n\t\t\t}\n\t\t});\n\t}\n\n\t// function fadeInLogos() {\n\t// $('.ar-partners__image img').each( function(i){\n\t// var bottom_of_element = $(this).offset().top + ($(window).height()/3);\n\t// var bottom_of_window = $(window).scrollTop() + $(window).height();\n\t// if( bottom_of_window > bottom_of_element ){\n\t// $(this).animate({'opacity':'1'},1000);\n\t// }\n\t// });\n\t// }\n\n\t// function hideMapTooltip() {\n\t// \tjQuery(\".ar-impactc__tooltip\").hide();\n\t// }\n\n\t// 2023 Annual Report\n\t$(document).on(\"click\", \".fslightbox-slide-btn\", function (e) {\n\t\t$(\".youtube-iframe\").each(function () {\n\t\t\t$(this).attr(\"src\", $(this).attr(\"src\"));\n\t\t});\n\t});\n\tfunction style(feature) {\n\t\treturn {\n\t\t\tstroke: true,\n\t\t\tcolor: \"#B6B6B7\",\n\t\t\tweight: 1,\n\t\t\tfill: true,\n\t\t\tfillColor: \"#fff\",\n\t\t\tfillOpacity: 1,\n\t\t};\n\t}\n\n\tfunction impactStyle(feature) {\n\t\treturn {\n\t\t\tstroke: true,\n\t\t\tcolor: \"#fff\",\n\t\t\tweight: 1,\n\t\t\tfill: true,\n\t\t\tfillColor: \"#00B0AE\",\n\t\t\tfillOpacity: 1,\n\t\t};\n\t}\n\n\tfunction onEachFeature(feature, layer) {\n\t\tcountryCheck(feature);\n\t}\n\n\tfunction countryCheck(feature) {\n\t\tmapData.forEach(function (val) {\n\t\t\tif (val[\"country_code\"] == feature.properties.postal) {\n\t\t\t\tfeature.properties[\"customText\"] = val[\"value\"];\n\t\t\t\tcountries.push(feature);\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction onEachImpactFeature(feature, layer) {\n\t\tlayer.on({\n\t\t\tclick: clickFeature,\n\t\t\tmouseover: highlightFeature,\n\t\t\tmouseout: resetHighlight,\n\t\t\tclickable: true,\n\t\t});\n\n\t\tvar info =\n\t\t\t\"\" +\n\t\t\t\"

    \" +\n\t\t\tfeature.properties.name +\n\t\t\t\"

    \" +\n\t\t\t\"
    \" +\n\t\t\tfeature.properties.customText;\n\t\tlayer.bindPopup(info, {\n\t\t\tcloseButton: false,\n\t\t\toffset: L.point(0, -20),\n\t\t});\n\t}\n\n\t// hover\n\tfunction highlightFeature(e) {\n\t\tvar layer = e.target;\n\t\tlayer.setStyle({\n\t\t\tweight: 3,\n\t\t\tcolor: \"#40414D\",\n\t\t});\n\n\t\tlayer.bringToFront();\n\n\t\t// info.update(layer.feature.properties);\n\t\tlayer.openPopup();\n\t}\n\n\tfunction resetHighlight(e) {\n\t\tvar layer = e.target;\n\t\tlayer.setStyle({\n\t\t\tweight: 1,\n\t\t\tcolor: \"#fff\",\n\t\t\tfillColor: \"#00B0AE\",\n\t\t});\n\t\t// info.update();\n\n\t\tlayer.closePopup();\n\t}\n\n\tfunction clickFeature(e) {\n\t\tvar layer = e.target;\n\t\tlayer.setStyle({\n\t\t\tweight: 3,\n\t\t\tcolor: \"#40414D\",\n\t\t});\n\n\t\tlayer.bringToFront();\n\t\tlayer.openPopup();\n\t\t// info.update(layer.feature.properties);\n\t}\n\n\tfunction setMapView() {\n\t\tvar width = $(window).width();\n\t\tif (width > 1240) {\n\t\t\tmap.setView([-12, -13], 2.5);\n\t\t} else if (width > 768) {\n\t\t\tmap.setView([-12, -13], 2.3);\n\t\t} else if (width > 525) {\n\t\t\tmap.setView([-12, -13], 2);\n\t\t} else {\n\t\t\tmap.setView([-12, -13], 1.3);\n\t\t}\n\t}\n\tif ($(\"#map\").length) {\n\t\tconsole.log('map present');\n\t\t// map\n\t\tvar geojson;\n\t\tvar activeImpact;\n\t\tvar myGeoJSONPath =\n\t\t\t\"/wp-content/themes/technoserve/assets/dist/custom.geo.json\";\n\t\tvar jsonData = (function () {\n\t\t\tvar json = null;\n\t\t\t$.ajax({\n\t\t\t\tasync: false,\n\t\t\t\tglobal: false,\n\t\t\t\turl: myGeoJSONPath,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tsuccess: function (data) {\n\t\t\t\t\tjson = data;\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn json;\n\t\t})();\n\t\tvar countries = [];\n\t\tvar mapOptions = {\n\t\t\tscrollWheelZoom: false,\n\t\t};\n\t\tvar map = L.map(\"map\", mapOptions);\n\t\tvar info = L.control();\n\n\t\tgeojson = L.geoJson(jsonData, {\n\t\t\tstyle: style,\n\t\t\tonEachFeature: onEachFeature,\n\t\t}).addTo(map);\n\n\t\tactiveImpact = L.geoJSON(countries, {\n\t\t\tstyle: impactStyle,\n\t\t\tonEachFeature: onEachImpactFeature,\n\t\t}).addTo(map);\n\n\t\tsetMapView();\n\n\t\tmap.on(\"resize\", function (e) {\n\t\t\tsetMapView();\n\t\t});\n\n\t\tmap.fitBounds(map.getBounds(), { padding: [0, 0] });\n\t}\n}\n\nexport default {\n\tinit,\n};\n","import $, { each, isEmptyObject } from \"jquery\";\nimport debug from 'bows/dist/bows.min.js';\n\n\nconst log = debug(\"gtm-tracking\");\nconst body = $('body');\nconst GTM_PUSHED_CLASS = 'gtm-pushed';\n\n\nfunction stripHTML(html) {\n // Create a new div element\n let temporalDivEl = document.createElement(\"div\");\n // Set HTML content using provider\n temporalDivEl.innerHTML = html;\n // Get the text property of the element (browser support)\n return temporalDivEl.textContent || temporalDivEl.innerText || \"\";\n}\n\nexport function init() {\nconsole.log('init please full v2.1');\n //Blog Analytics - OScript \n var getBreadcrumb = function(listItems) {\n var data = [];\n listItems.each(function(idx, li) {\n var li = $(li);\n if(li.find('a').length){\n data.push(li.find('a').text());\n }\n else if(li.find('span.breadcrumb__dots').length) {\n data.push(li.find('span.breadcrumb__dots').text());\n }\n });\n \n return data;\n };\n \n // Coleman Liau Index calculation\n /* To speed the script up, you can set a sampling rate in words. For example, if you set\n * sampleLimit to 1000, only the first 1000 words will be parsed from the input text.\n * Set to 0 to never sample.\n */ \n var sampleLimit = 0;\n\n // Manual rewrite of the textstat Python library (https://github.com/shivam5992/textstat/)\n\n /* \n * Regular expression to identify a sentence. No, it's not perfect. \n * Fails e.g. with abbreviations and similar constructs mid-sentence.\n */\n var sentenceRegex = new RegExp('[.?!]\\\\s[^a-z]', 'g');\n\n /*\n * Regular expression to identify a syllable. No, it's not perfect either.\n * It's based on English, so other languages with different vowel / consonant distributions\n * and syllable definitions need a rewrite.\n * Inspired by https://bit.ly/2VK9dz1\n */\n var syllableRegex = new RegExp('[aiouy]+e*|e(?!d$|ly).|[td]ed|le$', 'g');\n\n // Baseline for FRE - English only\n var freBase = {\n base: 206.835,\n sentenceLength: 1.015,\n syllablesPerWord: 84.6,\n syllableThreshold: 3\n };\n\n var cache = {};\n\n var punctuation = ['!','\"','#','$','%','&','\\'','(',')','*','+',',','-','.','/',':',';','<','=','>','?','@','[',']','^','_','`','{','|','}','~'];\n\n var legacyRound = function(number, precision) {\n var k = Math.pow(10, (precision || 0));\n return Math.floor((number * k) + 0.5 * Math.sign(number)) / k;\n };\n\n var charCount = function(text) {\n if (cache.charCount) return cache.charCount;\n if (sampleLimit > 0) text = text.split(' ').slice(0, sampleLimit).join(' ');\n text = text.replace(/\\s/g, '');\n return cache.charCount = text.length;\n };\n\n var removePunctuation = function(text) {\n return text.split('').filter(function(c) {\n return punctuation.indexOf(c) === -1;\n }).join('');\n };\n\n var letterCount = function(text) {\n if (sampleLimit > 0) text = text.split(' ').slice(0, sampleLimit).join(' ');\n text = text.replace(/\\s/g, '');\n return removePunctuation(text).length;\n };\n\n var lexiconCount = function(text, useCache, ignoreSample) {\n if (useCache && cache.lexiconCount) return cache.lexiconCount;\n if (ignoreSample !== true && sampleLimit > 0) text = text.split(' ').slice(0, sampleLimit).join(' ');\n text = removePunctuation(text);\n var lexicon = text.split(' ').length;\n return useCache ? cache.lexiconCount = lexicon : lexicon;\n };\n\n var getWords = function(text, useCache) {\n if (useCache && cache.getWords) return cache.getWords;\n if (sampleLimit > 0) text = text.split(' ').slice(0, sampleLimit).join(' ');\n text = text.toLowerCase();\n text = removePunctuation(text);\n var words = text.split(' ');\n return useCache ? cache.getWords = words : words;\n }\n\n var syllableCount = function(text, useCache) {\n if (useCache && cache.syllableCount) return cache.syllableCount;\n var count = 0;\n var syllables = getWords(text, useCache).reduce(function(a, c) { \n return a + (c.match(syllableRegex) || [1]).length;\n }, 0);\n return useCache ? cache.syllableCount = syllables : syllables;\n };\n\n var polySyllableCount = function(text, useCache) {\n var count = 0;\n getWords(text, useCache).forEach(function(word) {\n var syllables = syllableCount(word);\n if (syllables >= 3) {\n count += 1;\n }\n });\n return count;\n };\n\n var sentenceCount = function(text, useCache) {\n if (useCache && cache.sentenceCount) return cache.sentenceCount;\n if (sampleLimit > 0) text = text.split(' ').slice(0, sampleLimit).join(' ');\n var ignoreCount = 0;\n var sentences = text.split(sentenceRegex);\n sentences.forEach(function(s) {\n if (lexiconCount(s, true, false) <= 2) { ignoreCount += 1; }\n });\n var count = Math.max(1, sentences.length - ignoreCount);\n return useCache ? cache.sentenceCount = count : count;\n };\n\n var avgSentenceLength = function(text) {\n var avg = lexiconCount(text, true) / sentenceCount(text, true);\n return legacyRound(avg, 2);\n };\n\n var avgSyllablesPerWord = function(text) {\n var avg = syllableCount(text, true) / lexiconCount(text, true);\n return legacyRound(avg, 2);\n };\n\n var avgCharactersPerWord = function(text) {\n var avg = charCount(text) / lexiconCount(text, true);\n return legacyRound(avg, 2);\n };\n\n var avgLettersPerWord = function(text) {\n var avg = letterCount(text, false) / lexiconCount(text, false);\n return legacyRound(avg, 2);\n };\n\n var avgSentencesPerWord = function(text) {\n var avg = sentenceCount(text, false) / lexiconCount(text, false);\n return legacyRound(avg, 2);\n };\n\n var colemanLiauIndex = function(text) {\n\t\t//console.log('CLI - Text');\n\t\t//console.log(text);\n\t var letters = legacyRound(avgLettersPerWord(text) * 100, 2);\n\t\t//console.log('CLI - Letters');\n\t\t//console.log(letters);\n\t var sentences = legacyRound(avgSentencesPerWord(text) * 100, 2);\n\t\t//console.log('CLI - Sentences');\n\t\t//console.log(sentences);\n var coleman = 0.0588 * letters - 0.296 * sentences - 15.8;\n console.log('CLI - Coleman');\n\t\tconsole.log(coleman);\n //console.log('letters: ' + letters);\n //console.log('sentences: ' + sentences);\n //console.log('coleman: ' + coleman);\n return legacyRound(coleman, 2);\n };\n\n var readingTime = function(text) {\n var wordsPerSecond = 4.17;\n // To get full reading time, ignore cache and sample\n return legacyRound(lexiconCount(text, false, true) / wordsPerSecond, 2);\n };\n // [end] // Coleman Liau Index calculation\n \n var getBreakpoint = function () {\n // Media queries\n // xsmall: 0;\n // small: 640;\n // tablet: 768;\n // medium: 960;\n // large: 1024;\n // xlarge: 1200;\n // xxlarge: 1400;\n // xxxlarge: 1920;\n var breakpoints = [480, 640, 768, 960, 1024, 1200, 1400, 1920];\n var breakpoint = 320;\n $.each(breakpoints, function(index, value){\n if (window.matchMedia('(min-width: ' + value + 'px)').matches) {\n breakpoint = value;\n }\n });\n \n return breakpoint;\n };\n \n var getPageType = function (breadcrumb) {\n // Homepage, Site Search, Primary Nav Pages, Secondary Pages, Posts\n var pageType = 'none';\n \n // Compute cgPageType \n if(breadcrumb.length == 2) {\n pageType = 'Primary Nav Pages';\n }\n else if(breadcrumb.length == 3) {\n pageType = 'Secondary Pages';\n }\n \n if (breadcrumb[1] === 'Blog') {\n pageType = 'Posts';\n }\n \n if (window.location.pathname == '/' ){\n pageType = 'Homepage';\n } else if (window.location.pathname == '/search-results/') {\n pageType = 'Site Search';\n }\n \n return pageType;\n };\n \n \n//Page Tracking Scripts\n\n // var cdAuthor = $.trim($('#main article .container .post-meta .post-meta__author a').text());\n // var cdPublishedDate = $.trim($('#main article .container .post-meta .post-meta__date').text());\n // var cmBlogTagCount = $('#main article .container .post-meta .post-meta__terms a').length;\n var wpAdminBar = $('#wpadminbar');\n var cdTrafficType = 'external';\n if (wpAdminBar.length){\n cdTrafficType = 'internal';\n }\n var siteURL = window.location.origin;\n var cdSiteEnv = siteURL;\n var cdWorkEnv = 'local';\n if (cdSiteEnv.indexOf('technoserve.org') > -1) {\n cdWorkEnv = 'production';\n } else if (cdSiteEnv.indexOf('test-technoserve') > -1) {\n cdWorkEnv = 'test';\n } else if (cdSiteEnv.indexOf('dev-technoserve') > -1){\n cdWorkEnv = 'dev';\n }\n var cdAuthor = $.trim($('#main .post-meta__author a').text());\n var cdPublishedDate = $.trim($('#main .post-meta__date').text());\n var cmBlogTagCount = $('#main .post-meta__terms a').length;\n \n var breadcrumbData = getBreadcrumb($('ul.breadcrumb li'));\n var cgSiteSection = 'none';\n var cgBreadcrumb = 'none';\n\n var cdTheme = $('#main article').attr(\"cdTheme\");\n var cdFormat = $('#main article').attr(\"cdFormat\");\n var cdAngle = $('#main article').attr(\"cdAngle\");\n \n if(cdTheme == undefined) { cdTheme = ''; }\n if(cdFormat == undefined) { cdFormat = ''; }\n if(cdAngle == undefined) { cdAngle = ''; }\n\n if (typeof breadcrumbData !== 'undefined') {\n cgSiteSection = breadcrumbData[1];\n cgBreadcrumb = '/' + breadcrumbData.join(' /');\n }\n \n \n var cgPageType = getPageType(breadcrumbData);\n if (cgPageType == 'Homepage'){\n cgSiteSection = 'homepage';\n }\n var content = '';\n if ($('#main article .container').length) {\n content = $('#main article .container').text();\n }\n else {\n content = $('#main').text();\n }\n \n var title = '';\n if ($('#main article .container .article-h1').length) {\n title = $('#main article .container .article-h1').text();\n }\n else {\n title = $('#main h1').text();\n }\n \n var excerpt = '';\n if ($('#main article .container p.h3').length) {\n excerpt = $('#main article .container p.h3').text();\n }\n else {\n excerpt = $('#main .container p.h3').text();\n }\n content = content.replace(/\"']*(((\"[^\"]*\")|('[^']*'))[^\"'>]*)*>/g,\"\");\n content = content.replace(/\\n{2,}\\s*/g, '\\n');\n var cmContentReadingLevel = colemanLiauIndex(content);\n var cmBlogTitleReadingLevel = colemanLiauIndex(title);\n var cmBlogExcerptReadingLevel = colemanLiauIndex(excerpt);\n\n var cdBreakpoint = getBreakpoint();\n var cdWordCount = getWords(content).length;\n\n if ($('body').hasClass('single-post')){\n /* UA Remove */\n window.dataLayer.push({ \n 'event': 'blogDataReady',\n 'cdBreakpoint': cdBreakpoint,\n 'cdWordCount': cdWordCount,\n 'cdAuthor': cdAuthor,\n 'cdPublishedDate': cdPublishedDate,\n 'cdPublishedIn': cgSiteSection,\n 'cgSiteSection': cgSiteSection,\n 'cgPageType': cgPageType,\n 'cgBreadcrumb': cgBreadcrumb,\n 'cmContentReadingLevel': cmContentReadingLevel,\n 'cmBlogTitleReadingLevel': cmBlogTitleReadingLevel,\n 'cmBlogExcerptReadingLevel': cmBlogExcerptReadingLevel,\n 'cmBlogTagCount': cmBlogTagCount,\n 'oana': 'oana'\n });\n /* GA4 */\n window.dataLayer.push({ \n 'event': 'blog_data_ready',\n 'angle': cdAngle,\n 'author': cdAuthor,\n 'breadcrumb': cgBreadcrumb,\n 'breakpoint': cdBreakpoint,\n 'format': cdFormat,\n 'page_type': cgPageType,\n 'published_date': cdPublishedDate,\n 'published_in': cgSiteSection,\n 'reading_level': cmContentReadingLevel,\n 'site_env': cdSiteEnv,\n 'site_section': cgSiteSection,\n 'tag_count': cmBlogTagCount,\n 'theme': cdTheme,\n 'traffic_type': cdTrafficType,\n 'word_count': cdWordCount,\n 'work_env': cdWorkEnv,\n });\n }\n /* UA */\n window.dataLayer.push({ \n 'event': 'pageView',\n 'cdBreakpoint': cdBreakpoint,\n 'cdWordCount': cdWordCount,\n 'cdAuthor': cdAuthor,\n 'cdPublishedDate': cdPublishedDate,\n 'cdPublishedIn': cgSiteSection,\n 'cgSiteSection': cgSiteSection,\n 'cgPageType': cgPageType,\n 'cgBreadcrumb': cgBreadcrumb,\n 'cmContentReadingLevel': cmContentReadingLevel,\n 'cmBlogTitleReadingLevel': cmBlogTitleReadingLevel,\n 'cmBlogExcerptReadingLevel': cmBlogExcerptReadingLevel,\n 'cmBlogTagCount': cmBlogTagCount,\n 'oana': 'oana',\n 'cdTheme': cdTheme,\n 'cdFormat': cdFormat,\n 'cdAngle': cdAngle,\n });\n /* GA4 Update */\n \n\n window.dataLayer.push({ \n 'event': 'page_view',\n 'angle': cdAngle,\n 'author': cdAuthor,\n 'breadcrumb': cgBreadcrumb,\n 'breakpoint': cdBreakpoint,\n 'format': cdFormat,\n 'page_type': cgPageType,\n 'published_date': cdPublishedDate,\n 'published_in': cgSiteSection,\n 'reading_level': cmContentReadingLevel,\n 'site_env': cdSiteEnv,\n 'site_section': cgSiteSection,\n 'tag_count': cmBlogTagCount,\n 'theme': cdTheme,\n 'traffic_type': cdTrafficType,\n 'word_count': cdWordCount,\n 'work_env': cdWorkEnv,\n });\n \n\n //End Blog Analytics\n\n\n\n // EVENT TRACKING - Download Event\n $('a[href$=\".pdf\"]').click(function (event) {\n var text = $(this).text();\n\n if ($(this).closest('.archive-listing__content').find('.archive-listing__title').length) {\n text = $(this).closest('.archive-listing__content').find('.archive-listing__title').text();\n }\n /*\n var lSide = $(window).width() / 2;\n var downloadPosition = event.pageX < lSide ? 1 : 2;\n */\n var allDownloads = $('a[href$=\".pdf\"]');\n var downloadPosition = 1;\n for(let i = 0; i < allDownloads.length; i++){ \n var tempText = $(allDownloads[i]).text();\n if ($(allDownloads[i]).closest('.archive-listing__content').find('.archive-listing__title').length) {\n tempText = $(allDownloads[i]).closest('.archive-listing__content').find('.archive-listing__title').text();\n }\n if (tempText == text){\n i = allDownloads.length;\n }\n downloadPosition++;\n }\n window.dataLayer.push({\n 'event': 'download',\n 'downloadName': text,\n 'downloadPosition': downloadPosition,\n });\n });\n\n //Event tracking - Sidebar nav links\n $('#main a.jump-menu__link').click(function(){\n var anchorContent = $('main h1').text();\n anchorContent = stripHTML(anchorContent);\n var anchorType = 'Left Rail';\n var anchorName = $(this).text();\n anchorName = stripHTML(anchorName);\n window.dataLayer.push({\n 'event': 'anchor',\n 'anchorType': anchorType,\n 'anchorContent': anchorContent,\n 'anchorName': anchorName\n });\n window.dataLayer.push({\n 'event': 'anchor_link',\n 'content_interaction': 'left rail: ' + anchorName,\n });\n });\n\n\n // EVENT TRACKING - Click to Email\n $('a[href^=\"mailto:\"]').click(function(){\n var email = $(this).attr('href').replace('mailto:', '');\n var text = $(this).text();\n\n var currentURL = $(location).attr('pathname');\n var closestHeader = $(this).closest(\"*:has('h1, h2, h3, h4, h5, h6')\");\n \n closestHeader = $(closestHeader).find(\":header\").first();\n\n if ($(closestHeader).children().length == 0){\n closestHeader = $(closestHeader).text();\n } else {\n \n closestHeader = $(closestHeader).text();\n }\n\n if (currentURL.includes('contact-us')){\n text = $(this).parent().parent().find('.large strong').text();\n if (text == ''){\n text = $(this).parent().parent().find('.large b').text();\n }\n } else if ($(this).parent().parent().hasClass('staff-contact') == true){\n\n text = $(this).parent().parent().find('.staff__name').text();\n var staffTitle = $(this).parent().parent().find('.staff__name span').text();\n text = text.replace(staffTitle,'');\n } else if ($(this).hasClass('card__link')){ \n text = $(this).find('.card__title').text();\n } else if (closestHeader !== ''){\n text = closestHeader;\n } else {\n text = $('#main h1').text();\n }\n window.dataLayer.push({\n 'event': 'clickToEmail',\n 'clickToEmailAddress': email,\n 'clickToEmailName': text\n });\n window.dataLayer.push({\n 'event': 'click_email',\n 'content_interaction': text+': ' + email,\n });\n });\n\n // EVENT TRACKING - Click to Call\n $('a[href^=\"tel:\"]').click(function(){\n var phone = $(this).attr('href').replace('tel:', '');\n var text = $(this).text();\n var currentURL = $(location).attr('pathname');\n var closestHeader = $(this).closest(\"*:has('h1, h2, h3, h4, h5, h6')\");\n \n closestHeader = $(closestHeader).find(\":header\").first();\n\n \n if ($(closestHeader).children().length == 0){\n\n closestHeader = $(closestHeader).text();\n } else {\n \n closestHeader = $(closestHeader).text();\n }\n\n if (currentURL.includes('contact-us')){\n text = $(this).parent().parent().find('.large strong').text();\n if (text == ''){\n text = $(this).parent().parent().find('.large b').text();\n }\n } else if ($(this).hasClass('card__link')){ \n text = $(this).find('.card__title').text();\n\n } else if ($(this).parent().parent().hasClass('staff-contact') == true){\n\n text = $(this).parent().parent().find('.staff__name').text();\n\n var staffTitle = $(this).parent().parent().find('.staff__name span').text();\n\n //console.log($(this).parent().parent());\n \n text = text.replace(staffTitle,'');\n } else if (closestHeader !== ''){\n text = closestHeader;\n } else {\n text = $('#main h1').text();\n }\n window.dataLayer.push({\n 'event': 'clickToCall',\n 'clickToCallNumber': phone,\n 'clickToCallName': text\n });\n\n window.dataLayer.push({\n 'event': 'click_call',\n 'content_interaction': text+': ' + phone,\n });\n });\n\n // EVENT TRACKING - Tabs click\n $('.sp-easy-accordion .ea-card .ea-header a.collapsed, ul[role=\"tablist\"] li a').on('click', function () {\n var currentContext = $('main h1').text();\n var tabsName = $(this).text();\n\n window.dataLayer.push({\n 'event': 'tabs',\n 'tabsContent': currentContext,\n 'tabsName': tabsName\n });\n window.dataLayer.push({\n 'event': 'click_tab',\n 'content_interaction': currentContext+ ': ' + tabsName,\n });\n });\n\n /*$('.js-wikit-tabbed ul[role=\"tablist\"] a[role=\"tab\"]').click(function() {\n var currentContext = $('main h1').text();\n var tabsName = $(this).text();\n\n window.dataLayer.push({\n 'event': 'tabs',\n 'tabsContent': currentContext,\n 'tabsName': tabsName\n });\n });*/\n\n // EVENT TRACKING - pagination click\n $('body').on('click', '.pagination__num button, .pagination__nav button', function() {\n var paginationNumber = $(this).data('page');\n var paginationContent = $('main h1').text();\n\n window.dataLayer.push({\n 'event': 'pagination',\n 'paginationContent': paginationContent,\n 'paginationNumber': paginationNumber\n });\n window.dataLayer.push({\n 'event': 'click_pagination',\n 'content_interaction': paginationContent + ': ' + paginationNumber,\n });\n });\n\n // EVENT TRACKING - search pagination click\n $('body').on('click', '.gsc-cursor .gsc-cursor-page', function(){\n var paginationNumber = $(this).text();\n var paginationContent = 'Site Search';\n\n window.dataLayer.push({\n 'event': 'pagination',\n 'paginationContent': paginationContent,\n 'paginationNumber': paginationNumber\n });\n });\n\n // EVENT TRACKING - maps clicking\n /*$('#map, .leaflet-control-zoom-in, .leaflet-control-zoom-out').click(function(){\n window.dataLayer.push({\n 'event': 'map',\n 'mapAction': 'Explore',\n 'mapLocation': ''\n });\n });\n\n $('#map, .leaflet-control-zoom-in, .leaflet-control-zoom-out').click(function(){\n window.dataLayer.push({\n 'event': 'map',\n 'mapAction': 'Explore',\n 'mapLocation': ''\n });\n });*/\n\n $('.btn[data-modal=\"map-modal\"]').on('click', function() {\n window.dataLayer.push({\n 'event': 'map',\n 'mapAction': 'Explore',\n 'mapLocation': ''\n });\n window.dataLayer.push({\n 'event': 'tool_map',\n 'tool_step': 'step 1: map shown',\n });\n });\n\n $('body').on('click', '.map-popup .map-popup__text a', function(){\n var mapLocation = $(this).closest('.map-popup__text').find('.map-popup__title').text();\n\n window.dataLayer.push({\n 'event': 'map',\n 'mapAction': 'Contact',\n 'mapLocation': mapLocation\n });\n window.dataLayer.push({\n 'event': 'tool_map',\n 'tool_step': 'step 3: contact: ' + mapLocation,\n });\n });\n\n // EVENT TRACKING - Related content clicks\n $('body').on('click', '.related__posts .related-post a', function(){\n var relatedPosition = $(this).closest('.related-post').index() + 1;\n var relatedName = $(this).closest('.related-post').find('a.related-post__link').text();\n\n window.dataLayer.push({\n 'event': 'related',\n 'relatedName': relatedName,\n 'relatedPosition': relatedPosition\n });\n window.dataLayer.push({\n 'event': 'click_related_content',\n 'content_interaction': relatedName+ ': ' + relatedPosition,\n });\n });\n\n // EVENT TRACKING - Filters clicks\n $('body').on('click', '.facetwp-type-fselect .fs-option:not(.selected)', function(){\n var filtersContent = $('#main h1').text();\n var filter = $(this).closest('.facetwp-type-fselect').find('select.facetwp-dropdown option:first-of-type').text();\n var selection = $(this).find('.fs-option-label');\n selection.find('span').remove();\n\n var filtersName = filter + ' - ' + $.trim(selection.text());\n\n window.dataLayer.push({\n 'event': 'filters',\n 'filtersContent': filtersContent,\n 'filtersName': filtersName\n });\n window.dataLayer.push({\n 'event': 'drop_down',\n 'content_interaction': filtersContent + ': ' + filtersName,\n });\n });\n\n // EVENT TRACKING - Donation success.\n\tif (body.hasClass('page-id-11084')) {\n\t\t// This is a hubspot form submission success page. Redirects to this page. User can use Paypal\n\t\t// as well so execute push simply on page load.\n\t\t/*dataLayer.push({\n\t\t\t'event': 'formSuccess',\n\t\t\t'formName': 'Donate Now',\n\t\t\t'formSuccessId': '025984357'\n\t\t});*/\n\t}\n\n // EVENT TRACKING - Donate Now page load\n window.addEventListener(\"message\", function(event) {\n //Good for debugging HS events\n //console.log('found message ' + event.data.type);\n //console.log(event);\n if (event.data.accepted == true){\n window.conversionID = event.data.conversionId;\n }\n if(event.data.type == 'hsFormCallback'){\n \n const HS_SIGNUP_ID = 'f027ea34-f0d6-45f9-b623-c22b0120e13f';\n \n const HS_SIGNUP_ID2 = '94ac8955-9128-4670-9782-56796955b887';\n \n //const HS_DONATION_ID = 'a203c6e4-1ce4-4d27-a34f-7810ea87eee5';\n const HS_DONATION_ID = '360debf6-7ee8-45b0-816b-544ae0d9384e';\n \n const HS_FORM_ID = event.data.id;\n\n var hs_event_id = event.data.id;\n var hs_event_name = event.data.eventName;\n var hs_event_type = event.data.type;\n\n // Function to log event for form field name.\n var pushFormFieldEnter = function($form, $elements, formName,formGoal) {\n //console.log('form input init');\n $elements.one('focus', function(){\n var newField = $(this).attr('name');\n var fieldID = $(this).attr('ID');\n if (!$form.hasClass(GTM_PUSHED_CLASS + '-start')) {\n $form.addClass(GTM_PUSHED_CLASS + '-start');\n\n //Tracks form start\n /* UA Remove */\n window.dataLayer.push({\n 'event': 'formStart',\n 'formName': window.formName[HS_FORM_ID],\n 'formGoal': formGoal,\n 'elementID': HS_FORM_ID\n });\n /* GA4 */\n window.dataLayer.push({\n 'event': 'form_start',\n 'form_name': window.formName[HS_FORM_ID],\n 'form_goal': formGoal,\n 'element_id': fieldID\n });\n\n //Tracks donate/e-commerce form start\n if (formName !== 'Sign Up Form' && formName !=='Sign Up' && formName !== 'sign up form' && formName !=='sign up' && formName !== 'Pop Up' && formName !== 'Form' && formName !== 'pop up' && formName !== 'form'){\n window.dataLayer.push({\n 'event': 'checkout2',\n 'ecommerce': {\n 'checkout': {\n 'actionField': {'step': 2, 'option': 'Form Start'},\n 'affiliation': window.formName[HS_FORM_ID],\n 'products': [{\n 'name': formName,\n 'id': hs_event_id\n }]\n }\n },\n 'eventCallback': function() {\n // document.location = '/support-us/thank-you/';\n }\n });\n\n var formVal = $('#amount').val();\n if ($(this).val() && $(this).val().indexOf('$') > -1){\n formVal = $(this).val();\n } \n window.dataLayer.push({\n 'event': 'add_to_cart',\n 'currency': 'USD',\n 'value': formVal,\n 'ecommerce': {\n 'items': {\n 'products': [{\n 'item_name': window.formName[HS_FORM_ID],\n 'item_id': HS_FORM_ID,\n 'price': formVal,\n 'quantity': 1\n }]\n }\n }\n });\n\n }\n } \n\n \n\n /* This check surpesses duplicate focus field triggers that\n can occur due to tabbing out and back into your browser */\n \n \n if(window.lastFocus !== fieldID){\n window.lastFocus = fieldID;\n /* UA Remove */\n window.dataLayer.push({\n 'event': 'formFieldEnter',\n 'formName': window.formName[HS_FORM_ID],\n 'formField': newField,\n 'formGoal': formGoal,\n 'elementID': HS_FORM_ID\n });\n /* GA4 */\n window.dataLayer.push({\n 'event': 'form_field',\n 'form_name': window.formName[HS_FORM_ID],\n 'form_field': newField,\n 'form_goal': formGoal,\n 'element_id': fieldID\n });\n }\n });\n }\n\n // Signup Form GTM event.\n var signUpFormGTM = function() {\n switch (hs_event_name) {\n case 'onFormSubmitted':\n var $container = $('#hs' + HS_FORM_ID);\n /*\n if (!$container.length) {\n $container = $('#hs' + HS_SIGNUP_ID2);\n }\n */\n if ($container.length) {\n var $submit_message = $('.submitted-message', $container);\n\n if ($submit_message.length && !$submit_message.hasClass(GTM_PUSHED_CLASS)) {\n var message = $submit_message.text();\n\n if (message === 'Thanks for signing up.') {\n /* UA Remove */\n window.dataLayer.push({\n 'event': 'formSuccess',\n 'formName': window.formName[HS_FORM_ID],\n 'formSuccessId': window.conversionID,\n 'formGoal': 'email',\n 'elementID': HS_FORM_ID\n });\n \n /* GA4 */\n window.dataLayer.push({\n 'event': 'form_complete',\n 'form_name': window.formName[HS_FORM_ID],\n 'form_success_id': window.conversionID,\n 'form_goal': 'email',\n 'form_selection': 'na',\n 'status': 'success'\n });\n window.dataLayer.push({\n 'event': 'sign_up',\n 'method': 'email newsletter',\n 'status': 'success'\n });\n window.dataLayer.push({\n 'event': 'join_group',\n 'group_id': 'signed up'\n });\n window.conversionID = '';\n }\n\n $submit_message.addClass(GTM_PUSHED_CLASS);\n }\n }\n break;\n default:\n var $form = $('#hsForm_' + HS_FORM_ID)\n\n if (!$form.length) {\n console.log('Cannot find form ' + HS_FORM_ID);\n }\n window.formName[HS_FORM_ID] = 'sign up - ' + HS_FORM_ID;\n pushFormFieldEnter($form, $('input', $form), 'sign up','email');\n \n break;\n }\n \n }\n // Default Form GTM event.\n var defaultFormGTM = function(fName) {\n var $form = $('.hs-form-' + HS_FORM_ID);\n if ($form.length) {\n if (hs_event_name == 'onFormReady'){\n pushFormFieldEnter($form, $('input', $form), fName,'email');\n \n } else if (hs_event_name == 'onFormSubmitted'){\n window.dataLayer.push({\n 'event': 'formSuccess',\n 'formName': window.formName[HS_FORM_ID],\n 'formSuccessId': window.conversionID,\n 'elementID': HS_FORM_ID\n });\n window.conversionID = '';\n }\n }\n };\n // Donation Form GTM event.\n var donationFormGTM = function() {\n var $form = $('.hs-form-' + HS_FORM_ID);\n\n if ($form.length) {\n\n \n\n var $amount = $('input.amount', $form);\n \n if (hs_event_name == 'onFormReady'){\n\n \n // Apply click event to donation amounts.\n $('input[name=\"donation_amounts\"]').on('click', function(){\n $amount.trigger('change');\n });\n\n pushFormFieldEnter($form, $('input', $form), 'donate now', 'donate');\n\n //Does not fire\n } else if (hs_event_name == 'xonFormSubmitted'){\n // console.log('Event Details;')\n //console.log(event.data);\n \n\n window.dataLayer.push({\n 'event': 'formSuccess',\n 'formName': 'Donate Now',\n 'formSuccessId': window.conversionID\n });\n window.conversionID = '';\n\n window.dataLayer.push({\n 'event': 'purchase',\n 'cdDonationSuccessId': '5687251',\n 'ecommerce': {\n 'purchase': {\n 'actionField': {\n 'id': 'T12345', // cdDonationSuccessId\n 'revenue': '200.00' // Total transaction value (incl. tax and shipping)\n },\n 'products': [{ // List of productFieldObjects.\n 'name': 'Donate Now', // name is the Form Name\n 'id': HS_FORM_ID, // id is the Form Id.\n 'price': '200.00', // price is the donation amount selected.\n 'brand': 'One Time', // one time or new monthly donation.\n 'category': 'PayPal', // PayPal or Credit Card\n 'variant': 'In memory of, Make donation anonymous, Help cover processing fees, Receive other communications', \n 'quantity': 1\n }]\n }\n }\n });\n\n }\n \n }\n }\n\n if(hs_event_type === 'hsFormCallback' && hs_event_name === 'onFormSubmitted') {\n //If this is the signup form, trigger the \n if (hs_event_id == HS_SIGNUP_ID || hs_event_id == HS_SIGNUP_ID2){\n console.log('confirm signup form submitted');\n signUpFormGTM();\n\n } else if ($('#donation-embed .hs-form-'+hs_event_id).length > 0){\n \n donationFormGTM();\n } else {\n if ($('.sgpb-main-html-content-wrapper .hs-form-'+hs_event_id).length > 0){\n name = 'pop up';\n } else {\n name = 'form';\n }\n defaultFormGTM(name);\n }\n }\n\n if(hs_event_type === 'hsFormCallback' && hs_event_name === 'onFormReady') {\n var name = '';\n //console.log('ID ' + hs_event_id);\n /*case '360debf6-7ee8-45b0-816b-544ae0d9384e':\n name = 'Donate Now';\n break;\n */\n window.formName = window.formName || {};\n console.log('found form ' + hs_event_id);\n if (hs_event_id == HS_SIGNUP_ID || hs_event_id == HS_SIGNUP_ID2){\n name = 'sign up';\n if (!window.formName[HS_FORM_ID]){\n window.formName[HS_FORM_ID] = 'newsletter signup form - ' + hs_event_id;\n }\n console.log('confirm signup form init');\n signUpFormGTM();\n\n } else if ($('#donation-embed .hs-form-'+hs_event_id).length > 0){\n name = 'donate now';\n if (!window.formName[HS_FORM_ID]){\n window.formName[HS_FORM_ID] = 'donation form - ' + hs_event_id;\n }\n donationFormGTM();\n } else {\n setTimeout(function(){\n\n },3500);\n // console.log('Form ID ' + hs_event_id );\n if ($('.sgpb-popup-builder-content-html .hs-form-'+hs_event_id).length > 0){\n name = 'pop up';\n if (!window.formName[HS_FORM_ID]){\n window.formName[HS_FORM_ID] = 'pop up - ' + hs_event_id;\n }\n } else {\n name = 'form';\n if (!window.formName[HS_FORM_ID]){\n window.formName[HS_FORM_ID] = 'form - ' + hs_event_id;\n }\n }\n defaultFormGTM(name);\n }\n\n if (name == 'donate now') {\n window.dataLayer.push({\n 'event': 'checkout1',\n 'ecommerce': {\n 'checkout': {\n 'actionField': {'step': 1, 'option': 'Page Load'},\n 'affiliation': window.formName[HS_FORM_ID],\n 'products': [{\n 'name': name,\n 'id': hs_event_id\n }]\n }\n },\n 'eventCallback': function() {\n // document.location = '/support-us/thank-you/';\n }\n });\n var formVal = $('#amount').val();\n window.dataLayer.push({\n 'event': 'view_item',\n 'currency': 'USD',\n 'value': formVal,\n 'ecommerce': {\n 'items': {\n 'products': [{\n 'item_name': window.formName[HS_FORM_ID],\n 'item_id': HS_FORM_ID,\n 'price': formVal,\n 'quantity': 1\n }]\n }\n }\n });\n\n }\n }\n }\n });\n\n // EVENT TRACKING - Donate Now form start\n // User inputs a specific amount.\n /*\n $('body').on('focus', '#amount', function(event) {\n \n if($('#amount').val() == 0) {\n console.log(event);\n window.dataLayer.push({\n 'event': 'checkout2',\n 'ecommerce': {\n 'checkout': {\n 'actionField': {'step': 2, 'option': 'Form Start'},\n 'products': [{\n 'name': 'Donate Now',\n 'id': '360debf6-7ee8-45b0-816b-544ae0d9384e'\n }]\n }\n },\n 'eventCallback': function() {\n// document.location = '/support-us/thank-you/';\n }\n });\n }\n });\n */\n // User is selecting a default amount.\n $('body').on('focus', 'input[name=\"donation_amounts\"]', function(event) {\n /*\n if($('#amount').val() == 0) {\n console.log('value trigger?');\n console.log(event);\n window.dataLayer.push({\n 'event': 'checkout2',\n 'ecommerce': {\n 'checkout': {\n 'actionField': {'step': 2, 'option': 'Form Start'},\n 'products': [{\n 'name': 'Donation Form - WP',\n 'id': '360debf6-7ee8-45b0-816b-544ae0d9384e'\n }]\n }\n },\n 'eventCallback': function() {\n// document.location = '/support-us/thank-you/';\n }\n });\n }*/\n });\n\n // EVENT TRACKING: Search Start\n //Google Search Results Page\n $('.main').on('focus', 'input[name^=\"search\"]', function(event) {\n var newField = $(this).attr('name');\n if($(this).val().length == 0) {\n if(window.lastFocus !== newField){\n window.lastFocus = newField;\n window.dataLayer.push({\n 'event': 'searchStart',\n 'searchType': 'Site Search'\n });\n }\n }\n\n });\n //Click top search icon\n $('body').on('click', '.main-nav__search', function(event) {\n var newField = $(this).attr('name');\n if ($(this).attr( \"tabindex\" ) == -1) {\n if(window.lastFocus !== newField){\n window.lastFocus = newField;\n window.dataLayer.push({\n 'event': 'searchStart',\n 'searchType': 'Site Search'\n });\n }\n\n }\n\n });\n //Share on Social\n $('.addtoany_share_save_container').on('click', 'a', function(event) {\n var shareTarget = $(this).attr('title');\n var pageTitle = $(document).find(\"title\").text();\n var contentType = 'page';\n if ($('body').hasClass('single-post')){\n contentType = 'blog post';\n } \n window.dataLayer.push({\n 'event': 'share',\n 'content_type': contentType,\n 'item_id': pageTitle,\n 'method': shareTarget\n });\n });\n \n\n \n\n //Facet Search On Blog\n $('body').on('focus', 'input[class^=\"facetwp-search\"]', function(event) {\n var newField = $(this).attr('name');\n if($(this).val().length == 0) {\n if(window.lastFocus !== newField){\n window.lastFocus = newField;\n var $searchType = '';\n var $placeholder = $(this).attr('placeholder')\n if ($placeholder == 'Search Blogs'){\n $searchType = 'Blog Search';\n } else if ($placeholder == 'Search Resources'){\n $searchType = 'Resources Search';\n } else if ($placeholder == 'Search News'){\n $searchType = 'News Search';\n }\n window.dataLayer.push({\n 'event': 'searchStart',\n 'searchType': $searchType\n });\n console.log('search start 2');\n }\n }\n });\n\n\n // EVENT TRACKING: Search Search\n var getUrlParameter = function getUrlParameter(sParam) {\n var sPageURL = window.location.search.substring(1),\n sURLVariables = sPageURL.split('&'),\n sParameterName,\n i;\n\n for (i = 0; i < sURLVariables.length; i++) {\n sParameterName = sURLVariables[i].split('=');\n\n if (sParameterName[0] === sParam) {\n return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);\n }\n }\n };\n\n // Utility function get data facet search data for reuse.\n var getFacetSearch = function () {\n\t\t// Search for pages at Resources, Blog, and News sections.\n\t\tvar facetSearchTerm = \"\";\n\t\tvar facetSearchType = \"\";\n\t\tvar href = window.location.href;\n\t\tvar validFacetSearch = [\"blog/?fwp_search_blogs=\", \"resources/?fwp_search_resources=\", \"news/?fwp_search_news=\"];\n\t\tvar resultCount = window.FWP_JSON.preload_data.settings.pager.total_rows; // Get the count from the JSON object in the DOM.\n\t\tvar isValidSearch = validFacetSearch.some(function(searchName) {\n\t\t\tvar found = (href.indexOf(searchName) !== -1);\n\t\t\tvar facetName = searchName.split(\"/\").slice(0,1).shift();\n\n\t\t\tfacetSearchType = facetName.charAt(0).toUpperCase() + facetName.slice(1) + ' Search';\n\t\t\tfacetSearchTerm = getUrlParameter(searchName.split(\"/\").slice(1).shift().replace(\"?\", \"\").replace(\"=\", \"\"));\n\n\t\t\treturn found;\n\t\t});\n\n\t\treturn {\n\t\t\tisValidType: isValidSearch,\n\t\t\tterm: facetSearchTerm,\n\t\t\ttype: facetSearchType,\n\t\t\tcount: resultCount,\n\t\t}\n\t};\n\n\t$(document).ready(function() {\n\t\tvar searchTerm = getUrlParameter('search');\n\n\t\tvar searchSearch = function(searchType, searchTerm, resultCount) {\n\t\t\twindow.dataLayer.push({\n\t\t\t\t'event': 'searchSearch',\n\t\t\t\t'searchType': searchType,\n\t\t\t\t'searchTerm': searchTerm,\n\t\t\t\t'searchResults': resultCount\n\t\t\t});\n\t\t}\n\n\t\tif (window.location.href.indexOf('search-results/?search=') > -1 && searchTerm !== '') {\n\t\t\tsetTimeout(function() {\n\t\t\t\tvar resultInfoNo = $('.gsc-result-info').text().replace(',', '').replace('.', '').match(/\\d+/);\n\t\t\t\tvar resultCount = resultInfoNo[0];\n\n\t\t\t\tsearchSearch(\"Site Search\", searchTerm, resultCount);\n\t\t\t}, 2000);\n\t\t}\n\n\n\n $(document).on('facetwp-loaded', function() {\n var facetData = getFacetSearch();\n if (facetData.isValidType && facetData.term !== '') {\n searchSearch(facetData.type, facetData.term, facetData.count);\n\n var $facetResultContainer = $(\".facetwp-template\");\n\n if ($facetResultContainer.length) {\n $facetResultContainer.find(\".archive-listing__link\").on('click', function(e) {\n var contentTitle = $(this).find('.archive-listing__title').text();\n searchClick(facetData.type, facetData.term, facetData.count, contentTitle);\n \n });\n }\n\n }\n \n });\n\t});\n\t// END EVENT TRACKING: Search Search\n\n\n\t// EVENT TRACKING: Search click\n\tvar searchClick = function(searchType, searchTerm, resultCount, contentTitle) {\n /* UA Remove */\n\t\twindow.dataLayer.push({\n\t\t\t'event': 'searchClick',\n\t\t\t'searchType': searchType,\n\t\t\t'searchTerm': searchTerm,\n\t\t\t'searchResults': resultCount,\n 'anchorContent': contentTitle\n\t\t});\n /* GA4 */\n window.dataLayer.push({\n\t\t\t'event': 'select_content',\n\t\t\t'content_type': searchType,\n\t\t\t'search_term': searchTerm,\n 'item_id': contentTitle\n\t\t});\n\t};\n\n\t$(document).ready(function() {\n\t\t\n\t});\n\n $('body').on('click', '.gsc-result a', function() {\n var searchTerm = getUrlParameter('search');\n var searchTerm = $('input.gsc-input').val();\n var resultInfoNo = $('.gsc-result-info').text().replace(',', '').match(/\\d+/);\n var contentTitle = $(this).text();\n var resultCount = resultInfoNo[0];\n\n searchClick('Site Search', searchTerm, resultCount,contentTitle);\n });\n // END EVENT TRACKING: Search click\n\n // EVENT TRACKING: Featured content event click\n $('body').on('click', '.listing__link', function() {\n var section_title = $(this).closest('.listings').find('.listings__heading').text();\n //&& section_title.toLowerCase().indexOf(\"featured\") >= 0\n if (section_title.length > 0 ) {\n var content_title = $(this).find('.listing__title').text();\n var positionCount = $(this).parent().index();\n window.dataLayer.push({\n 'event': 'featured',\n 'featuredType': 'Vertical',\n 'featuredName': section_title + ' - ' + content_title,\n 'featuredPosition': positionCount\n });\n window.dataLayer.push({\n 'event': 'click_featured_content',\n 'content_interaction': 'Vertical: ' + section_title + ' - ' + content_title,\n });\n }\n });\n // EVENT TRACKING: Featured content event click\n\n // EVENT TRACKING: load more\n var resorces_more_clicked = 0;\n $('button#resources-listing-more').on('click', function() {\n var section_title = $(this).closest('section.resources-listing').find('h2.resources-listing__title').text();\n\n if(section_title != '') {\n resorces_more_clicked++;\n\n window.dataLayer.push({\n 'event': 'loadMore',\n 'loadMoreName': section_title,\n 'loadMorePosition': resorces_more_clicked\n });\n window.dataLayer.push({\n 'event': 'load_more',\n 'content_interaction': 'load more: ' + section_title,\n });\n }\n });\n // END EVENT TRACKING: load more\n\n //EVENT TRACKING: Quiz\n\n if ($('body').hasClass('single-post') && $('#main .gform_body').length){\n//Has a quiz!\n var quiz_elem = $('#main .gform_body');\n $('#main .gform_body input').on('click',function(){\n if (!$(quiz_elem).hasClass('started-quiz')) {\n $(quiz_elem).addClass('started-quiz');\n window.dataLayer.push({\n 'event': 'tool_quiz',\n 'tool_step': 'step 1: quiz started',\n });\n }\n var fieldID = $(this).attr('id');\n var fieldLabel = $(quiz_elem).find(\"label[for='\"+fieldID+\"']\").text();\n window.dataLayer.push({\n 'event': 'tool_quiz',\n 'tool_step': 'step 2: answered: ' + fieldLabel,\n });\n });\n }\n\n // EVENT TRACKING: popup content click\n $(window).on('sgpbPopupContentclick', function(e, settings) {\n var popup_content = $('.sg-popup-builder-content:visible');\n\n if(popup_content.html() != '') {\n var popup_title = '';\n var popup_title_tags = ['h1', 'h2', 'h3','h4','h5'];\n\n for(var i in popup_title_tags) {\n var popup_title_tag = popup_content.find(popup_title_tags[i]);\n\n if(popup_title_tag.length > 0) {\n popup_title = popup_title_tag.text();\n break;\n }\n }\n if (popup_title == ''){\n popup_title = $(popup_content).firstChild().attr('class');\n }\n if(popup_title != '') {\n window.dataLayer.push({\n 'event': 'popUp',\n 'popUpAction': 'Click',\n 'popUpName': popup_title\n });\n }\n }\n });\n // END EVENT TRACKING: load more\n\n // EVENT TRACKING: popup impression\n $(window).on('sgpbPopupReload', function(e) {\n //console.log('Detected popup');\n\t\tvar popup_content = $('.sg-popup-builder-content:visible');\n\t\tvar popupHTML = popup_content.html();\n\t\tvar has_popupContent = (popupHTML !== '');\n\n\t\t// Event tracker for the Popup Builder plugin.\n\t\tvar popUpBuilderFormStartGTM = function () {\n\t\t\tvar $popupContainer = $('.sgpb-fadeIn:visible');\n\n\t\t\tif (!$popupContainer.length) {\n\t\t\t\treturn null;\n\t\t\t}\n /*\n\t\t\tvar $form = $('form', $popupContainer);\n\n\t\t\tif ($form.length) {\n\t\t\t\t$('input').on('focus', function() {\n\n\t\t\t\t\t\t$form.addClass(GTM_PUSHED_CLASS);\n\t\t\t\t\tif (!$form.hasClass(GTM_PUSHED_CLASS)) {\n\t\t\t\t\t\twindow.dataLayer.push({\n\t\t\t\t\t\t\t'event': 'formStart',\n\t\t\t\t\t\t\t'formName': 'Pop Up'\n\t\t\t\t\t\t})\n\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}*/\n\t\t}\n \n\n\n\t\tif (popup_content.length && has_popupContent) {\n\t\t\tsetTimeout(function(){\n\t\t\t\t//popUpBuilderFormStartGTM();\n\t\t\t}, 1000);\n\t\t}\n\n\n\t\tif (popup_content.length && has_popupContent) {\n\t\t\tsetTimeout(function(){\n\t\t\t\t//popUpBuilderFormStartGTM();\n\t\t\t}, 1000);\n\t\t}\n\n if(!popup_content.hasClass('gtm-pushed') && has_popupContent) {\n\n var popup_title = '';\n var popup_title_tags = ['h1', 'h2', 'h3','h4','h5'];\n\n for(var i in popup_title_tags) {\n var popup_title_tag = popup_content.find(popup_title_tags[i]);\n\n if(popup_title_tag.length > 0) {\n popup_title = popup_title_tag.text();\n break;\n }\n }\n if (popup_title == ''){\n popup_title = $(popup_content).firstChild().attr('class');\n }\n if(popup_title != '') {\n window.dataLayer.push({\n 'event': 'popUp',\n 'popUpAction': 'Impression',\n 'popUpName': popup_title\n });\n\n popup_content.addClass('gtm-pushed');\n }\n }\n });\n // END EVENT TRACKING: popup impression\n\n\t// Use window on load for Hubspot forms. It will wait for all items to load on a page\n\t// before executing vs JQuery waiting for DOM. It will loop through a setinterval until Hubspot form is loaded.\n\t// https://community.hubspot.com/t5/CMS-Development/Input-forms-JS-improperly-compile-or-conflict-on-page-load/m-p/316176/highlight/true#M15140\n\t$(window).on('load', function () {\n\n function startPopupTracker(){\n var popupContent = $('div[class~=\"eapp-popup-layout-variation-slide-in-right-component-enter-done\"]');\n var popupTitle = $('div[class^=\"TextBlock__TextHTML\"]').first().text();\n var popupButton = $('div[class~=\"eapp-popup-layout-variation-slide-in-right-component-enter-done\"] button')[1];\n console.log('popup ' + popupTitle + ' ' + popupContent + ' but ' + popupButton);\n if ($(popupContent).length){\n window.dataLayer.push({\n 'event': 'pop_up',\n 'content_interaction': popupTitle + ' pop up shown',\n });\n $($('div[class~=\"eapp-popup-layout-variation-slide-in-right-component-enter-done\"] button')[1]).on('click',function(){\n window.dataLayer.push({\n 'event': 'pop_up',\n 'content_interaction': popupTitle + ' click button',\n }); \n });\n } else {\n console.log('No popup found');\n }\n }\n $(window).scroll(function(){\n if (window.popinit !== true){\n window.popinit = true;\n \n setTimeout(function(){\n console.log('popup check');\n if ($('div[class~=\"eapp-popup-layout-variation-slide-in-right-component\"]').length) {\n startPopupTracker();\n \n }\n }, 5000);\n }\n });\n\n\n\n window.qmn_quiz_data\n\t\t// Quiz form GTM events.\n\t\tif ($('.interact_responsive_wrapper').length) {\n\t\t\t//var quizForm = setInterval(quizInterval, 1500);\n\t\t}\n\n\t\tfunction quizInterval () {\n\t\t\tvar $iframe = $(iframe).contents();\n\t\t\tvar $container = $iframe.find('[class*=\"main__container____\"]');\n\n\t\t\tif ($container.length){\n\t\t\t\tclearInterval(quizForm);\n\n\t\t\t\t$('[class*=main__answer-reveal-next___]').on('click', function(){\n\t\t\t\t\tvar $iframe_contents = $(\"iframe\").contents();\n\n\t\t\t\t\tvar $counter = $iframe_contents.find('[class*=main__counter____]');\n\t\t\t\t\tvar $title = $iframe_contents.find('[class*=main__question-title___]');\n\t\t\t\t\tvar $incorrect = $iframe_contents.find('[class*=main__answer-reveal-incorrect___]');\n\t\t\t\t\tvar is_correct = (!$incorrect.length);\n\n\t\t\t\t\t//console.log($counter);\n\t\t\t\t\t//console.log($incorrect.length);\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t\t/**\n\t\t\twindow.dataLayer.push({\n\t\t\t\t'event': 'quiz',\n\t\t\t\t'quizNumber': '1',\n\t\t\t\t'quizQuestion': 'Women account for what percentage of agricultural landholders around the world?',\n\t\t\t\t'quizAnswerCorrect': 'Correct',\n\t\t\t\t'quizAnswer': '12.8%'\n\t\t\t});\n\t\t\t*/\n\t\t}\n\t});\n\n var quizForm = $('form.qsm-quiz-form');\n\n if(quizForm.length > 0) {\n var existCondition = setInterval(function() {\n var next_btn = $('a.mlw_next');\n\n if (next_btn.length > 0) {\n clearInterval(existCondition);\n //console.log('next hook');\n next_btn.on('click', checkAnswer);\n }\n }, 100);\n var existCondition2 = setInterval(function() {\n var submit_btn = $('.qsm-submit-btn');\n\n if (submit_btn.length > 0) {\n clearInterval(existCondition2);\n \n //console.log('submit hook');\n \n submit_btn.on('click', function(){\n if (window.lastQuestion === undefined){\n window.lastQuestion = true;\n checkAnswer();\n return false;\n }\n\n });\n }\n }, 200);\n }\n}\nfunction checkAnswer(){\n var answers_cnt = $('.qmn_radio_answers');\n //console.log('clicky');\n //console.log(window.qmn_quiz_data[Object.keys(window.qmn_quiz_data)[0]]);\n window.$quiz_id = window.qmn_quiz_data[Object.keys(window.qmn_quiz_data)[0]].quiz_id;\n window.$quiz_name = window.qmn_quiz_data[Object.keys(window.qmn_quiz_data)[0]].quiz_name;\n if(window.$question_list === undefined){\n window.$question_list = window.qmn_quiz_data[Object.keys(window.qmn_quiz_data)[0]].question_list;\n }\n\n if(answers_cnt.length > 0) {\n var $active_question = $(\".quiz_section:visible\");\n //console.log($active_question);\n var slide_number = $('input[name=\"slide_number\"]');\n var target_slide = slide_number.val()-1;\n //If we're on the last question, grab the last slide value\n if (window.lastQuestion == true){\n target_slide = slide_number.val();\n }\n //console.log('slide ' + slide_number.val());\n var $checked_radio = $('.slide'+target_slide + ' input.qmn_quiz_radio:checked');\n \n if ($checked_radio.length > 0){\n //console.log($checked_radio);\n //console.log($($checked_radio).attr('id'));\n\n var $radio_id = $($checked_radio).attr('id');\n var $question_id = $radio_id.replace('question','');\n var $id_split = $question_id.split('_');\n $question_id = $id_split[0];\n var $answer_index = $id_split[1] - 1;\n //console.log('Question = ' + $question_id);\n //console.log(window.$question_list[$question_id]);\n\n\n\n //var $quiz_question = window.$question_list[$question_id].question_answer_info;\n var $quiz_question = $('.question-section-id-' + $question_id + ' .mlw_qmn_question').text();\n $quiz_question = stripHTML($quiz_question);\n var $answer_correct = 'Incorrect';\n var $quiz_answer = $($checked_radio).val();\n\n var $question_answers = window.$question_list[$question_id].answers;\n var $selected_answer = $question_answers[$answer_index];\n if ($selected_answer[0] == $quiz_answer) {\n if($selected_answer[2] == 1){\n $answer_correct = 'Correct';\n }\n } else {\n //console.log('Answer mismatch');\n }\n\n \n window.dataLayer.push({\n 'event': 'quiz',\n 'quizNumber': window.$quiz_id,\n 'quizTitle': window.$quiz_name,\n 'quizQuestion': $quiz_question,\n 'quizAnswerCorrect': $answer_correct,\n 'quizAnswer': $quiz_answer\n });\n if (window.lastQuestion == true){\n $('.qsm-submit-btn').click();\n }\n\n }\n /*var visible_quiz_section = ('.quiz_section:visible');\n console.log(visible_quiz_section);\n var checked_radio = $('.quiz_section:visible input.qmn_quiz_radio:checked');\n console.log(checked_radio.val());*/\n }\n}\n\nexport default {\n init\n};\nfunction CookiebotCallback_OnAccept() {\n init();\n console.log('cookie fire');\n }\n console.log('full track');\n\n if ($('.page-template-donate-optimized').length || $('.page-template-home-optimized').length || $('.page-template-about-us-optimized').length){\n init();\n }\n","import $ from \"jquery\";\n\nexport function init() {\n jQuery(document).on('click', '.read-more-btn', function() {\n jQuery(this).closest('.read-more-content').find('.read-more-content-desc').show();\n jQuery(this).hide();\n });\n $(document).on('click', '.view-more', function(e) {\n e.preventDefault();\n const $firstDescription = $(this).closest('.cv-expandable__item').find('.first-description');\n const $secondDescription = $(this).closest('.cv-expandable__item').find('.second-description');\n if ($secondDescription.length) {\n if ($secondDescription.is(':visible')) {\n $(this).find('span').text('View More');\n $secondDescription.slideUp();\n } else {\n $(this).find('span').text('View Less');\n $secondDescription.slideDown();\n }\n }\n if ($(window).width() <= 580) {\n if ($firstDescription.is(':visible')) {\n $firstDescription.hide();\n } else {\n $firstDescription.show();\n }\n }\n })\n\n jQuery('.cv-section').each(function() {\n if (jQuery(this).css('opacity') == '0') {\n const top = jQuery(window).scrollTop() + jQuery(window).height() - jQuery(window).height()/4;\n if (top > jQuery(this).offset().top) {\n jQuery(this).css('opacity', 1);\n }\n }\n });\n jQuery(window).on('scroll', function() {\n jQuery('.cv-section').each(function() {\n if (jQuery(this).css('opacity') == '0') {\n const top = jQuery(window).scrollTop() + jQuery(window).height() - jQuery(window).height()/4;\n if (top > jQuery(this).offset().top) {\n jQuery(this).css('opacity', 1);\n }\n }\n });\n });\n}\n\nexport default {\n\tinit\n};\n","//Update June 2023 for Nitropack integration\n// Polyfill\n//import './base/_polyfill';\n// external scripts\nimport $ from \"jquery\";\nimport debug from 'bows/dist/bows.min.js';\n\n// example of ES2015 modules loading & tree shaking\nimport {\n\temptyLinks\n} from \"./base/_links\";\n\nimport size from \"./base/_size\";\nimport isTouch from \"./base/_isTouch\";\nimport fitvid from \"./base/_fitvid\";\nimport keyboardFocus from \"./base/_keyboardFocus\";\nimport smoothScroll from \"./base/_smoothScroll\";\nimport share from \"./base/_share\";\n// import tracking from \"./base/_tracking\";\n//import debugFrontend from \"./base/_debugFrontend\";\n\n// Site\nimport general from \"./_general\";\nimport dropdown from \"./_dropdown\";\nimport objectFitImages from 'object-fit-images';\nimport \"focus-within-polyfill\"\nimport picturefill from 'picturefill';\nimport storyslider from './_storyslider';\nimport resources from './_resources';\nimport modals from './_modal';\nimport nav from './_nav';\nimport tabs from './base/_tabs';\nimport breadcrumbs from './_breadcrumbs';\nimport tables from './_tables';\nimport report from './_report';\nimport gtmTracking from './gtm-tracking';\nimport covidReport from './_covid-report';\n\n\nconst $window = $(window);\nconst $document = $(document);\nconst log = debug(\"site\");\n\nclass Site {\n\tconstructor() {\n\t\tdocument.addEventListener('DOMContentLoaded', () => this.ready());\n\t\twindow.addEventListener('load', () => this.load());\n\t}\n\n\tready() {\n\t\t$('html').removeClass('no-js').addClass('js');\n\t\tconst log = debug(\"site:domReady\");\n\t\tconsole.log('site init');\n\t\t// tracking.init();\n\n\t\tisTouch.init();\n\t\tkeyboardFocus.init();\n\t\tsmoothScroll.init();\n\t\tshare.init();\n\t\tsize.init();\n\t\tpicturefill();\n\t\tfitvid();\n\t\tobjectFitImages();\n\t\tbreadcrumbs.init();\n\t\tgeneral.init();\n\t\tstoryslider.init();\n\t\tresources.init();\n\t\tdropdown.init();\n\t\tmodals.init();\n\t\tnav.init();\n\t\ttabs.init();\n\t\ttables.init();\n\t\treport.init();\n gtmTracking.init();\n\t\tcovidReport.init();\n\n\n\t\t//shrink nav\n\t\t$(function(){\n\n\t\t\twindow.shrunknav = false;\n\t\t\tif ($(window).scrollTop() >= 50) { // if equal to or greater than 100 and hasBeenTrigged is set to false.\n\t\t\t\t$('#header-modern').addClass('sticky-nav');\n\t\t\t\twindow.shrunknav = true;\n\t\t\t}\n\t\t\t$(window).scroll(function() {\n\t\t\t\tif ($(this).scrollTop() >= 50) { // if equal to or greater than 100 and hasBeenTrigged is set to false.\n\t\t\t\t\t$('#header-modern').addClass('sticky-nav');\n\t\t\t\t\twindow.shrunknav = true;\n\t\t\t\t} else if(window.shrunknav) {\n\t\t\t\t$('#header-modern').removeClass('sticky-nav');\n\t\t\t\twindow.shrunknav = false;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n // log('document.DOMContentLoaded');\n\t}\n\n\tload() {\n\t\tconst log = debug(\"site:windowLoad\");\n\t\t// log(\"window.onload\");\n\n\t\t// example of ES2015 modules loading & tree shaking\n\t\t// emptyLinks();\n\t}\n\n}\n\nexport default Site;\nwindow.site = new Site();"],"names":["require","const","let","init","debug","$","log","this","require$$0","body","undefined","arguments","opts","Glide","top","focusable","removeFocus","enableFocus","esc","headroom","Headroom","keyboardFocus","objectFitImages"],"mappings":"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"}