{"version":3,"file":"scripts/main.js","sources":["webpack:///webpack/bootstrap","webpack:///../node_modules/bs-custom-file-input/dist/bs-custom-file-input.js","webpack:///../node_modules/wowjs/dist/wow.js","webpack:///assets/scripts/main.js","webpack:///./styles/main.scss?61e9","webpack:///external \"jQuery\""],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/wp-content/themes/rmhc-toronto/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/*!\n * bsCustomFileInput v1.3.4 (https://github.com/Johann-S/bs-custom-file-input)\n * Copyright 2018 - 2020 Johann-S \n * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.bsCustomFileInput = factory());\n}(this, (function () { 'use strict';\n\n var Selector = {\n CUSTOMFILE: '.custom-file input[type=\"file\"]',\n CUSTOMFILELABEL: '.custom-file-label',\n FORM: 'form',\n INPUT: 'input'\n };\n\n var textNodeType = 3;\n\n var getDefaultText = function getDefaultText(input) {\n var defaultText = '';\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n defaultText = label.textContent;\n }\n\n return defaultText;\n };\n\n var findFirstChildNode = function findFirstChildNode(element) {\n if (element.childNodes.length > 0) {\n var childNodes = [].slice.call(element.childNodes);\n\n for (var i = 0; i < childNodes.length; i++) {\n var node = childNodes[i];\n\n if (node.nodeType !== textNodeType) {\n return node;\n }\n }\n }\n\n return element;\n };\n\n var restoreDefaultText = function restoreDefaultText(input) {\n var defaultText = input.bsCustomFileInput.defaultText;\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n var element = findFirstChildNode(label);\n element.textContent = defaultText;\n }\n };\n\n var fileApi = !!window.File;\n var FAKE_PATH = 'fakepath';\n var FAKE_PATH_SEPARATOR = '\\\\';\n\n var getSelectedFiles = function getSelectedFiles(input) {\n if (input.hasAttribute('multiple') && fileApi) {\n return [].slice.call(input.files).map(function (file) {\n return file.name;\n }).join(', ');\n }\n\n if (input.value.indexOf(FAKE_PATH) !== -1) {\n var splittedValue = input.value.split(FAKE_PATH_SEPARATOR);\n return splittedValue[splittedValue.length - 1];\n }\n\n return input.value;\n };\n\n function handleInputChange() {\n var label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n var element = findFirstChildNode(label);\n var inputValue = getSelectedFiles(this);\n\n if (inputValue.length) {\n element.textContent = inputValue;\n } else {\n restoreDefaultText(this);\n }\n }\n }\n\n function handleFormReset() {\n var customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function (input) {\n return !!input.bsCustomFileInput;\n });\n\n for (var i = 0, len = customFileList.length; i < len; i++) {\n restoreDefaultText(customFileList[i]);\n }\n }\n\n var customProperty = 'bsCustomFileInput';\n var Event = {\n FORMRESET: 'reset',\n INPUTCHANGE: 'change'\n };\n var bsCustomFileInput = {\n init: function init(inputSelector, formSelector) {\n if (inputSelector === void 0) {\n inputSelector = Selector.CUSTOMFILE;\n }\n\n if (formSelector === void 0) {\n formSelector = Selector.FORM;\n }\n\n var customFileInputList = [].slice.call(document.querySelectorAll(inputSelector));\n var formList = [].slice.call(document.querySelectorAll(formSelector));\n\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\n var input = customFileInputList[i];\n Object.defineProperty(input, customProperty, {\n value: {\n defaultText: getDefaultText(input)\n },\n writable: true\n });\n handleInputChange.call(input);\n input.addEventListener(Event.INPUTCHANGE, handleInputChange);\n }\n\n for (var _i = 0, _len = formList.length; _i < _len; _i++) {\n formList[_i].addEventListener(Event.FORMRESET, handleFormReset);\n\n Object.defineProperty(formList[_i], customProperty, {\n value: true,\n writable: true\n });\n }\n },\n destroy: function destroy() {\n var formList = [].slice.call(document.querySelectorAll(Selector.FORM)).filter(function (form) {\n return !!form.bsCustomFileInput;\n });\n var customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function (input) {\n return !!input.bsCustomFileInput;\n });\n\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\n var input = customFileInputList[i];\n restoreDefaultText(input);\n input[customProperty] = undefined;\n input.removeEventListener(Event.INPUTCHANGE, handleInputChange);\n }\n\n for (var _i2 = 0, _len2 = formList.length; _i2 < _len2; _i2++) {\n formList[_i2].removeEventListener(Event.FORMRESET, handleFormReset);\n\n formList[_i2][customProperty] = undefined;\n }\n }\n };\n\n return bsCustomFileInput;\n\n})));\n//# sourceMappingURL=bs-custom-file-input.js.map\n","(function() {\n var MutationObserver, Util, WeakMap, getComputedStyle, getComputedStyleRX,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n Util = (function() {\n function Util() {}\n\n Util.prototype.extend = function(custom, defaults) {\n var key, value;\n for (key in defaults) {\n value = defaults[key];\n if (custom[key] == null) {\n custom[key] = value;\n }\n }\n return custom;\n };\n\n Util.prototype.isMobile = function(agent) {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(agent);\n };\n\n Util.prototype.createEvent = function(event, bubble, cancel, detail) {\n var customEvent;\n if (bubble == null) {\n bubble = false;\n }\n if (cancel == null) {\n cancel = false;\n }\n if (detail == null) {\n detail = null;\n }\n if (document.createEvent != null) {\n customEvent = document.createEvent('CustomEvent');\n customEvent.initCustomEvent(event, bubble, cancel, detail);\n } else if (document.createEventObject != null) {\n customEvent = document.createEventObject();\n customEvent.eventType = event;\n } else {\n customEvent.eventName = event;\n }\n return customEvent;\n };\n\n Util.prototype.emitEvent = function(elem, event) {\n if (elem.dispatchEvent != null) {\n return elem.dispatchEvent(event);\n } else if (event in (elem != null)) {\n return elem[event]();\n } else if ((\"on\" + event) in (elem != null)) {\n return elem[\"on\" + event]();\n }\n };\n\n Util.prototype.addEvent = function(elem, event, fn) {\n if (elem.addEventListener != null) {\n return elem.addEventListener(event, fn, false);\n } else if (elem.attachEvent != null) {\n return elem.attachEvent(\"on\" + event, fn);\n } else {\n return elem[event] = fn;\n }\n };\n\n Util.prototype.removeEvent = function(elem, event, fn) {\n if (elem.removeEventListener != null) {\n return elem.removeEventListener(event, fn, false);\n } else if (elem.detachEvent != null) {\n return elem.detachEvent(\"on\" + event, fn);\n } else {\n return delete elem[event];\n }\n };\n\n Util.prototype.innerHeight = function() {\n if ('innerHeight' in window) {\n return window.innerHeight;\n } else {\n return document.documentElement.clientHeight;\n }\n };\n\n return Util;\n\n })();\n\n WeakMap = this.WeakMap || this.MozWeakMap || (WeakMap = (function() {\n function WeakMap() {\n this.keys = [];\n this.values = [];\n }\n\n WeakMap.prototype.get = function(key) {\n var i, item, j, len, ref;\n ref = this.keys;\n for (i = j = 0, len = ref.length; j < len; i = ++j) {\n item = ref[i];\n if (item === key) {\n return this.values[i];\n }\n }\n };\n\n WeakMap.prototype.set = function(key, value) {\n var i, item, j, len, ref;\n ref = this.keys;\n for (i = j = 0, len = ref.length; j < len; i = ++j) {\n item = ref[i];\n if (item === key) {\n this.values[i] = value;\n return;\n }\n }\n this.keys.push(key);\n return this.values.push(value);\n };\n\n return WeakMap;\n\n })());\n\n MutationObserver = this.MutationObserver || this.WebkitMutationObserver || this.MozMutationObserver || (MutationObserver = (function() {\n function MutationObserver() {\n if (typeof console !== \"undefined\" && console !== null) {\n console.warn('MutationObserver is not supported by your browser.');\n }\n if (typeof console !== \"undefined\" && console !== null) {\n console.warn('WOW.js cannot detect dom mutations, please call .sync() after loading new content.');\n }\n }\n\n MutationObserver.notSupported = true;\n\n MutationObserver.prototype.observe = function() {};\n\n return MutationObserver;\n\n })());\n\n getComputedStyle = this.getComputedStyle || function(el, pseudo) {\n this.getPropertyValue = function(prop) {\n var ref;\n if (prop === 'float') {\n prop = 'styleFloat';\n }\n if (getComputedStyleRX.test(prop)) {\n prop.replace(getComputedStyleRX, function(_, _char) {\n return _char.toUpperCase();\n });\n }\n return ((ref = el.currentStyle) != null ? ref[prop] : void 0) || null;\n };\n return this;\n };\n\n getComputedStyleRX = /(\\-([a-z]){1})/g;\n\n this.WOW = (function() {\n WOW.prototype.defaults = {\n boxClass: 'wow',\n animateClass: 'animated',\n offset: 0,\n mobile: true,\n live: true,\n callback: null,\n scrollContainer: null\n };\n\n function WOW(options) {\n if (options == null) {\n options = {};\n }\n this.scrollCallback = bind(this.scrollCallback, this);\n this.scrollHandler = bind(this.scrollHandler, this);\n this.resetAnimation = bind(this.resetAnimation, this);\n this.start = bind(this.start, this);\n this.scrolled = true;\n this.config = this.util().extend(options, this.defaults);\n if (options.scrollContainer != null) {\n this.config.scrollContainer = document.querySelector(options.scrollContainer);\n }\n this.animationNameCache = new WeakMap();\n this.wowEvent = this.util().createEvent(this.config.boxClass);\n }\n\n WOW.prototype.init = function() {\n var ref;\n this.element = window.document.documentElement;\n if ((ref = document.readyState) === \"interactive\" || ref === \"complete\") {\n this.start();\n } else {\n this.util().addEvent(document, 'DOMContentLoaded', this.start);\n }\n return this.finished = [];\n };\n\n WOW.prototype.start = function() {\n var box, j, len, ref;\n this.stopped = false;\n this.boxes = (function() {\n var j, len, ref, results;\n ref = this.element.querySelectorAll(\".\" + this.config.boxClass);\n results = [];\n for (j = 0, len = ref.length; j < len; j++) {\n box = ref[j];\n results.push(box);\n }\n return results;\n }).call(this);\n this.all = (function() {\n var j, len, ref, results;\n ref = this.boxes;\n results = [];\n for (j = 0, len = ref.length; j < len; j++) {\n box = ref[j];\n results.push(box);\n }\n return results;\n }).call(this);\n if (this.boxes.length) {\n if (this.disabled()) {\n this.resetStyle();\n } else {\n ref = this.boxes;\n for (j = 0, len = ref.length; j < len; j++) {\n box = ref[j];\n this.applyStyle(box, true);\n }\n }\n }\n if (!this.disabled()) {\n this.util().addEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);\n this.util().addEvent(window, 'resize', this.scrollHandler);\n this.interval = setInterval(this.scrollCallback, 50);\n }\n if (this.config.live) {\n return new MutationObserver((function(_this) {\n return function(records) {\n var k, len1, node, record, results;\n results = [];\n for (k = 0, len1 = records.length; k < len1; k++) {\n record = records[k];\n results.push((function() {\n var l, len2, ref1, results1;\n ref1 = record.addedNodes || [];\n results1 = [];\n for (l = 0, len2 = ref1.length; l < len2; l++) {\n node = ref1[l];\n results1.push(this.doSync(node));\n }\n return results1;\n }).call(_this));\n }\n return results;\n };\n })(this)).observe(document.body, {\n childList: true,\n subtree: true\n });\n }\n };\n\n WOW.prototype.stop = function() {\n this.stopped = true;\n this.util().removeEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);\n this.util().removeEvent(window, 'resize', this.scrollHandler);\n if (this.interval != null) {\n return clearInterval(this.interval);\n }\n };\n\n WOW.prototype.sync = function(element) {\n if (MutationObserver.notSupported) {\n return this.doSync(this.element);\n }\n };\n\n WOW.prototype.doSync = function(element) {\n var box, j, len, ref, results;\n if (element == null) {\n element = this.element;\n }\n if (element.nodeType !== 1) {\n return;\n }\n element = element.parentNode || element;\n ref = element.querySelectorAll(\".\" + this.config.boxClass);\n results = [];\n for (j = 0, len = ref.length; j < len; j++) {\n box = ref[j];\n if (indexOf.call(this.all, box) < 0) {\n this.boxes.push(box);\n this.all.push(box);\n if (this.stopped || this.disabled()) {\n this.resetStyle();\n } else {\n this.applyStyle(box, true);\n }\n results.push(this.scrolled = true);\n } else {\n results.push(void 0);\n }\n }\n return results;\n };\n\n WOW.prototype.show = function(box) {\n this.applyStyle(box);\n box.className = box.className + \" \" + this.config.animateClass;\n if (this.config.callback != null) {\n this.config.callback(box);\n }\n this.util().emitEvent(box, this.wowEvent);\n this.util().addEvent(box, 'animationend', this.resetAnimation);\n this.util().addEvent(box, 'oanimationend', this.resetAnimation);\n this.util().addEvent(box, 'webkitAnimationEnd', this.resetAnimation);\n this.util().addEvent(box, 'MSAnimationEnd', this.resetAnimation);\n return box;\n };\n\n WOW.prototype.applyStyle = function(box, hidden) {\n var delay, duration, iteration;\n duration = box.getAttribute('data-wow-duration');\n delay = box.getAttribute('data-wow-delay');\n iteration = box.getAttribute('data-wow-iteration');\n return this.animate((function(_this) {\n return function() {\n return _this.customStyle(box, hidden, duration, delay, iteration);\n };\n })(this));\n };\n\n WOW.prototype.animate = (function() {\n if ('requestAnimationFrame' in window) {\n return function(callback) {\n return window.requestAnimationFrame(callback);\n };\n } else {\n return function(callback) {\n return callback();\n };\n }\n })();\n\n WOW.prototype.resetStyle = function() {\n var box, j, len, ref, results;\n ref = this.boxes;\n results = [];\n for (j = 0, len = ref.length; j < len; j++) {\n box = ref[j];\n results.push(box.style.visibility = 'visible');\n }\n return results;\n };\n\n WOW.prototype.resetAnimation = function(event) {\n var target;\n if (event.type.toLowerCase().indexOf('animationend') >= 0) {\n target = event.target || event.srcElement;\n return target.className = target.className.replace(this.config.animateClass, '').trim();\n }\n };\n\n WOW.prototype.customStyle = function(box, hidden, duration, delay, iteration) {\n if (hidden) {\n this.cacheAnimationName(box);\n }\n box.style.visibility = hidden ? 'hidden' : 'visible';\n if (duration) {\n this.vendorSet(box.style, {\n animationDuration: duration\n });\n }\n if (delay) {\n this.vendorSet(box.style, {\n animationDelay: delay\n });\n }\n if (iteration) {\n this.vendorSet(box.style, {\n animationIterationCount: iteration\n });\n }\n this.vendorSet(box.style, {\n animationName: hidden ? 'none' : this.cachedAnimationName(box)\n });\n return box;\n };\n\n WOW.prototype.vendors = [\"moz\", \"webkit\"];\n\n WOW.prototype.vendorSet = function(elem, properties) {\n var name, results, value, vendor;\n results = [];\n for (name in properties) {\n value = properties[name];\n elem[\"\" + name] = value;\n results.push((function() {\n var j, len, ref, results1;\n ref = this.vendors;\n results1 = [];\n for (j = 0, len = ref.length; j < len; j++) {\n vendor = ref[j];\n results1.push(elem[\"\" + vendor + (name.charAt(0).toUpperCase()) + (name.substr(1))] = value);\n }\n return results1;\n }).call(this));\n }\n return results;\n };\n\n WOW.prototype.vendorCSS = function(elem, property) {\n var j, len, ref, result, style, vendor;\n style = getComputedStyle(elem);\n result = style.getPropertyCSSValue(property);\n ref = this.vendors;\n for (j = 0, len = ref.length; j < len; j++) {\n vendor = ref[j];\n result = result || style.getPropertyCSSValue(\"-\" + vendor + \"-\" + property);\n }\n return result;\n };\n\n WOW.prototype.animationName = function(box) {\n var animationName, error;\n try {\n animationName = this.vendorCSS(box, 'animation-name').cssText;\n } catch (error) {\n animationName = getComputedStyle(box).getPropertyValue('animation-name');\n }\n if (animationName === 'none') {\n return '';\n } else {\n return animationName;\n }\n };\n\n WOW.prototype.cacheAnimationName = function(box) {\n return this.animationNameCache.set(box, this.animationName(box));\n };\n\n WOW.prototype.cachedAnimationName = function(box) {\n return this.animationNameCache.get(box);\n };\n\n WOW.prototype.scrollHandler = function() {\n return this.scrolled = true;\n };\n\n WOW.prototype.scrollCallback = function() {\n var box;\n if (this.scrolled) {\n this.scrolled = false;\n this.boxes = (function() {\n var j, len, ref, results;\n ref = this.boxes;\n results = [];\n for (j = 0, len = ref.length; j < len; j++) {\n box = ref[j];\n if (!(box)) {\n continue;\n }\n if (this.isVisible(box)) {\n this.show(box);\n continue;\n }\n results.push(box);\n }\n return results;\n }).call(this);\n if (!(this.boxes.length || this.config.live)) {\n return this.stop();\n }\n }\n };\n\n WOW.prototype.offsetTop = function(element) {\n var top;\n while (element.offsetTop === void 0) {\n element = element.parentNode;\n }\n top = element.offsetTop;\n while (element = element.offsetParent) {\n top += element.offsetTop;\n }\n return top;\n };\n\n WOW.prototype.isVisible = function(box) {\n var bottom, offset, top, viewBottom, viewTop;\n offset = box.getAttribute('data-wow-offset') || this.config.offset;\n viewTop = (this.config.scrollContainer && this.config.scrollContainer.scrollTop) || window.pageYOffset;\n viewBottom = viewTop + Math.min(this.element.clientHeight, this.util().innerHeight()) - offset;\n top = this.offsetTop(box);\n bottom = top + box.clientHeight;\n return top <= viewBottom && bottom >= viewTop;\n };\n\n WOW.prototype.util = function() {\n return this._util != null ? this._util : this._util = new Util();\n };\n\n WOW.prototype.disabled = function() {\n return !this.config.mobile && this.util().isMobile(navigator.userAgent);\n };\n\n return WOW;\n\n })();\n\n}).call(this);\n","\n/* global ajax_localize */\n\nimport { WOW } from \"wowjs\";\n\nimport bsCustomFileInput from \"bs-custom-file-input\";\n\n(function ($, ajax_localize) {\n\t$(document).ready(function () {\n\n\t\tconst wow = new WOW();\n\n\t\twow.init();\n\n\t\tbsCustomFileInput.init();\n\n\t\tlet headerScrollTopOffset = 0;\n\n\t\tif ($(\"body\").hasClass(\"admin-bar\") && ($(window).width() > 600)) {\n\t\t\theaderScrollTopOffset = $(\"html\").css(\"margin-top\");\n\t\t}\n\n\t\t// Set header navbar height\n\t\tcalculateNavbarHeight();\n\t\tcalculateTopBannerHeight();\n\n\t\tequalCarouselSlideHeights(\".carousel-block .carousel, .spotlight-carousel-block .spotlight-text-carousel\");\n\t\ttestimonialEqualHeights();\n\n\t\tlet resizeThrottled = false;\n\n\t\t$(window).on(\"resize\", function(){\n\n\t\t\tif(!resizeThrottled){\n\n\t\t\t\tcalculateNavbarHeight();\n\t\t\t\tcalculateTopBannerHeight();\n\n\t\t\t\tequalCarouselSlideHeights(\".carousel-block .carousel, .spotlight-carousel-block .spotlight-text-carousel\");\n\n\t\t\t\tresizeThrottled = true;\n\n\t\t\t\tsetTimeout(function(){\n\n\t\t\t\t\tresizeThrottled = false;\n\n\t\t\t\t\tcalculateNavbarHeight();\n\t\t\t\t\tcalculateTopBannerHeight();\n\n\t\t\t\t}, 100);\n\n\t\t\t}\n\n\t\t});\n\n\t\t// Watch for when header is scrolled to or away from the top of the viewport\n\t\t// If header is scrolled to the top of the page, we know it's been stickied based on it having position: sticky\n\t\t// Add class when it's sitting at the top of the page, remove it when it's been scrolled away\n\t\t$(\"body > header\").observeScrollTopChanges(headerScrollTopOffset).on(\"scroll-top-change\", (evt) => {\n\n\t\t\t$(evt.target).toggleClass(\"sticky\", evt.detail.scrolledToTop);\n\n\t\t});\n\n\n\t\tlet desktopMenuBreakpoint = parseInt($(\":root\").css(\"--desktop-menu-breakpoint\"));\n\n\t\t/**\n\t\t * Desktop menu dropdowns\n\t\t */\n\t\t$(\".menu-item-has-children\").find(\".dropdown-toggle\").attr(\"data-toggle\", \"\");\n\n\t\t// When hovering over a menu item, check for any other menu items at the same level that have a \".focus\" class and remove it\n\t\t$(\"#header-navbar-menu-wrapper\").find(\".menu-item\").on(\"mouseenter\", function(){\n\n\t\t\t$(\"#header-navbar-menu-wrapper\").find(\".menu-item.dropdown.focus\").removeClass(\"focus\");\n\n\t\t});\n\n\t\t$(\"#header-navbar-menu-wrapper\").find(\".menu-item.dropdown\")\n\t\t\t.on(\"mouseenter\", function(){\n\n\t\t\t\tfadeInMenuDropdown($(this).children(\".dropdown-menu\"));\n\n\t\t\t})\n\t\t\t.on(\"mouseleave\", function(){\n\n\t\t\t\tfadeOutMenuDropdown($(this).children(\".dropdown-menu\"));\n\n\t\t\t})\n\t\t\t.on(\"focusout\", function(){\n\n\t\t\t\tlet thisDropdown = $(this);\n\n\t\t\t\tsetTimeout(function(){\n\n\t\t\t\t\tif(thisDropdown.find(\".nav-link:focus\").length === 0){\n\t\t\t\t\t\tthisDropdown.removeClass(\"focus\");\n\t\t\t\t\t}\n\n\t\t\t\t}, 100);\n\n\t\t\t});\n\n\t\t$(\"#header-navbar-menu-wrapper\").find(\".menu-item > .nav-link\").on(\"focus\", function(){\n\n\t\t\t$(this).parent().siblings(\".menu-item.dropdown\").find(\".focus\").addBack().removeClass(\"focus\");\n\n\t\t});\n\n\t\t$(\"#header-navbar-menu-wrapper\").find(\".menu-item.dropdown > .nav-link\")\n\t\t\t.on(\"focus\", function(){\n\n\t\t\t\t$(this).parent().addClass(\"focus\");\n\n\t\t\t});\n\n\n\t\t/**\n\t\t * Mobile menu\n\t\t */\n\n\t\t$(\"header .js-mobile-menu-toggle\").on(\"click\", function(){\n\t\t\t$(\"body\").toggleClass(\"no-scroll\");\n\t\t});\n\n\t\t// Check the mobile menu status when resize the\n\t\t$(document).ready(function () {\n\t\t\tupdateMobileMenu();\n\t\t\t$(window).resize(function() {\n\t\t\t\tupdateMobileMenu();\n\t\t\t});\n\t\t});\n\n\t\tfunction updateMobileMenu() {\n\t\t\tif ( !$('ul.dropdown-menu').hasClass('mobile-menu-sub-level-panel') ) {\n\t\t\t\tif($(window).width() < desktopMenuBreakpoint){\n\t\t\t\t\t$(\"#header-navbar-menu-wrapper\").find(\".navbar-nav .menu-item.menu-item-has-children > .dropdown-menu\").each(function(){\n\t\t\t\t\t\t$(this).addClass(\"mobile-menu-sub-level-panel\");\n\t\t\t\t\t\tlet subLevelTitleElement = $(\"

\").html($(this).siblings(\".nav-link\").html().trim());\n\t\t\t\t\t\t$(this).prepend(\n\t\t\t\t\t\t\t$(\"
  • \")\n\t\t\t\t\t\t\t\t.addClass(\"menu-item sub-level-panel-heading\")\n\t\t\t\t\t\t\t\t.append(subLevelTitleElement)\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t$(\"#header-navbar-menu-wrapper.navbar-collapse\")\n\t\t\t.on(\"show.bs.collapse\", function(){\n\n\t\t\t\tlet headerBannerHeight = 0;\n\n\t\t\t\t$(\"body > header\").children(\":not(#header-search-overlay)\").each(function(){\n\t\t\t\t\theaderBannerHeight += $(this).outerHeight();\n\t\t\t\t});\n\n\t\t\t\tif(!$(\"body > header\").hasClass(\"sticky\")){\n\t\t\t\t\theaderBannerHeight += (parseInt($(\"html\").css(\"margin-top\")) - $(\"html\").scrollTop());\n\t\t\t\t}\n\n\t\t\t\t$(this).css(\"--mobile-menu-height\", ($(window).outerHeight() - headerBannerHeight) + \"px\");\n\n\t\t\t\t$(this).children(\".header-navbar-menu-inner-wrap\").addClass(\"curr-level\");\n\n\t\t\t})\n\t\t\t.on(\"hidden.bs.collapse\", function(){\n\n\t\t\t\t$(this).find(\".curr-level\").removeClass(\"curr-level\");\n\n\t\t\t\t$(this).find(\".show\").removeClass(\"show fade-in\");\n\n\t\t\t\t$(this).find(\".mobile-menu-sub-level-panel\").scrollTop(0);\n\n\t\t\t\t$(this).find(\".js-menu-back-btn\").data(\"depth-level\", 0);\n\n\t\t\t});\n\n\t\tlet mobileMenuBackBtnWrap = $(\"#header-navbar-menu-wrapper\").find(\".back-btn-wrap\");\n\t\tlet mobileMenuBackBtn = mobileMenuBackBtnWrap.children(\".js-menu-back-btn\");\n\n\t\tmobileMenuBackBtn.data(\"depth-level\", 0);\n\n\t\tmobileMenuBackBtn.on(\"click\", function(){\n\n\t\t\t$(this).data(\"depth-level\", ($(this).data(\"depth-level\") - 1));\n\n\t\t\tlet currentMenuPanel = $(\"#header-navbar-menu-wrapper\").find(\".mobile-menu-sub-level-panel.curr-level\");\n\n\t\t\tcurrentMenuPanel.parent().closest(\".mobile-menu-sub-level-panel\").addClass(\"curr-level\");\n\n\t\t\tcurrentMenuPanel.addClass(\"fade-out\").removeClass(\"show fade-in curr-level\");\n\n\t\t\tif($(this).data(\"depth-level\") <= 0){\n\n\t\t\t\t$(\"#header-navbar-menu-wrapper\").find(\".header-navbar-menu-inner-wrap\").addClass(\"curr-level\");\n\n\t\t\t\t$(this)\n\t\t\t\t\t.data(\"depth-level\", 0)\n\t\t\t\t\t.parent()\n\t\t\t\t\t.addClass(\"fade-out\")\n\t\t\t\t\t.removeClass(\"show fade-in\");\n\n\t\t\t}\n\n\t\t});\n\n\t\t$(\"#header-navbar-menu-wrapper\").find(\".navbar-nav .menu-item.menu-item-has-children > .nav-link\")\n\t\t\t.on(\"click\", function(evt){\n\n\t\t\t\tevt.preventDefault();\n\n\t\t\t\t$(\"#header-navbar-menu-wrapper\").find(\".curr-level\").removeClass(\"curr-level\");\n\n\t\t\t\t$(this).siblings(\".mobile-menu-sub-level-panel\")\n\t\t\t\t\t.scrollTop(0)\n\t\t\t\t\t.removeClass(\"fade-out\")\n\t\t\t\t\t.addClass(\"show fade-in curr-level\");\n\n\t\t\t\tif(mobileMenuBackBtn.data(\"depth-level\") === 0){\n\n\t\t\t\t\tmobileMenuBackBtnWrap\n\t\t\t\t\t\t.removeClass(\"fade-out\")\n\t\t\t\t\t\t.addClass(\"show fade-in\");\n\t\t\t\t}else{\n\n\t\t\t\t\t$(this).siblings(\".mobile-menu-sub-level-panel\")\n\t\t\t\t\t\t.css(\"top\", $(this).closest(\".mobile-menu-sub-level-panel, .header-navbar-menu-inner-wrap\").scrollTop());\n\n\t\t\t\t}\n\n\t\t\t\tmobileMenuBackBtn.data(\"depth-level\", (mobileMenuBackBtn.data(\"depth-level\") + 1));\n\n\t\t\t\treturn false;\n\n\t\t\t});\n\n\n\t\t/**\n\t\t * Header search overlay\n\t\t */\n\t\t$(\"#header-search-overlay\").addClass(\"fade\");\n\n\t\t$(\".header-navbar .btn-search\").on(\"click\", function () {\n\n\t\t\t$(\"#header-search-overlay\").addClass(\"show\");\n\n\t\t\tlet headerPositionData = $(\".site-header-wrap\").get(0).getBoundingClientRect();\n\n\t\t\t$(\"
    \")\n\t\t\t\t.addClass(\"modal-backdrop header-search-overlay-backdrop\")\n\t\t\t\t.css(\"opacity\", 0) // Temporary\n\t\t\t\t.css(\"top\", (headerPositionData.y + $(\"#header-search-overlay\").outerHeight() + parseInt($(\"#header-search-overlay\").css(\"top\"))))\n\t\t\t\t.appendTo($(\"body\")).fadeTo(150, 0.9);\n\n\t\t\t$(\"body\").addClass(\"modal-open\");\n\n\t\t\tsetTimeout(function(){\n\t\t\t\t$(\"#header-search-overlay .search-input\").focus();\n\t\t\t}, 300);\n\n\t\t});\n\n\t\t$(\"#js-header-search-overlay-close\").on(\"click\", function () {\n\n\t\t\t$(\"#header-search-overlay\")\n\t\t\t\t.removeClass(\"show\")\n\t\t\t\t.find(\".search-input\")\n\t\t\t\t.blur();\n\n\t\t\t$(\".header-search-overlay-backdrop\").fadeOut(200, \"linear\", function () {\n\t\t\t\t$(this).remove();\n\t\t\t});\n\n\t\t\t$(\"body\").removeClass(\"modal-open\");\n\n\t\t});\n\n\n\t\t/**\n\t\t * Video modals\n\t\t */\n\t\t$(\".video-modal\").appendTo(\"body\");\n\n\n\t\t/**\n\t\t * Video modal buttons within carousels\n\t\t *\n\t\t * TODO Move to Orange\n\t\t *\n\t\t */\n\t\t$(\".carousel .btn-video-modal\").on(\"click\", function(){\n\n\t\t\tlet parentCarousel = $(this).closest(\".carousel\");\n\n\t\t\tlet wasCarouselCycling = parentCarousel.is(\"[data-ride='carousel']\");\n\n\t\t\tparentCarousel.carousel(\"pause\");\n\n\t\t\t$($(this).data(\"target\")).on(\"hide.bs.modal\", function(){\n\n\t\t\t\tif(wasCarouselCycling){\n\t\t\t\t\tparentCarousel.carousel(\"cycle\");\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t});\n\n\n\t\t/**\n\t\t * Back to top button - scroll functionality\n\t\t */\n\t\t$(\"#back-to-top\")\n\t\t\t.addClass(\"fade\")\n\t\t\t.on(\"click\", function(){\n\t\t\t\t$(\"html, body\").animate({\n\t\t\t\t\tscrollTop: 0,\n\t\t\t\t}, 400);\n\t\t\t});\n\n\t\t$(window).scroll(function(){\n\t\t\tif ($(window).scrollTop() > 100){\n\t\t\t\t$(\"#back-to-top\").addClass(\"show\");\n\t\t\t} else {\n\t\t\t\t$(\"#back-to-top\").removeClass(\"show\");\n\t\t\t}\n\t\t});\n\n\t\t$(\".newsletter-signup-toggle-btn\").on(\"click\", function(){\n\n\t\t\t$(this).closest(\".newsletter-sign-up-section\").css(\"min-height\", $(this).closest(\".newsletter-sign-up-section\").outerHeight());\n\n\t\t});\n\n\n\t\t/**\n\t\t * Social slider\n\t\t */\n\t\t$.each( $('.social-slider-block .social-slider'), function(index, slider) {\n\t\t\tvar sliderID = '#' + $(slider).attr('id');\n\t\t\t/*\n\t\t\t\tCC 2.0 License Iatek LLC 2018 - Attribution required\n\t\t\t*/\n\t\t\t$( this ).on('slide.bs.carousel', function (e) {\n\t\t\t\tvar $e = $(e.relatedTarget);\n\t\t\t\tvar idx = $e.index();\n\t\t\t\tvar itemsPerSlide = 6;\n\t\t\t\tvar totalItems = $(sliderID + ' .carousel-item').length;\n\n\t\t\t\tif (idx >= (totalItems - (itemsPerSlide - 1))) {\n\t\t\t\t\tvar it = itemsPerSlide - (totalItems - idx);\n\t\t\t\t\tfor (var i = 0; i < it; i++) {\n\n\t\t\t\t\t\t// append slides to end\n\t\t\t\t\t\tif (e.direction === \"left\") {\n\t\t\t\t\t\t\t$(sliderID + ' .carousel-item').eq(i).appendTo(sliderID + ' .carousel-inner');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$(sliderID + ' .carousel-item').eq(0).appendTo(sliderID + ' .carousel-inner');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t/**\n\t\t * Social Slider - Link functionality\n\t\t */\n\t\t$.each( $('.social-slider-block .carousel .carousel-inner .carousel-item .social-item'), function () {\n\t\t\tlet postLink = $( this ).attr( 'data-link' );\n\n\t\t\t$( this ).on( 'click', function () {\n\t\t\t\twindow.open(postLink, '_blank').focus();\n\t\t\t});\n\t\t});\n\n\n\t\t/**\n\t\t * Spotlight carousel\n\t\t */\n\t\t$(\".spotlight-carousel-block .spotlight-image-carousel\").each(function(){\n\n\t\t\tif($(window).width() >= parseInt($(\":root\").css(\"--breakpoint-lg\"))){\n\n\t\t\t\tif($(this).find(\".carousel-item\").length === 2){\n\n\t\t\t\t\t$(this).find(\".carousel-item\").clone().removeClass(\"active\").appendTo($(this).find(\".carousel-inner\"));\n\n\t\t\t\t}\n\n\t\t\t\t$(this).find(\".carousel-item.active\").next().addClass(\"carousel-item-next\");\n\n\t\t\t\t$(this).find(\".carousel-item:not(.active) .btn-video-modal\").prop(\"disabled\", true);\n\n\t\t\t\tlet numSlides = $(this).find(\".carousel-item\").length;\n\n\t\t\t\t$(this)\n\t\t\t\t\t.on(\"slide.bs.carousel\", function(evt){\n\n\t\t\t\t\t\tif(evt.direction === \"left\"){\n\n\t\t\t\t\t\t\tlet nextNextItemIndex = evt.to + 1;\n\n\t\t\t\t\t\t\tif(nextNextItemIndex > (numSlides - 1)){\n\t\t\t\t\t\t\t\tnextNextItemIndex = 0;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet nextNextCarouselItem = $(this).find(\".carousel-item\").eq(nextNextItemIndex);\n\n\t\t\t\t\t\t\tnextNextCarouselItem\n\t\t\t\t\t\t\t\t.addClass(\"carousel-item-next-next\")\n\t\t\t\t\t\t\t\t// This reflows the element, meaning the browser will calculate the styles and layout of the element\n\t\t\t\t\t\t\t\t// Any classes added after this will then trigger any transitions associated with the class\n\t\t\t\t\t\t\t\t// This avoids any delays caused by the \"wait a tick\" method\n\t\t\t\t\t\t\t\t.outerHeight();\n\n\t\t\t\t\t\t\tnextNextCarouselItem.addClass(\"carousel-item-left\");\n\n\t\t\t\t\t\t}else if(evt.direction === \"right\"){\n\n\t\t\t\t\t\t\t$(this).find(\".carousel-item.carousel-item-next\").addClass(\"carousel-item-right\");\n\n\t\t\t\t\t\t\t$(this).find(\".carousel-item.active\").addClass(\"carousel-item-next\");\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif($(this).find(\".carousel-item\").eq(evt.from).has(\".btn-video-modal\").length > 0){\n\t\t\t\t\t\t\t$(this).find(\".carousel-item\").eq(evt.from).find(\".btn-video-modal\").prop(\"disabled\", true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})\n\t\t\t\t\t.on(\"slid.bs.carousel\", function(evt){\n\n\t\t\t\t\t\tif(evt.direction === \"left\"){\n\n\t\t\t\t\t\t\t$(this).find(\".carousel-item.carousel-item-next-next\")\n\t\t\t\t\t\t\t\t.removeClass(\"carousel-item-next-next carousel-item-left\")\n\t\t\t\t\t\t\t\t.addClass(\"carousel-item-next\");\n\n\t\t\t\t\t\t}else if(evt.direction === \"right\"){\n\n\t\t\t\t\t\t\t$(this).find(\".carousel-item-right\").removeClass(\"carousel-item-right\");\n\n\t\t\t\t\t\t\tlet oldNextItemIndex = evt.from + 1;\n\n\t\t\t\t\t\t\tif(oldNextItemIndex > (numSlides - 1)){\n\t\t\t\t\t\t\t\toldNextItemIndex = 0;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t$(this).find(\".carousel-item\").eq(oldNextItemIndex)\n\t\t\t\t\t\t\t\t.removeClass(\"carousel-item-next\");\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif($(this).find(\".carousel-item\").eq(evt.to).has(\".btn-video-modal\").length > 0){\n\t\t\t\t\t\t\t$(this).find(\".carousel-item\").eq(evt.to).find(\".btn-video-modal\").prop(\"disabled\", false);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t});\n\n\t\t\t}\n\n\t\t});\n\n\n\t\t/**\n\t\t * Single post scrolling progress bar\n\t\t */\n\t\tif($(\"body\").hasClass(\"single\")){\n\n\t\t\tupdateSinglePostProgressBar();\n\n\t\t\t$(window).scroll(function(){\n\t\t\t\tupdateSinglePostProgressBar();\n\t\t\t});\n\n\t\t}\n\n\n\t\t// FAQs page \"Load More\" buttons\n\t\t/* eslint-disable-next-line */\n\t\tif(ajax_localize.hasOwnProperty(\"ajax_url\")){\n\t\t\t$(\".page-faqs .btn-faq-load-more\").each(function () {\n\n\t\t\t\tvar listItemHolder = $(this).siblings(\".faq-accordion\");\n\n\t\t\t\t// Hide the button if there aren't any more posts to load\n\t\t\t\tif ($(\".list-items-loader\", listItemHolder).length < 1) {\n\t\t\t\t\t$(this).hide();\n\t\t\t\t}\n\n\t\t\t\t$(this).on(\"click\", function (evt) {\n\n\t\t\t\t\tevt.preventDefault();\n\n\t\t\t\t\tvar loadMoreBtn = $(this);\n\t\t\t\t\tvar listItemLoader = $(\".list-items-loader\", listItemHolder);\n\n\t\t\t\t\t// Save the button's text so we can restore it when removing the loading state\n\t\t\t\t\tvar origButtonText = loadMoreBtn.html();\n\n\t\t\t\t\tif (loadMoreBtn.is(\".loading\")) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tloadMoreBtn\n\t\t\t\t\t\t.attr(\"disabled\", true)\n\t\t\t\t\t\t.addClass(\"loading\")\n\t\t\t\t\t\t.text(\"Loading...\");\n\n\t\t\t\t\tvar action = \"get_faqs\";\n\n\t\t\t\t\t// Check if the list item loader has a custom action set\n\t\t\t\t\tif ((listItemLoader.data(\"action\") !== undefined) && (listItemLoader.data(\"action\") !== \"\")) {\n\t\t\t\t\t\taction = listItemLoader.data(\"action\");\n\t\t\t\t\t}\n\n\t\t\t\t\t$.post(\n\t\t\t\t\t\tajax_localize.ajax_url,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"action\": action,\n\t\t\t\t\t\t\t\"data\": $.param(listItemLoader.data()),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfunction (data) {\n\n\t\t\t\t\t\t\t// Remove the existing list item loader since a new one will be included in the response\n\t\t\t\t\t\t\tlistItemLoader.remove();\n\n\t\t\t\t\t\t\t// If new faq items were returned\n\t\t\t\t\t\t\tif (data) {\n\n\t\t\t\t\t\t\t\tloadMoreBtn\n\t\t\t\t\t\t\t\t\t.attr(\"disabled\", false)\n\t\t\t\t\t\t\t\t\t.removeClass(\"loading\")\n\t\t\t\t\t\t\t\t\t.html(origButtonText);\n\n\t\t\t\t\t\t\t\tvar newFAQItems = $($.parseHTML(data));\n\n\t\t\t\t\t\t\t\tnewFAQItems.filter(\":not(.list-items-loader)\").addClass(\"fade\");\n\n\t\t\t\t\t\t\t\tlistItemHolder.append(newFAQItems);\n\n\t\t\t\t\t\t\t\t// Wait a split second before adding class to fade in new faqs\n\t\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\t\tnewFAQItems.addClass(\"show\");\n\t\t\t\t\t\t\t\t}, 100);\n\n\t\t\t\t\t\t\t\t// Look for the new list item loader tag\n\t\t\t\t\t\t\t\t// If it's not there, there aren't any more posts to show so hide the load more button\n\t\t\t\t\t\t\t\tif ($(\".list-items-loader\", listItemHolder).length < 1) {\n\t\t\t\t\t\t\t\t\tloadMoreBtn.remove();\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tloadMoreBtn.fadeOut(400, function () {\n\t\t\t\t\t\t\t\t\t$(this).remove();\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t$(\".no-more-results-msg\").show();\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t});\n\n\t\t\t});\n\t\t}\n\n\t});\n\n\t// FAQ Categories on mobile\n\t$(\"#faq-categories-dropdown\").on(\"change\", function () {\n\n\t\tif ($(this).val()) {\n\t\t\twindow.location.href = $(this).val();\n\t\t}\n\n\t\treturn false;\n\n\t});\n\n\t/**\n\t * Carousel - Set equal heights to captions on mobile\n\t */\n\tlet equalCarouselSlideHeights = function(carouselSelector){\n\n\t\t$(carouselSelector).each(function(){\n\t\t\tvar items \t\t= $(\".carousel-item\", this);\n\t\t\tlet maxHeight \t= 0;\n\n\t\t\t// Show all slides\n\t\t\t$.each(items, function(i, slide){\n\n\t\t\t\t$(this).css(\"height\", \"\");\n\t\t\t\t$(\".carousel-caption\", this).css(\"height\", \"\");\n\n\t\t\t\t$(slide).addClass(\"active\");\n\n\t\t\t});\n\n\t\t\t// Get the height of the tallest caption and save it\n\t\t\t$.each(items, function(){\n\n\t\t\t\tlet caption \t\t= $(\".carousel-caption\", this);\n\t\t\t\tlet captionHeight \t= caption.outerHeight();\n\n\t\t\t\tif(captionHeight > maxHeight){\n\t\t\t\t\tmaxHeight = captionHeight;\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\t// Apply the max height to all captions\n\t\t\t$.each(items, function(){\n\n\t\t\t\tif($(window).width() >= parseInt($(\":root\").css(\"--breakpoint-lg\"))){\n\n\t\t\t\t\t$(this).css(\"height\", maxHeight);\n\n\t\t\t\t}else{\n\n\t\t\t\t\t$(\".carousel-caption\", this).css(\"height\", maxHeight);\n\n\t\t\t\t}\n\n\t\t\t\t// Remove .active from all slides\n\t\t\t\t$(this).removeClass(\"active\");\n\n\t\t\t});\n\n\t\t\t// Add the active class back to the first slide\n\t\t\t$(\".carousel-inner .carousel-item:first-of-type\", this).addClass(\"active\");\n\n\t\t});\n\t};\n\n\t/**\n\t * Testimonial - Set equal heights\n\t */\n\tlet testimonialEqualHeights = function() {\n\n\t\t$('.testimonial-large-block, .testimonial-block').each(function () {\n\t\t\tvar items \t\t= $('.carousel-item', this);\n\t\t\tlet maxHeight \t= 0;\n\n\t\t\t// Show all slides\n\t\t\t$.each( items, function( i, slide ) {\n\t\t\t\t$( slide ).addClass( 'active' );\n\t\t\t});\n\n\t\t\t// Get the height of the tallest caption and save it\n\t\t\t$.each( items, function() {\n\t\t\t\tlet caption \t\t= $('.card-body', this);\n\t\t\t\tlet captionHeight \t= caption.outerHeight();\n\n\t\t\t\tif ( captionHeight > maxHeight ) {\n\t\t\t\t\tmaxHeight = captionHeight;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Apply the max height to all captions\n\t\t\t$.each( items, function() {\n\t\t\t\tlet caption = $('.card-body', this);\n\t\t\t\tcaption.css( 'height', maxHeight );\n\n\t\t\t\t// Remove .active from all slides\n\t\t\t\t$( this ).removeClass( 'active' );\n\t\t\t});\n\n\t\t\t// Add the active class back to the first slide\n\t\t\t$('.testimonial-large-block .carousel-inner .carousel-item:first-of-type, .testimonial-block .carousel-inner .carousel-item:first-of-type').addClass('active');\n\t\t});\n\n\t};\n\n\t// Run equal heights\n\ttestimonialEqualHeights();\n\n\tlet calculateNavbarHeight = function(){\n\n\t\tlet navbarHeight = 0;\n\n\t\tif($(\"#header-search-overlay\").is(\":visible\") && ($(window).width() >= parseInt($(\":root\").css(\"--breakpoint-lg\")))){\n\n\t\t\tnavbarHeight = $(\"#header-search-overlay\").outerHeight();\n\n\t\t}else{\n\n\t\t\t$(\"body > header\").children(\":not(#header-search-overlay)\").each(function(){\n\n\t\t\t\tif($(this).is(\":visible\")){\n\t\t\t\t\tnavbarHeight += $(this).outerHeight();\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t}\n\n\t\t$(\"body > header\").css(\"--header-navbar-height\", navbarHeight + \"px\");\n\n\t};\n\n\tlet calculateTopBannerHeight = function(){\n\n\t\tlet topBannerHeight = $(\"body > header .header-top-banner\").outerHeight();\n\n\t\t$(\"body > header\").css(\"--header-top-banner-height\", topBannerHeight + \"px\");\n\n\t};\n\n\tlet fadeInMenuDropdown = function(dropdown){\n\n\t\tif($(window).width() >= parseInt($(\":root\").css(\"--desktop-menu-breakpoint\"))){\n\t\t\tdropdown.removeClass(\"fade-out\").addClass(\"fade-in\");\n\t\t}\n\n\t};\n\n\tlet fadeOutMenuDropdown = function(dropdown){\n\n\t\tif($(window).width() >= parseInt($(\":root\").css(\"--desktop-menu-breakpoint\"))){\n\t\t\tdropdown.removeClass(\"fade-in\").addClass(\"fade-out\");\n\t\t}\n\n\t};\n\n\tlet updateSinglePostProgressBar = function(){\n\n\t\tlet article = $(\".content-single .post\");\n\n\t\tif(article.length > 0){\n\n\t\t\tlet articleBottom = Math.round(article.offset().top + article.outerHeight());\n\n\t\t\tlet windowScrollBottom = $(window).innerHeight() + $(window).scrollTop();\n\n\t\t\tlet scrollProgressBarPercentage = Math.round((windowScrollBottom / articleBottom) * 10000) / 100;\n\n\t\t\tif(scrollProgressBarPercentage > 100){\n\t\t\t\tscrollProgressBarPercentage = 100;\n\t\t\t}\n\n\t\t\t$(\".content-single .post .scroll-progress-bar\").css(\"width\", scrollProgressBarPercentage + \"%\");\n\n\t\t}\n\n\t};\n\n\t// Fires event when element has scrolled up to or away from the top of it's parent\n\t$.fn.observeScrollTopChanges = function() {\n\n\t\t// Top and bottom margin values position marker element at the top of the box area of the current element, regardless of it's top margin\n\t\t// Need to increase bottom margin's negative value by 1px to compensate for marker's height\n\t\t// Essentially makes the marker invisible\n\t\tconst marker = $(\"
    \").css({\n\t\t\t\"margin-top\": this.css(\"marginTop\"),\n\t\t\t\"margin-bottom\": ((parseInt(this.css(\"marginTop\")) + 1) * -1),\n\t\t\t\"height\": \"1px\",\n\t\t});\n\n\t\t// Add to DOM before element being observed\n\t\t// When marker is hidden beyond the top of the viewport, the target element will be touching the top of the viewport\n\t\tthis.before(marker);\n\n\t\t// Create observer object\n\t\tconst scrollTopObserver = new IntersectionObserver((entries) => {\n\n\t\t\t// Width, height and scroll position of element being observed\n\t\t\tconst targetBoundingRect = entries[0].boundingClientRect;\n\t\t\t// Width height and position of viewport\n\t\t\tconst viewportBoundingRect = entries[0].rootBounds;\n\n\t\t\t// The element that should have the event triggered on it\n\t\t\t// Basically, the element that we want to know when it has reached the top of the page on scroll\n\t\t\tconst evtTrigger = entries[0].target.nextSibling;\n\n\t\t\tlet scrolledToTop = false;\n\n\t\t\t// If the entire marker element has scrolled beyond the top of the viewport\n\t\t\tif(targetBoundingRect.bottom < viewportBoundingRect.top){\n\n\t\t\t\tscrolledToTop = true;\n\n\t\t\t\t// If the entire marker element is visible again\n\t\t\t}else if(targetBoundingRect.bottom >= viewportBoundingRect.top){\n\n\t\t\t\tscrolledToTop = false;\n\n\t\t\t}\n\n\t\t\t// Create custom event and pass information about whether the element was just hit the top of the page or if it is being scrolled away\n\t\t\tconst evt = new CustomEvent(\"scroll-top-change\", {detail: {scrolledToTop: scrolledToTop}});\n\n\t\t\tevtTrigger.dispatchEvent(evt);\n\n\t\t\t// Threshold says how much of the element needs to be visible before checking for intersection\n\t\t\t// 0 means as soon as any part of the element is visible\n\t\t}, {threshold: [0]});\n\n\t\t// Start observing the marker element\n\t\tscrollTopObserver.observe(marker.get(0));\n\n\t\t// Return current element to allow for jQuery function chaining\n\t\treturn this;\n\n\t};\n\n})(jQuery, ajax_localize);","// extracted by mini-css-extract-plugin","module.exports = jQuery;"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AChgBA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7yBA;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;A","sourceRoot":""}