{"version":3,"file":"js/main.min.js","mappings":"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","sources":["webpack://pioneer-web/./src/js/custom-form-elements.jquery.js","webpack://pioneer-web/./src/js/has-touchevents.js","webpack://pioneer-web/./src/js/header-front.jquery.js","webpack://pioneer-web/./src/js/main-menu.jquery.js","webpack://pioneer-web/./src/js/objectfit.jquery.js","webpack://pioneer-web/./src/js/offcanvas-search.jquery.js","webpack://pioneer-web/./src/js/searchbar.js","webpack://pioneer-web/./src/js/smooth-anchor-scroll.jquery.js","webpack://pioneer-web/./src/js/testimonials-pager.jquery.js","webpack://pioneer-web/./src/js/virtual-assistant.jquery.js","webpack://pioneer-web/./src/libs/append-polyfill.js","webpack://pioneer-web/./src/libs/jquery.ba-throttle-debounce.js","webpack://pioneer-web/./src/libs/object-fit-videos.js","webpack://pioneer-web/./src/libs/ofi.js","webpack://pioneer-web/webpack/bootstrap","webpack://pioneer-web/./src/js/main.js"],"sourcesContent":["/**\n * Wraps up Radio and Checkbox input elements and\n * adds an additional element so we can custom style\n * the checkbox and radio buttons\n *\n * Adds a class to the select inputs based options that have\n * no value to be able to style the starting select option to\n * act more like a placeholder\n *\n * @author Todd Miller \n * @author Matthew Wilson \n */\n\n(function ($) {\n 'use strict';\n\n let $selectors;\n\n Drupal.behaviors.wrapRadiosCheckboxesAndSelectPlaceholder = {\n attach: (context) => {\n // prevents duplicate wrapper elements\n if ($(context).is('form')) return;\n\n $('input[type=\"checkbox\"]', context)\n .wrap('
')\n .after('
');\n\n $('input[type=\"radio\"]', context)\n .wrap('
')\n .after('
');\n\n // add class to select based on empty option value\n $selectors = $('select');\n $selectors.addClass('empty');\n $selectors.change(handleSelectChange);\n },\n };\n\n function handleSelectChange(e) {\n const $el = $(e.target);\n\n if ($el.val() === '') $el.addClass('empty');\n else $el.removeClass('empty');\n }\n})(jQuery);\n","/**\n * Detects whether or not the user's device has touch capabilities and\n * adds a class to the main html element for easy usage by the CSS.\n * @author Todd Miller \n */\n\n(function () {\n 'use strict';\n\n if (\n 'ontouchstart' in window ||\n navigator.maxTouchPoints > 0 ||\n navigator.msMaxTouchPoints > 0\n ) {\n document.querySelector('html').classList.add('touchevents');\n } else {\n document.querySelector('html').classList.add('no-touchevents');\n }\n})();\n","/**\n * Manages the visibility of the \"internal\" header bar\n * for both scroll position and hover state on the front\n * page header bar\n * @author Todd Miller \n */\n\n(function ($) {\n 'use strict';\n\n let $header;\n let $frontNav;\n let $page;\n\n $(document).ready(init);\n\n /**\n * Activate the internal pages' header\n */\n function activateHeader() {\n $header.addClass('is-active');\n }\n\n /**\n * Deactivate the internal pages' header\n */\n function deactivateHeader() {\n $header.removeClass('is-active');\n }\n\n /**\n * Cache elements, set up event listeners\n * But only if it's the front page\n */\n function init() {\n if ($('.front').length > 0) {\n // target the internal header for style adjustments\n $header = $('header .internal-container');\n $frontNav = $('header .front-container nav');\n // target the HTML for getting the proper scroll position\n $page = $('html');\n\n updateBackground();\n // throttle the event for better performance\n $(window).scroll($.throttle(250, updateBackground));\n\n // when user hovers over the front page nav, enable the\n // internal nav\n $frontNav.on('mouseover', activateHeader);\n $frontNav.on('mouseout', deactivateHeader);\n }\n }\n\n /**\n * Determine the users position on the page and adjust the header classes\n */\n function updateBackground() {\n if ($page.scrollTop() > 75) $header.addClass('is-active');\n else $header.removeClass('is-active');\n }\n})(jQuery);\n","/**\n * Dynamically sets up the sub menu structure for the header drop downs.\n * We do this because we need a wrapper in between the absolutely\n * positioned sub menu, and the actual items, due to a flex bug.\n *\n * The added wrapper element becomes the flex container, while the parent sub\n * menu element becomes the absolutely positioned aspect.\n *\n * Note that we have also added an `append` polyfill to make IE11 happy.\n *\n * @author Todd Miller \n */\n\n(function ($) {\n 'use strict';\n\n $(document).ready(initialize);\n\n function initialize() {\n const $menuLinks = $(\n '.internal-container .menu--main .menu-item--expanded ul'\n );\n\n for (let i = 0; i < $menuLinks.length; i++) {\n const $el = $('
');\n const $items = $('li', $menuLinks[i]);\n\n $el.addClass('sub-menu-wrapper');\n $el.append($items);\n\n $menuLinks[i].append($el[0]);\n }\n }\n})(jQuery);\n","/**\n * Making object fit for images IE 11-friendly\n * @author Abigail Kesler \n */\n\n(function ($) {\n 'use strict';\n\n $(document).ready(initialize);\n\n function initialize() {\n objectFitImages();\n objectFitVideos();\n }\n})(jQuery);\n","/**\n * Add the search bar to the offcanvas responsive menu\n *\n * @author Devon Taylor , revised by Abigail Kesler \n */\n\n(function ($) {\n $(document).ready(function () {\n let $offcanvas = $('#off-canvas');\n let $linksContainer = $offcanvas.find('#mm-1 .mm-listview');\n\n $linksContainer.prepend(`\n \n `);\n });\n})(jQuery);\n","/**\n * Toggles the search bar when icon is clicked\n * @author Jess McClary \n * @author Todd Miller \n */\n\n(function ($) {\n 'use strict';\n\n let $searchIcon;\n let $searchBar;\n let $searchInput;\n\n $(document).ready(initialize);\n\n /**\n * Caches elements and preps event listeners\n */\n function initialize() {\n $searchIcon = $('.search-icon');\n $searchBar = $('.search-bar');\n $searchInput = $('.form-search');\n\n $searchIcon.on('click', handleClick);\n }\n\n /**\n * Toggles the search bar visibility on click,\n * gives the form focus if the form is being opened\n */\n function handleClick() {\n $searchIcon.toggleClass('active');\n $searchBar.toggleClass('active');\n if ($searchBar.hasClass('active')) $searchInput.focus();\n }\n})(jQuery);\n","/**\n * Smoothly scrolls the page for jump links defined within an element\n * with class 'anchors'\n *\n * @author Todd Miller \n */\n\n(function ($) {\n 'use strict';\n\n let $anchors;\n\n $('document').ready(initialize);\n\n function handleClick(e) {\n const id = $(e.currentTarget).attr('href').replace('#', '');\n smoothScroll(id);\n }\n\n function initialize() {\n $anchors = $('.anchors > a');\n $anchors.on('click', handleClick);\n }\n\n function smoothScroll(id) {\n const $el = $(`a[name=${id}`);\n\n $('html').animate(\n {\n scrollTop: $el.offset().top,\n },\n 'slow'\n );\n }\n})(jQuery);\n","/**\n * Handles the paging functionality in the testimonials block\n * as well as attaches classes to achieve the animations via css\n *\n * @author Todd Miller \n */\n\n(function ($) {\n 'use strict';\n\n let activeId; // integer id of the currently active panel\n let numTestimonials; // total number of testimonial panels\n\n let $block; // the main testimonial block element\n let $leftPager; // left arrow pager element\n let $rightPager; // right arrow pager element\n let $testimonials; // array of testimonial elements\n\n // ms speed at which the class juggling should occur\n // most likely you want this set to the same value as the css transitions\n const speed = 200;\n\n // initialize when this is the initial page load\n Drupal.behaviors.initializeTestimonialPagers = {\n attach: (context) => {\n if (context === document) initialize();\n },\n };\n\n function handleLeftPagerClick() {\n const oldActiveId = activeId;\n activeId = getNewActiveId(activeId, 'left');\n\n // animates out the previously active panel and animates in the newly\n // active panel. animations accomplished via css so this action here\n // is pretty much just juggling classes\n $($testimonials[oldActiveId])\n .addClass('animate-out-left')\n .removeClass('is-active');\n setTimeout(() => {\n $($testimonials[oldActiveId]).removeClass('animate-out-left');\n }, speed);\n\n $($testimonials[activeId]).addClass('is-active animate-in-left');\n setTimeout(() => {\n $($testimonials[activeId]).removeClass('animate-in-left');\n }, speed);\n }\n\n function handleRightPagerClick() {\n const oldActiveId = activeId;\n activeId = getNewActiveId(activeId, 'right');\n\n // animates out the previously active panel and animates in the newly\n // active panel. animations accomplished via css so this action here\n // is pretty much just juggling classes\n $($testimonials[oldActiveId])\n .addClass('animate-out-right')\n .removeClass('is-active');\n setTimeout(() => {\n $($testimonials[oldActiveId]).removeClass('animate-out-right');\n }, speed);\n\n $($testimonials[activeId]).addClass('is-active animate-in-right');\n setTimeout(() => {\n $($testimonials[activeId]).removeClass('animate-in-right');\n }, speed);\n }\n\n function initialize() {\n $block = $('#block-views-block-testimonials-testimonials-block');\n\n // just get out if the block is not on the page\n if (!$block.length) return;\n\n activeId = 0;\n\n $testimonials = $('.testimonial', $block);\n numTestimonials = $testimonials.length;\n\n $leftPager = $('#testimonial-pager-left');\n $rightPager = $('#testimonial-pager-right');\n $leftPager.on('click', handleLeftPagerClick);\n $rightPager.on('click', handleRightPagerClick);\n\n // activate the first item\n $($testimonials[activeId]).addClass('is-active');\n }\n\n // creates a infinitely rotating list of testimonial panels\n // by looping around when we reach the end or beginning of\n // the array\n function getNewActiveId(current, direction) {\n let newId = current;\n\n if (direction === 'left') {\n newId--;\n if (newId < 0) newId = numTestimonials - 1;\n } else if (direction === 'right') {\n newId++;\n if (newId >= numTestimonials) newId = 0;\n }\n\n return newId;\n }\n})(jQuery);\n","/**\n *\n * @author Todd Miller \n */\n\n(function ($) {\n 'use strict';\n\n let $bubble;\n let $va;\n\n // initialize when this is the initial page load\n Drupal.behaviors.initializeVirtualAssistant = {\n attach: (context) => {\n if (context === document) initialize();\n },\n };\n\n /**\n * Caches elements and preps event listeners\n */\n function initialize() {\n $va = $('#virtual-assistant');\n\n if (!$va.length) return false;\n\n $bubble = $('.bubble', $va);\n $bubble.on('click', handleClick);\n }\n\n /**\n * Toggles the search bar visibility on click,\n * gives the form focus if the form is being opened\n */\n function handleClick() {\n $va.toggleClass('is-active');\n }\n})(jQuery);\n","// Source: https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/append()/append().md\n(function (arr) {\n arr.forEach(function (item) {\n if (item.hasOwnProperty('append')) {\n return;\n }\n Object.defineProperty(item, 'append', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function append() {\n var argArr = Array.prototype.slice.call(arguments),\n docFrag = document.createDocumentFragment();\n\n argArr.forEach(function (argItem) {\n var isNode = argItem instanceof Node;\n docFrag.appendChild(\n isNode ? argItem : document.createTextNode(String(argItem))\n );\n });\n\n this.appendChild(docFrag);\n },\n });\n });\n})([Element.prototype, Document.prototype, DocumentFragment.prototype]);\n","/* jshint ignore:start */\n\n/*!\n * jQuery throttle / debounce - v1.1 - 3/7/2010\n * http://benalman.com/projects/jquery-throttle-debounce-plugin/\n *\n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n\n// Script: jQuery throttle / debounce: Sometimes, less is more!\n//\n// *Version: 1.1, Last updated: 3/7/2010*\n//\n// Project Home - http://benalman.com/projects/jquery-throttle-debounce-plugin/\n// GitHub - http://github.com/cowboy/jquery-throttle-debounce/\n// Source - http://github.com/cowboy/jquery-throttle-debounce/raw/master/jquery.ba-throttle-debounce.js\n// (Minified) - http://github.com/cowboy/jquery-throttle-debounce/raw/master/jquery.ba-throttle-debounce.min.js (0.7kb)\n//\n// About: License\n//\n// Copyright (c) 2010 \"Cowboy\" Ben Alman,\n// Dual licensed under the MIT and GPL licenses.\n// http://benalman.com/about/license/\n//\n// About: Examples\n//\n// These working examples, complete with fully commented code, illustrate a few\n// ways in which this plugin can be used.\n//\n// Throttle - http://benalman.com/code/projects/jquery-throttle-debounce/examples/throttle/\n// Debounce - http://benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/\n//\n// About: Support and Testing\n//\n// Information about what version or versions of jQuery this plugin has been\n// tested with, what browsers it has been tested in, and where the unit tests\n// reside (so you can test it yourself).\n//\n// jQuery Versions - none, 1.3.2, 1.4.2\n// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.6, Safari 3-4, Chrome 4-5, Opera 9.6-10.1.\n// Unit Tests - http://benalman.com/code/projects/jquery-throttle-debounce/unit/\n//\n// About: Release History\n//\n// 1.1 - (3/7/2010) Fixed a bug in where trailing callbacks\n// executed later than they should. Reworked a fair amount of internal\n// logic as well.\n// 1.0 - (3/6/2010) Initial release as a stand-alone project. Migrated over\n// from jquery-misc repo v0.4 to jquery-throttle repo v1.0, added the\n// no_trailing throttle parameter and debounce functionality.\n//\n// Topic: Note for non-jQuery users\n//\n// jQuery isn't actually required for this plugin, because nothing internal\n// uses any jQuery methods or properties. jQuery is just used as a namespace\n// under which these methods can exist.\n//\n// Since jQuery isn't actually required for this plugin, if jQuery doesn't exist\n// when this plugin is loaded, the method described below will be created in\n// the `Cowboy` namespace. Usage will be exactly the same, but instead of\n// $.method() or jQuery.method(), you'll need to use Cowboy.method().\n\n(function ($) {\n '$:nomunge'; // Used by YUI compressor.\n\n // Since jQuery really isn't required for this plugin, use `jQuery` as the\n // namespace only if it already exists, otherwise use the `Cowboy` namespace,\n // creating it if necessary.\n // var $ = window.jQuery || window.Cowboy || ( window.Cowboy = {} ),\n\n // Internal method reference.\n var jq_throttle;\n\n // Method: jQuery.throttle\n //\n // Throttle execution of a function. Especially useful for rate limiting\n // execution of handlers on events like resize and scroll. If you want to\n // rate-limit execution of a function to a single time, see the\n // method.\n //\n // In this visualization, | is a throttled-function call and X is the actual\n // callback execution:\n //\n // > Throttled with `no_trailing` specified as false or unspecified:\n // > ||||||||||||||||||||||||| (pause) |||||||||||||||||||||||||\n // > X X X X X X X X X X X X\n // >\n // > Throttled with `no_trailing` specified as true:\n // > ||||||||||||||||||||||||| (pause) |||||||||||||||||||||||||\n // > X X X X X X X X X X\n //\n // Usage:\n //\n // > var throttled = jQuery.throttle( delay, [ no_trailing, ] callback );\n // >\n // > jQuery('selector').bind( 'someevent', throttled );\n // > jQuery('selector').unbind( 'someevent', throttled );\n //\n // This also works in jQuery 1.4+:\n //\n // > jQuery('selector').bind( 'someevent', jQuery.throttle( delay, [ no_trailing, ] callback ) );\n // > jQuery('selector').unbind( 'someevent', callback );\n //\n // Arguments:\n //\n // delay - (Number) A zero-or-greater delay in milliseconds. For event\n // callbacks, values around 100 or 250 (or even higher) are most useful.\n // no_trailing - (Boolean) Optional, defaults to false. If no_trailing is\n // true, callback will only execute every `delay` milliseconds while the\n // throttled-function is being called. If no_trailing is false or\n // unspecified, callback will be executed one final time after the last\n // throttled-function call. (After the throttled-function has not been\n // called for `delay` milliseconds, the internal counter is reset)\n // callback - (Function) A function to be executed after delay milliseconds.\n // The `this` context and all arguments are passed through, as-is, to\n // `callback` when the throttled-function is executed.\n //\n // Returns:\n //\n // (Function) A new, throttled, function.\n\n $.throttle = jq_throttle = function (\n delay,\n no_trailing,\n callback,\n debounce_mode\n ) {\n // After wrapper has stopped being called, this timeout ensures that\n // `callback` is executed at the proper times in `throttle` and `end`\n // debounce modes.\n var timeout_id,\n // Keep track of the last time `callback` was executed.\n last_exec = 0;\n\n // `no_trailing` defaults to falsy.\n if (typeof no_trailing !== 'boolean') {\n debounce_mode = callback;\n callback = no_trailing;\n no_trailing = undefined;\n }\n\n // The `wrapper` function encapsulates all of the throttling / debouncing\n // functionality and when executed will limit the rate at which `callback`\n // is executed.\n function wrapper() {\n var that = this,\n elapsed = +new Date() - last_exec,\n args = arguments;\n\n // Execute `callback` and update the `last_exec` timestamp.\n function exec() {\n last_exec = +new Date();\n callback.apply(that, args);\n }\n\n // If `debounce_mode` is true (at_begin) this is used to clear the flag\n // to allow future `callback` executions.\n function clear() {\n timeout_id = undefined;\n }\n\n if (debounce_mode && !timeout_id) {\n // Since `wrapper` is being called for the first time and\n // `debounce_mode` is true (at_begin), execute `callback`.\n exec();\n }\n\n // Clear any existing timeout.\n timeout_id && clearTimeout(timeout_id);\n\n if (debounce_mode === undefined && elapsed > delay) {\n // In throttle mode, if `delay` time has been exceeded, execute\n // `callback`.\n exec();\n } else if (no_trailing !== true) {\n // In trailing throttle mode, since `delay` time has not been\n // exceeded, schedule `callback` to execute `delay` ms after most\n // recent execution.\n //\n // If `debounce_mode` is true (at_begin), schedule `clear` to execute\n // after `delay` ms.\n //\n // If `debounce_mode` is false (at end), schedule `callback` to\n // execute after `delay` ms.\n timeout_id = setTimeout(\n debounce_mode ? clear : exec,\n debounce_mode === undefined ? delay - elapsed : delay\n );\n }\n }\n\n // Set the guid of `wrapper` function to the same of original callback, so\n // it can be removed in jQuery 1.4+ .unbind or .die by using the original\n // callback as a reference.\n if ($.guid) {\n wrapper.guid = callback.guid = callback.guid || $.guid++;\n }\n\n // Return the wrapper function.\n return wrapper;\n };\n\n // Method: jQuery.debounce\n //\n // Debounce execution of a function. Debouncing, unlike throttling,\n // guarantees that a function is only executed a single time, either at the\n // very beginning of a series of calls, or at the very end. If you want to\n // simply rate-limit execution of a function, see the \n // method.\n //\n // In this visualization, | is a debounced-function call and X is the actual\n // callback execution:\n //\n // > Debounced with `at_begin` specified as false or unspecified:\n // > ||||||||||||||||||||||||| (pause) |||||||||||||||||||||||||\n // > X X\n // >\n // > Debounced with `at_begin` specified as true:\n // > ||||||||||||||||||||||||| (pause) |||||||||||||||||||||||||\n // > X X\n //\n // Usage:\n //\n // > var debounced = jQuery.debounce( delay, [ at_begin, ] callback );\n // >\n // > jQuery('selector').bind( 'someevent', debounced );\n // > jQuery('selector').unbind( 'someevent', debounced );\n //\n // This also works in jQuery 1.4+:\n //\n // > jQuery('selector').bind( 'someevent', jQuery.debounce( delay, [ at_begin, ] callback ) );\n // > jQuery('selector').unbind( 'someevent', callback );\n //\n // Arguments:\n //\n // delay - (Number) A zero-or-greater delay in milliseconds. For event\n // callbacks, values around 100 or 250 (or even higher) are most useful.\n // at_begin - (Boolean) Optional, defaults to false. If at_begin is false or\n // unspecified, callback will only be executed `delay` milliseconds after\n // the last debounced-function call. If at_begin is true, callback will be\n // executed only at the first debounced-function call. (After the\n // throttled-function has not been called for `delay` milliseconds, the\n // internal counter is reset)\n // callback - (Function) A function to be executed after delay milliseconds.\n // The `this` context and all arguments are passed through, as-is, to\n // `callback` when the debounced-function is executed.\n //\n // Returns:\n //\n // (Function) A new, debounced, function.\n\n $.debounce = function (delay, at_begin, callback) {\n return callback === undefined\n ? jq_throttle(delay, at_begin, false)\n : jq_throttle(delay, callback, at_begin !== false);\n };\n})(jQuery);\n","/**\n * Object Fit Videos\n * Polyfill for object-fit and object-position CSS properties on video elements\n * Covers IE9, IE10, IE11, Edge, Safari <10\n *\n * Usage\n * In your CSS, add a special font-family tag for IE/Edge\n * video {\n * object-fit: cover;\n * font-family: 'object-fit: cover;';\n * }\n *\n * Before the closing body tag, or whenever the DOM is ready,\n * make the JavaScript call\n * objectFitVideos();\n *\n * All video elements with the special CSS property will be targeted\n *\n * @license MIT (https://opensource.org/licenses/MIT)\n * @author Todd Miller \n * @version 1.0.2\n * @changelog\n * 2016-08-19 - Adds object-position support.\n * 2016-08-19 - Add throttle function for more performant resize events\n * 2016-08-19 - Initial release with object-fit support, and\n * object-position default 'center'\n * 2016-10-14 - No longer relies on window load event, instead requires a specific\n * function call to initialize the videos for object fit and position.\n * 2016-11-28 - Support CommonJS environment, courtesy of @msorensson\n * 2016-12-05 - Refactors the throttling function to support IE\n * 2017-09-26 - Fix an issue with autplay not working on polyfilled videos\n * - Adds the capability to specify elements to polyfill,\n * instead of just checking every video element for the\n * CSS property. Slight performance gain in most usecases,\n * and a bigger gain in a few usecases.\n * 2017-10-24 - Add user agent check to enable polyfill for all Edge browsers.\n * object-fit is supported on Edge >= 16, but currently just for images.\n */\nvar objectFitVideos = function (videos) {\n 'use strict';\n\n var isEdge = navigator.userAgent.indexOf('Edge/') >= 0;\n\n var testImg = new Image(),\n supportsObjectFit = 'object-fit' in testImg.style && !isEdge,\n supportsObjectPosition = 'object-position' in testImg.style && !isEdge,\n propRegex = /(object-fit|object-position)\\s*:\\s*([-\\w\\s%]+)/g;\n\n if (!supportsObjectFit || !supportsObjectPosition) {\n initialize(videos);\n throttle('resize', 'optimizedResize');\n }\n\n /**\n * Parse the style and look for the special font-family tag\n * @param {object} $el The element to parse\n * @return {object} The font-family properties we're interested in\n */\n function getStyle($el) {\n var style = getComputedStyle($el).fontFamily,\n parsed = null,\n props = {};\n\n while ((parsed = propRegex.exec(style)) !== null) {\n props[parsed[1]] = parsed[2];\n }\n\n if (props['object-position']) return parsePosition(props);\n\n return props;\n }\n\n /**\n * Initialize all the relevant video elements and get them fitted\n */\n function initialize(videos) {\n var index = -1;\n\n if (!videos) {\n // if no videos given, query all video elements\n videos = document.querySelectorAll('video');\n } else if (!('length' in videos)) {\n // convert to an array for proper looping if an array or NodeList\n // was not given\n videos = [videos];\n }\n\n while (videos[++index]) {\n var style = getStyle(videos[index]);\n\n // only do work if the property is on the element\n if (style['object-fit'] || style['object-position']) {\n // set the default values\n style['object-fit'] = style['object-fit'] || 'fill';\n fitIt(videos[index], style);\n }\n }\n }\n\n /**\n * Object Fit\n * @param {object} $el Element to fit\n * @return {object} The element's relevant properties\n */\n function fitIt($el, style) {\n // fill is the default behavior, no action is necessary\n if (style['object-fit'] === 'fill') return;\n\n // convenience style properties on the source element\n var setCss = $el.style,\n getCss = window.getComputedStyle($el);\n\n // create and insert a wrapper element\n var $wrap = document.createElement('object-fit');\n $wrap.appendChild($el.parentNode.replaceChild($wrap, $el));\n\n // style the wrapper element to mostly match the source element\n var wrapCss = {\n height: '100%',\n width: '100%',\n boxSizing: 'content-box',\n display: 'inline-block',\n overflow: 'hidden',\n };\n\n 'backgroundColor backgroundImage borderColor borderStyle borderWidth bottom fontSize lineHeight left opacity margin position right top visibility'.replace(\n /\\w+/g,\n function (key) {\n wrapCss[key] = getCss[key];\n }\n );\n\n for (var key in wrapCss) $wrap.style[key] = wrapCss[key];\n\n // give the source element some saner styles\n setCss.border = setCss.margin = setCss.padding = 0;\n setCss.display = 'block';\n setCss.opacity = 1;\n\n // set up the event handlers\n $el.addEventListener('loadedmetadata', doWork);\n window.addEventListener('optimizedResize', doWork);\n\n // we may have missed the loadedmetadata event, so if the video has loaded\n // enough data, just drop the event listener and execute\n if ($el.readyState >= 1) {\n $el.removeEventListener('loadedmetadata', doWork);\n doWork();\n }\n\n /**\n * Do the actual sizing. Math.\n * @methodOf fitIt\n */\n function doWork() {\n // the actual size and ratio of the video\n // we do this here, even though it doesn't change, because\n // at this point we can be sure the metadata has loaded\n var videoWidth = $el.videoWidth,\n videoHeight = $el.videoHeight,\n videoRatio = videoWidth / videoHeight;\n\n var wrapWidth = $wrap.clientWidth,\n wrapHeight = $wrap.clientHeight,\n wrapRatio = wrapWidth / wrapHeight;\n\n var newHeight = 0,\n newWidth = 0;\n setCss.marginLeft = setCss.marginTop = 0;\n\n // basically we do the opposite action for contain and cover,\n // depending on whether the video aspect ratio is less than or\n // greater than the wrapper's aspect ratio\n if (\n videoRatio < wrapRatio\n ? style['object-fit'] === 'contain'\n : style['object-fit'] === 'cover'\n ) {\n newHeight = wrapHeight * videoRatio;\n newWidth = wrapWidth / videoRatio;\n\n setCss.width = Math.round(newHeight) + 'px';\n setCss.height = wrapHeight + 'px';\n\n if (style['object-position-x'] === 'left') setCss.marginLeft = 0;\n else if (style['object-position-x'] === 'right')\n setCss.marginLeft = Math.round(wrapWidth - newHeight) + 'px';\n else setCss.marginLeft = Math.round((wrapWidth - newHeight) / 2) + 'px';\n } else {\n newWidth = wrapWidth / videoRatio;\n\n setCss.width = wrapWidth + 'px';\n setCss.height = Math.round(newWidth) + 'px';\n\n if (style['object-position-y'] === 'top') setCss.marginTop = 0;\n else if (style['object-position-y'] === 'bottom')\n setCss.marginTop = Math.round(wrapHeight - newWidth) + 'px';\n else setCss.marginTop = Math.round((wrapHeight - newWidth) / 2) + 'px';\n }\n\n // play the video if autoplay is set\n if ($el.autoplay) $el.play();\n }\n }\n\n /**\n * Split the object-position property into x and y position properties\n * @param {object} style Relevant element styles\n * @return {object} The style object with the added x and y props\n */\n function parsePosition(style) {\n if (~style['object-position'].indexOf('left'))\n style['object-position-x'] = 'left';\n else if (~style['object-position'].indexOf('right'))\n style['object-position-x'] = 'right';\n else style['object-position-x'] = 'center';\n\n if (~style['object-position'].indexOf('top'))\n style['object-position-y'] = 'top';\n else if (~style['object-position'].indexOf('bottom'))\n style['object-position-y'] = 'bottom';\n else style['object-position-y'] = 'center';\n\n return style;\n }\n\n /**\n * Throttle an event with RequestAnimationFrame API for better performance\n * @param {string} type The event to throttle\n * @param {string} name Custom event name to listen for\n * @param {object} obj Optional object to attach the event to\n */\n function throttle(type, name, obj) {\n obj = obj || window;\n var running = false,\n evt = null;\n\n // IE does not support the CustomEvent constructor\n // so if that fails do it the old way\n try {\n evt = new CustomEvent(name);\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n var func = function () {\n if (running) return;\n\n running = true;\n requestAnimationFrame(function () {\n obj.dispatchEvent(evt);\n running = false;\n });\n };\n\n obj.addEventListener(type, func);\n }\n};\n\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined')\n module.exports = objectFitVideos;\n","/*! npm.im/object-fit-images 3.2.3 */\nvar objectFitImages = (function () {\n 'use strict';\n\n var OFI = 'bfred-it:object-fit-images';\n var propRegex = /(object-fit|object-position)\\s*:\\s*([-\\w\\s%]+)/g;\n var testImg =\n typeof Image === 'undefined'\n ? { style: { 'object-position': 1 } }\n : new Image();\n var supportsObjectFit = 'object-fit' in testImg.style;\n var supportsObjectPosition = 'object-position' in testImg.style;\n var supportsOFI = 'background-size' in testImg.style;\n var supportsCurrentSrc = typeof testImg.currentSrc === 'string';\n var nativeGetAttribute = testImg.getAttribute;\n var nativeSetAttribute = testImg.setAttribute;\n var autoModeEnabled = false;\n\n function createPlaceholder(w, h) {\n return (\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" +\n w +\n \"' height='\" +\n h +\n \"'%3E%3C/svg%3E\"\n );\n }\n\n function polyfillCurrentSrc(el) {\n if (el.srcset && !supportsCurrentSrc && window.picturefill) {\n var pf = window.picturefill._;\n // parse srcset with picturefill where currentSrc isn't available\n if (!el[pf.ns] || !el[pf.ns].evaled) {\n // force synchronous srcset parsing\n pf.fillImg(el, { reselect: true });\n }\n\n if (!el[pf.ns].curSrc) {\n // force picturefill to parse srcset\n el[pf.ns].supported = false;\n pf.fillImg(el, { reselect: true });\n }\n\n // retrieve parsed currentSrc, if any\n el.currentSrc = el[pf.ns].curSrc || el.src;\n }\n }\n\n function getStyle(el) {\n var style = getComputedStyle(el).fontFamily;\n var parsed;\n var props = {};\n while ((parsed = propRegex.exec(style)) !== null) {\n props[parsed[1]] = parsed[2];\n }\n return props;\n }\n\n function setPlaceholder(img, width, height) {\n // Default: fill width, no height\n var placeholder = createPlaceholder(width || 1, height || 0);\n\n // Only set placeholder if it's different\n if (nativeGetAttribute.call(img, 'src') !== placeholder) {\n nativeSetAttribute.call(img, 'src', placeholder);\n }\n }\n\n function onImageReady(img, callback) {\n // naturalWidth is only available when the image headers are loaded,\n // this loop will poll it every 100ms.\n if (img.naturalWidth) {\n callback(img);\n } else {\n setTimeout(onImageReady, 100, img, callback);\n }\n }\n\n function fixOne(el) {\n var style = getStyle(el);\n var ofi = el[OFI];\n style['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n // Avoid running where unnecessary, unless OFI had already done its deed\n if (!ofi.img) {\n // fill is the default behavior so no action is necessary\n if (style['object-fit'] === 'fill') {\n return;\n }\n\n // Where object-fit is supported and object-position isn't (Safari < 10)\n if (\n !ofi.skipTest && // unless user wants to apply regardless of browser support\n supportsObjectFit && // if browser already supports object-fit\n !style['object-position'] // unless object-position is used\n ) {\n return;\n }\n }\n\n // keep a clone in memory while resetting the original to a blank\n if (!ofi.img) {\n ofi.img = new Image(el.width, el.height);\n ofi.img.srcset =\n nativeGetAttribute.call(el, 'data-ofi-srcset') || el.srcset;\n ofi.img.src = nativeGetAttribute.call(el, 'data-ofi-src') || el.src;\n\n // preserve for any future cloneNode calls\n // https://github.com/bfred-it/object-fit-images/issues/53\n nativeSetAttribute.call(el, 'data-ofi-src', el.src);\n if (el.srcset) {\n nativeSetAttribute.call(el, 'data-ofi-srcset', el.srcset);\n }\n\n setPlaceholder(\n el,\n el.naturalWidth || el.width,\n el.naturalHeight || el.height\n );\n\n // remove srcset because it overrides src\n if (el.srcset) {\n el.srcset = '';\n }\n try {\n keepSrcUsable(el);\n } catch (err) {\n if (window.console) {\n console.warn('https://bit.ly/ofi-old-browser');\n }\n }\n }\n\n polyfillCurrentSrc(ofi.img);\n\n el.style.backgroundImage =\n 'url(\"' + (ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"') + '\")';\n el.style.backgroundPosition = style['object-position'] || 'center';\n el.style.backgroundRepeat = 'no-repeat';\n el.style.backgroundOrigin = 'content-box';\n\n if (/scale-down/.test(style['object-fit'])) {\n onImageReady(ofi.img, function () {\n if (\n ofi.img.naturalWidth > el.width ||\n ofi.img.naturalHeight > el.height\n ) {\n el.style.backgroundSize = 'contain';\n } else {\n el.style.backgroundSize = 'auto';\n }\n });\n } else {\n el.style.backgroundSize = style['object-fit']\n .replace('none', 'auto')\n .replace('fill', '100% 100%');\n }\n\n onImageReady(ofi.img, function (img) {\n setPlaceholder(el, img.naturalWidth, img.naturalHeight);\n });\n }\n\n function keepSrcUsable(el) {\n var descriptors = {\n get: function get(prop) {\n return el[OFI].img[prop ? prop : 'src'];\n },\n set: function set(value, prop) {\n el[OFI].img[prop ? prop : 'src'] = value;\n nativeSetAttribute.call(el, 'data-ofi-' + prop, value); // preserve for any future cloneNode\n fixOne(el);\n return value;\n },\n };\n Object.defineProperty(el, 'src', descriptors);\n Object.defineProperty(el, 'currentSrc', {\n get: function () {\n return descriptors.get('currentSrc');\n },\n });\n Object.defineProperty(el, 'srcset', {\n get: function () {\n return descriptors.get('srcset');\n },\n set: function (ss) {\n return descriptors.set(ss, 'srcset');\n },\n });\n }\n\n function hijackAttributes() {\n function getOfiImageMaybe(el, name) {\n return el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset')\n ? el[OFI].img\n : el;\n }\n if (!supportsObjectPosition) {\n HTMLImageElement.prototype.getAttribute = function (name) {\n return nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n };\n\n HTMLImageElement.prototype.setAttribute = function (name, value) {\n return nativeSetAttribute.call(\n getOfiImageMaybe(this, name),\n name,\n String(value)\n );\n };\n }\n }\n\n function fix(imgs, opts) {\n var startAutoMode = !autoModeEnabled && !imgs;\n opts = opts || {};\n imgs = imgs || 'img';\n\n if ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n return false;\n }\n\n // use imgs as a selector or just select all images\n if (imgs === 'img') {\n imgs = document.getElementsByTagName('img');\n } else if (typeof imgs === 'string') {\n imgs = document.querySelectorAll(imgs);\n } else if (!('length' in imgs)) {\n imgs = [imgs];\n }\n\n // apply fix to all\n for (var i = 0; i < imgs.length; i++) {\n imgs[i][OFI] = imgs[i][OFI] || {\n skipTest: opts.skipTest,\n };\n fixOne(imgs[i]);\n }\n\n if (startAutoMode) {\n document.body.addEventListener(\n 'load',\n function (e) {\n if (e.target.tagName === 'IMG') {\n fix(e.target, {\n skipTest: opts.skipTest,\n });\n }\n },\n true\n );\n autoModeEnabled = true;\n imgs = 'img'; // reset to a generic selector for watchMQ\n }\n\n // if requested, watch media queries for object-fit change\n if (opts.watchMQ) {\n window.addEventListener(\n 'resize',\n fix.bind(null, imgs, {\n skipTest: opts.skipTest,\n })\n );\n }\n }\n\n fix.supportsObjectFit = supportsObjectFit;\n fix.supportsObjectPosition = supportsObjectPosition;\n\n hijackAttributes();\n\n return fix;\n})();\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/**\n * This is just an importer to compile and minify global scripts\n */\n\nrequire('../libs/append-polyfill');\nrequire('../libs/jquery.ba-throttle-debounce');\nrequire('../libs/object-fit-videos');\nrequire('../libs/ofi');\n\nrequire('./custom-form-elements.jquery');\nrequire('./has-touchevents');\nrequire('./header-front.jquery');\nrequire('./main-menu.jquery');\nrequire('./objectfit.jquery');\nrequire('./offcanvas-search.jquery');\nrequire('./searchbar');\nrequire('./smooth-anchor-scroll.jquery');\nrequire('./testimonials-pager.jquery');\nrequire('./virtual-assistant.jquery');\n"],"names":["$","$selectors","handleSelectChange","e","$el","target","val","addClass","removeClass","Drupal","behaviors","wrapRadiosCheckboxesAndSelectPlaceholder","attach","context","is","wrap","after","change","jQuery","window","navigator","maxTouchPoints","msMaxTouchPoints","document","querySelector","classList","add","$header","$frontNav","$page","activateHeader","deactivateHeader","updateBackground","scrollTop","ready","length","scroll","throttle","on","$menuLinks","i","$items","append","objectFitImages","objectFitVideos","find","prepend","$searchIcon","$searchBar","$searchInput","handleClick","toggleClass","hasClass","focus","id","currentTarget","attr","replace","concat","animate","offset","top","activeId","numTestimonials","$block","$leftPager","$rightPager","$testimonials","speed","handleLeftPagerClick","oldActiveId","getNewActiveId","setTimeout","handleRightPagerClick","current","direction","newId","initializeTestimonialPagers","$va","initializeVirtualAssistant","initialize","Element","prototype","Document","DocumentFragment","forEach","item","hasOwnProperty","Object","defineProperty","configurable","enumerable","writable","value","argArr","Array","slice","call","arguments","docFrag","createDocumentFragment","argItem","isNode","Node","appendChild","createTextNode","String","this","jq_throttle","delay","no_trailing","callback","debounce_mode","timeout_id","last_exec","wrapper","that","elapsed","Date","args","exec","apply","clearTimeout","undefined","guid","debounce","at_begin","module","exports","videos","isEdge","userAgent","indexOf","testImg","Image","supportsObjectFit","style","supportsObjectPosition","propRegex","getStyle","getComputedStyle","fontFamily","parsed","props","parsePosition","fitIt","setCss","getCss","$wrap","createElement","parentNode","replaceChild","wrapCss","height","width","boxSizing","display","overflow","key","border","margin","padding","opacity","addEventListener","doWork","readyState","removeEventListener","videoRatio","videoWidth","videoHeight","wrapWidth","clientWidth","wrapHeight","clientHeight","wrapRatio","newHeight","newWidth","marginLeft","marginTop","Math","round","autoplay","play","index","querySelectorAll","type","name","obj","running","evt","CustomEvent","createEvent","initEvent","requestAnimationFrame","dispatchEvent","OFI","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","getAttribute","nativeSetAttribute","setAttribute","autoModeEnabled","setPlaceholder","img","placeholder","onImageReady","naturalWidth","fixOne","el","ofi","skipTest","srcset","src","naturalHeight","descriptors","get","prop","set","ss","keepSrcUsable","err","console","warn","picturefill","pf","_","ns","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","backgroundPosition","backgroundRepeat","backgroundOrigin","test","backgroundSize","fix","imgs","opts","startAutoMode","getElementsByTagName","body","tagName","watchMQ","bind","getOfiImageMaybe","HTMLImageElement","hijackAttributes","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","require"],"sourceRoot":""}