/******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 1); /******/ }) /************************************************************************/ /******/ ({ /***/ "./js/src/front-end.js": /*!*****************************!*\ !*** ./js/src/front-end.js ***! \*****************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var moveto__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moveto */ \"./node_modules/moveto/dist/moveTo.js\");\n/* harmony import */ var moveto__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moveto__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vanilla_lazyload__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vanilla-lazyload */ \"./node_modules/vanilla-lazyload/dist/lazyload.min.js\");\n/* harmony import */ var vanilla_lazyload__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vanilla_lazyload__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _modules_localization__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/localization */ \"./js/src/modules/localization.js\");\n/* harmony import */ var _modules_external_link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/external-link */ \"./js/src/modules/external-link.js\");\n/* harmony import */ var _modules_gutenberg_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/gutenberg-helpers */ \"./js/src/modules/gutenberg-helpers.js\");\n/* harmony import */ var what_input__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! what-input */ \"./node_modules/what-input/dist/what-input.js\");\n/* harmony import */ var what_input__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(what_input__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _modules_navigation_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/navigation.js */ \"./js/src/modules/navigation.js\");\n/* harmony import */ var _modules_navigation_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_modules_navigation_js__WEBPACK_IMPORTED_MODULE_6__);\n/**\n * Air theme JavaScript.\n */\n// Import modules (comment to disable)\n\n\n\n\n // import './modules/sticky-nav.js'\n// import slick from 'slick-carousel';\n\n // Navigation\n\n // Define Javascript is active by changing the body class\n\ndocument.body.classList.remove('no-js');\ndocument.body.classList.add('js'); // Style external links\n\nObject(_modules_external_link__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(); // Init lazyload\n// Usage example on template side when air-helper enabled:\n// ID ) ); ?>\n// Refer to documentation:\n// 1) https://github.com/digitoimistodude/air-helper#image-lazyloading-1\n// 2) https://github.com/verlok/vanilla-lazyload#-getting-started---html\n\nvar air_light_LazyLoad = new vanilla_lazyload__WEBPACK_IMPORTED_MODULE_1___default.a(); // After your content has changed...\n\nair_light_LazyLoad.update(); // jQuery start\n\n(function ($) {\n // Accessibility: Ensure back to top is right color on right background\n // Note: Needs .has-light-bg or .has-dark-bg class on all blocks\n var stickyOffset = $('.back-to-top').offset();\n var $contentDivs = $('.block, .site-footer');\n $(document).scroll(function () {\n $contentDivs.each(function (k) {\n var _thisOffset = $(this).offset();\n\n var _actPosition = _thisOffset.top - $(window).scrollTop();\n\n if (_actPosition < stickyOffset.top && _actPosition + $(this).height() > 0) {\n $('.back-to-top').removeClass('has-light-bg has-dark-bg').addClass($(this).hasClass('has-light-bg') ? 'has-light-bg' : 'has-dark-bg');\n return false;\n }\n });\n }); // Detect Visible section on viewport from bottom\n // @link https://codepen.io/BoyWithSilverWings/pen/MJgQqR\n\n $.fn.isInViewport = function () {\n var elementTop = $(this).offset().top;\n var elementBottom = elementTop + $(this).outerHeight();\n var viewportTop = $(window).scrollTop();\n var viewportBottom = viewportTop + $(window).height();\n return elementBottom > viewportTop && elementTop < viewportBottom;\n }; // Accessibility: Ensure back to top is right color on right background\n\n\n $(window).on('resize scroll', function () {\n $('.block, .site-footer').each(function () {\n if ($(this).isInViewport()) {\n $('.back-to-top').removeClass('has-light-bg has-dark-bg').addClass($(this).hasClass('has-light-bg') ? 'has-light-bg' : 'has-dark-bg');\n }\n });\n }); // Hide or show the 'back to top' link\n\n $(window).scroll(function () {\n // Back to top\n var offset = 300; // Browser window scroll (in pixels) after which the 'back to top' link is shown\n\n var offset_opacity = 1200; // Browser window scroll (in pixels) after which the link opacity is reduced\n\n var scroll_top_duration = 700; // Duration of the top scrolling animation (in ms)\n\n var link_class = '.back-to-top';\n\n if ($(this).scrollTop() > offset) {\n $(link_class).addClass('is-visible');\n } else {\n $(link_class).removeClass('is-visible');\n }\n\n if ($(this).scrollTop() > offset_opacity) {\n $(link_class).addClass('fade-out');\n } else {\n $(link_class).removeClass('fade-out');\n }\n }); // Document ready start\n\n $(function () {// Your JavaScript here\n });\n})(jQuery);\n\ndocument.addEventListener('DOMContentLoaded', function () {\n var easeFunctions = {\n easeInQuad: function easeInQuad(t, b, c, d) {\n t /= d;\n return c * t * t + b;\n },\n easeOutQuad: function easeOutQuad(t, b, c, d) {\n t /= d;\n return -c * t * (t - 2) + b;\n }\n };\n var moveTo = new moveto__WEBPACK_IMPORTED_MODULE_0___default.a({\n ease: 'easeInQuad'\n }, easeFunctions);\n var triggers = document.getElementsByClassName('js-trigger');\n\n for (var i = 0; i < triggers.length; i++) {\n moveTo.registerTrigger(triggers[i]);\n }\n});\n\n//# sourceURL=webpack:///./js/src/front-end.js?"); /***/ }), /***/ "./js/src/modules/external-link.js": /*!*****************************************!*\ !*** ./js/src/modules/external-link.js ***! \*****************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return styleExternalLinks; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _localization__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./localization */ \"./js/src/modules/localization.js\");\n\n\n/**\n * Style external links\n */\n\n\nfunction isLinkExternal(link, localDomains) {\n // Empty links are not external\n if (!link.length) {\n return false;\n }\n\n var exceptions = ['#', 'tel:', 'mailto:', '/']; // Check if the url starts with some of the exceptions\n\n var isException = exceptions.some(function (exception) {\n var compare = new RegExp(\"^\".concat(exception), 'g');\n return compare.test(link);\n });\n\n if (isException) {\n return false;\n }\n\n var linkUrl;\n\n try {\n linkUrl = new URL(link);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log(\"Invalid URL: \".concat(link));\n return false;\n } // Check if host is one of the local domains\n\n\n return !localDomains.some(function (domain) {\n return linkUrl.host === domain;\n });\n}\n\nfunction styleExternalLinks() {\n var localDomains = [window.location.host];\n\n if (typeof window.air_light_externalLinkDomains !== 'undefined') {\n localDomains = localDomains.concat(window.air_light_externalLinkDomains);\n }\n\n var links = document.querySelectorAll('a');\n\n var externalLinks = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(links).filter(function (link) {\n return isLinkExternal(link.href, localDomains);\n });\n\n externalLinks.forEach(function (externalLink) {\n var ariaLabel = externalLink.target === '_blank' ? \"\".concat(Object(_localization__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('external_link'), \" \").concat(externalLink.textContent, \", \").concat(Object(_localization__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('target_blank')) : \"\".concat(Object(_localization__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('external_link'), \" \").concat(externalLink.textContent);\n externalLink.setAttribute('aria-label', ariaLabel);\n externalLink.classList.add('is-external-link');\n });\n}\n\n//# sourceURL=webpack:///./js/src/modules/external-link.js?"); /***/ }), /***/ "./js/src/modules/gutenberg-helpers.js": /*!*********************************************!*\ !*** ./js/src/modules/gutenberg-helpers.js ***! \*********************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n\n\n// Gutengerg magic for alignright and alignleft images\nvar figures = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(document.querySelectorAll('figure'));\n\nfigures.forEach(function (figure) {\n var img = figure.querySelector('img');\n\n if (typeof img === 'undefined') {\n return;\n }\n\n figure.style.setProperty('--child-img-width', \"\".concat(img.clientWidth, \"px\"));\n});\n\n//# sourceURL=webpack:///./js/src/modules/gutenberg-helpers.js?"); /***/ }), /***/ "./js/src/modules/localization.js": /*!****************************************!*\ !*** ./js/src/modules/localization.js ***! \****************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getLocalization; });\nfunction getLocalization(stringKey) {\n if (typeof window.air_light_screenReaderText === 'undefined' || typeof window.air_light_screenReaderText[stringKey] === 'undefined') {\n // eslint-disable-next-line no-console\n console.error(\"Missing translation for \".concat(stringKey));\n return '';\n }\n\n return window.air_light_screenReaderText[stringKey];\n}\n\n//# sourceURL=webpack:///./js/src/modules/localization.js?"); /***/ }), /***/ "./js/src/modules/navigation.js": /*!**************************************!*\ !*** ./js/src/modules/navigation.js ***! \**************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("// TODO: Refactor file\n\n/* eslint-disable default-case, eqeqeq, no-restricted-globals, no-undef, no-var, vars-on-top, prefer-const, max-len, prefer-destructuring, no-redeclare, no-plusplus, no-use-before-define, no-unused-vars, block-scoped-var, func-names */\n\n/*\nAn accessible menu for WordPress\n\nhttps://github.com/theme-smith/accessible-nav-wp\nKirsten Smith (kirsten@themesmith.co.uk)\nLicensed GPL v.2 (http://www.gnu.org/licenses/gpl-2.0.html)\n\nThis work derived from:\nhttps://github.com/WordPress/twentysixteen (GPL v.2)\nhttps://github.com/wpaccessibility/a11ythemepatterns/tree/master/menu-keyboard-arrow-nav (GPL v.2)\n*/\n(function ($) {\n // Responsive nav width\n var responsivenav = 960; // Check if enter pressed\n\n var enterPressed = false;\n $(window).keydown(function (evt) {\n if (evt.which === 13) {\n enterPressed = true;\n }\n }).keyup(function (evt) {\n if (evt.which === 13) {\n enterPressed = false;\n }\n }); // Hover intent\n\n $('.menu-item-has-children').hover(function () {\n $(this).addClass('hover-intent');\n }, function () {\n var _this = this;\n\n setTimeout(function () {\n $(_this).removeClass('hover-intent');\n }, 100);\n });\n var menuContainer = $('.nav-container');\n var menuToggle = menuContainer.find('#nav-toggle');\n var siteHeaderMenu = menuContainer.find('#main-navigation-wrapper');\n var siteNavigation = menuContainer.find('#nav'); // Toggles the menu button\n\n (function () {\n if (!menuToggle.length) {\n return;\n } // Do not set aria-expanded false on desktop\n\n\n if (window.innerWidth < responsivenav) {\n menuToggle.add(siteNavigation).attr('aria-expanded', 'false');\n }\n\n menuToggle.on('click', function () {\n $(this).add(siteHeaderMenu).toggleClass('toggled-on'); // Change screen reader expanded state\n\n $(this).attr('aria-expanded', $(this).attr('aria-expanded') === 'false' ? 'true' : 'false'); // Change screen reader open/close labels\n\n $('#nav-toggle-label').text( // eslint-disable-next-line no-undef\n $('#nav-toggle-label').text() === air_light_screenReaderText.expand_toggle ? air_light_screenReaderText.collapse_toggle : air_light_screenReaderText.expand_toggle);\n $(this).attr('aria-label', $(this).attr('aria-label') === air_light_screenReaderText.expand_toggle ? air_light_screenReaderText.collapse_toggle : air_light_screenReaderText.expand_toggle); // jscs:disable\n\n $(this).add(siteNavigation).attr('aria-expanded', $(this).add(siteNavigation).attr('aria-expanded') === 'false' ? 'true' : 'false'); // jscs:enable\n });\n })(); // Close focused dropdowns when pressing esc\n\n\n $('.menu-item a, .dropdown button').on('keyup', function () {\n if ($('.dropdown').find(':focus').length !== 0) {\n // Close menu using Esc key.\n if (event.keyCode === 27) {\n // Close the dropdown menu\n thisDropdown = $(this).parent().parent().parent();\n screenReaderSpan = thisDropdown.find('.screen-reader-text');\n dropdownToggle = thisDropdown.find('.dropdown-toggle');\n thisDropdown.find('.sub-menu').removeClass('toggled-on');\n thisDropdown.find('.dropdown-toggle').removeClass('toggled-on');\n thisDropdown.find('.dropdown').removeClass('toggled-on');\n dropdownToggle.attr('aria-expanded', 'false'); // jscs:enable\n\n screenReaderSpan.text(air_light_screenReaderText.expand); // Move focus back to previous dropdown select\n\n thisDropdown.find('.dropdown-toggle:first').focus();\n }\n }\n\n if (window.innerWidth > responsivenav) {\n // Close previous dropdown if we are on main level\n prevDropdown = $(this).parent().prev();\n screenReaderSpanPrev = prevDropdown.find('.screen-reader-text');\n dropdownTogglePrev = prevDropdown.find('.dropdown-toggle');\n prevDropdown.find('.sub-menu').removeClass('toggled-on');\n prevDropdown.find('.dropdown-toggle').removeClass('toggled-on');\n prevDropdown.find('.dropdown').removeClass('toggled-on');\n dropdownTogglePrev.attr('aria-expanded', 'false');\n screenReaderSpanPrev.text(air_light_screenReaderText.expand); // Close next dropdown if we are on main level\n\n nextDropdown = $(this).parent().next();\n screenReaderSpanNext = nextDropdown.find('.screen-reader-text');\n dropdownToggleNext = nextDropdown.find('.dropdown-toggle');\n nextDropdown.find('.sub-menu').removeClass('toggled-on');\n nextDropdown.find('.dropdown-toggle').removeClass('toggled-on');\n nextDropdown.find('.dropdown').removeClass('toggled-on');\n dropdownToggleNext.attr('aria-expanded', 'false');\n screenReaderSpanNext.text(air_light_screenReaderText.expand);\n }\n }); // Adds aria attribute\n\n siteHeaderMenu.find('.menu-item-has-children').attr('aria-haspopup', 'true'); // Open last dropdown by default on mobile\n // TODO: Rather fix the issue: https://github.com/digitoimistodude/air-light/issues/26\n // $(() => {\n // if (window.innerWidth < responsivenav) {\n // const screenReaderSpan = $('.menu-items > .dropdown-toggle').find('.screen-reader-text');\n // const dropdownMenu = $('.menu-items > .menu-item-has-children:last .sub-menu');\n // const dropdownItem = $('.menu-items > .menu-item-has-children:last .dropdown');\n // dropdownItem.addClass('toggled-on');\n // dropdownMenu.addClass('toggled-on');\n // dropdownItem.attr('aria-expanded', 'true');\n // dropdownItem.attr('aria-label', air_light_screenReaderText.collapse);\n // screenReaderSpan.text(air_light_screenReaderText.collapse);\n // }\n // });\n // Add default dropdown-toggle label\n\n $('.dropdown-toggle').each(function () {\n $(this).attr('aria-label', \"\".concat(air_light_screenReaderText.expand_for, \" \").concat($(this).prev().text()));\n }); // Toggles the sub-menu when dropdown toggle button accessed\n\n siteHeaderMenu.find('.dropdown-toggle').click(function (e) {\n if (enterPressed || window.innerWidth < responsivenav) {\n var dropdownMenu = $(this).nextAll('.sub-menu');\n e.preventDefault();\n $(this).toggleClass('toggled-on');\n dropdownMenu.toggleClass('toggled-on'); // jscs:disable\n\n $(this).attr('aria-expanded', $(this).attr('aria-expanded') === 'false' ? 'true' : 'false'); // jscs:enable\n // Change screen reader open/close labels\n\n $(this).attr('aria-label', $(this).attr('aria-label') === \"\".concat(air_light_screenReaderText.collapse_for, \" \").concat($(this).prev().text()) ? \"\".concat(air_light_screenReaderText.expand_for, \" \").concat($(this).prev().text()) : \"\".concat(air_light_screenReaderText.collapse_for, \" \").concat($(this).prev().text()));\n }\n }); // Adds a class to sub-menus for styling\n\n $('.sub-menu .menu-item-has-children').parent('.sub-menu').addClass('has-sub-menu'); // Keyboard navigation\n\n $('.menu-item a, button.dropdown-toggle').on('keydown', function (e) {\n if ([37, 38, 39, 40].indexOf(e.keyCode) == -1) {\n return;\n }\n\n switch (e.keyCode) {\n case 37:\n // Left key\n e.preventDefault();\n e.stopPropagation();\n\n if ($(this).hasClass('dropdown-toggle')) {\n $(this).prev('a').focus();\n } else if ($(this).parent().prev().children('button.dropdown-toggle').length) {\n $(this).parent().prev().children('button.dropdown-toggle').focus();\n } else {\n $(this).parent().prev().children('a').focus();\n }\n\n if ($(this).is('ul ul ul.sub-menu.toggled-on li:first-child a')) {\n $(this).parents('ul.sub-menu.toggled-on li').children('button.dropdown-toggle').focus();\n }\n\n break;\n\n case 39:\n // Right key\n e.preventDefault();\n e.stopPropagation();\n\n if ($(this).next('button.dropdown-toggle').length) {\n $(this).next('button.dropdown-toggle').focus();\n } else if ($(this).parent().next().find('input').length) {\n $(this).parent().next().find('input').focus();\n } else {\n $(this).parent().next().children('a').focus();\n }\n\n if ($(this).is('ul.sub-menu .dropdown-toggle.toggled-on')) {\n $(this).parent().find('ul.sub-menu li:first-child a').focus();\n }\n\n break;\n\n case 40:\n // Down key\n e.preventDefault();\n e.stopPropagation();\n\n if ($(this).next().length) {\n $(this).next().find('li:first-child a').first().focus();\n } else if ($(this).parent().next().find('input').length) {\n $(this).parent().next().find('input').focus();\n } else {\n $(this).parent().next().children('a').focus();\n }\n\n if ($(this).is('ul.sub-menu a') && $(this).next('button.dropdown-toggle').length) {\n $(this).parent().next().children('a').focus();\n }\n\n if ($(this).is('ul.sub-menu .dropdown-toggle') && $(this).parent().next().children('.dropdown-toggle').length) {\n $(this).parent().next().children('.dropdown-toggle').focus();\n }\n\n break;\n\n case 38:\n // Up key\n e.preventDefault();\n e.stopPropagation();\n\n if ($(this).parent().prev().length) {\n $(this).parent().prev().children('a').focus();\n } else {\n $(this).parents('ul').first().prev('.dropdown-toggle.toggled-on').focus();\n }\n\n if ($(this).is('ul.sub-menu .dropdown-toggle') && $(this).parent().prev().children('.dropdown-toggle').length) {\n $(this).parent().prev().children('.dropdown-toggle').focus();\n }\n\n break;\n }\n });\n var html;\n var body;\n var container;\n var button;\n var menu;\n var menuWrapper;\n var links;\n var subMenus;\n var i;\n var len;\n var focusableElements;\n var firstFocusableElement;\n var lastFocusableElement;\n container = document.getElementById('nav');\n\n if (!container) {\n return;\n }\n\n button = document.getElementById('nav-toggle');\n\n if (typeof button === 'undefined') {\n return;\n } // Set vars.\n\n\n html = document.getElementsByTagName('html')[0];\n body = document.getElementsByTagName('body')[0];\n menu = container.getElementsByTagName('ul')[0];\n menuWrapper = document.getElementById('main-navigation-wrapper'); // Hide menu toggle button if menu is empty and return early.\n\n if (typeof menu === 'undefined') {\n button.style.display = 'none';\n return;\n } // Do not set aria-expanded false on desktop\n\n\n if (window.innerWidth < responsivenav) {\n menu.setAttribute('aria-expanded', 'false');\n }\n\n if (menu.className.indexOf('nav-menu') === -1) {\n menu.className += ' nav-menu';\n } // Focus trap for mobile navigation\n\n\n if (window.innerWidth < responsivenav) {\n var firstFocusableElement = null;\n var lastFocusableElement = null; // Select nav items\n\n navElements = container.querySelectorAll(['.nav-primary a[href]', '.nav-primary button']); // Listen for key events on nav elements and the toggle button\n // to trigger focus trap\n\n for (var i = 0; i < navElements.length; i++) {\n navElements[i].addEventListener('keydown', focusTrap);\n }\n } // What happens when clicking menu toggle\n\n\n button.onclick = function () {\n if (container.className.indexOf('is-active') !== -1) {\n closeMenu(); // Close menu.\n } else {\n html.className += ' disable-scroll';\n body.className += ' js-nav-active';\n container.className += ' is-active';\n button.className += ' is-active';\n button.setAttribute('aria-expanded', 'true');\n menu.setAttribute('aria-expanded', 'true'); // Add focus trap when menu open\n\n button.addEventListener('keydown', focusTrap, false);\n }\n }; // Close menu using Esc key.\n\n\n document.addEventListener('keyup', function (event) {\n if (event.keyCode == 27) {\n if (container.className.indexOf('is-active') !== -1) {\n closeMenu(); // Close menu.\n }\n }\n }); // Close menu clicking menu wrapper area.\n\n menuWrapper.onclick = function (e) {\n if (e.target == menuWrapper && container.className.indexOf('is-active') !== -1) {\n closeMenu(); // Close menu.\n }\n }; // Close menu function.\n\n\n function closeMenu() {\n button.removeEventListener('keydown', focusTrap, false);\n html.className = html.className.replace(' disable-scroll', '');\n body.className = body.className.replace(' js-nav-active', '');\n container.className = container.className.replace(' is-active', '');\n button.className = button.className.replace(' is-active', '');\n button.setAttribute('aria-expanded', 'false');\n menu.setAttribute('aria-expanded', 'false'); // Return focus to nav-toggle\n\n button.focus();\n } // Get all the link elements within the menu.\n\n\n links = menu.getElementsByTagName('a');\n subMenus = menu.getElementsByTagName('ul'); // Each time a menu link is focused or blurred, toggle focus.\n\n for (i = 0, len = links.length; i < len; i++) {\n links[i].addEventListener('focus', toggleFocus, true);\n links[i].addEventListener('blur', toggleFocus, true);\n }\n /**\n * Sets or removes .focus class on an element.\n */\n\n\n function toggleFocus() {\n var self = this; // Move up through the ancestors of the current link until we hit .nav-menu.\n\n while (self.className.indexOf('nav-menu') === -1) {\n // On li elements toggle the class .focus.\n if (self.tagName.toLowerCase() === 'li') {\n if (self.className.indexOf('focus') !== -1) {\n self.className = self.className.replace(' focus', '');\n } else {\n self.className += ' focus';\n }\n }\n\n self = self.parentElement;\n }\n }\n\n function focusTrap(e) {\n // Set focusable elements inside main navigation.\n focusableElements = container.querySelectorAll(['.sub-menu.toggled-on > li a[href]', 'ul[aria-expanded=\"true\"] > li > a[href]', 'area[href]', 'input:not([disabled])', 'select:not([disabled])', 'textarea:not([disabled])', '.sub-menu.toggled-on > li > button:not([disabled]):not(.toggled-on)', 'ul[aria-expanded=\"true\"] > li > button:not([disabled]):not(.toggled-on)', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^=' - '])']);\n firstFocusableElement = focusableElements[0];\n lastFocusableElement = focusableElements[focusableElements.length - 1]; // Redirect last Tab to first focusable element.\n\n if (lastFocusableElement === e.target && e.keyCode === 9 && !e.shiftKey) {\n e.preventDefault();\n button.focus(); // Set focus on first element - that's actually close menu button.\n } // Redirect first Shift+Tab to toggle button element.\n\n\n if (firstFocusableElement === e.target && e.keyCode === 9 && e.shiftKey) {\n e.preventDefault();\n button.focus(); // Set focus on last element.\n } // Redirect Shift+Tab from the toggle button to last focusable element.\n\n\n if (button === e.target && e.keyCode === 9 && e.shiftKey) {\n e.preventDefault();\n lastFocusableElement.focus(); // Set focus on last element.\n }\n }\n})(jQuery);\n\n//# sourceURL=webpack:///./js/src/modules/navigation.js?"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/arrayLikeToArray.js": /*!*****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js?"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js": /*!******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray */ \"./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js?"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/iterableToArray.js": /*!****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js?"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/nonIterableSpread.js": /*!******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js?"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/toConsumableArray.js": /*!******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles */ \"./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js\");\n\nvar iterableToArray = __webpack_require__(/*! ./iterableToArray */ \"./node_modules/@babel/runtime/helpers/iterableToArray.js\");\n\nvar unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray */ \"./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread */ \"./node_modules/@babel/runtime/helpers/nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js?"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js": /*!***************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***! \***************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray */ \"./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js?"); /***/ }), /***/ "./node_modules/moveto/dist/moveTo.js": /*!********************************************!*\ !*** ./node_modules/moveto/dist/moveTo.js ***! \********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("/*!\n * MoveTo - A lightweight scroll animation javascript library without any dependency.\n * Version 1.8.2 (28-06-2019 14:30)\n * Licensed under MIT\n * Copyright 2019 Hasan Aydoğdu \n */\n\n\n\nvar MoveTo = function () {\n /**\n * Defaults\n * @type {object}\n */\n var defaults = {\n tolerance: 0,\n duration: 800,\n easing: 'easeOutQuart',\n container: window,\n callback: function callback() {}\n };\n /**\n * easeOutQuart Easing Function\n * @param {number} t - current time\n * @param {number} b - start value\n * @param {number} c - change in value\n * @param {number} d - duration\n * @return {number} - calculated value\n */\n\n function easeOutQuart(t, b, c, d) {\n t /= d;\n t--;\n return -c * (t * t * t * t - 1) + b;\n }\n /**\n * Merge two object\n *\n * @param {object} obj1\n * @param {object} obj2\n * @return {object} merged object\n */\n\n\n function mergeObject(obj1, obj2) {\n var obj3 = {};\n Object.keys(obj1).forEach(function (propertyName) {\n obj3[propertyName] = obj1[propertyName];\n });\n Object.keys(obj2).forEach(function (propertyName) {\n obj3[propertyName] = obj2[propertyName];\n });\n return obj3;\n }\n\n ;\n /**\n * Converts camel case to kebab case\n * @param {string} val the value to be converted\n * @return {string} the converted value\n */\n\n function kebabCase(val) {\n return val.replace(/([A-Z])/g, function ($1) {\n return '-' + $1.toLowerCase();\n });\n }\n\n ;\n /**\n * Count a number of item scrolled top\n * @param {Window|HTMLElement} container\n * @return {number}\n */\n\n function countScrollTop(container) {\n if (container instanceof HTMLElement) {\n return container.scrollTop;\n }\n\n return container.pageYOffset;\n }\n\n ;\n /**\n * MoveTo Constructor\n * @param {object} options Options\n * @param {object} easeFunctions Custom ease functions\n */\n\n function MoveTo() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var easeFunctions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.options = mergeObject(defaults, options);\n this.easeFunctions = mergeObject({\n easeOutQuart: easeOutQuart\n }, easeFunctions);\n }\n /**\n * Register a dom element as trigger\n * @param {HTMLElement} dom Dom trigger element\n * @param {function} callback Callback function\n * @return {function|void} unregister function\n */\n\n\n MoveTo.prototype.registerTrigger = function (dom, callback) {\n var _this = this;\n\n if (!dom) {\n return;\n }\n\n var href = dom.getAttribute('href') || dom.getAttribute('data-target'); // The element to be scrolled\n\n var target = href && href !== '#' ? document.getElementById(href.substring(1)) : document.body;\n var options = mergeObject(this.options, _getOptionsFromTriggerDom(dom, this.options));\n\n if (typeof callback === 'function') {\n options.callback = callback;\n }\n\n var listener = function listener(e) {\n e.preventDefault();\n\n _this.move(target, options);\n };\n\n dom.addEventListener('click', listener, false);\n return function () {\n return dom.removeEventListener('click', listener, false);\n };\n };\n /**\n * Move\n * Scrolls to given element by using easeOutQuart function\n * @param {HTMLElement|number} target Target element to be scrolled or target position\n * @param {object} options Custom options\n */\n\n\n MoveTo.prototype.move = function (target) {\n var _this2 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (target !== 0 && !target) {\n return;\n }\n\n options = mergeObject(this.options, options);\n var distance = typeof target === 'number' ? target : target.getBoundingClientRect().top;\n var from = countScrollTop(options.container);\n var startTime = null;\n var lastYOffset;\n distance -= options.tolerance; // rAF loop\n\n var loop = function loop(currentTime) {\n var currentYOffset = countScrollTop(_this2.options.container);\n\n if (!startTime) {\n // To starts time from 1, we subtracted 1 from current time\n // If time starts from 1 The first loop will not do anything,\n // because easing value will be zero\n startTime = currentTime - 1;\n }\n\n var timeElapsed = currentTime - startTime;\n\n if (lastYOffset) {\n if (distance > 0 && lastYOffset > currentYOffset || distance < 0 && lastYOffset < currentYOffset) {\n return options.callback(target);\n }\n }\n\n lastYOffset = currentYOffset;\n\n var val = _this2.easeFunctions[options.easing](timeElapsed, from, distance, options.duration);\n\n options.container.scroll(0, val);\n\n if (timeElapsed < options.duration) {\n window.requestAnimationFrame(loop);\n } else {\n options.container.scroll(0, distance + from);\n options.callback(target);\n }\n };\n\n window.requestAnimationFrame(loop);\n };\n /**\n * Adds custom ease function\n * @param {string} name Ease function name\n * @param {function} fn Ease function\n */\n\n\n MoveTo.prototype.addEaseFunction = function (name, fn) {\n this.easeFunctions[name] = fn;\n };\n /**\n * Returns options which created from trigger dom element\n * @param {HTMLElement} dom Trigger dom element\n * @param {object} options The instance's options\n * @return {object} The options which created from trigger dom element\n */\n\n\n function _getOptionsFromTriggerDom(dom, options) {\n var domOptions = {};\n Object.keys(options).forEach(function (key) {\n var value = dom.getAttribute(\"data-mt-\".concat(kebabCase(key)));\n\n if (value) {\n domOptions[key] = isNaN(value) ? value : parseInt(value, 10);\n }\n });\n return domOptions;\n }\n\n return MoveTo;\n}();\n\nif (true) {\n module.exports = MoveTo;\n} else {}\n\n//# sourceURL=webpack:///./node_modules/moveto/dist/moveTo.js?"); /***/ }), /***/ "./node_modules/vanilla-lazyload/dist/lazyload.min.js": /*!************************************************************!*\ !*** ./node_modules/vanilla-lazyload/dist/lazyload.min.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("!function(t,n){ true?module.exports=n():undefined}(this,(function(){\"use strict\";function t(){return(t=Object.assign||function(t){for(var n=1;n1,a={elements_selector:\".lazy\",container:e||n?document:null,threshold:300,thresholds:null,data_src:\"src\",data_srcset:\"srcset\",data_sizes:\"sizes\",data_bg:\"bg\",data_bg_hidpi:\"bg-hidpi\",data_bg_multi:\"bg-multi\",data_bg_multi_hidpi:\"bg-multi-hidpi\",data_poster:\"poster\",class_applied:\"applied\",class_loading:\"loading\",class_loaded:\"loaded\",class_error:\"error\",class_entered:\"entered\",class_exited:\"exited\",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1},c=function(n){return t({},a,n)},s=function(t,n){var e,i=\"LazyLoad::Initialized\",o=new t(n);try{e=new CustomEvent(i,{detail:{instance:o}})}catch(t){(e=document.createEvent(\"CustomEvent\")).initCustomEvent(i,!1,!1,{instance:o})}window.dispatchEvent(e)},l=\"loading\",u=\"loaded\",d=\"applied\",f=\"error\",_=\"native\",g=\"data-\",v=\"ll-status\",p=function(t,n){return t.getAttribute(g+n)},b=function(t){return p(t,v)},h=function(t,n){return function(t,n,e){var i=\"data-ll-status\";null!==e?t.setAttribute(i,e):t.removeAttribute(i)}(t,0,n)},m=function(t){return h(t,null)},E=function(t){return null===b(t)},y=function(t){return b(t)===_},A=[l,u,d,f],I=function(t,n,e,i){t&&(void 0===i?void 0===e?t(n):t(n,e):t(n,e,i))},L=function(t,n){o?t.classList.add(n):t.className+=(t.className?\" \":\"\")+n},w=function(t,n){o?t.classList.remove(n):t.className=t.className.replace(new RegExp(\"(^|\\\\s+)\"+n+\"(\\\\s+|$)\"),\" \").replace(/^\\s+/,\"\").replace(/\\s+$/,\"\")},k=function(t){return t.llTempImage},O=function(t,n){if(n){var e=n._observer;e&&e.unobserve(t)}},x=function(t,n){t&&(t.loadingCount+=n)},z=function(t,n){t&&(t.toLoadCount=n)},C=function(t){for(var n,e=[],i=0;n=t.children[i];i+=1)\"SOURCE\"===n.tagName&&e.push(n);return e},N=function(t,n,e){e&&t.setAttribute(n,e)},M=function(t,n){t.removeAttribute(n)},R=function(t){return!!t.llOriginalAttrs},G=function(t){if(!R(t)){var n={};n.src=t.getAttribute(\"src\"),n.srcset=t.getAttribute(\"srcset\"),n.sizes=t.getAttribute(\"sizes\"),t.llOriginalAttrs=n}},T=function(t){if(R(t)){var n=t.llOriginalAttrs;N(t,\"src\",n.src),N(t,\"srcset\",n.srcset),N(t,\"sizes\",n.sizes)}},j=function(t,n){N(t,\"sizes\",p(t,n.data_sizes)),N(t,\"srcset\",p(t,n.data_srcset)),N(t,\"src\",p(t,n.data_src))},D=function(t){M(t,\"src\"),M(t,\"srcset\"),M(t,\"sizes\")},F=function(t,n){var e=t.parentNode;e&&\"PICTURE\"===e.tagName&&C(e).forEach(n)},P={IMG:function(t,n){F(t,(function(t){G(t),j(t,n)})),G(t),j(t,n)},IFRAME:function(t,n){N(t,\"src\",p(t,n.data_src))},VIDEO:function(t,n){!function(t,e){C(t).forEach((function(t){N(t,\"src\",p(t,n.data_src))}))}(t),N(t,\"poster\",p(t,n.data_poster)),N(t,\"src\",p(t,n.data_src)),t.load()}},S=function(t,n){var e=P[t.tagName];e&&e(t,n)},V=function(t,n,e){x(e,1),L(t,n.class_loading),h(t,l),I(n.callback_loading,t,e)},U=[\"IMG\",\"IFRAME\",\"VIDEO\"],$=function(t,n){!n||function(t){return t.loadingCount>0}(n)||function(t){return t.toLoadCount>0}(n)||I(t.callback_finish,n)},q=function(t,n,e){t.addEventListener(n,e),t.llEvLisnrs[n]=e},H=function(t,n,e){t.removeEventListener(n,e)},B=function(t){return!!t.llEvLisnrs},J=function(t){if(B(t)){var n=t.llEvLisnrs;for(var e in n){var i=n[e];H(t,e,i)}delete t.llEvLisnrs}},K=function(t,n,e){!function(t){delete t.llTempImage}(t),x(e,-1),function(t){t&&(t.toLoadCount-=1)}(e),w(t,n.class_loading),n.unobserve_completed&&O(t,e)},Q=function(t,n,e){var i=k(t)||t;B(i)||function(t,n,e){B(t)||(t.llEvLisnrs={});var i=\"VIDEO\"===t.tagName?\"loadeddata\":\"load\";q(t,i,n),q(t,\"error\",e)}(i,(function(o){!function(t,n,e,i){var o=y(n);K(n,e,i),L(n,e.class_loaded),h(n,u),I(e.callback_loaded,n,i),o||$(e,i)}(0,t,n,e),J(i)}),(function(o){!function(t,n,e,i){var o=y(n);K(n,e,i),L(n,e.class_error),h(n,f),I(e.callback_error,n,i),o||$(e,i)}(0,t,n,e),J(i)}))},W=function(t,n,e){!function(t){t.llTempImage=document.createElement(\"IMG\")}(t),Q(t,n,e),function(t,n,e){var i=p(t,n.data_bg),o=p(t,n.data_bg_hidpi),a=r&&o?o:i;a&&(t.style.backgroundImage='url(\"'.concat(a,'\")'),k(t).setAttribute(\"src\",a),V(t,n,e))}(t,n,e),function(t,n,e){var i=p(t,n.data_bg_multi),o=p(t,n.data_bg_multi_hidpi),a=r&&o?o:i;a&&(t.style.backgroundImage=a,function(t,n,e){L(t,n.class_applied),h(t,d),n.unobserve_completed&&O(t,n),I(n.callback_applied,t,e)}(t,n,e))}(t,n,e)},X=function(t,n,e){!function(t){return U.indexOf(t.tagName)>-1}(t)?W(t,n,e):function(t,n,e){Q(t,n,e),S(t,n),V(t,n,e)}(t,n,e)},Y=[\"IMG\",\"IFRAME\"],Z=function(t){return t.use_native&&\"loading\"in HTMLImageElement.prototype},tt=function(t,n,e){t.forEach((function(t){return function(t){return t.isIntersecting||t.intersectionRatio>0}(t)?function(t,n,e,i){h(t,\"entered\"),L(t,e.class_entered),w(t,e.class_exited),function(t,n,e){n.unobserve_entered&&O(t,e)}(t,e,i),I(e.callback_enter,t,n,i),function(t){return A.indexOf(b(t))>=0}(t)||X(t,e,i)}(t.target,t,n,e):function(t,n,e,i){E(t)||(L(t,e.class_exited),function(t,n,e,i){e.cancel_on_exit&&function(t){return b(t)===l}(t)&&\"IMG\"===t.tagName&&(J(t),function(t){F(t,(function(t){D(t)})),D(t)}(t),function(t){F(t,(function(t){T(t)})),T(t)}(t),w(t,e.class_loading),x(i,-1),m(t),I(e.callback_cancel,t,n,i))}(t,n,e,i),I(e.callback_exit,t,n,i))}(t.target,t,n,e)}))},nt=function(t){return Array.prototype.slice.call(t)},et=function(t){return t.container.querySelectorAll(t.elements_selector)},it=function(t){return function(t){return b(t)===f}(t)},ot=function(t,n){return function(t){return nt(t).filter(E)}(t||et(n))},rt=function(t,e){var o=c(t);this._settings=o,this.loadingCount=0,function(t,n){i&&!Z(t)&&(n._observer=new IntersectionObserver((function(e){tt(e,t,n)}),function(t){return{root:t.container===document?null:t.container,rootMargin:t.thresholds||t.threshold+\"px\"}}(t)))}(o,this),function(t,e){n&&window.addEventListener(\"online\",(function(){!function(t,n){var e;(e=et(t),nt(e).filter(it)).forEach((function(n){w(n,t.class_error),m(n)})),n.update()}(t,e)}))}(o,this),this.update(e)};return rt.prototype={update:function(t){var n,o,r=this._settings,a=ot(t,r);z(this,a.length),!e&&i?Z(r)?function(t,n,e){t.forEach((function(t){-1!==Y.indexOf(t.tagName)&&(t.setAttribute(\"loading\",\"lazy\"),function(t,n,e){Q(t,n,e),S(t,n),h(t,_)}(t,n,e))})),z(e,0)}(a,r,this):(o=a,function(t){t.disconnect()}(n=this._observer),function(t,n){n.forEach((function(n){t.observe(n)}))}(n,o)):this.loadAll(a)},destroy:function(){this._observer&&this._observer.disconnect(),et(this._settings).forEach((function(t){delete t.llOriginalAttrs})),delete this._observer,delete this._settings,delete this.loadingCount,delete this.toLoadCount},loadAll:function(t){var n=this,e=this._settings;ot(t,e).forEach((function(t){O(t,n),X(t,e,n)}))}},rt.load=function(t,n){var e=c(n);X(t,e)},rt.resetStatus=function(t){m(t)},n&&function(t,n){if(n)if(n.length)for(var e,i=0;e=n[i];i+=1)s(t,e);else s(t,n)}(rt,window.lazyLoadOptions),rt}));\r\n\n\n//# sourceURL=webpack:///./node_modules/vanilla-lazyload/dist/lazyload.min.js?"); /***/ }), /***/ "./node_modules/what-input/dist/what-input.js": /*!****************************************************!*\ !*** ./node_modules/what-input/dist/what-input.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v5.2.10\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse {}\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\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function () {\n\t /*\n\t * bail out if there is no document or window\n\t * (i.e. in a node/non-DOM environment)\n\t *\n\t * Return a stubbed API instead\n\t */\n\t if (typeof document === 'undefined' || typeof window === 'undefined') {\n\t return {\n\t // always return \"initial\" because no interaction will ever be detected\n\t ask: function ask() {\n\t return 'initial';\n\t },\n\n\t // always return null\n\t element: function element() {\n\t return null;\n\t },\n\n\t // no-op\n\t ignoreKeys: function ignoreKeys() {},\n\n\t // no-op\n\t specificKeys: function specificKeys() {},\n\n\t // no-op\n\t registerOnChange: function registerOnChange() {},\n\n\t // no-op\n\t unRegisterOnChange: function unRegisterOnChange() {}\n\t };\n\t }\n\n\t /*\n\t * variables\n\t */\n\n\t // cache document.documentElement\n\t var docElem = document.documentElement;\n\n\t // currently focused dom element\n\t var currentElement = null;\n\n\t // last used input type\n\t var currentInput = 'initial';\n\n\t // last used input intent\n\t var currentIntent = currentInput;\n\n\t // UNIX timestamp of current event\n\t var currentTimestamp = Date.now();\n\n\t // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`\n\t var shouldPersist = 'false';\n\n\t // form input types\n\t var formInputs = ['button', 'input', 'select', 'textarea'];\n\n\t // empty array for holding callback functions\n\t var functionList = [];\n\n\t // list of modifier keys commonly used with the mouse and\n\t // can be safely ignored to prevent false keyboard detection\n\t var ignoreMap = [16, // shift\n\t 17, // control\n\t 18, // alt\n\t 91, // Windows key / left Apple cmd\n\t 93 // Windows menu / right Apple cmd\n\t ];\n\n\t var specificMap = [];\n\n\t // mapping of events to input types\n\t var inputMap = {\n\t keydown: 'keyboard',\n\t keyup: 'keyboard',\n\t mousedown: 'mouse',\n\t mousemove: 'mouse',\n\t MSPointerDown: 'pointer',\n\t MSPointerMove: 'pointer',\n\t pointerdown: 'pointer',\n\t pointermove: 'pointer',\n\t touchstart: 'touch',\n\t touchend: 'touch'\n\n\t // boolean: true if the page is being scrolled\n\t };var isScrolling = false;\n\n\t // store current mouse position\n\t var mousePos = {\n\t x: null,\n\t y: null\n\n\t // map of IE 10 pointer events\n\t };var pointerMap = {\n\t 2: 'touch',\n\t 3: 'touch', // treat pen like touch\n\t 4: 'mouse'\n\n\t // check support for passive event listeners\n\t };var supportsPassive = false;\n\n\t try {\n\t var opts = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supportsPassive = true;\n\t }\n\t });\n\n\t window.addEventListener('test', null, opts);\n\t } catch (e) {}\n\t // fail silently\n\n\n\t /*\n\t * set up\n\t */\n\n\t var setUp = function setUp() {\n\t // add correct mouse wheel event mapping to `inputMap`\n\t inputMap[detectWheel()] = 'mouse';\n\n\t addListeners();\n\t };\n\n\t /*\n\t * events\n\t */\n\n\t var addListeners = function addListeners() {\n\t // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\n\t // can only demonstrate potential, but not actual, interaction\n\t // and are treated separately\n\t var options = supportsPassive ? { passive: true } : false;\n\n\t document.addEventListener('DOMContentLoaded', setPersist);\n\n\t // pointer events (mouse, pen, touch)\n\t if (window.PointerEvent) {\n\t window.addEventListener('pointerdown', setInput);\n\t window.addEventListener('pointermove', setIntent);\n\t } else if (window.MSPointerEvent) {\n\t window.addEventListener('MSPointerDown', setInput);\n\t window.addEventListener('MSPointerMove', setIntent);\n\t } else {\n\t // mouse events\n\t window.addEventListener('mousedown', setInput);\n\t window.addEventListener('mousemove', setIntent);\n\n\t // touch events\n\t if ('ontouchstart' in window) {\n\t window.addEventListener('touchstart', setInput, options);\n\t window.addEventListener('touchend', setInput);\n\t }\n\t }\n\n\t // mouse wheel\n\t window.addEventListener(detectWheel(), setIntent, options);\n\n\t // keyboard events\n\t window.addEventListener('keydown', setInput);\n\t window.addEventListener('keyup', setInput);\n\n\t // focus events\n\t window.addEventListener('focusin', setElement);\n\t window.addEventListener('focusout', clearElement);\n\t };\n\n\t // checks if input persistence should happen and\n\t // get saved state from session storage if true (defaults to `false`)\n\t var setPersist = function setPersist() {\n\t shouldPersist = !(docElem.getAttribute('data-whatpersist') || document.body.getAttribute('data-whatpersist') === 'false');\n\n\t if (shouldPersist) {\n\t // check for session variables and use if available\n\t try {\n\t if (window.sessionStorage.getItem('what-input')) {\n\t currentInput = window.sessionStorage.getItem('what-input');\n\t }\n\n\t if (window.sessionStorage.getItem('what-intent')) {\n\t currentIntent = window.sessionStorage.getItem('what-intent');\n\t }\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\n\t // always run these so at least `initial` state is set\n\t doUpdate('input');\n\t doUpdate('intent');\n\t };\n\n\t // checks conditions before updating new input\n\t var setInput = function setInput(event) {\n\t var eventKey = event.which;\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t var ignoreMatch = !specificMap.length && ignoreMap.indexOf(eventKey) === -1;\n\n\t var specificMatch = specificMap.length && specificMap.indexOf(eventKey) !== -1;\n\n\t var shouldUpdate = value === 'keyboard' && eventKey && (ignoreMatch || specificMatch) || value === 'mouse' || value === 'touch';\n\n\t // prevent touch detection from being overridden by event execution order\n\t if (validateTouch(value)) {\n\t shouldUpdate = false;\n\t }\n\n\t if (shouldUpdate && currentInput !== value) {\n\t currentInput = value;\n\n\t persistInput('input', currentInput);\n\t doUpdate('input');\n\t }\n\n\t if (shouldUpdate && currentIntent !== value) {\n\t // preserve intent for keyboard interaction with form fields\n\t var activeElem = document.activeElement;\n\t var notFormInput = activeElem && activeElem.nodeName && (formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1 || activeElem.nodeName.toLowerCase() === 'button' && !checkClosest(activeElem, 'form'));\n\n\t if (notFormInput) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t }\n\t };\n\n\t // updates the doc and `inputTypes` array with new input\n\t var doUpdate = function doUpdate(which) {\n\t docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent);\n\n\t fireFunctions(which);\n\t };\n\n\t // updates input intent for `mousemove` and `pointermove`\n\t var setIntent = function setIntent(event) {\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove\n\t detectScrolling(event);\n\n\t // only execute if scrolling isn't happening\n\t if ((!isScrolling && !validateTouch(value) || isScrolling && event.type === 'wheel' || event.type === 'mousewheel' || event.type === 'DOMMouseScroll') && currentIntent !== value) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t };\n\n\t var setElement = function setElement(event) {\n\t if (!event.target.nodeName) {\n\t // If nodeName is undefined, clear the element\n\t // This can happen if click inside an element.\n\t clearElement();\n\t return;\n\t }\n\n\t currentElement = event.target.nodeName.toLowerCase();\n\t docElem.setAttribute('data-whatelement', currentElement);\n\n\t if (event.target.classList && event.target.classList.length) {\n\t docElem.setAttribute('data-whatclasses', event.target.classList.toString().replace(' ', ','));\n\t }\n\t };\n\n\t var clearElement = function clearElement() {\n\t currentElement = null;\n\n\t docElem.removeAttribute('data-whatelement');\n\t docElem.removeAttribute('data-whatclasses');\n\t };\n\n\t var persistInput = function persistInput(which, value) {\n\t if (shouldPersist) {\n\t try {\n\t window.sessionStorage.setItem('what-' + which, value);\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\t };\n\n\t /*\n\t * utilities\n\t */\n\n\t var pointerType = function pointerType(event) {\n\t if (typeof event.pointerType === 'number') {\n\t return pointerMap[event.pointerType];\n\t } else {\n\t // treat pen like touch\n\t return event.pointerType === 'pen' ? 'touch' : event.pointerType;\n\t }\n\t };\n\n\t // prevent touch detection from being overridden by event execution order\n\t var validateTouch = function validateTouch(value) {\n\t var timestamp = Date.now();\n\n\t var touchIsValid = value === 'mouse' && currentInput === 'touch' && timestamp - currentTimestamp < 200;\n\n\t currentTimestamp = timestamp;\n\n\t return touchIsValid;\n\t };\n\n\t // detect version of mouse wheel event to use\n\t // via https://developer.mozilla.org/en-US/docs/Web/API/Element/wheel_event\n\t var detectWheel = function detectWheel() {\n\t var wheelType = null;\n\n\t // Modern browsers support \"wheel\"\n\t if ('onwheel' in document.createElement('div')) {\n\t wheelType = 'wheel';\n\t } else {\n\t // Webkit and IE support at least \"mousewheel\"\n\t // or assume that remaining browsers are older Firefox\n\t wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';\n\t }\n\n\t return wheelType;\n\t };\n\n\t // runs callback functions\n\t var fireFunctions = function fireFunctions(type) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].type === type) {\n\t functionList[i].fn.call(undefined, type === 'input' ? currentInput : currentIntent);\n\t }\n\t }\n\t };\n\n\t // finds matching element in an object\n\t var objPos = function objPos(match) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].fn === match) {\n\t return i;\n\t }\n\t }\n\t };\n\n\t var detectScrolling = function detectScrolling(event) {\n\t if (mousePos.x !== event.screenX || mousePos.y !== event.screenY) {\n\t isScrolling = false;\n\n\t mousePos.x = event.screenX;\n\t mousePos.y = event.screenY;\n\t } else {\n\t isScrolling = true;\n\t }\n\t };\n\n\t // manual version of `closest()`\n\t var checkClosest = function checkClosest(elem, tag) {\n\t var ElementPrototype = window.Element.prototype;\n\n\t if (!ElementPrototype.matches) {\n\t ElementPrototype.matches = ElementPrototype.msMatchesSelector || ElementPrototype.webkitMatchesSelector;\n\t }\n\n\t if (!ElementPrototype.closest) {\n\t do {\n\t if (elem.matches(tag)) {\n\t return elem;\n\t }\n\n\t elem = elem.parentElement || elem.parentNode;\n\t } while (elem !== null && elem.nodeType === 1);\n\n\t return null;\n\t } else {\n\t return elem.closest(tag);\n\t }\n\t };\n\n\t /*\n\t * init\n\t */\n\n\t // don't start script unless browser cuts the mustard\n\t // (also passes if polyfills are used)\n\t if ('addEventListener' in window && Array.prototype.indexOf) {\n\t setUp();\n\t }\n\n\t /*\n\t * api\n\t */\n\n\t return {\n\t // returns string: the current input type\n\t // opt: 'intent'|'input'\n\t // 'input' (default): returns the same value as the `data-whatinput` attribute\n\t // 'intent': includes `data-whatintent` value if it's different than `data-whatinput`\n\t ask: function ask(opt) {\n\t return opt === 'intent' ? currentIntent : currentInput;\n\t },\n\n\t // returns string: the currently focused element or null\n\t element: function element() {\n\t return currentElement;\n\t },\n\n\t // overwrites ignored keys with provided array\n\t ignoreKeys: function ignoreKeys(arr) {\n\t ignoreMap = arr;\n\t },\n\n\t // overwrites specific char keys to update on\n\t specificKeys: function specificKeys(arr) {\n\t specificMap = arr;\n\t },\n\n\t // attach functions to input and intent \"events\"\n\t // funct: function to fire on change\n\t // eventType: 'input'|'intent'\n\t registerOnChange: function registerOnChange(fn, eventType) {\n\t functionList.push({\n\t fn: fn,\n\t type: eventType || 'input'\n\t });\n\t },\n\n\t unRegisterOnChange: function unRegisterOnChange(fn) {\n\t var position = objPos(fn);\n\n\t if (position || position === 0) {\n\t functionList.splice(position, 1);\n\t }\n\t },\n\n\t clearStorage: function clearStorage() {\n\t window.sessionStorage.clear();\n\t }\n\t };\n\t}();\n\n/***/ })\n/******/ ])\n});\n;\n\n//# sourceURL=webpack:///./node_modules/what-input/dist/what-input.js?"); /***/ }), /***/ 1: /*!***********************************!*\ !*** multi ./js/src/front-end.js ***! \***********************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! /Users/niq/Projects/airdev/content/themes/air-light/js/src/front-end.js */\"./js/src/front-end.js\");\n\n\n//# sourceURL=webpack:///multi_./js/src/front-end.js?"); /***/ }) /******/ });