{ "version": 3, "sources": ["../../node_modules/lazysizes/lazysizes.js", "../../node_modules/priority-nav/dist/priority-nav.js", "../../UI/Scripts/main.js", "../../node_modules/tiny-slider/src/helpers/raf.js", "../../node_modules/tiny-slider/src/helpers/caf.js", "../../node_modules/tiny-slider/src/helpers/extend.js", "../../node_modules/tiny-slider/src/helpers/checkStorageValue.js", "../../node_modules/tiny-slider/src/helpers/setLocalStorage.js", "../../node_modules/tiny-slider/src/helpers/getSlideId.js", "../../node_modules/tiny-slider/src/helpers/getBody.js", "../../node_modules/tiny-slider/src/helpers/docElement.js", "../../node_modules/tiny-slider/src/helpers/setFakeBody.js", "../../node_modules/tiny-slider/src/helpers/resetFakeBody.js", "../../node_modules/tiny-slider/src/helpers/calc.js", "../../node_modules/tiny-slider/src/helpers/percentageLayout.js", "../../node_modules/tiny-slider/src/helpers/mediaquerySupport.js", "../../node_modules/tiny-slider/src/helpers/createStyleSheet.js", "../../node_modules/tiny-slider/src/helpers/addCSSRule.js", "../../node_modules/tiny-slider/src/helpers/removeCSSRule.js", "../../node_modules/tiny-slider/src/helpers/getCssRulesLength.js", "../../node_modules/tiny-slider/src/helpers/toDegree.js", "../../node_modules/tiny-slider/src/helpers/getTouchDirection.js", "../../node_modules/tiny-slider/src/helpers/forEach.js", "../../node_modules/tiny-slider/src/helpers/classListSupport.js", "../../node_modules/tiny-slider/src/helpers/hasClass.js", "../../node_modules/tiny-slider/src/helpers/addClass.js", "../../node_modules/tiny-slider/src/helpers/removeClass.js", "../../node_modules/tiny-slider/src/helpers/hasAttr.js", "../../node_modules/tiny-slider/src/helpers/getAttr.js", "../../node_modules/tiny-slider/src/helpers/isNodeList.js", "../../node_modules/tiny-slider/src/helpers/setAttrs.js", "../../node_modules/tiny-slider/src/helpers/removeAttrs.js", "../../node_modules/tiny-slider/src/helpers/arrayFromNodeList.js", "../../node_modules/tiny-slider/src/helpers/hideElement.js", "../../node_modules/tiny-slider/src/helpers/showElement.js", "../../node_modules/tiny-slider/src/helpers/isVisible.js", "../../node_modules/tiny-slider/src/helpers/whichProperty.js", "../../node_modules/tiny-slider/src/helpers/has3DTransforms.js", "../../node_modules/tiny-slider/src/helpers/getEndProperty.js", "../../node_modules/tiny-slider/src/helpers/passiveOption.js", "../../node_modules/tiny-slider/src/helpers/addEvents.js", "../../node_modules/tiny-slider/src/helpers/removeEvents.js", "../../node_modules/tiny-slider/src/helpers/events.js", "../../node_modules/tiny-slider/src/helpers/jsTransform.js", "../../node_modules/tiny-slider/src/tiny-slider.js", "../../node_modules/alpinejs/dist/module.esm.js", "../../node_modules/@alpinejs/intersect/dist/module.esm.js", "../../node_modules/@alpinejs/persist/dist/module.esm.js", "../../node_modules/@alpinejs/focus/dist/module.esm.js", "../../node_modules/@alpinejs/collapse/dist/module.esm.js", "../../node_modules/@formkit/auto-animate/index.mjs", "../../node_modules/@marcreichel/alpine-auto-animate/src/index.js"], "sourcesContent": ["(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", "/*\n * priority-nav - v1.0.13 | (c) 2018 @gijsroge | MIT license\n * Repository: https://github.com/gijsroge/priority-navigation.git\n * Description: Priority+ pattern navigation that hides menu items if they don't fit on screen.\n * Demo: http://gijsroge.github.io/priority-nav.js/\n */\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(\"priorityNav\", factory(root));\n } else if (typeof exports === \"object\") {\n module.exports = factory(root);\n } else {\n root.priorityNav = factory(root);\n }\n})(window || this, function (root) {\n\n \"use strict\";\n\n /**\n * Variables\n */\n var priorityNav = {}; // Object for public APIs\n var breaks = []; // Object to store instances with breakpoints where the instances menu item\"s didin\"t fit.\n var supports = !!document.querySelector && !!root.addEventListener; // Feature test\n var settings = {};\n var instance = 0;\n var count = 0;\n var mainNavWrapper, totalWidth, restWidth, mainNav, navDropdown, navDropdownToggle, dropDownWidth, toggleWrapper;\n var viewportWidth = 0;\n\n /**\n * Default settings\n * @type {{initClass: string, navDropdown: string, navDropdownToggle: string, mainNavWrapper: string, moved: Function, movedBack: Function}}\n */\n var defaults = {\n initClass: \"js-priorityNav\", // Class that will be printed on html element to allow conditional css styling.\n mainNavWrapper: \"nav\", // mainnav wrapper selector (must be direct parent from mainNav)\n mainNav: \"ul\", // mainnav selector. (must be inline-block)\n navDropdownClassName: \"nav__dropdown\", // class used for the dropdown.\n navDropdownToggleClassName: \"nav__dropdown-toggle\", // class used for the dropdown toggle.\n navDropdownLabel: \"more\", // Text that is used for the dropdown toggle.\n navDropdownBreakpointLabel: \"menu\", //button label for navDropdownToggle when the breakPoint is reached.\n breakPoint: 500, //amount of pixels when all menu items should be moved to dropdown to simulate a mobile menu\n throttleDelay: 50, // this will throttle the calculating logic on resize because i'm a responsible dev.\n offsetPixels: 0, // increase to decrease the time it takes to move an item.\n count: true, // prints the amount of items are moved to the attribute data-count to style with css counter.\n\n //Callbacks\n moved: function () {\n },\n movedBack: function () {\n }\n };\n\n\n /**\n * A simple forEach() implementation for Arrays, Objects and NodeLists\n * @private\n * @param {Array|Object|NodeList} collection Collection of items to iterate\n * @param {Function} callback Callback function for each iteration\n * @param {Array|Object|NodeList} scope Object/NodeList/Array that forEach is iterating over (aka `this`)\n */\n var forEach = function (collection, callback, scope) {\n if (Object.prototype.toString.call(collection) === \"[object Object]\") {\n for (var prop in collection) {\n if (Object.prototype.hasOwnProperty.call(collection, prop)) {\n callback.call(scope, collection[prop], prop, collection);\n }\n }\n } else {\n for (var i = 0, len = collection.length; i < len; i++) {\n callback.call(scope, collection[i], i, collection);\n }\n }\n };\n\n\n /**\n * Get the closest matching element up the DOM tree\n * @param {Element} elem Starting element\n * @param {String} selector Selector to match against (class, ID, or data attribute)\n * @return {Boolean|Element} Returns false if not match found\n */\n var getClosest = function (elem, selector) {\n var firstChar = selector.charAt(0);\n for (; elem && elem !== document; elem = elem.parentNode) {\n if (firstChar === \".\") {\n if (elem.classList.contains(selector.substr(1))) {\n return elem;\n }\n } else if (firstChar === \"#\") {\n if (elem.id === selector.substr(1)) {\n return elem;\n }\n } else if (firstChar === \"[\") {\n if (elem.hasAttribute(selector.substr(1, selector.length - 2))) {\n return elem;\n }\n }\n }\n return false;\n };\n\n\n /**\n * Merge defaults with user options\n * @private\n * @param {Object} defaults Default settings\n * @param {Object} options User options\n * @returns {Object} Merged values of defaults and options\n */\n var extend = function (defaults, options) {\n var extended = {};\n forEach(defaults, function (value, prop) {\n extended[prop] = defaults[prop];\n });\n forEach(options, function (value, prop) {\n extended[prop] = options[prop];\n });\n return extended;\n };\n\n\n /**\n * Debounced resize to throttle execution\n * @param func\n * @param wait\n * @param immediate\n * @returns {Function}\n */\n function debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this, args = arguments;\n var later = function () {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n\n\n /**\n * Toggle class on element\n * @param el\n * @param className\n */\n var toggleClass = function (el, className) {\n if (el.classList) {\n el.classList.toggle(className);\n } else {\n var classes = el.className.split(\" \");\n var existingIndex = classes.indexOf(className);\n\n if (existingIndex >= 0)\n classes.splice(existingIndex, 1); else\n classes.push(className);\n\n el.className = classes.join(\" \");\n }\n };\n\n\n /**\n * Check if dropdown menu is already on page before creating it\n * @param mainNavWrapper\n */\n var prepareHtml = function (_this, settings) {\n\n /**\n * Create dropdow menu\n * @type {HTMLElement}\n */\n toggleWrapper = document.createElement(\"span\");\n navDropdown = document.createElement(\"ul\");\n navDropdownToggle = document.createElement(\"button\");\n\n /**\n * Set label for dropdown toggle\n * @type {string}\n */\n navDropdownToggle.innerHTML = settings.navDropdownLabel;\n\n /**\n * Set aria attributes for accessibility\n */\n navDropdownToggle.setAttribute(\"aria-controls\", \"menu\");\n navDropdownToggle.setAttribute(\"type\", \"button\");\n navDropdown.setAttribute(\"aria-hidden\", \"true\");\n\n\n /**\n * Move elements to the right spot\n */\n if(_this.querySelector(mainNav).parentNode !== _this){\n console.warn(\"mainNav is not a direct child of mainNavWrapper, double check please\");\n return;\n }\n\n _this.insertAfter(toggleWrapper, _this.querySelector(mainNav));\n\n toggleWrapper.appendChild(navDropdownToggle);\n toggleWrapper.appendChild(navDropdown);\n\n /**\n * Add classes so we can target elements\n */\n navDropdown.classList.add(settings.navDropdownClassName);\n navDropdown.classList.add(\"priority-nav__dropdown\");\n\n navDropdownToggle.classList.add(settings.navDropdownToggleClassName);\n navDropdownToggle.classList.add(\"priority-nav__dropdown-toggle\");\n \n //fix so button is type=\"button\" and do not submit forms\n navDropdownToggle.setAttribute(\"type\", \"button\");\n\n toggleWrapper.classList.add(settings.navDropdownClassName+\"-wrapper\");\n toggleWrapper.classList.add(\"priority-nav__wrapper\");\n\n _this.classList.add(\"priority-nav\");\n };\n\n\n /**\n * Get innerwidth without padding\n * @param element\n * @returns {number}\n */\n var getElementContentWidth = function(element) {\n var styles = window.getComputedStyle(element);\n var padding = parseFloat(styles.paddingLeft) +\n parseFloat(styles.paddingRight);\n\n return element.clientWidth - padding;\n };\n\n\n /**\n * Get viewport size\n * @returns {{width: number, height: number}}\n */\n var viewportSize = function() {\n var doc = document, w = window;\n var docEl = (doc.compatMode && doc.compatMode === \"CSS1Compat\")?\n doc.documentElement: doc.body;\n\n var width = docEl.clientWidth;\n var height = docEl.clientHeight;\n\n // mobile zoomed in?\n if ( w.innerWidth && width > w.innerWidth ) {\n width = w.innerWidth;\n height = w.innerHeight;\n }\n\n return {width: width, height: height};\n };\n\n\n /**\n * Get width\n * @param elem\n * @returns {number}\n */\n var calculateWidths = function (_this) {\n totalWidth = getElementContentWidth(_this);\n //Check if parent is the navwrapper before calculating its width\n if (_this.querySelector(navDropdown).parentNode === _this) {\n dropDownWidth = _this.querySelector(navDropdown).offsetWidth;\n } else {\n dropDownWidth = 0;\n }\n restWidth = getChildrenWidth(_this) + settings.offsetPixels;\n viewportWidth = viewportSize().width;\n };\n\n\n /**\n * Move item to array\n * @param item\n */\n priorityNav.doesItFit = function (_this) {\n\n /**\n * Check if it is the first run\n */\n var delay = _this.getAttribute(\"instance\") === 0 ? delay : settings.throttleDelay;\n\n /**\n * Increase instance\n */\n instance++;\n\n /**\n * Debounced execution of the main logic\n */\n (debounce(function () {\n\n /**\n * Get the current element\"s instance\n * @type {string}\n */\n var identifier = _this.getAttribute(\"instance\");\n\n /**\n * Update width\n */\n calculateWidths(_this);\n\n /**\n * Keep executing until all menu items that are overflowing are moved\n */\n while (totalWidth <= restWidth && _this.querySelector(mainNav).children.length > 0 || viewportWidth < settings.breakPoint && _this.querySelector(mainNav).children.length > 0) {\n //move item to dropdown\n priorityNav.toDropdown(_this, identifier);\n //recalculate widths\n calculateWidths(_this, identifier);\n //update dropdownToggle label\n if(viewportWidth < settings.breakPoint) updateLabel(_this, identifier, settings.navDropdownBreakpointLabel);\n }\n\n /**\n * Keep executing until all menu items that are able to move back are moved\n */\n while (totalWidth >= breaks[identifier][breaks[identifier].length - 1] && viewportWidth > settings.breakPoint) {\n //move item to menu\n priorityNav.toMenu(_this, identifier);\n //update dropdownToggle label\n if(viewportWidth > settings.breakPoint) updateLabel(_this, identifier, settings.navDropdownLabel);\n }\n\n /**\n * If there are no items in dropdown hide dropdown\n */\n if (breaks[identifier].length < 1) {\n _this.querySelector(navDropdown).classList.remove(\"show\");\n //show navDropdownLabel\n updateLabel(_this, identifier, settings.navDropdownLabel);\n }\n\n /**\n * If there are no items in menu\n */\n if (_this.querySelector(mainNav).children.length < 1) {\n //show navDropdownBreakpointLabel\n _this.classList.add(\"is-empty\");\n updateLabel(_this, identifier, settings.navDropdownBreakpointLabel);\n }else{\n _this.classList.remove(\"is-empty\");\n }\n\n /**\n * Check if we need to show toggle menu button\n */\n showToggle(_this, identifier);\n\n }, delay ))();\n };\n\n\n /**\n * Show/hide toggle button\n */\n var showToggle = function (_this, identifier) {\n if (breaks[identifier].length < 1) {\n _this.querySelector(navDropdownToggle).classList.add(\"priority-nav-is-hidden\");\n _this.querySelector(navDropdownToggle).classList.remove(\"priority-nav-is-visible\");\n _this.classList.remove(\"priority-nav-has-dropdown\");\n\n /**\n * Set aria attributes for accessibility\n */\n _this.querySelector(\".priority-nav__wrapper\").setAttribute(\"aria-haspopup\", \"false\");\n\n } else {\n _this.querySelector(navDropdownToggle).classList.add(\"priority-nav-is-visible\");\n _this.querySelector(navDropdownToggle).classList.remove(\"priority-nav-is-hidden\");\n _this.classList.add(\"priority-nav-has-dropdown\");\n\n /**\n * Set aria attributes for accessibility\n */\n _this.querySelector(\".priority-nav__wrapper\").setAttribute(\"aria-haspopup\", \"true\");\n }\n };\n\n\n /**\n * Update count on dropdown toggle button\n */\n var updateCount = function (_this, identifier) {\n _this.querySelector(navDropdownToggle).setAttribute(\"priorityNav-count\", breaks[identifier].length);\n };\n\n var updateLabel = function(_this, identifier, label){\n _this.querySelector(navDropdownToggle).innerHTML = label;\n };\n\n\n /**\n * Move item to dropdown\n */\n priorityNav.toDropdown = function (_this, identifier) {\n\n\n /**\n * move last child of navigation menu to dropdown\n */\n if (_this.querySelector(navDropdown).firstChild && _this.querySelector(mainNav).children.length > 0) {\n _this.querySelector(navDropdown).insertBefore(_this.querySelector(mainNav).lastElementChild, _this.querySelector(navDropdown).firstChild);\n } else if (_this.querySelector(mainNav).children.length > 0) {\n _this.querySelector(navDropdown).appendChild(_this.querySelector(mainNav).lastElementChild);\n }\n\n /**\n * store breakpoints\n */\n breaks[identifier].push(restWidth);\n\n /**\n * check if we need to show toggle menu button\n */\n showToggle(_this, identifier);\n\n /**\n * update count on dropdown toggle button\n */\n if (_this.querySelector(mainNav).children.length > 0 && settings.count) {\n updateCount(_this, identifier);\n }\n\n /**\n * If item has been moved to dropdown trigger the callback\n */\n settings.moved();\n };\n\n\n /**\n * Move item to menu\n */\n priorityNav.toMenu = function (_this, identifier) {\n\n /**\n * move last child of navigation menu to dropdown\n */\n if (_this.querySelector(navDropdown).children.length > 0) _this.querySelector(mainNav).appendChild(_this.querySelector(navDropdown).firstElementChild);\n\n /**\n * remove last breakpoint\n */\n breaks[identifier].pop();\n\n /**\n * Check if we need to show toggle menu button\n */\n showToggle(_this, identifier);\n\n /**\n * update count on dropdown toggle button\n */\n if (_this.querySelector(mainNav).children.length > 0 && settings.count) {\n updateCount(_this, identifier);\n }\n\n /**\n * If item has been moved back to the main menu trigger the callback\n */\n settings.movedBack();\n };\n\n\n /**\n * Count width of children and return the value\n * @param e\n */\n var getChildrenWidth = function (e) {\n var children = e.childNodes;\n var sum = 0;\n for (var i = 0; i < children.length; i++) {\n if (children[i].nodeType !== 3) {\n if(!isNaN(children[i].offsetWidth)){\n sum += children[i].offsetWidth;\n }\n\n }\n }\n return sum;\n };\n\n\n\n /**\n * Bind eventlisteners\n */\n var listeners = function (_this, settings) {\n\n // Check if an item needs to move\n if(window.attachEvent) {\n window.attachEvent(\"onresize\", function() {\n if(priorityNav.doesItFit)priorityNav.doesItFit(_this);\n });\n }\n else if(window.addEventListener) {\n window.addEventListener(\"resize\", function() {\n if(priorityNav.doesItFit)priorityNav.doesItFit(_this);\n }, true);\n }\n\n // Toggle dropdown\n _this.querySelector(navDropdownToggle).addEventListener(\"click\", function () {\n toggleClass(_this.querySelector(navDropdown), \"show\");\n toggleClass(this, \"is-open\");\n toggleClass(_this, \"is-open\");\n\n /**\n * Toggle aria hidden for accessibility\n */\n if(-1 !== _this.className.indexOf( \"is-open\" )){\n _this.querySelector(navDropdown).setAttribute(\"aria-hidden\", \"false\");\n }else{\n _this.querySelector(navDropdown).setAttribute(\"aria-hidden\", \"true\");\n _this.querySelector(navDropdown).blur();\n }\n });\n\n /*\n * Remove when clicked outside dropdown\n */\n document.addEventListener(\"click\", function (event) {\n if (!getClosest(event.target, \".\"+settings.navDropdownClassName) && event.target !== _this.querySelector(navDropdownToggle)) {\n _this.querySelector(navDropdown).classList.remove(\"show\");\n _this.querySelector(navDropdownToggle).classList.remove(\"is-open\");\n _this.classList.remove(\"is-open\");\n }\n });\n\n /**\n * Remove when escape key is pressed\n */\n document.onkeydown = function (evt) {\n evt = evt || window.event;\n if (evt.keyCode === 27) {\n document.querySelector(navDropdown).classList.remove(\"show\");\n document.querySelector(navDropdownToggle).classList.remove(\"is-open\");\n mainNavWrapper.classList.remove(\"is-open\");\n }\n };\n };\n\n\n /**\n * Remove function\n */\n Element.prototype.remove = function() {\n this.parentElement.removeChild(this);\n };\n\n /*global HTMLCollection */\n NodeList.prototype.remove = HTMLCollection.prototype.remove = function() {\n for(var i = 0, len = this.length; i < len; i++) {\n if(this[i] && this[i].parentElement) {\n this[i].parentElement.removeChild(this[i]);\n }\n }\n };\n\n\n /**\n * Destroy the current initialization.\n * @public\n */\n priorityNav.destroy = function () {\n // If plugin isn\"t already initialized, stop\n if (!settings) return;\n // Remove feedback class\n document.documentElement.classList.remove(settings.initClass);\n // Remove toggle\n toggleWrapper.remove();\n // Remove settings\n settings = null;\n delete priorityNav.init;\n delete priorityNav.doesItFit;\n };\n\n\n /**\n * insertAfter function\n * @param n\n * @param r\n */\n if (supports && typeof Node !== \"undefined\"){\n Node.prototype.insertAfter = function(n,r) {this.insertBefore(n,r.nextSibling);};\n }\n\n var checkForSymbols = function(string){\n var firstChar = string.charAt(0);\n if (firstChar === \".\" || firstChar === \"#\") {\n return false;\n }else{\n return true;\n }\n };\n\n\n /**\n * Initialize Plugin\n * @public\n * @param {Object} options User settings\n */\n priorityNav.init = function (options) {\n\n /**\n * Merge user options with defaults\n * @type {Object}\n */\n settings = extend(defaults, options || {});\n\n // Feature test.\n if (!supports && typeof Node === \"undefined\"){\n console.warn(\"This browser doesn't support priorityNav\");\n return;\n }\n\n // Options check\n if (!checkForSymbols(settings.navDropdownClassName) || !checkForSymbols(settings.navDropdownToggleClassName)){\n console.warn(\"No symbols allowed in navDropdownClassName & navDropdownToggleClassName. These are not selectors.\");\n return;\n }\n\n /**\n * Store nodes\n * @type {NodeList}\n */\n var elements = document.querySelectorAll(settings.mainNavWrapper);\n\n /**\n * Loop over every instance and reference _this\n */\n forEach(elements, function(_this){\n\n /**\n * Create breaks array\n * @type {number}\n */\n breaks[count] = [];\n\n /**\n * Set the instance number as data attribute\n */\n _this.setAttribute(\"instance\", count++);\n\n /**\n * Store the wrapper element\n */\n mainNavWrapper = _this;\n if (!mainNavWrapper) {\n console.warn(\"couldn't find the specified mainNavWrapper element\");\n return;\n }\n\n /**\n * Store the menu elementStore the menu element\n */\n mainNav = settings.mainNav;\n if (!_this.querySelector(mainNav)) {\n console.warn(\"couldn't find the specified mainNav element\");\n return;\n }\n\n /**\n * Check if we need to create the dropdown elements\n */\n prepareHtml(_this, settings);\n\n /**\n * Store the dropdown element\n */\n navDropdown = \".\"+settings.navDropdownClassName;\n if (!_this.querySelector(navDropdown)) {\n console.warn(\"couldn't find the specified navDropdown element\");\n return;\n }\n\n /**\n * Store the dropdown toggle element\n */\n navDropdownToggle = \".\"+settings.navDropdownToggleClassName;\n if (!_this.querySelector(navDropdownToggle)) {\n console.warn(\"couldn't find the specified navDropdownToggle element\");\n return;\n }\n\n /**\n * Event listeners\n */\n listeners(_this, settings);\n\n /**\n * Start first check\n */\n priorityNav.doesItFit(_this);\n\n });\n\n /**\n * Count amount of instances\n */\n instance++;\n\n /**\n * Add class to HTML element to activate conditional CSS\n */\n document.documentElement.classList.add(settings.initClass);\n };\n\n\n /**\n * Public APIs\n */\n return priorityNav;\n\n});\n", "// Lazysizes\r\nimport 'lazysizes';\r\nimport priorityNav from 'priority-nav';\r\nimport { tns } from \"../../node_modules/tiny-slider/src/tiny-slider\"\r\n\r\n// Alpine bootup\r\n\r\nimport Alpine from 'alpinejs';\r\nimport intersect from '@alpinejs/intersect'\r\nimport persist from '@alpinejs/persist'\r\nimport focus from '@alpinejs/focus'\r\nimport collapse from '@alpinejs/collapse'\r\nimport AutoAnimate from '@marcreichel/alpine-auto-animate';\r\n\r\nAlpine.plugin(AutoAnimate);\r\nAlpine.plugin(intersect);\r\nAlpine.plugin(persist);\r\nAlpine.plugin(focus);\r\nAlpine.plugin(collapse);\r\nwindow.Alpine = Alpine;\r\n\r\n\r\ndocument.addEventListener('alpine:init', () => {\r\n // Tiny slider init\r\n window.tns = tns;\r\n\r\n Alpine.store('bodyLock', {\r\n on: false,\r\n\r\n toggle() {\r\n this.on = !this.on\r\n }\r\n })\r\n \r\n Alpine.store('modal', '')\r\n})\r\n\r\nAlpine.start();\r\n\r\n\r\nvar dropdownLabel = document.querySelector(\"[data-priority-label]\").dataset.priorityLabel;\r\n\r\npriorityNav.init({\r\n mainNavWrapper: '[data-priority-nav=\"wrapper\"]',\r\n mainNav: '[data-priority-nav=\"nav\"]',\r\n navDropdownToggleClassName: 'nav__more',\r\n navDropdownLabel: dropdownLabel,\r\n offsetPixels: 10, // increase to decrease the time it takes to move an item.\r\n throttleDelay: 50, // this will throttle the calculating logic on resize because i'm a responsible dev.\r\n})\r\n\r\nlet navToggle = document.querySelector('.nav-toggle')\r\nlet bars = document.querySelectorAll('.bar')\r\n\r\n//function toggleHamburger(e) {\r\n// bars.forEach(bar => bar.classList.toggle('x'))\r\n//}\r\n\r\n//navToggle.addEventListener('click', toggleHamburger)", "var win = window;\n\nexport var raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n", "var win = window;\n\nexport var caf = win.cancelAnimationFrame\n || win.mozCancelAnimationFrame\n || function(id){ clearTimeout(id); };\n", "export function extend() {\n var obj, name, copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n}", "export function checkStorageValue (value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}", "export function setLocalStorage(storage, key, value, access) {\n if (access) {\n try { storage.setItem(key, value); } catch (e) {}\n }\n return value;\n}", "export function getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n \n return 'tns' + window.tnsId;\n}", "export function getBody () {\n var doc = document,\n body = doc.body;\n\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n\n return body;\n}", "export var docElement = document.documentElement;", "import { docElement } from './docElement.js';\n\nexport function setFakeBody (body) {\n var docOverflow = '';\n if (body.fake) {\n docOverflow = docElement.style.overflow;\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}", "import { docElement } from './docElement.js';\n\nexport function resetFakeBody (body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n }\n}", "// get css-calc \n// @return - false | calc | -webkit-calc | -moz-calc\n// @usage - var calc = getCalc(); \nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function calc() {\n var doc = document, \n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'), \n result = false;\n\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n if (div.offsetWidth === 100) { \n result = val.replace(str, ''); \n break;\n }\n }\n } catch (e) {}\n \n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return result;\n}", "// get subpixel support value\n// @return - boolean\nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '
';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n\n return supported;\n}", "import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function mediaquerySupport () {\n if (window.matchMedia || window.msMatchMedia) {\n return true;\n }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return position === \"absolute\";\n}\n", "// create and append style sheet\nexport function createStyleSheet (media, nonce) {\n // Create the