{"version":3,"sources":["webpack://mgstarter/./node_modules/headroom.js/dist/headroom.js","webpack://mgstarter/./node_modules/lazysizes/lazysizes.js","webpack://mgstarter/./node_modules/lazysizes/plugins/unveilhooks/ls.unveilhooks.js","webpack://mgstarter/./node_modules/pretty-dropdowns/dist/js/jquery.prettydropdowns.js","webpack://mgstarter/sal/webpack/universalModuleDefinition","webpack://mgstarter/sal/webpack/bootstrap","webpack://mgstarter/sal/src/sal.js","webpack://mgstarter/webpack/bootstrap","webpack://mgstarter/webpack/runtime/compat get default export","webpack://mgstarter/webpack/runtime/define property getters","webpack://mgstarter/webpack/runtime/hasOwnProperty shorthand","webpack://mgstarter/webpack/runtime/node module decorator","webpack://mgstarter/external \"jQuery\"","webpack://mgstarter/./node_modules/micromodal/dist/micromodal.es.js","webpack://mgstarter/./js/global.js"],"names":["factory","isBrowser","window","trackScroll","element","options","callback","rafId","isPassiveSupported","supported","addEventListener","removeEventListener","err","passiveEventsSupported","scrolled","scroller","obj","document","nodeType","isDocument","doc","win","body","html","documentElement","scrollHeight","Math","max","offsetHeight","clientHeight","height","innerHeight","scrollY","undefined","pageYOffset","parentNode","scrollTop","elementScroller","createScroller","lastScrollY","details","update","round","direction","distance","abs","isOutOfBounds","top","offset","bottom","toleranceExceeded","tolerance","handleScroll","requestAnimationFrame","eventOptions","passive","capture","destroy","cancelAnimationFrame","normalizeUpDown","t","Object","down","up","Headroom","elem","assign","this","classes","initialised","frozen","prototype","constructor","init","cutsTheMustard","addClass","setTimeout","self","scrollTracker","bind","keys","forEach","removeClass","unpin","hasClass","onUnpin","call","pin","onPin","freeze","unfreeze","onTop","notTop","onNotTop","onBottom","notBottom","onNotBottom","shouldUnpin","shouldPin","className","classList","add","apply","split","remove","every","cls","contains","pinned","unpinned","initial","exports","module","define","lazySizes","Date","lazysizes","lazySizesCfg","prop","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","fastLoadedClass","iframeLoadMode","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","getElementsByClassName","cfg","noSupport","autosizesElems","sizeElement","getSizeElement","debouncedUpdateElementsSizes","preloadElems","isCompleted","resetPreloadingTimer","started","eLvW","elvH","eLtop","eLleft","eLright","eLbottom","isBodyHidden","regImg","regIframe","supportScroll","currentExpand","isLoading","lowRuns","resetPreloading","isVisible","isNestedVisible","checkElements","throttledCheckElements","switchLoadingClass","rafedSwitchLoadingClass","rafSwitchLoadingClass","changeIframeSrc","handleSources","lazyUnveil","unveilElement","afterScroll","altLoadmodeScrollListner","onload","running","waiting","firstFns","secondFns","fns","run","rafBatch","docElem","supportPicture","HTMLPictureElement","_addEventListener","requestIdleCallback","regPicture","loadEvents","regClassCache","Array","ele","RegExp","test","setAttribute","trim","reg","replace","addRemoveLoadEvents","dom","fn","action","evt","triggerEvent","name","detail","noBubbles","noCancelable","event","createEvent","instance","initEvent","dispatchEvent","updatePolyfill","el","full","polyfill","picturefill","pf","src","reevaluate","elements","getCSS","style","getComputedStyle","getWidth","parent","width","offsetWidth","_lazysizesWidth","rAF","queue","arguments","push","hidden","_lsFlush","runFns","length","shift","rAFIt","simple","that","args","debounce","func","timeout","timestamp","later","last","now","loader","navigator","userAgent","e","target","elemExpand","outerRect","visible","offsetParent","getBoundingClientRect","left","right","lastTime","gDelay","rICTimeout","idleCallback","isPriority","delay","throttle","eLlen","i","rect","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","expand","clientWidth","_defEx","innerWidth","preloadAfterLoad","_lazyCache","getAttribute","contentWindow","location","source","sourceSrcset","isAuto","sizes","isImg","srcset","isPicture","firesLoad","defaultPrevented","nodeName","clearTimeout","getElementsByTagName","isLoaded","complete","naturalWidth","loading","autoSizer","updateElem","_","persisted","loadingElements","querySelectorAll","img","MutationObserver","observe","childList","subtree","attributes","setInterval","readyState","checkElems","unveil","_aLSL","sources","len","dataAttr","uP","aC","rC","hC","fire","gW","require","bgLoad","regBgUrlEscape","uniqueUrls","addStyleScript","cb","createElement","insertElem","rel","href","onerror","insertBefore","url","tmp","bg","poster","preload","autoplay","play","er","requireJs","backgroundImage","JSON","stringify","$","jQuery","prettyDropdown","oOptions","extend","classic","customClass","hoverIntent","multiDelimiter","multiVerbosity","selectedMarker","afterLoad","isNaN","$current","nCount","nHoverIndex","nLastIndex","nTimer","nTimestamp","aKeys","elSel","sLabelId","$select","nSize","size","sId","id","data","removeAttr","css","outerHeight","performance","$label","attr","$items","$selected","filter","bMultiple","multiple","sHtml","disabled","title","renderItem","each","selected","wrap","before","nOuterWidth","$dropdown","children","nWidth","outerWidth","updateSelected","val","append","$clone","clone","position","click","$li","nIndex","eq","prepend","text","after","value","contents","trigger","toggleClass","resetDropdown","not","nMaxHeight","nWinHeight","nOffsetTop","nScrollTop","nDropdownHeight","nDropdownBottom","index","on","focusin","off","handleKeypress","focusout","mouseenter","mouseleave","mousemove","hoverDropdownItem","handleFocus","focus","which","preventDefault","stopPropagation","sKey","bOpen","nItemsHeight","nItemsPerPage","floor","ceil","toggleHover","min","removeData","aMatches","nCurrentIndex","toLowerCase","indexOf","currentTarget","elOpt","sClass","bSelected","sTitle","sGroup","sText","o","type","bOn","bNoScroll","nItemOffset","sSelected","aSelected","map","get","join","empty","refresh","prevAll","unwrap","installedModules","__webpack_require__","moduleId","l","modules","m","c","d","getter","defineProperty","enumerable","r","Symbol","toStringTag","mode","__esModule","ns","create","key","n","object","property","hasOwnProperty","p","s","SSR_MESSAGE","NOT_SUPPORTED_MESSAGE","rootMargin","threshold","disabledClassName","enterEventName","exitEventName","selector","once","settings","animateClassName","entry","CustomEvent","bubbles","disconnect","observer","hasRepeatFlag","dataset","salRepeat","hasOnceFlag","salOnce","intersectionRatio","animate","unobserve","disableAnimations","intersectionObserver","IntersectionObserver","clearAnimation","setOptions","warn","disable","enable","reset","Error","isDisabled","__webpack_module_cache__","cachedModule","loaded","__webpack_modules__","a","definition","nmd","paths","_defineProperties","props","descriptor","configurable","writable","_toConsumableArray","arr","isArray","_arrayLikeToArray","_arrayWithoutHoles","iter","iterator","from","_iterableToArray","minLen","toString","slice","_unsupportedIterableToArray","TypeError","_nonIterableSpread","arr2","FOCUSABLE_ELEMENTS","Modal","activeModal","validateModalPresence","validateArgs","MicroModal","_ref","targetModal","_ref$triggers","triggers","_ref$onShow","onShow","_ref$onClose","onClose","_ref$openTrigger","openTrigger","_ref$closeTrigger","closeTrigger","_ref$openClass","openClass","_ref$disableScroll","disableScroll","_ref$disableFocus","disableFocus","_ref$awaitCloseAnimat","awaitCloseAnimation","_ref$awaitOpenAnimati","awaitOpenAnimation","_ref$debugMode","debugMode","Constructor","_classCallCheck","modal","getElementById","config","registerTriggers","onClick","onKeydown","protoProps","_this","_len","_key","Boolean","showModal","_this2","activeElement","scrollBehaviour","addEventListeners","handler","setFocusToFirstNode","removeEventListeners","closeModal","toggle","querySelector","overflow","hasAttribute","keyCode","retainFocus","nodes","_this3","focusableNodes","getFocusableNodes","nodesWhichAreNotCloseTargets","node","focusedItemIndex","shiftKey","console","concat","triggerMap","validateTriggerPresence","triggerAttr","generateTriggerMap","show","close","closeModalById","navIsShown","searchIsShown","cache","events","initSal","initHeadroom","getCurrentPg","inView","selectColors","initMobileDropdowns","initSmoothScroll","initStickyImg","initMicroModal","closeNavAlts","rmAuthorLinks","navActiveFixes","blogLinePosition","showFullBio","initBlogCategoriesDropdown","$doc","$win","$html","$body","$mainWrap","$header","$mobileNav","$hamburger","showMobileNav","openShareWindow","playVideo","mainNavWrapper","fadeOut","hide","fadeIn","mainSearchWrapper","searchURL","filterBlogByCategoryID","filterBlogByCategoryIdMobile","clearBlogCategoryFilter","clearBlogCategoryFilterKey","blogPaginate","blogPaginateKey","tagCheckAlerts","closest","sal","elementTop","elementBottom","viewportTop","viewportBottom","isInViewport","screen","stickyOffset","stickyEnd","find","sticky","scroll","ready","hash","pathname","hostname","toggleDrops","item","siblings","slideToggle","resize","closeFiltersModal","link","substr","open","next","theHeader","thisHref","locationHref","protocol","includes","handleAriaSelected","idx","pageNumber","thisURLParamsObj","getParams","ajaxLoadBlogPosts","current_category_ID","thisCategoryID","chosenCategoryID","totCount","selectedCount","categoryID","category_ID","page_number","ajax","php_vars","ajax_url","dataType","beforeSend","scrollTo","success","htmlResponse","history","replaceState","params","parser","vars","search","substring","pair","decodeURIComponent"],"mappings":"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","file":"js/global.43c5a38c205b74eec412.js","sourcesContent":["/*!\n * headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it\n * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js\n * License: MIT\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Headroom = factory());\n}(this, function () { 'use strict';\n\n function isBrowser() {\n return typeof window !== \"undefined\";\n }\n\n /**\n * Used to detect browser support for adding an event listener with options\n * Credit: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n */\n function passiveEventsSupported() {\n var supported = false;\n\n try {\n var options = {\n // eslint-disable-next-line getter-return\n get passive() {\n supported = true;\n }\n };\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (err) {\n supported = false;\n }\n\n return supported;\n }\n\n function isSupported() {\n return !!(\n isBrowser() &&\n function() {}.bind &&\n \"classList\" in document.documentElement &&\n Object.assign &&\n Object.keys &&\n requestAnimationFrame\n );\n }\n\n function isDocument(obj) {\n return obj.nodeType === 9; // Node.DOCUMENT_NODE === 9\n }\n\n function isWindow(obj) {\n // `obj === window` or `obj instanceof Window` is not sufficient,\n // as the obj may be the window of an iframe.\n return obj && obj.document && isDocument(obj.document);\n }\n\n function windowScroller(win) {\n var doc = win.document;\n var body = doc.body;\n var html = doc.documentElement;\n\n return {\n /**\n * @see http://james.padolsey.com/javascript/get-document-height-cross-browser/\n * @return {Number} the scroll height of the document in pixels\n */\n scrollHeight: function() {\n return Math.max(\n body.scrollHeight,\n html.scrollHeight,\n body.offsetHeight,\n html.offsetHeight,\n body.clientHeight,\n html.clientHeight\n );\n },\n\n /**\n * @see http://andylangton.co.uk/blog/development/get-viewport-size-width-and-height-javascript\n * @return {Number} the height of the viewport in pixels\n */\n height: function() {\n return win.innerHeight || html.clientHeight || body.clientHeight;\n },\n\n /**\n * Gets the Y scroll position\n * @return {Number} pixels the page has scrolled along the Y-axis\n */\n scrollY: function() {\n if (win.pageYOffset !== undefined) {\n return win.pageYOffset;\n }\n\n return (html || body.parentNode || body).scrollTop;\n }\n };\n }\n\n function elementScroller(element) {\n return {\n /**\n * @return {Number} the scroll height of the element in pixels\n */\n scrollHeight: function() {\n return Math.max(\n element.scrollHeight,\n element.offsetHeight,\n element.clientHeight\n );\n },\n\n /**\n * @return {Number} the height of the element in pixels\n */\n height: function() {\n return Math.max(element.offsetHeight, element.clientHeight);\n },\n\n /**\n * Gets the Y scroll position\n * @return {Number} pixels the element has scrolled along the Y-axis\n */\n scrollY: function() {\n return element.scrollTop;\n }\n };\n }\n\n function createScroller(element) {\n return isWindow(element) ? windowScroller(element) : elementScroller(element);\n }\n\n /**\n * @param element EventTarget\n */\n function trackScroll(element, options, callback) {\n var isPassiveSupported = passiveEventsSupported();\n var rafId;\n var scrolled = false;\n var scroller = createScroller(element);\n var lastScrollY = scroller.scrollY();\n var details = {};\n\n function update() {\n var scrollY = Math.round(scroller.scrollY());\n var height = scroller.height();\n var scrollHeight = scroller.scrollHeight();\n\n // reuse object for less memory churn\n details.scrollY = scrollY;\n details.lastScrollY = lastScrollY;\n details.direction = scrollY > lastScrollY ? \"down\" : \"up\";\n details.distance = Math.abs(scrollY - lastScrollY);\n details.isOutOfBounds = scrollY < 0 || scrollY + height > scrollHeight;\n details.top = scrollY <= options.offset[details.direction];\n details.bottom = scrollY + height >= scrollHeight;\n details.toleranceExceeded =\n details.distance > options.tolerance[details.direction];\n\n callback(details);\n\n lastScrollY = scrollY;\n scrolled = false;\n }\n\n function handleScroll() {\n if (!scrolled) {\n scrolled = true;\n rafId = requestAnimationFrame(update);\n }\n }\n\n var eventOptions = isPassiveSupported\n ? { passive: true, capture: false }\n : false;\n\n element.addEventListener(\"scroll\", handleScroll, eventOptions);\n update();\n\n return {\n destroy: function() {\n cancelAnimationFrame(rafId);\n element.removeEventListener(\"scroll\", handleScroll, eventOptions);\n }\n };\n }\n\n function normalizeUpDown(t) {\n return t === Object(t) ? t : { down: t, up: t };\n }\n\n /**\n * UI enhancement for fixed headers.\n * Hides header when scrolling down\n * Shows header when scrolling up\n * @constructor\n * @param {DOMElement} elem the header element\n * @param {Object} options options for the widget\n */\n function Headroom(elem, options) {\n options = options || {};\n Object.assign(this, Headroom.options, options);\n this.classes = Object.assign({}, Headroom.options.classes, options.classes);\n\n this.elem = elem;\n this.tolerance = normalizeUpDown(this.tolerance);\n this.offset = normalizeUpDown(this.offset);\n this.initialised = false;\n this.frozen = false;\n }\n Headroom.prototype = {\n constructor: Headroom,\n\n /**\n * Start listening to scrolling\n * @public\n */\n init: function() {\n if (Headroom.cutsTheMustard && !this.initialised) {\n this.addClass(\"initial\");\n this.initialised = true;\n\n // defer event registration to handle browser\n // potentially restoring previous scroll position\n setTimeout(\n function(self) {\n self.scrollTracker = trackScroll(\n self.scroller,\n { offset: self.offset, tolerance: self.tolerance },\n self.update.bind(self)\n );\n },\n 100,\n this\n );\n }\n\n return this;\n },\n\n /**\n * Destroy the widget, clearing up after itself\n * @public\n */\n destroy: function() {\n this.initialised = false;\n Object.keys(this.classes).forEach(this.removeClass, this);\n this.scrollTracker.destroy();\n },\n\n /**\n * Unpin the element\n * @public\n */\n unpin: function() {\n if (this.hasClass(\"pinned\") || !this.hasClass(\"unpinned\")) {\n this.addClass(\"unpinned\");\n this.removeClass(\"pinned\");\n\n if (this.onUnpin) {\n this.onUnpin.call(this);\n }\n }\n },\n\n /**\n * Pin the element\n * @public\n */\n pin: function() {\n if (this.hasClass(\"unpinned\")) {\n this.addClass(\"pinned\");\n this.removeClass(\"unpinned\");\n\n if (this.onPin) {\n this.onPin.call(this);\n }\n }\n },\n\n /**\n * Freezes the current state of the widget\n * @public\n */\n freeze: function() {\n this.frozen = true;\n this.addClass(\"frozen\");\n },\n\n /**\n * Re-enables the default behaviour of the widget\n * @public\n */\n unfreeze: function() {\n this.frozen = false;\n this.removeClass(\"frozen\");\n },\n\n top: function() {\n if (!this.hasClass(\"top\")) {\n this.addClass(\"top\");\n this.removeClass(\"notTop\");\n\n if (this.onTop) {\n this.onTop.call(this);\n }\n }\n },\n\n notTop: function() {\n if (!this.hasClass(\"notTop\")) {\n this.addClass(\"notTop\");\n this.removeClass(\"top\");\n\n if (this.onNotTop) {\n this.onNotTop.call(this);\n }\n }\n },\n\n bottom: function() {\n if (!this.hasClass(\"bottom\")) {\n this.addClass(\"bottom\");\n this.removeClass(\"notBottom\");\n\n if (this.onBottom) {\n this.onBottom.call(this);\n }\n }\n },\n\n notBottom: function() {\n if (!this.hasClass(\"notBottom\")) {\n this.addClass(\"notBottom\");\n this.removeClass(\"bottom\");\n\n if (this.onNotBottom) {\n this.onNotBottom.call(this);\n }\n }\n },\n\n shouldUnpin: function(details) {\n var scrollingDown = details.direction === \"down\";\n\n return scrollingDown && !details.top && details.toleranceExceeded;\n },\n\n shouldPin: function(details) {\n var scrollingUp = details.direction === \"up\";\n\n return (scrollingUp && details.toleranceExceeded) || details.top;\n },\n\n addClass: function(className) {\n this.elem.classList.add.apply(\n this.elem.classList,\n this.classes[className].split(\" \")\n );\n },\n\n removeClass: function(className) {\n this.elem.classList.remove.apply(\n this.elem.classList,\n this.classes[className].split(\" \")\n );\n },\n\n hasClass: function(className) {\n return this.classes[className].split(\" \").every(function(cls) {\n return this.classList.contains(cls);\n }, this.elem);\n },\n\n update: function(details) {\n if (details.isOutOfBounds) {\n // Ignore bouncy scrolling in OSX\n return;\n }\n\n if (this.frozen === true) {\n return;\n }\n\n if (details.top) {\n this.top();\n } else {\n this.notTop();\n }\n\n if (details.bottom) {\n this.bottom();\n } else {\n this.notBottom();\n }\n\n if (this.shouldUnpin(details)) {\n this.unpin();\n } else if (this.shouldPin(details)) {\n this.pin();\n }\n }\n };\n\n /**\n * Default options\n * @type {Object}\n */\n Headroom.options = {\n tolerance: {\n up: 0,\n down: 0\n },\n offset: 0,\n scroller: isBrowser() ? window : null,\n classes: {\n frozen: \"headroom--frozen\",\n pinned: \"headroom--pinned\",\n unpinned: \"headroom--unpinned\",\n top: \"headroom--top\",\n notTop: \"headroom--not-top\",\n bottom: \"headroom--bottom\",\n notBottom: \"headroom--not-bottom\",\n initial: \"headroom\"\n }\n };\n\n Headroom.cutsTheMustard = isSupported();\n\n return Headroom;\n\n}));\n","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","/*\nThis plugin extends lazySizes to lazyLoad:\nbackground images, videos/posters and scripts\n\nBackground-Image:\nFor background images, use data-bg attribute:\n
\n\n Video:\n For video/audio use data-poster and preload=\"none\":\n \n\n For video that plays automatically if in view:\n \n\n\n Scripts:\n For scripts use data-script:\n
\n\n\n Script modules using require:\n For modules using require use data-require:\n
\n*/\n\n(function(window, factory) {\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(window, function(window, document, lazySizes) {\n\t/*jshint eqnull:true */\n\t'use strict';\n\tvar bgLoad, regBgUrlEscape;\n\tvar uniqueUrls = {};\n\n\tif(document.addEventListener){\n\t\tregBgUrlEscape = /\\(|\\)|\\s|'/;\n\n\t\tbgLoad = function (url, cb){\n\t\t\tvar img = document.createElement('img');\n\t\t\timg.onload = function(){\n\t\t\t\timg.onload = null;\n\t\t\t\timg.onerror = null;\n\t\t\t\timg = null;\n\t\t\t\tcb();\n\t\t\t};\n\t\t\timg.onerror = img.onload;\n\n\t\t\timg.src = url;\n\n\t\t\tif(img && img.complete && img.onload){\n\t\t\t\timg.onload();\n\t\t\t}\n\t\t};\n\n\t\taddEventListener('lazybeforeunveil', function(e){\n\t\t\tif(e.detail.instance != lazySizes){return;}\n\n\t\t\tvar tmp, load, bg, poster;\n\t\t\tif(!e.defaultPrevented) {\n\n\t\t\t\tvar target = e.target;\n\n\t\t\t\tif(target.preload == 'none'){\n\t\t\t\t\ttarget.preload = target.getAttribute('data-preload') || 'auto';\n\t\t\t\t}\n\n\t\t\t\tif (target.getAttribute('data-autoplay') != null) {\n\t\t\t\t\tif (target.getAttribute('data-expand') && !target.autoplay) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\ttarget.play();\n\t\t\t\t\t\t} catch (er) {}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\ttarget.setAttribute('data-expand', '-10');\n\t\t\t\t\t\t\tlazySizes.aC(target, lazySizes.cfg.lazyClass);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttmp = target.getAttribute('data-link');\n\t\t\t\tif(tmp){\n\t\t\t\t\taddStyleScript(tmp, true);\n\t\t\t\t}\n\n\t\t\t\t// handle data-script\n\t\t\t\ttmp = target.getAttribute('data-script');\n\t\t\t\tif(tmp){\n\t\t\t\t\te.detail.firesLoad = true;\n\t\t\t\t\tload = function(){\n\t\t\t\t\t\te.detail.firesLoad = false;\n\t\t\t\t\t\tlazySizes.fire(target, '_lazyloaded', {}, true, true);\n\t\t\t\t\t};\n\t\t\t\t\taddStyleScript(tmp, null, load);\n\t\t\t\t}\n\n\t\t\t\t// handle data-require\n\t\t\t\ttmp = target.getAttribute('data-require');\n\t\t\t\tif(tmp){\n\t\t\t\t\tif(lazySizes.cfg.requireJs){\n\t\t\t\t\t\tlazySizes.cfg.requireJs([tmp]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddStyleScript(tmp);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// handle data-bg\n\t\t\t\tbg = target.getAttribute('data-bg');\n\t\t\t\tif (bg) {\n\t\t\t\t\te.detail.firesLoad = true;\n\t\t\t\t\tload = function(){\n\t\t\t\t\t\ttarget.style.backgroundImage = 'url(' + (regBgUrlEscape.test(bg) ? JSON.stringify(bg) : bg ) + ')';\n\t\t\t\t\t\te.detail.firesLoad = false;\n\t\t\t\t\t\tlazySizes.fire(target, '_lazyloaded', {}, true, true);\n\t\t\t\t\t};\n\n\t\t\t\t\tbgLoad(bg, load);\n\t\t\t\t}\n\n\t\t\t\t// handle data-poster\n\t\t\t\tposter = target.getAttribute('data-poster');\n\t\t\t\tif(poster){\n\t\t\t\t\te.detail.firesLoad = true;\n\t\t\t\t\tload = function(){\n\t\t\t\t\t\ttarget.poster = poster;\n\t\t\t\t\t\te.detail.firesLoad = false;\n\t\t\t\t\t\tlazySizes.fire(target, '_lazyloaded', {}, true, true);\n\t\t\t\t\t};\n\n\t\t\t\t\tbgLoad(poster, load);\n\n\t\t\t\t}\n\t\t\t}\n\t\t}, false);\n\n\t}\n\n\tfunction addStyleScript(src, style, cb){\n\t\tif(uniqueUrls[src]){\n\t\t\treturn;\n\t\t}\n\t\tvar elem = document.createElement(style ? 'link' : 'script');\n\t\tvar insertElem = document.getElementsByTagName('script')[0];\n\n\t\tif(style){\n\t\t\telem.rel = 'stylesheet';\n\t\t\telem.href = src;\n\t\t} else {\n\t\t\telem.onload = function(){\n\t\t\t\telem.onerror = null;\n\t\t\t\telem.onload = null;\n\t\t\t\tcb();\n\t\t\t};\n\t\t\telem.onerror = elem.onload;\n\n\t\t\telem.src = src;\n\t\t}\n\t\tuniqueUrls[src] = true;\n\t\tuniqueUrls[elem.src || elem.href] = true;\n\t\tinsertElem.parentNode.insertBefore(elem, insertElem);\n\t}\n}));\n","/*!\n * jQuery Pretty Dropdowns Plugin v4.17.0 by T. H. Doan (https://thdoan.github.io/pretty-dropdowns/)\n *\n * jQuery Pretty Dropdowns by T. H. Doan is licensed under the MIT License.\n * Read a copy of the license in the LICENSE file or at https://choosealicense.com/licenses/mit/\n */\n\n(function($) {\n $.fn.prettyDropdown = function(oOptions) {\n\n // Default options\n oOptions = $.extend({\n classic: false,\n customClass: 'arrow',\n width: null,\n height: 50,\n hoverIntent: 200,\n multiDelimiter: '; ',\n multiVerbosity: 99,\n selectedMarker: '✓',\n afterLoad: function(){}\n }, oOptions);\n\n oOptions.selectedMarker = ' ' + oOptions.selectedMarker + '';\n // Validate options\n if (isNaN(oOptions.width) && !/^\\d+%$/.test(oOptions.width)) oOptions.width = null;\n if (isNaN(oOptions.height)) oOptions.height = 50;\n else if (oOptions.height<8) oOptions.height = 8;\n if (isNaN(oOptions.hoverIntent)) oOptions.hoverIntent = 200;\n if (isNaN(oOptions.multiVerbosity)) oOptions.multiVerbosity = 99;\n\n // Translatable strings\n var MULTI_NONE = 'None selected',\n MULTI_PREFIX = 'Selected: ',\n MULTI_POSTFIX = ' selected';\n\n // Globals\n var $current,\n aKeys = [\n '0','1','2','3','4','5','6','7','8','9',,,,,,,,\n 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'\n ],\n nCount,\n nHoverIndex,\n nLastIndex,\n nTimer,\n nTimestamp,\n\n // Initiate pretty drop-downs\n init = function(elSel) {\n var $select = $(elSel),\n nSize = elSel.size,\n sId = elSel.name || elSel.id || '',\n sLabelId;\n // Exit if widget has already been initiated\n if ($select.data('loaded')) return;\n // Remove 'size' attribute to it doesn't affect vertical alignment\n $select.data('size', nSize).removeAttr('size');\n // Set element\n $dropdown.children(':not(.selected)').each(function(nIndex) {\n $('optgroup, option', $select).eq(nIndex).prop('selected', $(this).children('span.checked').length>0);\n });\n // Update selected values for multi-select menu\n updateSelected($dropdown);\n } else {\n $selected.removeClass('selected').children('span.checked').remove();\n $li.addClass('selected').append(oOptions.selectedMarker);\n if (!oOptions.classic) $dropdown.prepend($li);\n $dropdown.removeClass('reverse').attr('aria-activedescendant', $li.attr('id'));\n if ($selected.data('group') && !oOptions.classic) $dropdown.children('.label').filter(function() {\n return $(this).text()===$selected.data('group');\n }).after($selected);\n // Sync to reflect state changes\n this.refresh = function(oOptions) {\n return this.each(function() {\n var $select = $(this);\n $select.prevAll('ul').remove();\n $select.unwrap().data('loaded', false);\n this.size = $select.data('size');\n init(this);\n });\n };\n\n return this.each(function() {\n init(this);\n });\n\n };\n}(jQuery));\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"sal\"] = factory();\n\telse\n\t\troot[\"sal\"] = factory();\n})(this, function() {\nreturn "," \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 = \"dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/**\n * Sal - Scroll Animation Library\n * Performance focused, lightweight scroll animation library\n */\n\nimport './sal.scss';\n\nconst SSR_MESSAGE = 'Sal was not initialised! Probably it is used in SSR.';\n\nconst NOT_SUPPORTED_MESSAGE = ''\n + 'Your browser does not support IntersectionObserver!\\n'\n + 'Get a polyfill from here:\\n'\n + 'https://github.com/w3c/IntersectionObserver/tree/master/polyfill';\n\n/**\n * Default options\n */\nlet options = {\n rootMargin: '0% 50%',\n threshold: 0.5,\n animateClassName: 'sal-animate',\n disabledClassName: 'sal-disabled',\n enterEventName: 'sal:in',\n exitEventName: 'sal:out',\n selector: '[data-sal]',\n once: true,\n disabled: false,\n};\n\n/**\n * Private\n */\nlet elements = [];\nlet intersectionObserver = null;\n\n/**\n * Set options\n * @param {Object} settings\n */\nconst setOptions = (settings) => {\n if (settings && settings !== options) {\n options = {\n ...options,\n ...settings,\n };\n }\n};\n\n/**\n * Clear animation for given element\n * @param {HTMLElement} element\n */\nconst clearAnimation = (element) => {\n element.classList.remove(options.animateClassName);\n};\n\n/**\n * Dispatches the animate event on the intersection observer entry.\n * @param {IntersectionObserverEntry} detail The entry to fire event on.\n */\nconst fireEvent = (name, entry) => {\n const event = new CustomEvent(name, {\n bubbles: true,\n detail: entry,\n });\n\n entry.target.dispatchEvent(event);\n};\n\n/**\n * Launch animation by adding class\n * @param {IntersectionObserverEntry} entry\n */\nconst animate = (entry) => {\n entry.target.classList.add(options.animateClassName);\n fireEvent(options.enterEventName, entry);\n};\n\n/**\n * Reverse animation by removing class\n * @param {IntersectionObserverEntry} entry\n */\nconst reverse = (entry) => {\n clearAnimation(entry.target);\n fireEvent(options.exitEventName, entry);\n};\n\n/**\n * Check if element was animated\n * @param {HTMLElement} element\n */\nconst isAnimated = (element) => (\n element.classList.contains(options.animateClassName)\n);\n\n/**\n * Enable animations by remove class from body\n */\nconst enableAnimations = () => {\n document.body.classList.remove(options.disabledClassName);\n};\n\n/**\n * Disable animations by add class from body\n */\nconst disableAnimations = () => {\n document.body.classList.add(options.disabledClassName);\n};\n\n/**\n * Clears observer\n */\nconst clearObserver = () => {\n intersectionObserver.disconnect();\n intersectionObserver = null;\n};\n\n/**\n * Check if should be disabled\n * @return {Boolean}\n */\nconst isDisabled = () => (\n options.disabled\n || (\n (typeof options.disabled === 'function')\n && options.disabled()\n )\n);\n\n/**\n * IntersectionObserver callback\n * @param {Array} entries\n * @param {IntersectionObserver} observer\n */\nconst onIntersection = (entries, observer) => {\n entries.forEach((entry) => {\n const { target } = entry;\n const hasRepeatFlag = target.dataset.salRepeat !== undefined;\n const hasOnceFlag = target.dataset.salOnce !== undefined;\n const shouldRepeat = hasRepeatFlag || !(hasOnceFlag || options.once);\n\n if (entry.intersectionRatio >= options.threshold) {\n animate(entry);\n\n if (!shouldRepeat) {\n observer.unobserve(target);\n }\n } else if (shouldRepeat) {\n reverse(entry);\n }\n });\n};\n\n/**\n * Disable sal\n */\nconst disable = () => {\n disableAnimations();\n clearObserver();\n};\n\n/**\n * Enable sal by launching new IntersectionObserver\n */\nconst enable = () => {\n enableAnimations();\n\n intersectionObserver = new IntersectionObserver(onIntersection, {\n rootMargin: options.rootMargin,\n threshold: options.threshold,\n });\n\n elements = [].filter.call(\n document.querySelectorAll(options.selector),\n (element) => !isAnimated(element, options.animateClassName),\n );\n\n elements.forEach((element) => intersectionObserver.observe(element));\n};\n\n/**\n * Reset instance and provide new settings\n * @param {Object} settings\n */\nconst reset = (settings = {}) => {\n clearObserver();\n\n Array.from(document.querySelectorAll(options.selector))\n .forEach(clearAnimation);\n\n setOptions(settings);\n enable();\n};\n\n/**\n * Init\n * @param {Object} settings\n * @return {Object} public API\n */\nconst init = (settings = options) => {\n setOptions(settings);\n\n // Early return, when window object is not defined\n // e.g. during Server Side Rendering\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(SSR_MESSAGE);\n\n return {\n elements,\n disable,\n enable,\n reset,\n };\n }\n\n if (!window.IntersectionObserver) {\n disableAnimations();\n\n throw Error(NOT_SUPPORTED_MESSAGE);\n }\n\n if (!isDisabled()) {\n enable();\n } else {\n disableAnimations();\n }\n\n return {\n elements,\n disable,\n enable,\n reset,\n };\n};\n\nexport default init;\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\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","const __WEBPACK_NAMESPACE_OBJECT__ = jQuery;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar MicroModal = function () {\n\n var FOCUSABLE_ELEMENTS = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])', 'select:not([disabled]):not([aria-hidden])', 'textarea:not([disabled]):not([aria-hidden])', 'button:not([disabled]):not([aria-hidden])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^=\"-\"])'];\n\n var Modal = /*#__PURE__*/function () {\n function Modal(_ref) {\n var targetModal = _ref.targetModal,\n _ref$triggers = _ref.triggers,\n triggers = _ref$triggers === void 0 ? [] : _ref$triggers,\n _ref$onShow = _ref.onShow,\n onShow = _ref$onShow === void 0 ? function () {} : _ref$onShow,\n _ref$onClose = _ref.onClose,\n onClose = _ref$onClose === void 0 ? function () {} : _ref$onClose,\n _ref$openTrigger = _ref.openTrigger,\n openTrigger = _ref$openTrigger === void 0 ? 'data-micromodal-trigger' : _ref$openTrigger,\n _ref$closeTrigger = _ref.closeTrigger,\n closeTrigger = _ref$closeTrigger === void 0 ? 'data-micromodal-close' : _ref$closeTrigger,\n _ref$openClass = _ref.openClass,\n openClass = _ref$openClass === void 0 ? 'is-open' : _ref$openClass,\n _ref$disableScroll = _ref.disableScroll,\n disableScroll = _ref$disableScroll === void 0 ? false : _ref$disableScroll,\n _ref$disableFocus = _ref.disableFocus,\n disableFocus = _ref$disableFocus === void 0 ? false : _ref$disableFocus,\n _ref$awaitCloseAnimat = _ref.awaitCloseAnimation,\n awaitCloseAnimation = _ref$awaitCloseAnimat === void 0 ? false : _ref$awaitCloseAnimat,\n _ref$awaitOpenAnimati = _ref.awaitOpenAnimation,\n awaitOpenAnimation = _ref$awaitOpenAnimati === void 0 ? false : _ref$awaitOpenAnimati,\n _ref$debugMode = _ref.debugMode,\n debugMode = _ref$debugMode === void 0 ? false : _ref$debugMode;\n\n _classCallCheck(this, Modal);\n\n // Save a reference of the modal\n this.modal = document.getElementById(targetModal); // Save a reference to the passed config\n\n this.config = {\n debugMode: debugMode,\n disableScroll: disableScroll,\n openTrigger: openTrigger,\n closeTrigger: closeTrigger,\n openClass: openClass,\n onShow: onShow,\n onClose: onClose,\n awaitCloseAnimation: awaitCloseAnimation,\n awaitOpenAnimation: awaitOpenAnimation,\n disableFocus: disableFocus\n }; // Register click events only if pre binding eventListeners\n\n if (triggers.length > 0) this.registerTriggers.apply(this, _toConsumableArray(triggers)); // pre bind functions for event listeners\n\n this.onClick = this.onClick.bind(this);\n this.onKeydown = this.onKeydown.bind(this);\n }\n /**\n * Loops through all openTriggers and binds click event\n * @param {array} triggers [Array of node elements]\n * @return {void}\n */\n\n\n _createClass(Modal, [{\n key: \"registerTriggers\",\n value: function registerTriggers() {\n var _this = this;\n\n for (var _len = arguments.length, triggers = new Array(_len), _key = 0; _key < _len; _key++) {\n triggers[_key] = arguments[_key];\n }\n\n triggers.filter(Boolean).forEach(function (trigger) {\n trigger.addEventListener('click', function (event) {\n return _this.showModal(event);\n });\n });\n }\n }, {\n key: \"showModal\",\n value: function showModal() {\n var _this2 = this;\n\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n this.activeElement = document.activeElement;\n this.modal.setAttribute('aria-hidden', 'false');\n this.modal.classList.add(this.config.openClass);\n this.scrollBehaviour('disable');\n this.addEventListeners();\n\n if (this.config.awaitOpenAnimation) {\n var handler = function handler() {\n _this2.modal.removeEventListener('animationend', handler, false);\n\n _this2.setFocusToFirstNode();\n };\n\n this.modal.addEventListener('animationend', handler, false);\n } else {\n this.setFocusToFirstNode();\n }\n\n this.config.onShow(this.modal, this.activeElement, event);\n }\n }, {\n key: \"closeModal\",\n value: function closeModal() {\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var modal = this.modal;\n this.modal.setAttribute('aria-hidden', 'true');\n this.removeEventListeners();\n this.scrollBehaviour('enable');\n\n if (this.activeElement && this.activeElement.focus) {\n this.activeElement.focus();\n }\n\n this.config.onClose(this.modal, this.activeElement, event);\n\n if (this.config.awaitCloseAnimation) {\n var openClass = this.config.openClass; // <- old school ftw\n\n this.modal.addEventListener('animationend', function handler() {\n modal.classList.remove(openClass);\n modal.removeEventListener('animationend', handler, false);\n }, false);\n } else {\n modal.classList.remove(this.config.openClass);\n }\n }\n }, {\n key: \"closeModalById\",\n value: function closeModalById(targetModal) {\n this.modal = document.getElementById(targetModal);\n if (this.modal) this.closeModal();\n }\n }, {\n key: \"scrollBehaviour\",\n value: function scrollBehaviour(toggle) {\n if (!this.config.disableScroll) return;\n var body = document.querySelector('body');\n\n switch (toggle) {\n case 'enable':\n Object.assign(body.style, {\n overflow: ''\n });\n break;\n\n case 'disable':\n Object.assign(body.style, {\n overflow: 'hidden'\n });\n break;\n }\n }\n }, {\n key: \"addEventListeners\",\n value: function addEventListeners() {\n this.modal.addEventListener('touchstart', this.onClick);\n this.modal.addEventListener('click', this.onClick);\n document.addEventListener('keydown', this.onKeydown);\n }\n }, {\n key: \"removeEventListeners\",\n value: function removeEventListeners() {\n this.modal.removeEventListener('touchstart', this.onClick);\n this.modal.removeEventListener('click', this.onClick);\n document.removeEventListener('keydown', this.onKeydown);\n }\n }, {\n key: \"onClick\",\n value: function onClick(event) {\n if (event.target.hasAttribute(this.config.closeTrigger)) {\n this.closeModal(event);\n }\n }\n }, {\n key: \"onKeydown\",\n value: function onKeydown(event) {\n if (event.keyCode === 27) this.closeModal(event); // esc\n\n if (event.keyCode === 9) this.retainFocus(event); // tab\n }\n }, {\n key: \"getFocusableNodes\",\n value: function getFocusableNodes() {\n var nodes = this.modal.querySelectorAll(FOCUSABLE_ELEMENTS);\n return Array.apply(void 0, _toConsumableArray(nodes));\n }\n /**\n * Tries to set focus on a node which is not a close trigger\n * if no other nodes exist then focuses on first close trigger\n */\n\n }, {\n key: \"setFocusToFirstNode\",\n value: function setFocusToFirstNode() {\n var _this3 = this;\n\n if (this.config.disableFocus) return;\n var focusableNodes = this.getFocusableNodes(); // no focusable nodes\n\n if (focusableNodes.length === 0) return; // remove nodes on whose click, the modal closes\n // could not think of a better name :(\n\n var nodesWhichAreNotCloseTargets = focusableNodes.filter(function (node) {\n return !node.hasAttribute(_this3.config.closeTrigger);\n });\n if (nodesWhichAreNotCloseTargets.length > 0) nodesWhichAreNotCloseTargets[0].focus();\n if (nodesWhichAreNotCloseTargets.length === 0) focusableNodes[0].focus();\n }\n }, {\n key: \"retainFocus\",\n value: function retainFocus(event) {\n var focusableNodes = this.getFocusableNodes(); // no focusable nodes\n\n if (focusableNodes.length === 0) return;\n /**\n * Filters nodes which are hidden to prevent\n * focus leak outside modal\n */\n\n focusableNodes = focusableNodes.filter(function (node) {\n return node.offsetParent !== null;\n }); // if disableFocus is true\n\n if (!this.modal.contains(document.activeElement)) {\n focusableNodes[0].focus();\n } else {\n var focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n }\n }\n }]);\n\n return Modal;\n }();\n /**\n * Modal prototype ends.\n * Here on code is responsible for detecting and\n * auto binding event handlers on modal triggers\n */\n // Keep a reference to the opened modal\n\n\n var activeModal = null;\n /**\n * Generates an associative array of modals and it's\n * respective triggers\n * @param {array} triggers An array of all triggers\n * @param {string} triggerAttr The data-attribute which triggers the module\n * @return {array}\n */\n\n var generateTriggerMap = function generateTriggerMap(triggers, triggerAttr) {\n var triggerMap = [];\n triggers.forEach(function (trigger) {\n var targetModal = trigger.attributes[triggerAttr].value;\n if (triggerMap[targetModal] === undefined) triggerMap[targetModal] = [];\n triggerMap[targetModal].push(trigger);\n });\n return triggerMap;\n };\n /**\n * Validates whether a modal of the given id exists\n * in the DOM\n * @param {number} id The id of the modal\n * @return {boolean}\n */\n\n\n var validateModalPresence = function validateModalPresence(id) {\n if (!document.getElementById(id)) {\n console.warn(\"MicroModal: \\u2757Seems like you have missed %c'\".concat(id, \"'\"), 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', 'ID somewhere in your code. Refer example below to resolve it.');\n console.warn(\"%cExample:\", 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', \"
\"));\n return false;\n }\n };\n /**\n * Validates if there are modal triggers present\n * in the DOM\n * @param {array} triggers An array of data-triggers\n * @return {boolean}\n */\n\n\n var validateTriggerPresence = function validateTriggerPresence(triggers) {\n if (triggers.length <= 0) {\n console.warn(\"MicroModal: \\u2757Please specify at least one %c'micromodal-trigger'\", 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', 'data attribute.');\n console.warn(\"%cExample:\", 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', \"\");\n return false;\n }\n };\n /**\n * Checks if triggers and their corresponding modals\n * are present in the DOM\n * @param {array} triggers Array of DOM nodes which have data-triggers\n * @param {array} triggerMap Associative array of modals and their triggers\n * @return {boolean}\n */\n\n\n var validateArgs = function validateArgs(triggers, triggerMap) {\n validateTriggerPresence(triggers);\n if (!triggerMap) return true;\n\n for (var id in triggerMap) {\n validateModalPresence(id);\n }\n\n return true;\n };\n /**\n * Binds click handlers to all modal triggers\n * @param {object} config [description]\n * @return void\n */\n\n\n var init = function init(config) {\n // Create an config object with default openTrigger\n var options = Object.assign({}, {\n openTrigger: 'data-micromodal-trigger'\n }, config); // Collects all the nodes with the trigger\n\n var triggers = _toConsumableArray(document.querySelectorAll(\"[\".concat(options.openTrigger, \"]\"))); // Makes a mappings of modals with their trigger nodes\n\n\n var triggerMap = generateTriggerMap(triggers, options.openTrigger); // Checks if modals and triggers exist in dom\n\n if (options.debugMode === true && validateArgs(triggers, triggerMap) === false) return; // For every target modal creates a new instance\n\n for (var key in triggerMap) {\n var value = triggerMap[key];\n options.targetModal = key;\n options.triggers = _toConsumableArray(value);\n activeModal = new Modal(options); // eslint-disable-line no-new\n }\n };\n /**\n * Shows a particular modal\n * @param {string} targetModal [The id of the modal to display]\n * @param {object} config [The configuration object to pass]\n * @return {void}\n */\n\n\n var show = function show(targetModal, config) {\n var options = config || {};\n options.targetModal = targetModal; // Checks if modals and triggers exist in dom\n\n if (options.debugMode === true && validateModalPresence(targetModal) === false) return; // clear events in case previous modal wasn't close\n\n if (activeModal) activeModal.removeEventListeners(); // stores reference to active modal\n\n activeModal = new Modal(options); // eslint-disable-line no-new\n\n activeModal.showModal();\n };\n /**\n * Closes the active modal\n * @param {string} targetModal [The id of the modal to close]\n * @return {void}\n */\n\n\n var close = function close(targetModal) {\n targetModal ? activeModal.closeModalById(targetModal) : activeModal.closeModal();\n };\n\n return {\n init: init,\n show: show,\n close: close\n };\n}();\nwindow.MicroModal = MicroModal;\n\nexport default MicroModal;\n","import $ from 'jquery';\nimport 'lazysizes';\nimport 'lazysizes/plugins/unveilhooks/ls.unveilhooks';\nimport Headroom from 'headroom.js';\nimport sal from 'sal.js';\nimport prettyDropdown from 'pretty-dropdowns';\nimport MicroModal from 'micromodal';\n//Global Vars\nlet navIsShown = false;\nlet searchIsShown = false;\n\nconst Mangrove = {\n init() {\n this.cache();\n this.events();\n this.initSal();\n this.initHeadroom();\n this.getCurrentPg();\n this.inView();\n this.selectColors();\n this.initMobileDropdowns();\n this.initSmoothScroll();\n this.initStickyImg();\n this.initMicroModal();\n this.closeNavAlts();\n this.rmAuthorLinks();\n this.navActiveFixes();\n if ($(\"body\").hasClass(\"single-post\")) {\n this.blogLinePosition();\n }\n if ($(\"body\").hasClass(\"single-team-member\")) {\n this.showFullBio();\n }\n this.initBlogCategoriesDropdown();\n },\n cache() {\n this.$doc = $(document);\n this.$win = $(window);\n this.$html = $('html');\n this.$body = $('body');\n this.$mainWrap = $('main');\n this.$header = $('.js-header');\n this.$mobileNav = $('.js-mobile-nav');\n this.$hamburger = $('.js-hamburger');\n },\n events() {\n this.$doc.on('click', '.js-hamburger', event => this.showMobileNav(event));\n this.$doc.on('click', '.js-share', event => this.openShareWindow(event));\n this.$doc.on('click', '.js-video-play', event => this.playVideo(event));\n this.$doc.on('click', '.js-show-hide-nav', event => {\n let mainNavWrapper = $('.nav--wrapper');\n event.preventDefault();\n if (!navIsShown) {\n mainNavWrapper.fadeIn();\n $(event.currentTarget).hide();\n $('.nav-link-group--close').css('display', 'block');\n $('header.header').addClass('header--bg-white');\n $('header.header').addClass('header--box-shadow');\n $('.js-show-hide-nav').attr('aria-expanded', 'true');\n $('body').addClass('menu-open');\n navIsShown = true;\n } else {\n mainNavWrapper.fadeOut();\n $(event.currentTarget).hide();\n $('.nav-link-group--open').show();\n $('header.header').removeClass('header--bg-white');\n $('header.header').removeClass('header--box-shadow');\n $('.js-show-hide-nav').attr('aria-expanded', 'false');\n $('body').removeClass('menu-open');\n navIsShown = false;\n }\n },\n );\n this.$doc.on('click', '.js-show-hide-search', event => {\n let mainSearchWrapper = $('.js-search-bar');\n event.preventDefault();\n if (!searchIsShown) {\n mainSearchWrapper.fadeIn();\n $('.js-show-hide-search').attr('aria-expanded', 'true');\n $('body').addClass('search-open');\n searchIsShown = true;\n } else {\n mainSearchWrapper.fadeOut();\n $('.js-show-hide-search').attr('aria-expanded', 'false');\n $('body').removeClass('search-open');\n searchIsShown = false;\n }\n },\n );\n // Execute a function when the user presses a key on the keyboard\n this.$doc.on('keydown', '[js-search-input]', event => {\n // Number 13 is the \"Enter\" key on the keyboard\n if (event.keyCode === 13) {\n // Cancel the default action, if needed\n event.preventDefault();\n // Trigger the button element with a click\n let searchInputValue = $('[js-search-input]').val();\n let searchURL = '/?s=' + searchInputValue;\n // Redirect user to same page with search query params\n window.location.replace( searchURL );\n }\n });\n this.$doc.on('click', '[js-filter-blog]', event => this.filterBlogByCategoryID(event));\n this.$doc.on('change', '.blog-landing [js-filter-blog-categories-dropdown]', event => this.filterBlogByCategoryIdMobile(event));\n this.$doc.on('click', '.js-clear-category-filter', event => this.clearBlogCategoryFilter(event));\n this.$doc.on('keypress', '.js-clear-category-filter', event => this.clearBlogCategoryFilterKey(event));\n this.$doc.on('click', '.blog-landing [js-paginate]', event => this.blogPaginate(event));\n this.$doc.on('keypress', '.blog-landing [js-paginate]', event => this.blogPaginateKey(event));\n this.$doc.on('change', '.js-tags-check', event => this.tagCheckAlerts(event));\n },\n navActiveFixes() {\n if (window.location.href.indexOf(\"current_category_ID=39\") > -1) {\n this.$body.addClass('events');\n }\n },\n closeNavAlts() {\n $(document).on('keydown', function(event) {\n if ( $('body').hasClass('menu-open') && (event.key == \"Escape\") ) {\n let mainNavWrapper = $('.nav--wrapper');\n mainNavWrapper.fadeOut();\n $('.nav-link-group--close').hide();\n $('.nav-link-group--open').show();\n $('header.header').removeClass('header--bg-white');\n $('header.header').removeClass('header--box-shadow');\n $('.js-show-hide-nav').attr('aria-expanded', 'false');\n $('body').removeClass('menu-open');\n navIsShown = false;\n }\n if ( $('body').hasClass('search-open') && (event.key == \"Escape\") ) {\n let mainSearchWrapper = $('.js-search-bar');\n mainSearchWrapper.fadeOut();\n $('.js-show-hide-search').attr('aria-expanded', 'false');\n $('body').removeClass('search-open');\n searchIsShown = false;\n }\n });\n document.addEventListener('focusin', function() {\n if( (!document.activeElement.classList.contains('js-show-hide-nav')) && (document.activeElement.closest(\".nav--wrapper\") == null) ) {\n let mainNavWrapper = $('.nav--wrapper');\n mainNavWrapper.fadeOut();\n $('.nav-link-group--close').hide();\n $('.nav-link-group--open').show();\n $('header.header').removeClass('header--bg-white');\n $('header.header').removeClass('header--box-shadow');\n $('.js-show-hide-nav').attr('aria-expanded', 'false');\n $('body').removeClass('menu-open');\n navIsShown = false;\n }\n if( (!document.activeElement.classList.contains('js-show-hide-search')) && (document.activeElement.closest(\".js-search-bar\") == null) ) {\n let mainSearchWrapper = $('.js-search-bar');\n mainSearchWrapper.fadeOut();\n $('.js-show-hide-search').attr('aria-expanded', 'false');\n $('body').removeClass('search-open');\n searchIsShown = false;\n }\n }, true);\n },\n initSal() {\n sal();\n },\n rmAuthorLinks() {\n if ( $('.single-post__author').length ) {\n $('.pp-multiple-authors-layout-inline a').contents().unwrap().wrap('');\n }\n },\n inView() {\n $.fn.isInViewport = function() {\n var elementTop = $(this).offset().top;\n var elementBottom = elementTop + $(this).outerHeight();\n var viewportTop = $(window).scrollTop();\n var viewportBottom = viewportTop + $(window).height();\n return elementBottom > viewportTop && elementTop < viewportBottom;\n };\n $(window).on('resize scroll', function() {\n $('.js-anim').each(function() {\n if ($(this).isInViewport()) {\n $(this).addClass('visible');\n }\n });\n });\n },\n blogLinePosition() {\n if (screen.width > 1000) {\n var offset = $('.single-post__header').height() + $('.single-post__image').height() + 130;\n $('.single-post__line-anim').css('top', offset);\n }\n },\n initStickyImg() {\n $(window).on('resize scroll', function() {\n if ($(window).width() > 699 && $('.js-sticky').length ) {\n $('.js-sticky').each(function() {\n var el = $(this),\n stickyOffset = el.offset().top - 145,\n stickyEnd = el.find('.js-sticky-end').offset().top,\n sticky = el.find('.text-image__image'),\n width = sticky.width();\n scroll = $(window).scrollTop();\n\n if (scroll >= stickyOffset) {\n sticky.addClass('fixed');\n el.find('.text-image__image > div').css('width', width);\n }\n else {\n sticky.removeClass('fixed');\n }\n if ( (el.find('.text-image__image > div').offset().top + el.find('.text-image__image > div').height()) >= stickyEnd ) {\n sticky.addClass('stopfixed');\n }\n if ( ((el.find('.text-image__image > div').offset().top) - scroll) >= 145 ) {\n sticky.removeClass('stopfixed');\n }\n });\n }\n });\n },\n selectColors() {\n $('select').on('change', function() {\n if ($(this).val()) {\n return $(this).css('color', '#081f40');\n } else {\n return $(this).css('color', '#5d6770');\n }\n });\n },\n showFullBio() {\n $('.js-bio-swap').click(function() {\n $('.js-bio-full').toggleClass('hidden');\n $('.js-bio').toggleClass('hidden');\n $('html, body').animate({\n scrollTop: $('.single-team-member__bio').not('.hidden').offset().top - 200\n }, 500);\n });\n },\n initSmoothScroll() {\n $(document).ready(function() {\n if(window.location.hash) {\n $('html, body').animate({\n scrollTop: $(window.location.hash).offset().top -150\n }, 500 );\n }\n });\n $('a[href*=\"#\"]')\n .not('[href=\"#\"]')\n .not('[href=\"#0\"]')\n .click(function(event) {\n if (\n location.pathname.replace(/^\\//, '') == this.pathname.replace(/^\\//, '')\n &&\n location.hostname == this.hostname\n ) {\n var target = $(this.hash);\n target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');\n if (target.length) {\n if (target.find('.building-block__title').length > 0) {\n var id = target.attr('id');\n event.preventDefault();\n $('html, body').animate({\n scrollTop: $(\"#\"+id+\" .building-block__title\").offset().top - 150\n }, 500);\n } else {\n event.preventDefault();\n $('html, body').animate({\n scrollTop: target.offset().top - 150\n }, 500 );\n }\n }\n }\n });\n },\n initMobileDropdowns() {\n var toggleDrops = function() {\n $( \".menu-group\" ).each(function() {\n var el = $(this)\n if ( el.find('.sub-menu-items__item').length ) {\n el.addClass('menu-item-has-children');\n }\n });\n $('.menu-group.menu-item-has-children').attr('aria-expanded', 'false');\n $('.menu-group.menu-item-has-children').append( '');\n $('.menu-group.menu-item-has-children > span').click(function() {\n var item = $(this)\n item.siblings('.sub-menu-items').slideToggle(500);\n item.parent().toggleClass('submenu-active');\n item.parent().attr('aria-expanded',\n item.parent().attr('aria-expanded')=='false' ? 'true' : 'false'\n );\n });\n };\n if ($(window).width() < 1000) {\n toggleDrops();\n }\n $( window ).resize(function() {\n if ($(window).width() > 1000) {\n $('.menu-group.menu-item-has-children').prop('aria-expanded', null );\n $('.sub-menu-items').show();\n $('.menu-drop-toggle').hide();\n } else {\n toggleDrops();\n }\n });\n },\n initMicroModal() {\n MicroModal.init({\n onShow: function () {\n $('html').css('overflow', 'hidden');\n },\n onClose: function() {\n $('html').css('overflow', 'scroll');\n }\n });\n\n window.closeFiltersModal = () => {\n MicroModal.close('modalTagsFilter');\n }\n },\n openShareWindow(event) {\n let link = $(event.currentTarget).attr('href');\n if (link.substr(0, 6) != 'mailto') {\n event.preventDefault();\n window.open(link, '', 'width=600, height=400');\n }\n },\n playVideo(event) {\n let vid = $(event.currentTarget).next('.js-video')\n vid.trigger('play');\n $(event.currentTarget).addClass('played');\n },\n initHeadroom() {\n let theHeader = document.querySelector('.js-header');\n let headroom = new Headroom(theHeader, { offset: 0 });\n headroom.init();\n },\n getCurrentPg() {\n $('.js-subnav a[href]').filter(function() {\n let thisHref = this.href;\n let locationHref = window.location.href;\n thisHref = thisHref.replace(window.location.protocol + '//', '');\n locationHref = locationHref.replace(window.location.protocol + '//', '');\n return thisHref === locationHref;\n }).addClass('current-page');\n\n $('.js-subnav a[href]').on('click', (e) => {\n if ($(e.currentTarget).attr('href').includes('/#')) {\n $(e.currentTarget).addClass('current-page');\n } else {\n return;\n }\n })\n },\n initBlogCategoriesDropdown() {\n $('.blog-landing select').prettyDropdown({\n width : 100 + '%',\n height: '45px',\n classic : true,\n customClass : 'dropdown-mobile-category-picker',\n selectedMarker : ''\n });\n\n handleAriaSelected();\n\n $('.dropdown-mobile-category-picker').find('select').on('change', () => {\n handleAriaSelected();\n });\n\n function handleAriaSelected() {\n $('.dropdown-mobile-category-picker').find('li').each( (idx, el) => {\n if($(el).hasClass('selected')) {\n $(el).attr('aria-selected', 'true');\n }else {\n $(el).attr('aria-selected', 'false');\n }\n });\n }\n },\n showMobileNav(event) {\n event.preventDefault();\n this.$mobileNav.toggleClass('is-active');\n this.$hamburger.toggleClass('is-active');\n if (this.$mobileNav.hasClass('is-active')) {\n this.$hamburger.attr('aria-pressed', 'true');\n } else {\n this.$hamburger.removeAttr('aria-pressed');\n }\n },\n\n blogPaginate(event) {\n let pageNumber = $(event.currentTarget).attr('js-paginate');\n if (pageNumber != false) {\n const thisURLParamsObj = this.getParams(window.location.href);\n this.ajaxLoadBlogPosts(thisURLParamsObj.current_category_ID, pageNumber);\n }\n },\n\n blogPaginateKey(event) {\n if(event.keyCode == 13) {\n let pageNumber = $(event.currentTarget).attr('js-paginate');\n if (pageNumber != false) {\n const thisURLParamsObj = this.getParams(window.location.href);\n this.ajaxLoadBlogPosts(thisURLParamsObj.current_category_ID, pageNumber);\n }\n }\n },\n\n filterBlogByCategoryID(event) {\n let thisCategoryID = $(event.currentTarget).attr('data-category-id');\n this.ajaxLoadBlogPosts(thisCategoryID);\n $('.blog-landing .js-clear-category-filter').fadeOut('fast');\n $(event.currentTarget).parent('.blog-nav-catgs__item--wrapper').find('.js-clear-category-filter').fadeIn('fast');\n },\n filterBlogByCategoryIdMobile(event) {\n let chosenCategoryID = $(event.currentTarget).val();\n this.ajaxLoadBlogPosts(chosenCategoryID);\n },\n clearBlogCategoryFilter(event) {\n this.ajaxLoadBlogPosts('');\n $(event.currentTarget).parent('.blog-nav-catgs__item--wrapper').find('.js-clear-category-filter').fadeOut('fast');\n },\n clearBlogCategoryFilterKey(event) {\n if(event.keyCode == 13) {\n this.ajaxLoadBlogPosts('');\n $(event.currentTarget).parent('.blog-nav-catgs__item--wrapper').find('.js-clear-category-filter').fadeOut('fast');\n }\n },\n tagCheckAlerts(event) {\n if( $(event.currentTarget).hasClass('js-tags-all-check') ) {\n if($(event.currentTarget).prop(\"checked\") == true) {\n $('#screenreader-tag-alerts').html('

All tags selected

');\n } else {\n $('#screenreader-tag-alerts').html('

All tags unselected

');\n }\n } else {\n var totCount = $('.js-tags-list-check').length;\n var selectedCount = $('.js-tags-list-check:checked').length;\n $('#screenreader-tag-alerts').html('

'+selectedCount+' of '+totCount+' tags selected

');\n }\n },\n\n ajaxLoadBlogPosts(categoryID = '', pageNumber = 1) {\n\n const data = {\n action: 'ajax_blog_filter',\n category_ID : categoryID,\n page_number : pageNumber\n };\n\n jQuery.ajax({\n url: php_vars.ajax_url,\n type: \"POST\",\n dataType: 'html',\n data,\n beforeSend : function () {\n window.scrollTo({\n top: 0\n });\n $('.blog-landing').find('.blog-post-cards--wrapper').html('');\n $('.blog-landing').find('.u-ajax-loader').addClass('u-ajax-loader--show');\n },\n success : function (htmlResponse) {\n $('.blog-landing').find('.blog-post-cards--wrapper').html(htmlResponse);\n window.history.replaceState(null, null, `?current_category_ID=${data.category_ID}&page_number=${data.page_number}`);\n },\n complete: function () {\n $('.blog-landing').find('.u-ajax-loader').removeClass('u-ajax-loader--show');\n }\n });\n },\n getParams (url) {\n var params = {};\n var parser = document.createElement('a');\n parser.href = url;\n var query = parser.search.substring(1);\n var vars = query.split('&');\n for (var i = 0; i < vars.length; i++) {\n var pair = vars[i].split('=');\n params[pair[0]] = decodeURIComponent(pair[1]);\n }\n return params;\n }\n};\n\nMangrove.init();\n"],"sourceRoot":""}