{"version":3,"file":"main-E2UvXvQ_.js","sources":["../../node_modules/picturefill/dist/picturefill.js","../../node_modules/lightgallery.js/lib/js/lg-utils.js","../../node_modules/lightgallery.js/lib/js/lightgallery.js","../../node_modules/lg-video.js/dist/lg-video.js","../../Assets/Scripts/legacy/components/gallery/index.ts","../../Assets/Scripts/legacy/utils/dom.ts","../../Assets/Scripts/legacy/components/nav/index.ts","../../node_modules/rellax/rellax.js","../../Assets/Scripts/legacy/components/parallax/index.ts","../../Assets/Scripts/legacy/utils/keyCode.ts","../../Assets/Scripts/legacy/components/toggleNav/index.ts","../../Assets/Scripts/main-legacy.ts"],"sourcesContent":["/*! picturefill - v3.0.2 - 2016-02-12\n * https://scottjehl.github.io/picturefill/\n * Copyright (c) 2016 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT\n */\n/*! Gecko-Picture - v1.0\n * https://github.com/scottjehl/picturefill/tree/3.0/src/plugins/gecko-picture\n * Firefox's early picture implementation (prior to FF41) is static and does\n * not react to viewport changes. This tiny module fixes this.\n */\n(function(window) {\n\t/*jshint eqnull:true */\n\tvar ua = navigator.userAgent;\n\n\tif ( window.HTMLPictureElement && ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 < 45) ) {\n\t\taddEventListener(\"resize\", (function() {\n\t\t\tvar timer;\n\n\t\t\tvar dummySrc = document.createElement(\"source\");\n\n\t\t\tvar fixRespimg = function(img) {\n\t\t\t\tvar source, sizes;\n\t\t\t\tvar picture = img.parentNode;\n\n\t\t\t\tif (picture.nodeName.toUpperCase() === \"PICTURE\") {\n\t\t\t\t\tsource = dummySrc.cloneNode();\n\n\t\t\t\t\tpicture.insertBefore(source, picture.firstElementChild);\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpicture.removeChild(source);\n\t\t\t\t\t});\n\t\t\t\t} else if (!img._pfLastSize || img.offsetWidth > img._pfLastSize) {\n\t\t\t\t\timg._pfLastSize = img.offsetWidth;\n\t\t\t\t\tsizes = img.sizes;\n\t\t\t\t\timg.sizes += \",100vw\";\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\timg.sizes = sizes;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar findPictureImgs = function() {\n\t\t\t\tvar i;\n\t\t\t\tvar imgs = document.querySelectorAll(\"picture > img, img[srcset][sizes]\");\n\t\t\t\tfor (i = 0; i < imgs.length; i++) {\n\t\t\t\t\tfixRespimg(imgs[i]);\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar onResize = function() {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = setTimeout(findPictureImgs, 99);\n\t\t\t};\n\t\t\tvar mq = window.matchMedia && matchMedia(\"(orientation: landscape)\");\n\t\t\tvar init = function() {\n\t\t\t\tonResize();\n\n\t\t\t\tif (mq && mq.addListener) {\n\t\t\t\t\tmq.addListener(onResize);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdummySrc.srcset = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n\t\t\tif (/^[c|i]|d$/.test(document.readyState || \"\")) {\n\t\t\t\tinit();\n\t\t\t} else {\n\t\t\t\tdocument.addEventListener(\"DOMContentLoaded\", init);\n\t\t\t}\n\n\t\t\treturn onResize;\n\t\t})());\n\t}\n})(window);\n\n/*! Picturefill - v3.0.2\n * http://scottjehl.github.io/picturefill\n * Copyright (c) 2015 https://github.com/scottjehl/picturefill/blob/master/Authors.txt;\n * License: MIT\n */\n\n(function( window, document, undefined ) {\n\t// Enable strict mode\n\t\"use strict\";\n\n\t// HTML shim|v it for old IE (IE9 will still need the HTML video tag workaround)\n\tdocument.createElement( \"picture\" );\n\n\tvar warn, eminpx, alwaysCheckWDescriptor, evalId;\n\t// local object for method references and testing exposure\n\tvar pf = {};\n\tvar isSupportTestReady = false;\n\tvar noop = function() {};\n\tvar image = document.createElement( \"img\" );\n\tvar getImgAttr = image.getAttribute;\n\tvar setImgAttr = image.setAttribute;\n\tvar removeImgAttr = image.removeAttribute;\n\tvar docElem = document.documentElement;\n\tvar types = {};\n\tvar cfg = {\n\t\t//resource selection:\n\t\talgorithm: \"\"\n\t};\n\tvar srcAttr = \"data-pfsrc\";\n\tvar srcsetAttr = srcAttr + \"set\";\n\t// ua sniffing is done for undetectable img loading features,\n\t// to do some non crucial perf optimizations\n\tvar ua = navigator.userAgent;\n\tvar supportAbort = (/rident/).test(ua) || ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 > 35 );\n\tvar curSrcProp = \"currentSrc\";\n\tvar regWDesc = /\\s+\\+?\\d+(e\\d+)?w/;\n\tvar regSize = /(\\([^)]+\\))?\\s*(.+)/;\n\tvar setOptions = window.picturefillCFG;\n\t/**\n\t * Shortcut property for https://w3c.github.io/webappsec/specs/mixedcontent/#restricts-mixed-content ( for easy overriding in tests )\n\t */\n\t// baseStyle also used by getEmValue (i.e.: width: 1em is important)\n\tvar baseStyle = \"position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)\";\n\tvar fsCss = \"font-size:100%!important;\";\n\tvar isVwDirty = true;\n\n\tvar cssCache = {};\n\tvar sizeLengthCache = {};\n\tvar DPR = window.devicePixelRatio;\n\tvar units = {\n\t\tpx: 1,\n\t\t\"in\": 96\n\t};\n\tvar anchor = document.createElement( \"a\" );\n\t/**\n\t * alreadyRun flag used for setOptions. is it true setOptions will reevaluate\n\t * @type {boolean}\n\t */\n\tvar alreadyRun = false;\n\n\t// Reusable, non-\"g\" Regexes\n\n\t// (Don't use \\s, to avoid matching non-breaking space.)\n\tvar regexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t regexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t regexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t regexTrailingCommas = /[,]+$/,\n\t regexNonNegativeInteger = /^\\d+$/,\n\n\t // ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t // Must include at least one digit.\n\t // According to spec tests any decimal point must be followed by a digit.\n\t // No leading plus sign is allowed.)\n\t // https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/;\n\n\tvar on = function(obj, evt, fn, capture) {\n\t\tif ( obj.addEventListener ) {\n\t\t\tobj.addEventListener(evt, fn, capture || false);\n\t\t} else if ( obj.attachEvent ) {\n\t\t\tobj.attachEvent( \"on\" + evt, fn);\n\t\t}\n\t};\n\n\t/**\n\t * simple memoize function:\n\t */\n\n\tvar memoize = function(fn) {\n\t\tvar cache = {};\n\t\treturn function(input) {\n\t\t\tif ( !(input in cache) ) {\n\t\t\t\tcache[ input ] = fn(input);\n\t\t\t}\n\t\t\treturn cache[ input ];\n\t\t};\n\t};\n\n\t// UTILITY FUNCTIONS\n\n\t// Manual is faster than RegEx\n\t// http://jsperf.com/whitespace-character/5\n\tfunction isSpace(c) {\n\t\treturn (c === \"\\u0020\" || // space\n\t\t c === \"\\u0009\" || // horizontal tab\n\t\t c === \"\\u000A\" || // new line\n\t\t c === \"\\u000C\" || // form feed\n\t\t c === \"\\u000D\"); // carriage return\n\t}\n\n\t/**\n\t * gets a mediaquery and returns a boolean or gets a css length and returns a number\n\t * @param css mediaqueries or css length\n\t * @returns {boolean|number}\n\t *\n\t * based on: https://gist.github.com/jonathantneal/db4f77009b155f083738\n\t */\n\tvar evalCSS = (function() {\n\n\t\tvar regLength = /^([\\d\\.]+)(em|vw|px)$/;\n\t\tvar replace = function() {\n\t\t\tvar args = arguments, index = 0, string = args[0];\n\t\t\twhile (++index in args) {\n\t\t\t\tstring = string.replace(args[index], args[++index]);\n\t\t\t}\n\t\t\treturn string;\n\t\t};\n\n\t\tvar buildStr = memoize(function(css) {\n\n\t\t\treturn \"return \" + replace((css || \"\").toLowerCase(),\n\t\t\t\t// interpret `and`\n\t\t\t\t/\\band\\b/g, \"&&\",\n\n\t\t\t\t// interpret `,`\n\t\t\t\t/,/g, \"||\",\n\n\t\t\t\t// interpret `min-` as >=\n\t\t\t\t/min-([a-z-\\s]+):/g, \"e.$1>=\",\n\n\t\t\t\t// interpret `max-` as <=\n\t\t\t\t/max-([a-z-\\s]+):/g, \"e.$1<=\",\n\n\t\t\t\t//calc value\n\t\t\t\t/calc([^)]+)/g, \"($1)\",\n\n\t\t\t\t// interpret css values\n\t\t\t\t/(\\d+[\\.]*[\\d]*)([a-z]+)/g, \"($1 * e.$2)\",\n\t\t\t\t//make eval less evil\n\t\t\t\t/^(?!(e.[a-z]|[0-9\\.&=|><\\+\\-\\*\\(\\)\\/])).*/ig, \"\"\n\t\t\t) + \";\";\n\t\t});\n\n\t\treturn function(css, length) {\n\t\t\tvar parsedLength;\n\t\t\tif (!(css in cssCache)) {\n\t\t\t\tcssCache[css] = false;\n\t\t\t\tif (length && (parsedLength = css.match( regLength ))) {\n\t\t\t\t\tcssCache[css] = parsedLength[ 1 ] * units[parsedLength[ 2 ]];\n\t\t\t\t} else {\n\t\t\t\t\t/*jshint evil:true */\n\t\t\t\t\ttry{\n\t\t\t\t\t\tcssCache[css] = new Function(\"e\", buildStr(css))(units);\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t\t/*jshint evil:false */\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cssCache[css];\n\t\t};\n\t})();\n\n\tvar setResolution = function( candidate, sizesattr ) {\n\t\tif ( candidate.w ) { // h = means height: || descriptor.type === 'h' do not handle yet...\n\t\t\tcandidate.cWidth = pf.calcListLength( sizesattr || \"100vw\" );\n\t\t\tcandidate.res = candidate.w / candidate.cWidth ;\n\t\t} else {\n\t\t\tcandidate.res = candidate.d;\n\t\t}\n\t\treturn candidate;\n\t};\n\n\t/**\n\t *\n\t * @param opt\n\t */\n\tvar picturefill = function( opt ) {\n\n\t\tif (!isSupportTestReady) {return;}\n\n\t\tvar elements, i, plen;\n\n\t\tvar options = opt || {};\n\n\t\tif ( options.elements && options.elements.nodeType === 1 ) {\n\t\t\tif ( options.elements.nodeName.toUpperCase() === \"IMG\" ) {\n\t\t\t\toptions.elements = [ options.elements ];\n\t\t\t} else {\n\t\t\t\toptions.context = options.elements;\n\t\t\t\toptions.elements = null;\n\t\t\t}\n\t\t}\n\n\t\telements = options.elements || pf.qsa( (options.context || document), ( options.reevaluate || options.reselect ) ? pf.sel : pf.selShort );\n\n\t\tif ( (plen = elements.length) ) {\n\n\t\t\tpf.setupRun( options );\n\t\t\talreadyRun = true;\n\n\t\t\t// Loop through all elements\n\t\t\tfor ( i = 0; i < plen; i++ ) {\n\t\t\t\tpf.fillImg(elements[ i ], options);\n\t\t\t}\n\n\t\t\tpf.teardownRun( options );\n\t\t}\n\t};\n\n\t/**\n\t * outputs a warning for the developer\n\t * @param {message}\n\t * @type {Function}\n\t */\n\twarn = ( window.console && console.warn ) ?\n\t\tfunction( message ) {\n\t\t\tconsole.warn( message );\n\t\t} :\n\t\tnoop\n\t;\n\n\tif ( !(curSrcProp in image) ) {\n\t\tcurSrcProp = \"src\";\n\t}\n\n\t// Add support for standard mime types.\n\ttypes[ \"image/jpeg\" ] = true;\n\ttypes[ \"image/gif\" ] = true;\n\ttypes[ \"image/png\" ] = true;\n\n\tfunction detectTypeSupport( type, typeUri ) {\n\t\t// based on Modernizr's lossless img-webp test\n\t\t// note: asynchronous\n\t\tvar image = new window.Image();\n\t\timage.onerror = function() {\n\t\t\ttypes[ type ] = false;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.onload = function() {\n\t\t\ttypes[ type ] = image.width === 1;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.src = typeUri;\n\t\treturn \"pending\";\n\t}\n\n\t// test svg support\n\ttypes[ \"image/svg+xml\" ] = document.implementation.hasFeature( \"http://www.w3.org/TR/SVG11/feature#Image\", \"1.1\" );\n\n\t/**\n\t * updates the internal vW property with the current viewport width in px\n\t */\n\tfunction updateMetrics() {\n\n\t\tisVwDirty = false;\n\t\tDPR = window.devicePixelRatio;\n\t\tcssCache = {};\n\t\tsizeLengthCache = {};\n\n\t\tpf.DPR = DPR || 1;\n\n\t\tunits.width = Math.max(window.innerWidth || 0, docElem.clientWidth);\n\t\tunits.height = Math.max(window.innerHeight || 0, docElem.clientHeight);\n\n\t\tunits.vw = units.width / 100;\n\t\tunits.vh = units.height / 100;\n\n\t\tevalId = [ units.height, units.width, DPR ].join(\"-\");\n\n\t\tunits.em = pf.getEmValue();\n\t\tunits.rem = units.em;\n\t}\n\n\tfunction chooseLowRes( lowerValue, higherValue, dprValue, isCached ) {\n\t\tvar bonusFactor, tooMuch, bonus, meanDensity;\n\n\t\t//experimental\n\t\tif (cfg.algorithm === \"saveData\" ){\n\t\t\tif ( lowerValue > 2.7 ) {\n\t\t\t\tmeanDensity = dprValue + 1;\n\t\t\t} else {\n\t\t\t\ttooMuch = higherValue - dprValue;\n\t\t\t\tbonusFactor = Math.pow(lowerValue - 0.6, 1.5);\n\n\t\t\t\tbonus = tooMuch * bonusFactor;\n\n\t\t\t\tif (isCached) {\n\t\t\t\t\tbonus += 0.1 * bonusFactor;\n\t\t\t\t}\n\n\t\t\t\tmeanDensity = lowerValue + bonus;\n\t\t\t}\n\t\t} else {\n\t\t\tmeanDensity = (dprValue > 1) ?\n\t\t\t\tMath.sqrt(lowerValue * higherValue) :\n\t\t\t\tlowerValue;\n\t\t}\n\n\t\treturn meanDensity > dprValue;\n\t}\n\n\tfunction applyBestCandidate( img ) {\n\t\tvar srcSetCandidates;\n\t\tvar matchingSet = pf.getSet( img );\n\t\tvar evaluated = false;\n\t\tif ( matchingSet !== \"pending\" ) {\n\t\t\tevaluated = evalId;\n\t\t\tif ( matchingSet ) {\n\t\t\t\tsrcSetCandidates = pf.setRes( matchingSet );\n\t\t\t\tpf.applySetCandidate( srcSetCandidates, img );\n\t\t\t}\n\t\t}\n\t\timg[ pf.ns ].evaled = evaluated;\n\t}\n\n\tfunction ascendingSort( a, b ) {\n\t\treturn a.res - b.res;\n\t}\n\n\tfunction setSrcToCur( img, src, set ) {\n\t\tvar candidate;\n\t\tif ( !set && src ) {\n\t\t\tset = img[ pf.ns ].sets;\n\t\t\tset = set && set[set.length - 1];\n\t\t}\n\n\t\tcandidate = getCandidateForSrc(src, set);\n\n\t\tif ( candidate ) {\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\timg[ pf.ns ].curSrc = src;\n\t\t\timg[ pf.ns ].curCan = candidate;\n\n\t\t\tif ( !candidate.res ) {\n\t\t\t\tsetResolution( candidate, candidate.set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getCandidateForSrc( src, set ) {\n\t\tvar i, candidate, candidates;\n\t\tif ( src && set ) {\n\t\t\tcandidates = pf.parseSet( set );\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\tfor ( i = 0; i < candidates.length; i++ ) {\n\t\t\t\tif ( src === pf.makeUrl(candidates[ i ].url) ) {\n\t\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getAllSourceElements( picture, candidates ) {\n\t\tvar i, len, source, srcset;\n\n\t\t// SPEC mismatch intended for size and perf:\n\t\t// actually only source elements preceding the img should be used\n\t\t// also note: don't use qsa here, because IE8 sometimes doesn't like source as the key part in a selector\n\t\tvar sources = picture.getElementsByTagName( \"source\" );\n\n\t\tfor ( i = 0, len = sources.length; i < len; i++ ) {\n\t\t\tsource = sources[ i ];\n\t\t\tsource[ pf.ns ] = true;\n\t\t\tsrcset = source.getAttribute( \"srcset\" );\n\n\t\t\t// if source does not have a srcset attribute, skip\n\t\t\tif ( srcset ) {\n\t\t\t\tcandidates.push( {\n\t\t\t\t\tsrcset: srcset,\n\t\t\t\t\tmedia: source.getAttribute( \"media\" ),\n\t\t\t\t\ttype: source.getAttribute( \"type\" ),\n\t\t\t\t\tsizes: source.getAttribute( \"sizes\" )\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Srcset Parser\n\t * By Alex Bell | MIT License\n\t *\n\t * @returns Array [{url: _, d: _, w: _, h:_, set:_(????)}, ...]\n\t *\n\t * Based super duper closely on the reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n\t */\n\n\t// 1. Let input be the value passed to this algorithm.\n\t// (TO-DO : Explain what \"set\" argument is here. Maybe choose a more\n\t// descriptive & more searchable name. Since passing the \"set\" in really has\n\t// nothing to do with parsing proper, I would prefer this assignment eventually\n\t// go in an external fn.)\n\tfunction parseSrcset(input, set) {\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t match = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\t\t url,\n\t\t descriptors,\n\t\t currentDescriptor,\n\t\t state,\n\t\t c,\n\n\t\t // 2. Let position be a pointer into input, initially pointing at the start\n\t\t // of the string.\n\t\t pos = 0,\n\n\t\t // 3. Let candidates be an initially empty source set.\n\t\t candidates = [];\n\n\t\t/**\n\t\t* Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t* @return undefined\n\t\t*/\n\t\t// (Declared outside of the while loop so that it's only created once.\n\t\t// (This fn is defined before it is used, in order to pass JSHINT.\n\t\t// Unfortunately this breaks the sequencing of the spec comments. :/ )\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t// 10. Let width be absent.\n\t\t\t// 11. Let density be absent.\n\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t w, d, h, i,\n\t\t\t candidate = {},\n\t\t\t desc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tif (!h && !d && !w) {candidate.d = 1;}\n\t\t\t\tif (candidate.d === 1) {set.has1x = true;}\n\t\t\t\tcandidate.set = set;\n\n\t\t\t\tcandidates.push(candidate);\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t\t/**\n\t\t* Tokenizes descriptor properties prior to parsing\n\t\t* Returns undefined.\n\t\t* (Again, this fn is defined before it is used, in order to pass JSHINT.\n\t\t* Unfortunately this breaks the logical sequencing of the spec comments. :/ )\n\t\t*/\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t// Do the following depending on the value of state.\n\t\t\t\t// For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t// that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t // Space character\n\t\t\t\t // If current descriptor is not empty, append current descriptor to\n\t\t\t\t // descriptors and let current descriptor be the empty string.\n\t\t\t\t // Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t// characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t// were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t// and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t// more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\t}\n\n\t/*\n\t * Sizes Parser\n\t *\n\t * By Alex Bell | MIT License\n\t *\n\t * Non-strict but accurate and lightweight JS Parser for the string value \n\t *\n\t * Reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-sizes-attribute\n\t *\n\t * Most comments are copied in directly from the spec\n\t * (except for comments in parens).\n\t *\n\t * Grammar is:\n\t * = # [ , ]? | \n\t * = \n\t * = \n\t * http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#attr-img-sizes\n\t *\n\t * E.g. \"(max-width: 30em) 100vw, (max-width: 50em) 70vw, 100vw\"\n\t * or \"(min-width: 30em), calc(30vw - 15px)\" or just \"30vw\"\n\t *\n\t * Returns the first valid with a media condition that evaluates to true,\n\t * or \"100vw\" if all valid media conditions evaluate to false.\n\t *\n\t */\n\n\tfunction parseSizes(strValue) {\n\n\t\t// (Percentage CSS lengths are not allowed in this case, to avoid confusion:\n\t\t// https://html.spec.whatwg.org/multipage/embedded-content.html#valid-source-size-list\n\t\t// CSS allows a single optional plus or minus sign:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#numbers\n\t\t// CSS is ASCII case-insensitive:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#characters )\n\t\t// Spec allows exponential notation for type:\n\t\t// http://dev.w3.org/csswg/css-values/#numbers\n\t\tvar regexCssLengthWithUnits = /^(?:[+-]?[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i;\n\n\t\t// (This is a quick and lenient test. Because of optional unlimited-depth internal\n\t\t// grouping parens and strict spacing rules, this could get very complicated.)\n\t\tvar regexCssCalc = /^calc\\((?:[0-9a-z \\.\\+\\-\\*\\/\\(\\)]+)\\)$/i;\n\n\t\tvar i;\n\t\tvar unparsedSizesList;\n\t\tvar unparsedSizesListLength;\n\t\tvar unparsedSize;\n\t\tvar lastComponentValue;\n\t\tvar size;\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// (Toy CSS parser. The goals here are:\n\t\t// 1) expansive test coverage without the weight of a full CSS parser.\n\t\t// 2) Avoiding regex wherever convenient.\n\t\t// Quick tests: http://jsfiddle.net/gtntL4gr/3/\n\t\t// Returns an array of arrays.)\n\t\tfunction parseComponentValues(str) {\n\t\t\tvar chrctr;\n\t\t\tvar component = \"\";\n\t\t\tvar componentArray = [];\n\t\t\tvar listArray = [];\n\t\t\tvar parenDepth = 0;\n\t\t\tvar pos = 0;\n\t\t\tvar inComment = false;\n\n\t\t\tfunction pushComponent() {\n\t\t\t\tif (component) {\n\t\t\t\t\tcomponentArray.push(component);\n\t\t\t\t\tcomponent = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction pushComponentArray() {\n\t\t\t\tif (componentArray[0]) {\n\t\t\t\t\tlistArray.push(componentArray);\n\t\t\t\t\tcomponentArray = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// (Loop forwards from the beginning of the string.)\n\t\t\twhile (true) {\n\t\t\t\tchrctr = str.charAt(pos);\n\n\t\t\t\tif (chrctr === \"\") { // ( End of string reached.)\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\treturn listArray;\n\t\t\t\t} else if (inComment) {\n\t\t\t\t\tif ((chrctr === \"*\") && (str[pos + 1] === \"/\")) { // (At end of a comment.)\n\t\t\t\t\t\tinComment = false;\n\t\t\t\t\t\tpos += 2;\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpos += 1; // (Skip all characters inside comments.)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (isSpace(chrctr)) {\n\t\t\t\t\t// (If previous character in loop was also a space, or if\n\t\t\t\t\t// at the beginning of the string, do not add space char to\n\t\t\t\t\t// component.)\n\t\t\t\t\tif ( (str.charAt(pos - 1) && isSpace( str.charAt(pos - 1) ) ) || !component ) {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (parenDepth === 0) {\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tpos +=1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// (Replace any space character with a plain space for legibility.)\n\t\t\t\t\t\tchrctr = \" \";\n\t\t\t\t\t}\n\t\t\t\t} else if (chrctr === \"(\") {\n\t\t\t\t\tparenDepth += 1;\n\t\t\t\t} else if (chrctr === \")\") {\n\t\t\t\t\tparenDepth -= 1;\n\t\t\t\t} else if (chrctr === \",\") {\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\tpos += 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if ( (chrctr === \"/\") && (str.charAt(pos + 1) === \"*\") ) {\n\t\t\t\t\tinComment = true;\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcomponent = component + chrctr;\n\t\t\t\tpos += 1;\n\t\t\t}\n\t\t}\n\n\t\tfunction isValidNonNegativeSourceSizeValue(s) {\n\t\t\tif (regexCssLengthWithUnits.test(s) && (parseFloat(s) >= 0)) {return true;}\n\t\t\tif (regexCssCalc.test(s)) {return true;}\n\t\t\t// ( http://www.w3.org/TR/CSS2/syndata.html#numbers says:\n\t\t\t// \"-0 is equivalent to 0 and is not a negative number.\" which means that\n\t\t\t// unitless zero and unitless negative zero must be accepted as special cases.)\n\t\t\tif ((s === \"0\") || (s === \"-0\") || (s === \"+0\")) {return true;}\n\t\t\treturn false;\n\t\t}\n\n\t\t// When asked to parse a sizes attribute from an element, parse a\n\t\t// comma-separated list of component values from the value of the element's\n\t\t// sizes attribute (or the empty string, if the attribute is absent), and let\n\t\t// unparsed sizes list be the result.\n\t\t// http://dev.w3.org/csswg/css-syntax/#parse-comma-separated-list-of-component-values\n\n\t\tunparsedSizesList = parseComponentValues(strValue);\n\t\tunparsedSizesListLength = unparsedSizesList.length;\n\n\t\t// For each unparsed size in unparsed sizes list:\n\t\tfor (i = 0; i < unparsedSizesListLength; i++) {\n\t\t\tunparsedSize = unparsedSizesList[i];\n\n\t\t\t// 1. Remove all consecutive s from the end of unparsed size.\n\t\t\t// ( parseComponentValues() already omits spaces outside of parens. )\n\n\t\t\t// If unparsed size is now empty, that is a parse error; continue to the next\n\t\t\t// iteration of this algorithm.\n\t\t\t// ( parseComponentValues() won't push an empty array. )\n\n\t\t\t// 2. If the last component value in unparsed size is a valid non-negative\n\t\t\t// , let size be its value and remove the component value\n\t\t\t// from unparsed size. Any CSS function other than the calc() function is\n\t\t\t// invalid. Otherwise, there is a parse error; continue to the next iteration\n\t\t\t// of this algorithm.\n\t\t\t// http://dev.w3.org/csswg/css-syntax/#parse-component-value\n\t\t\tlastComponentValue = unparsedSize[unparsedSize.length - 1];\n\n\t\t\tif (isValidNonNegativeSourceSizeValue(lastComponentValue)) {\n\t\t\t\tsize = lastComponentValue;\n\t\t\t\tunparsedSize.pop();\n\t\t\t} else {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 3. Remove all consecutive s from the end of unparsed\n\t\t\t// size. If unparsed size is now empty, return size and exit this algorithm.\n\t\t\t// If this was not the last item in unparsed sizes list, that is a parse error.\n\t\t\tif (unparsedSize.length === 0) {\n\t\t\t\treturn size;\n\t\t\t}\n\n\t\t\t// 4. Parse the remaining component values in unparsed size as a\n\t\t\t// . If it does not parse correctly, or it does parse\n\t\t\t// correctly but the evaluates to false, continue to the\n\t\t\t// next iteration of this algorithm.\n\t\t\t// (Parsing all possible compound media conditions in JS is heavy, complicated,\n\t\t\t// and the payoff is unclear. Is there ever an situation where the\n\t\t\t// media condition parses incorrectly but still somehow evaluates to true?\n\t\t\t// Can we just rely on the browser/polyfill to do it?)\n\t\t\tunparsedSize = unparsedSize.join(\" \");\n\t\t\tif (!(pf.matchesMedia( unparsedSize ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 5. Return size and exit this algorithm.\n\t\t\treturn size;\n\t\t}\n\n\t\t// If the above algorithm exhausts unparsed sizes list without returning a\n\t\t// size value, return 100vw.\n\t\treturn \"100vw\";\n\t}\n\n\t// namespace\n\tpf.ns = (\"pf\" + new Date().getTime()).substr(0, 9);\n\n\t// srcset support test\n\tpf.supSrcset = \"srcset\" in image;\n\tpf.supSizes = \"sizes\" in image;\n\tpf.supPicture = !!window.HTMLPictureElement;\n\n\t// UC browser does claim to support srcset and picture, but not sizes,\n\t// this extended test reveals the browser does support nothing\n\tif (pf.supSrcset && pf.supPicture && !pf.supSizes) {\n\t\t(function(image2) {\n\t\t\timage.srcset = \"data:,a\";\n\t\t\timage2.src = \"data:,a\";\n\t\t\tpf.supSrcset = image.complete === image2.complete;\n\t\t\tpf.supPicture = pf.supSrcset && pf.supPicture;\n\t\t})(document.createElement(\"img\"));\n\t}\n\n\t// Safari9 has basic support for sizes, but does't expose the `sizes` idl attribute\n\tif (pf.supSrcset && !pf.supSizes) {\n\n\t\t(function() {\n\t\t\tvar width2 = \"data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==\";\n\t\t\tvar width1 = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\t\t\tvar img = document.createElement(\"img\");\n\t\t\tvar test = function() {\n\t\t\t\tvar width = img.width;\n\n\t\t\t\tif (width === 2) {\n\t\t\t\t\tpf.supSizes = true;\n\t\t\t\t}\n\n\t\t\t\talwaysCheckWDescriptor = pf.supSrcset && !pf.supSizes;\n\n\t\t\t\tisSupportTestReady = true;\n\t\t\t\t// force async\n\t\t\t\tsetTimeout(picturefill);\n\t\t\t};\n\n\t\t\timg.onload = test;\n\t\t\timg.onerror = test;\n\t\t\timg.setAttribute(\"sizes\", \"9px\");\n\n\t\t\timg.srcset = width1 + \" 1w,\" + width2 + \" 9w\";\n\t\t\timg.src = width1;\n\t\t})();\n\n\t} else {\n\t\tisSupportTestReady = true;\n\t}\n\n\t// using pf.qsa instead of dom traversing does scale much better,\n\t// especially on sites mixing responsive and non-responsive images\n\tpf.selShort = \"picture>img,img[srcset]\";\n\tpf.sel = pf.selShort;\n\tpf.cfg = cfg;\n\n\t/**\n\t * Shortcut property for `devicePixelRatio` ( for easy overriding in tests )\n\t */\n\tpf.DPR = (DPR || 1 );\n\tpf.u = units;\n\n\t// container of supported mime types that one might need to qualify before using\n\tpf.types = types;\n\n\tpf.setSize = noop;\n\n\t/**\n\t * Gets a string and returns the absolute URL\n\t * @param src\n\t * @returns {String} absolute URL\n\t */\n\n\tpf.makeUrl = memoize(function(src) {\n\t\tanchor.href = src;\n\t\treturn anchor.href;\n\t});\n\n\t/**\n\t * Gets a DOM element or document and a selctor and returns the found matches\n\t * Can be extended with jQuery/Sizzle for IE7 support\n\t * @param context\n\t * @param sel\n\t * @returns {NodeList|Array}\n\t */\n\tpf.qsa = function(context, sel) {\n\t\treturn ( \"querySelector\" in context ) ? context.querySelectorAll(sel) : [];\n\t};\n\n\t/**\n\t * Shortcut method for matchMedia ( for easy overriding in tests )\n\t * wether native or pf.mMQ is used will be decided lazy on first call\n\t * @returns {boolean}\n\t */\n\tpf.matchesMedia = function() {\n\t\tif ( window.matchMedia && (matchMedia( \"(min-width: 0.1em)\" ) || {}).matches ) {\n\t\t\tpf.matchesMedia = function( media ) {\n\t\t\t\treturn !media || ( matchMedia( media ).matches );\n\t\t\t};\n\t\t} else {\n\t\t\tpf.matchesMedia = pf.mMQ;\n\t\t}\n\n\t\treturn pf.matchesMedia.apply( this, arguments );\n\t};\n\n\t/**\n\t * A simplified matchMedia implementation for IE8 and IE9\n\t * handles only min-width/max-width with px or em values\n\t * @param media\n\t * @returns {boolean}\n\t */\n\tpf.mMQ = function( media ) {\n\t\treturn media ? evalCSS(media) : true;\n\t};\n\n\t/**\n\t * Returns the calculated length in css pixel from the given sourceSizeValue\n\t * http://dev.w3.org/csswg/css-values-3/#length-value\n\t * intended Spec mismatches:\n\t * * Does not check for invalid use of CSS functions\n\t * * Does handle a computed length of 0 the same as a negative and therefore invalid value\n\t * @param sourceSizeValue\n\t * @returns {Number}\n\t */\n\tpf.calcLength = function( sourceSizeValue ) {\n\n\t\tvar value = evalCSS(sourceSizeValue, true) || false;\n\t\tif (value < 0) {\n\t\t\tvalue = false;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\t/**\n\t * Takes a type string and checks if its supported\n\t */\n\n\tpf.supportsType = function( type ) {\n\t\treturn ( type ) ? types[ type ] : true;\n\t};\n\n\t/**\n\t * Parses a sourceSize into mediaCondition (media) and sourceSizeValue (length)\n\t * @param sourceSizeStr\n\t * @returns {*}\n\t */\n\tpf.parseSize = memoize(function( sourceSizeStr ) {\n\t\tvar match = ( sourceSizeStr || \"\" ).match(regSize);\n\t\treturn {\n\t\t\tmedia: match && match[1],\n\t\t\tlength: match && match[2]\n\t\t};\n\t});\n\n\tpf.parseSet = function( set ) {\n\t\tif ( !set.cands ) {\n\t\t\tset.cands = parseSrcset(set.srcset, set);\n\t\t}\n\t\treturn set.cands;\n\t};\n\n\t/**\n\t * returns 1em in css px for html/body default size\n\t * function taken from respondjs\n\t * @returns {*|number}\n\t */\n\tpf.getEmValue = function() {\n\t\tvar body;\n\t\tif ( !eminpx && (body = document.body) ) {\n\t\t\tvar div = document.createElement( \"div\" ),\n\t\t\t\toriginalHTMLCSS = docElem.style.cssText,\n\t\t\t\toriginalBodyCSS = body.style.cssText;\n\n\t\t\tdiv.style.cssText = baseStyle;\n\n\t\t\t// 1em in a media query is the value of the default font size of the browser\n\t\t\t// reset docElem and body to ensure the correct value is returned\n\t\t\tdocElem.style.cssText = fsCss;\n\t\t\tbody.style.cssText = fsCss;\n\n\t\t\tbody.appendChild( div );\n\t\t\teminpx = div.offsetWidth;\n\t\t\tbody.removeChild( div );\n\n\t\t\t//also update eminpx before returning\n\t\t\teminpx = parseFloat( eminpx, 10 );\n\n\t\t\t// restore the original values\n\t\t\tdocElem.style.cssText = originalHTMLCSS;\n\t\t\tbody.style.cssText = originalBodyCSS;\n\n\t\t}\n\t\treturn eminpx || 16;\n\t};\n\n\t/**\n\t * Takes a string of sizes and returns the width in pixels as a number\n\t */\n\tpf.calcListLength = function( sourceSizeListStr ) {\n\t\t// Split up source size list, ie ( max-width: 30em ) 100%, ( max-width: 50em ) 50%, 33%\n\t\t//\n\t\t// or (min-width:30em) calc(30% - 15px)\n\t\tif ( !(sourceSizeListStr in sizeLengthCache) || cfg.uT ) {\n\t\t\tvar winningLength = pf.calcLength( parseSizes( sourceSizeListStr ) );\n\n\t\t\tsizeLengthCache[ sourceSizeListStr ] = !winningLength ? units.width : winningLength;\n\t\t}\n\n\t\treturn sizeLengthCache[ sourceSizeListStr ];\n\t};\n\n\t/**\n\t * Takes a candidate object with a srcset property in the form of url/\n\t * ex. \"images/pic-medium.png 1x, images/pic-medium-2x.png 2x\" or\n\t * \"images/pic-medium.png 400w, images/pic-medium-2x.png 800w\" or\n\t * \"images/pic-small.png\"\n\t * Get an array of image candidates in the form of\n\t * {url: \"/foo/bar.png\", resolution: 1}\n\t * where resolution is http://dev.w3.org/csswg/css-values-3/#resolution-value\n\t * If sizes is specified, res is calculated\n\t */\n\tpf.setRes = function( set ) {\n\t\tvar candidates;\n\t\tif ( set ) {\n\n\t\t\tcandidates = pf.parseSet( set );\n\n\t\t\tfor ( var i = 0, len = candidates.length; i < len; i++ ) {\n\t\t\t\tsetResolution( candidates[ i ], set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidates;\n\t};\n\n\tpf.setRes.res = setResolution;\n\n\tpf.applySetCandidate = function( candidates, img ) {\n\t\tif ( !candidates.length ) {return;}\n\t\tvar candidate,\n\t\t\ti,\n\t\t\tj,\n\t\t\tlength,\n\t\t\tbestCandidate,\n\t\t\tcurSrc,\n\t\t\tcurCan,\n\t\t\tcandidateSrc,\n\t\t\tabortCurSrc;\n\n\t\tvar imageData = img[ pf.ns ];\n\t\tvar dpr = pf.DPR;\n\n\t\tcurSrc = imageData.curSrc || img[curSrcProp];\n\n\t\tcurCan = imageData.curCan || setSrcToCur(img, curSrc, candidates[0].set);\n\n\t\t// if we have a current source, we might either become lazy or give this source some advantage\n\t\tif ( curCan && curCan.set === candidates[ 0 ].set ) {\n\n\t\t\t// if browser can abort image request and the image has a higher pixel density than needed\n\t\t\t// and this image isn't downloaded yet, we skip next part and try to save bandwidth\n\t\t\tabortCurSrc = (supportAbort && !img.complete && curCan.res - 0.1 > dpr);\n\n\t\t\tif ( !abortCurSrc ) {\n\t\t\t\tcurCan.cached = true;\n\n\t\t\t\t// if current candidate is \"best\", \"better\" or \"okay\",\n\t\t\t\t// set it to bestCandidate\n\t\t\t\tif ( curCan.res >= dpr ) {\n\t\t\t\t\tbestCandidate = curCan;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( !bestCandidate ) {\n\n\t\t\tcandidates.sort( ascendingSort );\n\n\t\t\tlength = candidates.length;\n\t\t\tbestCandidate = candidates[ length - 1 ];\n\n\t\t\tfor ( i = 0; i < length; i++ ) {\n\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\tif ( candidate.res >= dpr ) {\n\t\t\t\t\tj = i - 1;\n\n\t\t\t\t\t// we have found the perfect candidate,\n\t\t\t\t\t// but let's improve this a little bit with some assumptions ;-)\n\t\t\t\t\tif (candidates[ j ] &&\n\t\t\t\t\t\t(abortCurSrc || curSrc !== pf.makeUrl( candidate.url )) &&\n\t\t\t\t\t\tchooseLowRes(candidates[ j ].res, candidate.res, dpr, candidates[ j ].cached)) {\n\n\t\t\t\t\t\tbestCandidate = candidates[ j ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbestCandidate = candidate;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( bestCandidate ) {\n\n\t\t\tcandidateSrc = pf.makeUrl( bestCandidate.url );\n\n\t\t\timageData.curSrc = candidateSrc;\n\t\t\timageData.curCan = bestCandidate;\n\n\t\t\tif ( candidateSrc !== curSrc ) {\n\t\t\t\tpf.setSrc( img, bestCandidate );\n\t\t\t}\n\t\t\tpf.setSize( img );\n\t\t}\n\t};\n\n\tpf.setSrc = function( img, bestCandidate ) {\n\t\tvar origWidth;\n\t\timg.src = bestCandidate.url;\n\n\t\t// although this is a specific Safari issue, we don't want to take too much different code paths\n\t\tif ( bestCandidate.set.type === \"image/svg+xml\" ) {\n\t\t\torigWidth = img.style.width;\n\t\t\timg.style.width = (img.offsetWidth + 1) + \"px\";\n\n\t\t\t// next line only should trigger a repaint\n\t\t\t// if... is only done to trick dead code removal\n\t\t\tif ( img.offsetWidth + 1 ) {\n\t\t\t\timg.style.width = origWidth;\n\t\t\t}\n\t\t}\n\t};\n\n\tpf.getSet = function( img ) {\n\t\tvar i, set, supportsType;\n\t\tvar match = false;\n\t\tvar sets = img [ pf.ns ].sets;\n\n\t\tfor ( i = 0; i < sets.length && !match; i++ ) {\n\t\t\tset = sets[i];\n\n\t\t\tif ( !set.srcset || !pf.matchesMedia( set.media ) || !(supportsType = pf.supportsType( set.type )) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( supportsType === \"pending\" ) {\n\t\t\t\tset = supportsType;\n\t\t\t}\n\n\t\t\tmatch = set;\n\t\t\tbreak;\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tpf.parseSets = function( element, parent, options ) {\n\t\tvar srcsetAttribute, imageSet, isWDescripor, srcsetParsed;\n\n\t\tvar hasPicture = parent && parent.nodeName.toUpperCase() === \"PICTURE\";\n\t\tvar imageData = element[ pf.ns ];\n\n\t\tif ( imageData.src === undefined || options.src ) {\n\t\t\timageData.src = getImgAttr.call( element, \"src\" );\n\t\t\tif ( imageData.src ) {\n\t\t\t\tsetImgAttr.call( element, srcAttr, imageData.src );\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcAttr );\n\t\t\t}\n\t\t}\n\n\t\tif ( imageData.srcset === undefined || options.srcset || !pf.supSrcset || element.srcset ) {\n\t\t\tsrcsetAttribute = getImgAttr.call( element, \"srcset\" );\n\t\t\timageData.srcset = srcsetAttribute;\n\t\t\tsrcsetParsed = true;\n\t\t}\n\n\t\timageData.sets = [];\n\n\t\tif ( hasPicture ) {\n\t\t\timageData.pic = true;\n\t\t\tgetAllSourceElements( parent, imageData.sets );\n\t\t}\n\n\t\tif ( imageData.srcset ) {\n\t\t\timageSet = {\n\t\t\t\tsrcset: imageData.srcset,\n\t\t\t\tsizes: getImgAttr.call( element, \"sizes\" )\n\t\t\t};\n\n\t\t\timageData.sets.push( imageSet );\n\n\t\t\tisWDescripor = (alwaysCheckWDescriptor || imageData.src) && regWDesc.test(imageData.srcset || \"\");\n\n\t\t\t// add normal src as candidate, if source has no w descriptor\n\t\t\tif ( !isWDescripor && imageData.src && !getCandidateForSrc(imageData.src, imageSet) && !imageSet.has1x ) {\n\t\t\t\timageSet.srcset += \", \" + imageData.src;\n\t\t\t\timageSet.cands.push({\n\t\t\t\t\turl: imageData.src,\n\t\t\t\t\td: 1,\n\t\t\t\t\tset: imageSet\n\t\t\t\t});\n\t\t\t}\n\n\t\t} else if ( imageData.src ) {\n\t\t\timageData.sets.push( {\n\t\t\t\tsrcset: imageData.src,\n\t\t\t\tsizes: null\n\t\t\t} );\n\t\t}\n\n\t\timageData.curCan = null;\n\t\timageData.curSrc = undefined;\n\n\t\t// if img has picture or the srcset was removed or has a srcset and does not support srcset at all\n\t\t// or has a w descriptor (and does not support sizes) set support to false to evaluate\n\t\timageData.supported = !( hasPicture || ( imageSet && !pf.supSrcset ) || (isWDescripor && !pf.supSizes) );\n\n\t\tif ( srcsetParsed && pf.supSrcset && !imageData.supported ) {\n\t\t\tif ( srcsetAttribute ) {\n\t\t\t\tsetImgAttr.call( element, srcsetAttr, srcsetAttribute );\n\t\t\t\telement.srcset = \"\";\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcsetAttr );\n\t\t\t}\n\t\t}\n\n\t\tif (imageData.supported && !imageData.srcset && ((!imageData.src && element.src) || element.src !== pf.makeUrl(imageData.src))) {\n\t\t\tif (imageData.src === null) {\n\t\t\t\telement.removeAttribute(\"src\");\n\t\t\t} else {\n\t\t\t\telement.src = imageData.src;\n\t\t\t}\n\t\t}\n\n\t\timageData.parsed = true;\n\t};\n\n\tpf.fillImg = function(element, options) {\n\t\tvar imageData;\n\t\tvar extreme = options.reselect || options.reevaluate;\n\n\t\t// expando for caching data on the img\n\t\tif ( !element[ pf.ns ] ) {\n\t\t\telement[ pf.ns ] = {};\n\t\t}\n\n\t\timageData = element[ pf.ns ];\n\n\t\t// if the element has already been evaluated, skip it\n\t\t// unless `options.reevaluate` is set to true ( this, for example,\n\t\t// is set to true when running `picturefill` on `resize` ).\n\t\tif ( !extreme && imageData.evaled === evalId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !imageData.parsed || options.reevaluate ) {\n\t\t\tpf.parseSets( element, element.parentNode, options );\n\t\t}\n\n\t\tif ( !imageData.supported ) {\n\t\t\tapplyBestCandidate( element );\n\t\t} else {\n\t\t\timageData.evaled = evalId;\n\t\t}\n\t};\n\n\tpf.setupRun = function() {\n\t\tif ( !alreadyRun || isVwDirty || (DPR !== window.devicePixelRatio) ) {\n\t\t\tupdateMetrics();\n\t\t}\n\t};\n\n\t// If picture is supported, well, that's awesome.\n\tif ( pf.supPicture ) {\n\t\tpicturefill = noop;\n\t\tpf.fillImg = noop;\n\t} else {\n\n\t\t // Set up picture polyfill by polling the document\n\t\t(function() {\n\t\t\tvar isDomReady;\n\t\t\tvar regReady = window.attachEvent ? /d$|^c/ : /d$|^c|^i/;\n\n\t\t\tvar run = function() {\n\t\t\t\tvar readyState = document.readyState || \"\";\n\n\t\t\t\ttimerId = setTimeout(run, readyState === \"loading\" ? 200 : 999);\n\t\t\t\tif ( document.body ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t\tisDomReady = isDomReady || regReady.test(readyState);\n\t\t\t\t\tif ( isDomReady ) {\n\t\t\t\t\t\tclearTimeout( timerId );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar timerId = setTimeout(run, document.body ? 9 : 99);\n\n\t\t\t// Also attach picturefill on resize and readystatechange\n\t\t\t// http://modernjavascript.blogspot.com/2013/08/building-better-debounce.html\n\t\t\tvar debounce = function(func, wait) {\n\t\t\t\tvar timeout, timestamp;\n\t\t\t\tvar later = function() {\n\t\t\t\t\tvar last = (new Date()) - timestamp;\n\n\t\t\t\t\tif (last < wait) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait - last);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimeout = null;\n\t\t\t\t\t\tfunc();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn function() {\n\t\t\t\t\ttimestamp = new Date();\n\n\t\t\t\t\tif (!timeout) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t\tvar lastClientWidth = docElem.clientHeight;\n\t\t\tvar onResize = function() {\n\t\t\t\tisVwDirty = Math.max(window.innerWidth || 0, docElem.clientWidth) !== units.width || docElem.clientHeight !== lastClientWidth;\n\t\t\t\tlastClientWidth = docElem.clientHeight;\n\t\t\t\tif ( isVwDirty ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ton( window, \"resize\", debounce(onResize, 99 ) );\n\t\t\ton( document, \"readystatechange\", run );\n\t\t})();\n\t}\n\n\tpf.picturefill = picturefill;\n\t//use this internally for easy monkey patching/performance testing\n\tpf.fillImgs = picturefill;\n\tpf.teardownRun = noop;\n\n\t/* expose methods for testing */\n\tpicturefill._ = pf;\n\n\twindow.picturefillCFG = {\n\t\tpf: pf,\n\t\tpush: function(args) {\n\t\t\tvar name = args.shift();\n\t\t\tif (typeof pf[name] === \"function\") {\n\t\t\t\tpf[name].apply(pf, args);\n\t\t\t} else {\n\t\t\t\tcfg[name] = args[0];\n\t\t\t\tif (alreadyRun) {\n\t\t\t\t\tpf.fillImgs( { reselect: true } );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\twhile (setOptions && setOptions.length) {\n\t\twindow.picturefillCFG.push(setOptions.shift());\n\t}\n\n\t/* expose picturefill */\n\twindow.picturefill = picturefill;\n\n\t/* expose picturefill */\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// CommonJS, just export\n\t\tmodule.exports = picturefill;\n\t} else if ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD support\n\t\tdefine( \"picturefill\", function() { return picturefill; } );\n\t}\n\n\t// IE8 evals this sync, so it must be the last thing we do\n\tif ( !pf.supPicture ) {\n\t\ttypes[ \"image/webp\" ] = detectTypeSupport(\"image/webp\", \"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==\" );\n\t}\n\n} )( window, document );\n","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports);\n global.lgUtils = mod.exports;\n }\n})(this, function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var utils = {\n getAttribute: function getAttribute(el, label) {\n return el[label];\n },\n\n setAttribute: function setAttribute(el, label, value) {\n el[label] = value;\n },\n wrap: function wrap(el, className) {\n if (!el) {\n return;\n }\n\n var wrapper = document.createElement('div');\n wrapper.className = className;\n el.parentNode.insertBefore(wrapper, el);\n el.parentNode.removeChild(el);\n wrapper.appendChild(el);\n },\n\n addClass: function addClass(el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n el.classList.add(className);\n } else {\n el.className += ' ' + className;\n }\n },\n\n removeClass: function removeClass(el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n },\n\n hasClass: function hasClass(el, className) {\n if (el.classList) {\n return el.classList.contains(className);\n } else {\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);\n }\n },\n\n // ex Transform\n // ex TransitionTimingFunction\n setVendor: function setVendor(el, property, value) {\n if (!el) {\n return;\n }\n\n el.style[property.charAt(0).toLowerCase() + property.slice(1)] = value;\n el.style['webkit' + property] = value;\n el.style['moz' + property] = value;\n el.style['ms' + property] = value;\n el.style['o' + property] = value;\n },\n\n trigger: function trigger(el, event) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!el) {\n return;\n }\n\n var customEvent = new CustomEvent(event, {\n detail: detail\n });\n el.dispatchEvent(customEvent);\n },\n\n Listener: {\n uid: 0\n },\n on: function on(el, events, fn) {\n var _this = this;\n\n if (!el) {\n return;\n }\n\n events.split(' ').forEach(function (event) {\n var _id = _this.getAttribute(el, 'lg-event-uid') || '';\n utils.Listener.uid++;\n _id += '&' + utils.Listener.uid;\n _this.setAttribute(el, 'lg-event-uid', _id);\n utils.Listener[event + utils.Listener.uid] = fn;\n el.addEventListener(event.split('.')[0], fn, false);\n });\n },\n\n off: function off(el, event) {\n if (!el) {\n return;\n }\n\n var _id = this.getAttribute(el, 'lg-event-uid');\n if (_id) {\n _id = _id.split('&');\n for (var i = 0; i < _id.length; i++) {\n if (_id[i]) {\n var _event = event + _id[i];\n if (_event.substring(0, 1) === '.') {\n for (var key in utils.Listener) {\n if (utils.Listener.hasOwnProperty(key)) {\n if (key.split('.').indexOf(_event.split('.')[1]) > -1) {\n el.removeEventListener(key.split('.')[0], utils.Listener[key]);\n this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[key];\n }\n }\n }\n } else {\n el.removeEventListener(_event.split('.')[0], utils.Listener[_event]);\n this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[_event];\n }\n }\n }\n }\n },\n\n param: function param(obj) {\n return Object.keys(obj).map(function (k) {\n return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]);\n }).join('&');\n }\n };\n\n exports.default = utils;\n});","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['./lg-utils'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(require('./lg-utils'));\n } else {\n var mod = {\n exports: {}\n };\n factory(global.lgUtils);\n global.lightgallery = mod.exports;\n }\n})(this, function (_lgUtils) {\n 'use strict';\n\n var _lgUtils2 = _interopRequireDefault(_lgUtils);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n /** Polyfill the CustomEvent() constructor functionality in Internet Explorer 9 and higher */\n (function () {\n\n if (typeof window.CustomEvent === 'function') {\n return false;\n }\n\n function CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n\n CustomEvent.prototype = window.Event.prototype;\n\n window.CustomEvent = CustomEvent;\n })();\n\n window.utils = _lgUtils2.default;\n window.lgData = {\n uid: 0\n };\n\n window.lgModules = {};\n var defaults = {\n\n mode: 'lg-slide',\n\n // Ex : 'ease'\n cssEasing: 'ease',\n\n //'for jquery animation'\n easing: 'linear',\n speed: 600,\n height: '100%',\n width: '100%',\n addClass: '',\n startClass: 'lg-start-zoom',\n backdropDuration: 150,\n\n // Set 0, if u don't want to hide the controls \n hideBarsDelay: 6000,\n\n useLeft: false,\n\n // aria-labelledby attribute fot gallery\n ariaLabelledby: '',\n\n //aria-describedby attribute for gallery\n ariaDescribedby: '',\n\n closable: true,\n loop: true,\n escKey: true,\n keyPress: true,\n controls: true,\n slideEndAnimatoin: true,\n hideControlOnEnd: false,\n mousewheel: false,\n\n getCaptionFromTitleOrAlt: true,\n\n // .lg-item || '.lg-sub-html'\n appendSubHtmlTo: '.lg-sub-html',\n\n subHtmlSelectorRelative: false,\n\n /**\n * @desc number of preload slides\n * will exicute only after the current slide is fully loaded.\n *\n * @ex you clicked on 4th image and if preload = 1 then 3rd slide and 5th\n * slide will be loaded in the background after the 4th slide is fully loaded..\n * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ...\n *\n */\n preload: 1,\n showAfterLoad: true,\n selector: '',\n selectWithin: '',\n nextHtml: '',\n prevHtml: '',\n\n // 0, 1\n index: false,\n\n iframeMaxWidth: '100%',\n\n download: true,\n counter: true,\n appendCounterTo: '.lg-toolbar',\n\n swipeThreshold: 50,\n enableSwipe: true,\n enableDrag: true,\n\n dynamic: false,\n dynamicEl: [],\n galleryId: 1,\n supportLegacyBrowser: true\n };\n\n function Plugin(element, options) {\n\n // Current lightGallery element\n this.el = element;\n\n // lightGallery settings\n this.s = _extends({}, defaults, options);\n\n // When using dynamic mode, ensure dynamicEl is an array\n if (this.s.dynamic && this.s.dynamicEl !== 'undefined' && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) {\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\n }\n\n // lightGallery modules\n this.modules = {};\n\n // false when lightgallery complete first slide;\n this.lGalleryOn = false;\n\n this.lgBusy = false;\n\n // Timeout function for hiding controls;\n this.hideBartimeout = false;\n\n // To determine browser supports for touch events;\n this.isTouch = 'ontouchstart' in document.documentElement;\n\n // Disable hideControlOnEnd if sildeEndAnimation is true\n if (this.s.slideEndAnimatoin) {\n this.s.hideControlOnEnd = false;\n }\n\n this.items = [];\n\n // Gallery items\n if (this.s.dynamic) {\n this.items = this.s.dynamicEl;\n } else {\n if (this.s.selector === 'this') {\n this.items.push(this.el);\n } else if (this.s.selector !== '') {\n if (this.s.selectWithin) {\n this.items = document.querySelector(this.s.selectWithin).querySelectorAll(this.s.selector);\n } else {\n this.items = this.el.querySelectorAll(this.s.selector);\n }\n } else {\n this.items = this.el.children;\n }\n }\n\n // .lg-item\n\n this.___slide = '';\n\n // .lg-outer\n this.outer = '';\n\n this.init();\n\n return this;\n }\n\n Plugin.prototype.init = function () {\n\n var _this = this;\n\n // s.preload should not be more than $item.length\n if (_this.s.preload > _this.items.length) {\n _this.s.preload = _this.items.length;\n }\n\n // if dynamic option is enabled execute immediately\n var _hash = window.location.hash;\n if (_hash.indexOf('lg=' + this.s.galleryId) > 0) {\n\n _this.index = parseInt(_hash.split('&slide=')[1], 10);\n\n _lgUtils2.default.addClass(document.body, 'lg-from-hash');\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n }\n\n if (_this.s.dynamic) {\n\n _lgUtils2.default.trigger(this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || 0;\n\n // prevent accidental double execution\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n } else {\n\n for (var i = 0; i < _this.items.length; i++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n\n // Using different namespace for click because click event should not unbind if selector is same object('this')\n _lgUtils2.default.on(_this.items[index], 'click.lgcustom', function (e) {\n\n e.preventDefault();\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || index;\n\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _this.build(_this.index);\n _lgUtils2.default.addClass(document.body, 'lg-on');\n }\n });\n })(i);\n }\n }\n };\n\n Plugin.prototype.build = function (index) {\n\n var _this = this;\n\n _this.structure();\n\n for (var key in window.lgModules) {\n _this.modules[key] = new window.lgModules[key](_this.el);\n }\n\n // initiate slide function\n _this.slide(index, false, false);\n\n if (_this.s.keyPress) {\n _this.keyPress();\n }\n\n if (_this.items.length > 1) {\n\n _this.arrow();\n\n setTimeout(function () {\n _this.enableDrag();\n _this.enableSwipe();\n }, 50);\n\n if (_this.s.mousewheel) {\n _this.mousewheel();\n }\n }\n\n _this.counter();\n\n _this.closeGallery();\n\n _lgUtils2.default.trigger(_this.el, 'onAfterOpen');\n\n // Hide controllers if mouse doesn't move for some period\n if (_this.s.hideBarsDelay > 0) {\n\n // Hide controls if user doesn't use mouse or touch after opening gallery\n var initialHideBarTimeout = setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-items');\n }, _this.s.hideBarsDelay);\n _lgUtils2.default.on(_this.outer, 'mousemove.lg click.lg touchstart.lg', function () {\n\n // Cancel initalHideBarTimout if user uses mouse or touch events\n // Before it fires\n clearTimeout(initialHideBarTimeout);\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-items');\n\n clearTimeout(_this.hideBartimeout);\n\n // Timeout will be cleared on each slide movement also\n _this.hideBartimeout = setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-items');\n }, _this.s.hideBarsDelay);\n });\n }\n };\n\n Plugin.prototype.structure = function () {\n var list = '';\n var controls = '';\n var i = 0;\n var subHtmlCont = '';\n var template;\n var _this = this;\n\n document.body.insertAdjacentHTML('beforeend', '
');\n _lgUtils2.default.setVendor(document.querySelector('.lg-backdrop'), 'TransitionDuration', this.s.backdropDuration + 'ms');\n\n // Create gallery items\n for (i = 0; i < this.items.length; i++) {\n list += '
';\n }\n\n // Create controlls\n if (this.s.controls && this.items.length > 1) {\n controls = '
' + '' + '' + '
';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n subHtmlCont = '
';\n }\n\n var ariaLabelledby = this.s.ariaLabelledby ? 'aria-labelledby=\"' + this.s.ariaLabelledby + '\"' : '';\n var ariaDescribedby = this.s.ariaDescribedby ? 'aria-describedby=\"' + this.s.ariaDescribedby + '\"' : '';\n\n template = '
' + '
' + '
' + list + '
' + '
' + '' + '
' + controls + subHtmlCont + '
' + '
';\n\n document.body.insertAdjacentHTML('beforeend', template);\n this.outer = document.querySelector('.lg-outer');\n this.outer.focus();\n this.___slide = this.outer.querySelectorAll('.lg-item');\n\n if (this.s.useLeft) {\n _lgUtils2.default.addClass(this.outer, 'lg-use-left');\n\n // Set mode lg-slide if use left is true;\n this.s.mode = 'lg-slide';\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-use-css3');\n }\n\n // For fixed height gallery\n _this.setTop();\n _lgUtils2.default.on(window, 'resize.lg orientationchange.lg', function () {\n setTimeout(function () {\n _this.setTop();\n }, 100);\n });\n\n // add class lg-current to remove initial transition\n _lgUtils2.default.addClass(this.___slide[this.index], 'lg-current');\n\n // add Class for css support and transition mode\n if (this.doCss()) {\n _lgUtils2.default.addClass(this.outer, 'lg-css3');\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-css');\n\n // Set speed 0 because no animation will happen if browser doesn't support css3\n this.s.speed = 0;\n }\n\n _lgUtils2.default.addClass(this.outer, this.s.mode);\n\n if (this.s.enableDrag && this.items.length > 1) {\n _lgUtils2.default.addClass(this.outer, 'lg-grab');\n }\n\n if (this.s.showAfterLoad) {\n _lgUtils2.default.addClass(this.outer, 'lg-show-after-load');\n }\n\n if (this.doCss()) {\n var inner = this.outer.querySelector('.lg-inner');\n _lgUtils2.default.setVendor(inner, 'TransitionTimingFunction', this.s.cssEasing);\n _lgUtils2.default.setVendor(inner, 'TransitionDuration', this.s.speed + 'ms');\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(document.querySelector('.lg-backdrop'), 'in');\n });\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-visible');\n }, this.s.backdropDuration);\n\n if (this.s.download) {\n this.outer.querySelector('.lg-toolbar').insertAdjacentHTML('beforeend', '');\n }\n\n // Store the current scroll top value to scroll back after closing the gallery..\n this.prevScrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n };\n\n // For fixed height gallery\n Plugin.prototype.setTop = function () {\n if (this.s.height !== '100%') {\n var wH = window.innerHeight;\n var top = (wH - parseInt(this.s.height, 10)) / 2;\n var lGallery = this.outer.querySelector('.lg');\n if (wH >= parseInt(this.s.height, 10)) {\n lGallery.style.top = top + 'px';\n } else {\n lGallery.style.top = '0px';\n }\n }\n };\n\n // Find css3 support\n Plugin.prototype.doCss = function () {\n // check for css animation support\n var support = function support() {\n var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];\n var root = document.documentElement;\n var i = 0;\n for (i = 0; i < transition.length; i++) {\n if (transition[i] in root.style) {\n return true;\n }\n }\n };\n\n if (support()) {\n return true;\n }\n\n return false;\n };\n\n /**\n * @desc Check the given src is video\n * @param {String} src\n * @return {Object} video type\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\n */\n Plugin.prototype.isVideo = function (src, index) {\n\n var html;\n if (this.s.dynamic) {\n html = this.s.dynamicEl[index].html;\n } else {\n html = this.items[index].getAttribute('data-html');\n }\n\n if (!src && html) {\n return {\n html5: true\n };\n }\n\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)/i);\n var vimeo = src.match(/\\/\\/(?:www\\.)?vimeo.com\\/([0-9a-z\\-_]+)/i);\n var dailymotion = src.match(/\\/\\/(?:www\\.)?dai.ly\\/([0-9a-z\\-_]+)/i);\n var vk = src.match(/\\/\\/(?:www\\.)?(?:vk\\.com|vkontakte\\.ru)\\/(?:video_ext\\.php\\?)(.*)/i);\n\n if (youtube) {\n return {\n youtube: youtube\n };\n } else if (vimeo) {\n return {\n vimeo: vimeo\n };\n } else if (dailymotion) {\n return {\n dailymotion: dailymotion\n };\n } else if (vk) {\n return {\n vk: vk\n };\n }\n };\n\n /**\n * @desc Create image counter\n * Ex: 1/10\n */\n Plugin.prototype.counter = function () {\n if (this.s.counter) {\n this.outer.querySelector(this.s.appendCounterTo).insertAdjacentHTML('beforeend', '
' + (parseInt(this.index, 10) + 1) + ' / ' + this.items.length + '
');\n }\n };\n\n /**\n * @desc add sub-html into the slide\n * @param {Number} index - index of the slide\n */\n Plugin.prototype.addHtml = function (index) {\n var subHtml = null;\n var currentEle;\n if (this.s.dynamic) {\n subHtml = this.s.dynamicEl[index].subHtml;\n } else {\n currentEle = this.items[index];\n subHtml = currentEle.getAttribute('data-sub-html');\n if (this.s.getCaptionFromTitleOrAlt && !subHtml) {\n subHtml = currentEle.getAttribute('title');\n if (subHtml && currentEle.querySelector('img')) {\n subHtml = currentEle.querySelector('img').getAttribute('alt');\n }\n }\n }\n\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n\n // get first letter of subhtml\n // if first letter starts with . or # get the html form the jQuery object\n var fL = subHtml.substring(0, 1);\n if (fL === '.' || fL === '#') {\n if (this.s.subHtmlSelectorRelative && !this.s.dynamic) {\n subHtml = currentEle.querySelector(subHtml).innerHTML;\n } else {\n subHtml = document.querySelector(subHtml).innerHTML;\n }\n }\n } else {\n subHtml = '';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n this.outer.querySelector(this.s.appendSubHtmlTo).innerHTML = subHtml;\n } else {\n this.___slide[index].insertAdjacentHTML('beforeend', subHtml);\n }\n\n // Add lg-empty-html class if title doesn't exist\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n if (subHtml === '') {\n _lgUtils2.default.addClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n } else {\n _lgUtils2.default.removeClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n }\n }\n\n _lgUtils2.default.trigger(this.el, 'onAfterAppendSubHtml', {\n index: index\n });\n };\n\n /**\n * @desc Preload slides\n * @param {Number} index - index of the slide\n */\n Plugin.prototype.preload = function (index) {\n var i = 1;\n var j = 1;\n for (i = 1; i <= this.s.preload; i++) {\n if (i >= this.items.length - index) {\n break;\n }\n\n this.loadContent(index + i, false, 0);\n }\n\n for (j = 1; j <= this.s.preload; j++) {\n if (index - j < 0) {\n break;\n }\n\n this.loadContent(index - j, false, 0);\n }\n };\n\n /**\n * @desc Load slide content into slide.\n * @param {Number} index - index of the slide.\n * @param {Boolean} rec - if true call loadcontent() function again.\n * @param {Boolean} delay - delay for adding complete class. it is 0 except first time.\n */\n Plugin.prototype.loadContent = function (index, rec, delay) {\n\n var _this = this;\n var _hasPoster = false;\n var _img;\n var _src;\n var _poster;\n var _srcset;\n var _sizes;\n var _html;\n var _alt;\n var getResponsiveSrc = function getResponsiveSrc(srcItms) {\n var rsWidth = [];\n var rsSrc = [];\n for (var i = 0; i < srcItms.length; i++) {\n var __src = srcItms[i].split(' ');\n\n // Manage empty space\n if (__src[0] === '') {\n __src.splice(0, 1);\n }\n\n rsSrc.push(__src[0]);\n rsWidth.push(__src[1]);\n }\n\n var wWidth = window.innerWidth;\n for (var j = 0; j < rsWidth.length; j++) {\n if (parseInt(rsWidth[j], 10) > wWidth) {\n _src = rsSrc[j];\n break;\n }\n }\n };\n\n if (_this.s.dynamic) {\n\n if (_this.s.dynamicEl[index].poster) {\n _hasPoster = true;\n _poster = _this.s.dynamicEl[index].poster;\n }\n\n _html = _this.s.dynamicEl[index].html;\n _src = _this.s.dynamicEl[index].src;\n _alt = _this.s.dynamicEl[index].alt;\n\n if (_this.s.dynamicEl[index].responsive) {\n var srcDyItms = _this.s.dynamicEl[index].responsive.split(',');\n getResponsiveSrc(srcDyItms);\n }\n\n _srcset = _this.s.dynamicEl[index].srcset;\n _sizes = _this.s.dynamicEl[index].sizes;\n } else {\n\n if (_this.items[index].getAttribute('data-poster')) {\n _hasPoster = true;\n _poster = _this.items[index].getAttribute('data-poster');\n }\n\n _html = _this.items[index].getAttribute('data-html');\n _src = _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src');\n _alt = _this.items[index].getAttribute('title');\n\n if (_this.items[index].querySelector('img')) {\n _alt = _alt || _this.items[index].querySelector('img').getAttribute('alt');\n }\n\n if (_this.items[index].getAttribute('data-responsive')) {\n var srcItms = _this.items[index].getAttribute('data-responsive').split(',');\n getResponsiveSrc(srcItms);\n }\n\n _srcset = _this.items[index].getAttribute('data-srcset');\n _sizes = _this.items[index].getAttribute('data-sizes');\n }\n\n //if (_src || _srcset || _sizes || _poster) {\n\n var iframe = false;\n if (_this.s.dynamic) {\n if (_this.s.dynamicEl[index].iframe) {\n iframe = true;\n }\n } else {\n if (_this.items[index].getAttribute('data-iframe') === 'true') {\n iframe = true;\n }\n }\n\n var _isVideo = _this.isVideo(_src, index);\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-loaded')) {\n if (iframe) {\n _this.___slide[index].insertAdjacentHTML('afterbegin', '
');\n } else if (_hasPoster) {\n var videoClass = '';\n if (_isVideo && _isVideo.youtube) {\n videoClass = 'lg-has-youtube';\n } else if (_isVideo && _isVideo.vimeo) {\n videoClass = 'lg-has-vimeo';\n } else {\n videoClass = 'lg-has-html5';\n }\n\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n } else if (_isVideo) {\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n _lgUtils2.default.trigger(_this.el, 'hasVideo', {\n index: index,\n src: _src,\n html: _html\n });\n } else {\n _alt = _alt ? 'alt=\"' + _alt + '\"' : '';\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n }\n\n _lgUtils2.default.trigger(_this.el, 'onAferAppendSlide', {\n index: index\n });\n\n _img = _this.___slide[index].querySelector('.lg-object');\n if (_sizes) {\n _img.setAttribute('sizes', _sizes);\n }\n\n if (_srcset) {\n _img.setAttribute('srcset', _srcset);\n\n if (this.s.supportLegacyBrowser) {\n try {\n picturefill({\n elements: [_img[0]]\n });\n } catch (e) {\n console.warn('If you want srcset to be supported for older browsers, ' + 'please include picturefil javascript library in your document.');\n }\n }\n }\n\n if (this.s.appendSubHtmlTo !== '.lg-sub-html') {\n _this.addHtml(index);\n }\n\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-loaded');\n }\n\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n\n // For first time add some delay for displaying the start animation.\n var _speed = 0;\n\n // Do not change the delay value because it is required for zoom plugin.\n // If gallery opened from direct url (hash) speed value should be 0\n if (delay && !_lgUtils2.default.hasClass(document.body, 'lg-from-hash')) {\n _speed = delay;\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n\n _lgUtils2.default.trigger(_this.el, 'onSlideItemLoad', {\n index: index,\n delay: delay || 0\n });\n }, _speed);\n });\n\n // @todo check load state for html5 videos\n if (_isVideo && _isVideo.html5 && !_hasPoster) {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n }\n\n if (rec === true) {\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-complete')) {\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n _this.preload(index);\n });\n } else {\n _this.preload(index);\n }\n }\n\n //}\n };\n\n /**\n * @desc slide function for lightgallery\n ** Slide() gets call on start\n ** ** Set lg.on true once slide() function gets called.\n ** Call loadContent() on slide() function inside setTimeout\n ** ** On first slide we do not want any animation like slide of fade\n ** ** So on first slide( if lg.on if false that is first slide) loadContent() should start loading immediately\n ** ** Else loadContent() should wait for the transition to complete.\n ** ** So set timeout s.speed + 50\n <=> ** loadContent() will load slide content in to the particular slide\n ** ** It has recursion (rec) parameter. if rec === true loadContent() will call preload() function.\n ** ** preload will execute only when the previous slide is fully loaded (images iframe)\n ** ** avoid simultaneous image load\n <=> ** Preload() will check for s.preload value and call loadContent() again accoring to preload value\n ** loadContent() <====> Preload();\n \n * @param {Number} index - index of the slide\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\n */\n Plugin.prototype.slide = function (index, fromTouch, fromThumb) {\n\n var _prevIndex = 0;\n for (var i = 0; i < this.___slide.length; i++) {\n if (_lgUtils2.default.hasClass(this.___slide[i], 'lg-current')) {\n _prevIndex = i;\n break;\n }\n }\n\n var _this = this;\n\n // Prevent if multiple call\n // Required for hsh plugin\n if (_this.lGalleryOn && _prevIndex === index) {\n return;\n }\n\n var _length = this.___slide.length;\n var _time = _this.lGalleryOn ? this.s.speed : 0;\n var _next = false;\n var _prev = false;\n\n if (!_this.lgBusy) {\n\n if (this.s.download) {\n var _src;\n if (_this.s.dynamic) {\n _src = _this.s.dynamicEl[index].downloadUrl !== false && (_this.s.dynamicEl[index].downloadUrl || _this.s.dynamicEl[index].src);\n } else {\n _src = _this.items[index].getAttribute('data-download-url') !== 'false' && (_this.items[index].getAttribute('data-download-url') || _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src'));\n }\n\n if (_src) {\n document.getElementById('lg-download').setAttribute('href', _src);\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-download');\n } else {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-download');\n }\n }\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n\n _this.lgBusy = true;\n\n clearTimeout(_this.hideBartimeout);\n\n // Add title if this.s.appendSubHtmlTo === lg-sub-html\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n\n // wait for slide animation to complete\n setTimeout(function () {\n _this.addHtml(index);\n }, _time);\n }\n\n this.arrowDisable(index);\n\n if (!fromTouch) {\n\n // remove all transitions\n _lgUtils2.default.addClass(_this.outer, 'lg-no-trans');\n\n for (var j = 0; j < this.___slide.length; j++) {\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-prev-slide');\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-next-slide');\n }\n\n if (index < _prevIndex) {\n _prev = true;\n if (index === 0 && _prevIndex === _length - 1 && !fromThumb) {\n _prev = false;\n _next = true;\n }\n } else if (index > _prevIndex) {\n _next = true;\n if (index === _length - 1 && _prevIndex === 0 && !fromThumb) {\n _prev = true;\n _next = false;\n }\n }\n\n if (_prev) {\n\n //prevslide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-prev-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-next-slide');\n } else if (_next) {\n\n // next slide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-next-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-prev-slide');\n }\n\n // give 50 ms for browser to add/remove class\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n\n //_this.$slide.eq(_prevIndex).removeClass('lg-current');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n\n // reset all transitions\n _lgUtils2.default.removeClass(_this.outer, 'lg-no-trans');\n }, 50);\n } else {\n\n var touchPrev = index - 1;\n var touchNext = index + 1;\n\n if (index === 0 && _prevIndex === _length - 1) {\n\n // next slide\n touchNext = 0;\n touchPrev = _length - 1;\n } else if (index === _length - 1 && _prevIndex === 0) {\n\n // prev slide\n touchNext = 0;\n touchPrev = _length - 1;\n }\n\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-prev-slide'), 'lg-prev-slide');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-next-slide'), 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[touchPrev], 'lg-prev-slide');\n _lgUtils2.default.addClass(_this.___slide[touchNext], 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n }\n\n if (_this.lGalleryOn) {\n setTimeout(function () {\n _this.loadContent(index, true, 0);\n }, this.s.speed + 50);\n\n setTimeout(function () {\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }, this.s.speed);\n } else {\n _this.loadContent(index, true, _this.s.backdropDuration);\n\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }\n\n _this.lGalleryOn = true;\n\n if (this.s.counter) {\n if (document.getElementById('lg-counter-current')) {\n document.getElementById('lg-counter-current').innerHTML = index + 1;\n }\n }\n }\n };\n\n /**\n * @desc Go to next slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n */\n Plugin.prototype.goToNextSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index + 1 < _this.___slide.length) {\n _this.index++;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = 0;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-right-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-right-end');\n }, 400);\n }\n }\n }\n };\n\n /**\n * @desc Go to previous slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n */\n Plugin.prototype.goToPrevSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index > 0) {\n _this.index--;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = _this.items.length - 1;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-left-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-left-end');\n }, 400);\n }\n }\n }\n };\n\n Plugin.prototype.keyPress = function () {\n var _this = this;\n if (this.items.length > 1) {\n _lgUtils2.default.on(window, 'keyup.lg', function (e) {\n if (_this.items.length > 1) {\n if (e.keyCode === 37) {\n e.preventDefault();\n _this.goToPrevSlide();\n }\n\n if (e.keyCode === 39) {\n e.preventDefault();\n _this.goToNextSlide();\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'keydown.lg', function (e) {\n if (_this.s.escKey === true && e.keyCode === 27) {\n e.preventDefault();\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-thumb-open')) {\n _this.destroy();\n } else {\n _lgUtils2.default.removeClass(_this.outer, 'lg-thumb-open');\n }\n }\n });\n };\n\n Plugin.prototype.arrow = function () {\n var _this = this;\n _lgUtils2.default.on(this.outer.querySelector('.lg-prev'), 'click.lg', function () {\n _this.goToPrevSlide();\n });\n\n _lgUtils2.default.on(this.outer.querySelector('.lg-next'), 'click.lg', function () {\n _this.goToNextSlide();\n });\n };\n\n Plugin.prototype.arrowDisable = function (index) {\n\n // Disable arrows if s.hideControlOnEnd is true\n if (!this.s.loop && this.s.hideControlOnEnd) {\n var next = this.outer.querySelector('.lg-next');\n var prev = this.outer.querySelector('.lg-prev');\n if (index + 1 < this.___slide.length) {\n next.removeAttribute('disabled');\n _lgUtils2.default.removeClass(next, 'disabled');\n } else {\n next.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(next, 'disabled');\n }\n\n if (index > 0) {\n prev.removeAttribute('disabled');\n _lgUtils2.default.removeClass(prev, 'disabled');\n } else {\n prev.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(prev, 'disabled');\n }\n }\n };\n\n Plugin.prototype.setTranslate = function (el, xValue, yValue) {\n // jQuery supports Automatic CSS prefixing since jQuery 1.8.0\n if (this.s.useLeft) {\n el.style.left = xValue;\n } else {\n _lgUtils2.default.setVendor(el, 'Transform', 'translate3d(' + xValue + 'px, ' + yValue + 'px, 0px)');\n }\n };\n\n Plugin.prototype.touchMove = function (startCoords, endCoords) {\n\n var distance = endCoords - startCoords;\n\n if (Math.abs(distance) > 15) {\n // reset opacity and transition duration\n _lgUtils2.default.addClass(this.outer, 'lg-dragging');\n\n // move current slide\n this.setTranslate(this.___slide[this.index], distance, 0);\n\n // move next and prev slide with current slide\n this.setTranslate(document.querySelector('.lg-prev-slide'), -this.___slide[this.index].clientWidth + distance, 0);\n this.setTranslate(document.querySelector('.lg-next-slide'), this.___slide[this.index].clientWidth + distance, 0);\n }\n };\n\n Plugin.prototype.touchEnd = function (distance) {\n var _this = this;\n\n // keep slide animation for any mode while dragg/swipe\n if (_this.s.mode !== 'lg-slide') {\n _lgUtils2.default.addClass(_this.outer, 'lg-slide');\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n if (!_lgUtils2.default.hasClass(this.___slide[i], 'lg-current') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-prev-slide') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-next-slide')) {\n this.___slide[i].style.opacity = '0';\n }\n }\n\n // set transition duration\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-dragging');\n if (distance < 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToNextSlide(true);\n } else if (distance > 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToPrevSlide(true);\n } else if (Math.abs(distance) < 5) {\n\n // Trigger click if distance is less than 5 pix\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n for (var i = 0; i < _this.___slide.length; i++) {\n _this.___slide[i].removeAttribute('style');\n }\n });\n\n // remove slide class once drag/swipe is completed if mode is not slide\n setTimeout(function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging') && _this.s.mode !== 'lg-slide') {\n _lgUtils2.default.removeClass(_this.outer, 'lg-slide');\n }\n }, _this.s.speed + 100);\n };\n\n Plugin.prototype.enableSwipe = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isMoved = false;\n\n if (_this.s.enableSwipe && _this.isTouch && _this.doCss()) {\n\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'touchstart.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed') && !_this.lgBusy) {\n e.preventDefault();\n _this.manageSwipeClass();\n startCoords = e.targetTouches[0].pageX;\n }\n });\n }\n\n for (var j = 0; j < _this.___slide.length; j++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[j], 'touchmove.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n e.preventDefault();\n endCoords = e.targetTouches[0].pageX;\n _this.touchMove(startCoords, endCoords);\n isMoved = true;\n }\n });\n }\n\n for (var k = 0; k < _this.___slide.length; k++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[k], 'touchend.lg', function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n } else {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n }\n });\n }\n }\n };\n\n Plugin.prototype.enableDrag = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isDraging = false;\n var isMoved = false;\n if (_this.s.enableDrag && !_this.isTouch && _this.doCss()) {\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'mousedown.lg', function (e) {\n // execute only on .lg-object\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n e.preventDefault();\n\n if (!_this.lgBusy) {\n _this.manageSwipeClass();\n startCoords = e.pageX;\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.outer.scrollLeft += 1;\n _this.outer.scrollLeft -= 1;\n\n // *\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-grab');\n _lgUtils2.default.addClass(_this.outer, 'lg-grabbing');\n\n _lgUtils2.default.trigger(_this.el, 'onDragstart');\n }\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'mousemove.lg', function (e) {\n if (isDraging) {\n isMoved = true;\n endCoords = e.pageX;\n _this.touchMove(startCoords, endCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragmove');\n }\n });\n\n _lgUtils2.default.on(window, 'mouseup.lg', function (e) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragend');\n } else if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n // Prevent execution on click\n if (isDraging) {\n isDraging = false;\n _lgUtils2.default.removeClass(_this.outer, 'lg-grabbing');\n _lgUtils2.default.addClass(_this.outer, 'lg-grab');\n }\n });\n }\n };\n\n Plugin.prototype.manageSwipeClass = function () {\n var touchNext = this.index + 1;\n var touchPrev = this.index - 1;\n var length = this.___slide.length;\n if (this.s.loop) {\n if (this.index === 0) {\n touchPrev = length - 1;\n } else if (this.index === length - 1) {\n touchNext = 0;\n }\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-next-slide');\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-prev-slide');\n }\n\n if (touchPrev > -1) {\n _lgUtils2.default.addClass(this.___slide[touchPrev], 'lg-prev-slide');\n }\n\n _lgUtils2.default.addClass(this.___slide[touchNext], 'lg-next-slide');\n };\n\n Plugin.prototype.mousewheel = function () {\n var _this = this;\n _lgUtils2.default.on(_this.outer, 'mousewheel.lg', function (e) {\n\n if (!e.deltaY) {\n return;\n }\n\n if (e.deltaY > 0) {\n _this.goToPrevSlide();\n } else {\n _this.goToNextSlide();\n }\n\n e.preventDefault();\n });\n };\n\n Plugin.prototype.closeGallery = function () {\n\n var _this = this;\n var mousedown = false;\n _lgUtils2.default.on(this.outer.querySelector('.lg-close'), 'click.lg', function () {\n _this.destroy();\n });\n\n if (_this.s.closable) {\n\n // If you drag the slide and release outside gallery gets close on chrome\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\n _lgUtils2.default.on(_this.outer, 'mousedown.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap')) {\n mousedown = true;\n } else {\n mousedown = false;\n }\n });\n\n _lgUtils2.default.on(_this.outer, 'mouseup.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap') && mousedown) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging')) {\n _this.destroy();\n }\n }\n });\n }\n };\n\n Plugin.prototype.destroy = function (d) {\n\n var _this = this;\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onBeforeClose');\n }\n\n document.body.scrollTop = _this.prevScrollTop;\n document.documentElement.scrollTop = _this.prevScrollTop;\n\n /**\n * if d is false or undefined destroy will only close the gallery\n * plugins instance remains with the element\n *\n * if d is true destroy will completely remove the plugin\n */\n\n if (d) {\n if (!_this.s.dynamic) {\n // only when not using dynamic mode is $items a jquery collection\n\n for (var i = 0; i < this.items.length; i++) {\n _lgUtils2.default.off(this.items[i], '.lg');\n _lgUtils2.default.off(this.items[i], '.lgcustom');\n }\n }\n\n var lguid = _this.el.getAttribute('lg-uid');\n delete window.lgData[lguid];\n _this.el.removeAttribute('lg-uid');\n }\n\n // Unbind all events added by lightGallery\n _lgUtils2.default.off(this.el, '.lgtm');\n\n // Distroy all lightGallery modules\n for (var key in window.lgModules) {\n if (_this.modules[key]) {\n _this.modules[key].destroy(d);\n }\n }\n\n this.lGalleryOn = false;\n\n clearTimeout(_this.hideBartimeout);\n this.hideBartimeout = false;\n _lgUtils2.default.off(window, '.lg');\n _lgUtils2.default.removeClass(document.body, 'lg-on');\n _lgUtils2.default.removeClass(document.body, 'lg-from-hash');\n\n if (_this.outer) {\n _lgUtils2.default.removeClass(_this.outer, 'lg-visible');\n }\n\n _lgUtils2.default.removeClass(document.querySelector('.lg-backdrop'), 'in');\n setTimeout(function () {\n try {\n if (_this.outer) {\n _this.outer.parentNode.removeChild(_this.outer);\n }\n\n if (document.querySelector('.lg-backdrop')) {\n document.querySelector('.lg-backdrop').parentNode.removeChild(document.querySelector('.lg-backdrop'));\n }\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onCloseAfter');\n }\n _this.el.focus();\n } catch (err) {}\n }, _this.s.backdropDuration + 50);\n };\n\n window.lightGallery = function (el, options) {\n if (!el) {\n return;\n }\n\n try {\n if (!el.getAttribute('lg-uid')) {\n var uid = 'lg' + window.lgData.uid++;\n window.lgData[uid] = new Plugin(el, options);\n el.setAttribute('lg-uid', uid);\n } else {\n window.lgData[el.getAttribute('lg-uid')].init();\n }\n } catch (err) {\n console.error('lightGallery has not initiated properly', err);\n }\n };\n});","/**!\n * lg-video.js | 1.3.0 | November 7th 2020\n * http://sachinchoolur.github.io/lg-video.js\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgVideo = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 1 && (_this.core.s.enableSwipe && _this.core.isTouch || _this.core.s.enableDrag && !_this.core.isTouch)) {\n utils.on(_this.core.el, 'onSlideClick.lgtm', function () {\n var $el = _this.core.___slide[_this.core.index];\n loadOnClick($el);\n });\n } else {\n\n // For IE 9 and bellow\n for (var i = 0; i < _this.core.___slide.length; i++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n utils.on(_this.core.___slide[index], 'click.lg', function () {\n loadOnClick(_this.core.___slide[index]);\n });\n })(i);\n }\n }\n\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function (event) {\n\n var $videoSlide = _this.core.___slide[event.detail.prevIndex];\n var youtubePlayer = $videoSlide.querySelector('.lg-youtube');\n var vimeoPlayer = $videoSlide.querySelector('.lg-vimeo');\n var dailymotionPlayer = $videoSlide.querySelector('.lg-dailymotion');\n var vkPlayer = $videoSlide.querySelector('.lg-vk');\n var html5Player = $videoSlide.querySelector('.lg-html5');\n if (youtubePlayer) {\n youtubePlayer.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}', '*');\n } else if (vimeoPlayer) {\n try {\n new Vimeo.Player(vimeoPlayer).pause().catch(function (error) {\n console.error('Unable to pause the video:', error.name);\n });\n } catch (e) {\n console.warn('lightGallery:- Make sure you have included https://github.com/vimeo/player.js');\n }\n } else if (dailymotionPlayer) {\n dailymotionPlayer.contentWindow.postMessage('pause', '*');\n } else if (html5Player) {\n if (_this.core.s.videojs) {\n try {\n videojs(html5Player).pause();\n } catch (e) {\n console.error('lightGallery:- Make sure you have included videojs');\n }\n } else {\n html5Player.pause();\n }\n }if (vkPlayer) {\n\n vkPlayer.setAttribute('src', vkPlayer.getAttribute('src').replace('&autoplay', '&noplay'));\n }\n\n var _src;\n if (_this.core.s.dynamic) {\n _src = _this.core.s.dynamicEl[event.detail.index].src;\n } else {\n _src = _this.core.items[event.detail.index].getAttribute('href') || _this.core.items[event.detail.index].getAttribute('data-src');\n }\n\n var _isVideo = _this.core.isVideo(_src, event.detail.index) || {};\n if (_isVideo.youtube || _isVideo.vimeo || _isVideo.dailymotion || _isVideo.vk) {\n utils.addClass(_this.core.outer, 'lg-hide-download');\n }\n\n //$videoSlide.addClass('lg-complete');\n });\n\n utils.on(_this.core.el, 'onAfterSlide.lgtm', function (event) {\n utils.removeClass(_this.core.___slide[event.detail.prevIndex], 'lg-video-playing');\n });\n };\n\n Video.prototype.loadVideo = function (src, addClass, noposter, index, html) {\n var video = '';\n var autoplay = 1;\n var a = '';\n var isVideo = this.core.isVideo(src, index) || {};\n\n // Enable autoplay for first video if poster doesn't exist\n if (noposter) {\n if (this.videoLoaded) {\n autoplay = 0;\n } else {\n autoplay = this.core.s.autoplayFirstVideo ? 1 : 0;\n }\n }\n\n var videoTitle;\n\n if (this.core.s.dynamic) {\n videoTitle = this.core.s.dynamicEl[index].title;\n } else {\n videoTitle = this.core.items[index].getAttribute('title');\n if (!videoTitle) {\n var firstImage = this.core.items[index].querySelector('img');\n if (firstImage) {\n videoTitle = firstImage.getAttribute('alt');\n }\n }\n }\n\n videoTitle = videoTitle ? 'title=\"' + videoTitle + '\"' : '';\n\n if (isVideo.youtube) {\n\n a = '?wmode=opaque&autoplay=' + autoplay + '&enablejsapi=1';\n if (this.core.s.youtubePlayerParams) {\n a = a + '&' + utils.param(this.core.s.youtubePlayerParams);\n }\n\n video = '';\n } else if (isVideo.vimeo) {\n\n a = '?autoplay=' + autoplay;\n if (this.core.s.vimeoPlayerParams) {\n a = a + '&' + utils.param(this.core.s.vimeoPlayerParams);\n }\n\n video = '';\n } else if (isVideo.dailymotion) {\n\n a = '?wmode=opaque&autoplay=' + autoplay + '&api=postMessage';\n if (this.core.s.dailymotionPlayerParams) {\n a = a + '&' + utils.param(this.core.s.dailymotionPlayerParams);\n }\n\n video = '';\n } else if (isVideo.html5) {\n var fL = html.substring(0, 1);\n if (fL === '.' || fL === '#') {\n html = document.querySelector(html).innerHTML;\n }\n\n video = html;\n } else if (isVideo.vk) {\n\n a = '&autoplay=' + autoplay;\n if (this.core.s.vkPlayerParams) {\n a = a + '&' + utils.param(this.core.s.vkPlayerParams);\n }\n\n video = '';\n }\n\n return video;\n };\n\n Video.prototype.destroy = function () {\n this.videoLoaded = false;\n };\n\n window.lgModules.video = Video;\n});\n\n},{}]},{},[1])(1)\n});\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Gallery lightbox\r\n */\r\n\r\n// lightgallery.js must come before lg-video otherwise an\r\n// undefined error occurs\r\n\r\n/* tslint:disable */\r\nimport 'lightgallery.js';\r\nimport 'lg-video.js';\r\n/* tslint:enable */\r\n\r\nconst lightGallery = (window as any).lightGallery;\r\n\r\nconst instance = ($el: Element) => {\r\n // Handle multiple images/links\r\n lightGallery($el, {\r\n selector: 'a',\r\n videoMaxWidth: '100%',\r\n });\r\n};\r\n\r\nconst gallery = () => {\r\n const SELECTOR = '.js-gallery, .wp-block-gallery';\r\n\r\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\r\n instance($el);\r\n });\r\n};\r\n\r\nexport default gallery;\r\n","export const makeSelector = (cssClass: string): string => {\r\n return `.${cssClass}`;\r\n};\r\n","import { makeSelector } from '../../utils/dom';\r\n\r\nconst CSS_SELECTED = 'is-selected';\r\n\r\n/**\r\n * Reverts selected state on provided item.\r\n */\r\nconst deselectItem = ($el: Element) => {\r\n $el.classList.remove(CSS_SELECTED);\r\n\r\n const $anchor = $el.querySelector('a');\r\n\r\n if ($anchor) {\r\n $anchor.setAttribute('aria-expanded', 'false');\r\n }\r\n};\r\n\r\n/**\r\n * Returns whether the navigation item has any sub items.\r\n */\r\nconst hasSubItems = ($el: Element): boolean => {\r\n if (!$el.parentNode) {\r\n return false;\r\n }\r\n\r\n return $el.parentNode.children.length > 1;\r\n};\r\n\r\n/**\r\n * Sets the selected state on provided item.\r\n */\r\nconst selectItem = ($el: Element) => {\r\n const $parent = $el.parentNode as Element;\r\n\r\n if (!$parent) {\r\n return;\r\n }\r\n\r\n $parent.classList.add(CSS_SELECTED);\r\n $el.setAttribute('aria-expanded', 'true');\r\n};\r\n\r\n/**\r\n * Initialises a new navigation component.\r\n */\r\nconst instance = ($el: Element) => {\r\n /**\r\n * Handles a top level item being selected but unselecting the currently\r\n * selected item and setting the top level item has selected, unless it\r\n * was already selected.\r\n */\r\n const onItemSelect = (e: Event) => {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n\r\n const $selectedItem = $el.querySelector(makeSelector(CSS_SELECTED));\r\n const $target = e.currentTarget as Element;\r\n\r\n // de-select the currently selected item if there is one.\r\n if ($selectedItem) {\r\n deselectItem($selectedItem);\r\n }\r\n\r\n if ($target && $selectedItem !== $target.parentNode) {\r\n selectItem($target);\r\n }\r\n };\r\n\r\n $el.querySelectorAll('li > a').forEach(($anchor: Element) => {\r\n if (!hasSubItems($anchor)) {\r\n return;\r\n }\r\n\r\n $anchor.addEventListener('click', onItemSelect);\r\n });\r\n};\r\n\r\n/**\r\n * Initialises each element matching the selector.\r\n */\r\nconst nav = () => {\r\n const SELECTOR = '.js-nav';\r\n\r\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\r\n instance($el);\r\n });\r\n};\r\n\r\nexport default nav;\r\n","\n// ------------------------------------------\n// Rellax.js\n// Buttery smooth parallax library\n// Copyright (c) 2016 Moe Amaya (@moeamaya)\n// MIT license\n//\n// Thanks to Paraxify.js and Jaime Cabllero\n// for parallax concepts\n// ------------------------------------------\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.Rellax = factory();\n }\n}(typeof window !== \"undefined\" ? window : global, function () {\n var Rellax = function(el, options){\n \"use strict\";\n\n var self = Object.create(Rellax.prototype);\n\n var posY = 0;\n var screenY = 0;\n var posX = 0;\n var screenX = 0;\n var blocks = [];\n var pause = true;\n\n // check what requestAnimationFrame to use, and if\n // it's not supported, use the onscroll event\n var loop = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n function(callback){ return setTimeout(callback, 1000 / 60); };\n\n // store the id for later use\n var loopId = null;\n\n // Test via a getter in the options object to see if the passive property is accessed\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"testPassive\", null, opts);\n window.removeEventListener(\"testPassive\", null, opts);\n } catch (e) {}\n\n // check what cancelAnimation method to use\n var clearLoop = window.cancelAnimationFrame || window.mozCancelAnimationFrame || clearTimeout;\n\n // check which transform property to use\n var transformProp = window.transformProp || (function(){\n var testEl = document.createElement('div');\n if (testEl.style.transform === null) {\n var vendors = ['Webkit', 'Moz', 'ms'];\n for (var vendor in vendors) {\n if (testEl.style[ vendors[vendor] + 'Transform' ] !== undefined) {\n return vendors[vendor] + 'Transform';\n }\n }\n }\n return 'transform';\n })();\n\n // Default Settings\n self.options = {\n speed: -2,\n\t verticalSpeed: null,\n\t horizontalSpeed: null,\n breakpoints: [576, 768, 1201],\n center: false,\n wrapper: null,\n relativeToWrapper: false,\n round: true,\n vertical: true,\n horizontal: false,\n verticalScrollAxis: \"y\",\n horizontalScrollAxis: \"x\",\n callback: function() {},\n };\n\n // User defined options (might have more in the future)\n if (options){\n Object.keys(options).forEach(function(key){\n self.options[key] = options[key];\n });\n }\n\n function validateCustomBreakpoints () {\n if (self.options.breakpoints.length === 3 && Array.isArray(self.options.breakpoints)) {\n var isAscending = true;\n var isNumerical = true;\n var lastVal;\n self.options.breakpoints.forEach(function (i) {\n if (typeof i !== 'number') isNumerical = false;\n if (lastVal !== null) {\n if (i < lastVal) isAscending = false;\n }\n lastVal = i;\n });\n if (isAscending && isNumerical) return;\n }\n // revert defaults if set incorrectly\n self.options.breakpoints = [576, 768, 1201];\n console.warn(\"Rellax: You must pass an array of 3 numbers in ascending order to the breakpoints option. Defaults reverted\");\n }\n\n if (options && options.breakpoints) {\n validateCustomBreakpoints();\n }\n\n // By default, rellax class\n if (!el) {\n el = '.rellax';\n }\n\n // check if el is a className or a node\n var elements = typeof el === 'string' ? document.querySelectorAll(el) : [el];\n\n // Now query selector\n if (elements.length > 0) {\n self.elems = elements;\n }\n\n // The elements don't exist\n else {\n console.warn(\"Rellax: The elements you're trying to select don't exist.\");\n return;\n }\n\n // Has a wrapper and it exists\n if (self.options.wrapper) {\n if (!self.options.wrapper.nodeType) {\n var wrapper = document.querySelector(self.options.wrapper);\n\n if (wrapper) {\n self.options.wrapper = wrapper;\n } else {\n console.warn(\"Rellax: The wrapper you're trying to use doesn't exist.\");\n return;\n }\n }\n }\n\n // set a placeholder for the current breakpoint\n var currentBreakpoint;\n\n // helper to determine current breakpoint\n var getCurrentBreakpoint = function (w) {\n var bp = self.options.breakpoints;\n if (w < bp[0]) return 'xs';\n if (w >= bp[0] && w < bp[1]) return 'sm';\n if (w >= bp[1] && w < bp[2]) return 'md';\n return 'lg';\n };\n\n // Get and cache initial position of all elements\n var cacheBlocks = function() {\n for (var i = 0; i < self.elems.length; i++){\n var block = createBlock(self.elems[i]);\n blocks.push(block);\n }\n };\n\n\n // Let's kick this script off\n // Build array for cached element values\n var init = function() {\n for (var i = 0; i < blocks.length; i++){\n self.elems[i].style.cssText = blocks[i].style;\n }\n\n blocks = [];\n\n screenY = window.innerHeight;\n screenX = window.innerWidth;\n currentBreakpoint = getCurrentBreakpoint(screenX);\n\n setPosition();\n\n cacheBlocks();\n\n animate();\n\n // If paused, unpause and set listener for window resizing events\n if (pause) {\n window.addEventListener('resize', init);\n pause = false;\n // Start the loop\n update();\n }\n };\n\n // We want to cache the parallax blocks'\n // values: base, top, height, speed\n // el: is dom object, return: el cache values\n var createBlock = function(el) {\n var dataPercentage = el.getAttribute( 'data-rellax-percentage' );\n var dataSpeed = el.getAttribute( 'data-rellax-speed' );\n var dataXsSpeed = el.getAttribute( 'data-rellax-xs-speed' );\n var dataMobileSpeed = el.getAttribute( 'data-rellax-mobile-speed' );\n var dataTabletSpeed = el.getAttribute( 'data-rellax-tablet-speed' );\n var dataDesktopSpeed = el.getAttribute( 'data-rellax-desktop-speed' );\n var dataVerticalSpeed = el.getAttribute('data-rellax-vertical-speed');\n var dataHorizontalSpeed = el.getAttribute('data-rellax-horizontal-speed');\n var dataVericalScrollAxis = el.getAttribute('data-rellax-vertical-scroll-axis');\n var dataHorizontalScrollAxis = el.getAttribute('data-rellax-horizontal-scroll-axis');\n var dataZindex = el.getAttribute( 'data-rellax-zindex' ) || 0;\n var dataMin = el.getAttribute( 'data-rellax-min' );\n var dataMax = el.getAttribute( 'data-rellax-max' );\n var dataMinX = el.getAttribute('data-rellax-min-x');\n var dataMaxX = el.getAttribute('data-rellax-max-x');\n var dataMinY = el.getAttribute('data-rellax-min-y');\n var dataMaxY = el.getAttribute('data-rellax-max-y');\n var mapBreakpoints;\n var breakpoints = true;\n\n if (!dataXsSpeed && !dataMobileSpeed && !dataTabletSpeed && !dataDesktopSpeed) {\n breakpoints = false;\n } else {\n mapBreakpoints = {\n 'xs': dataXsSpeed,\n 'sm': dataMobileSpeed,\n 'md': dataTabletSpeed,\n 'lg': dataDesktopSpeed\n };\n }\n\n // initializing at scrollY = 0 (top of browser), scrollX = 0 (left of browser)\n // ensures elements are positioned based on HTML layout.\n //\n // If the element has the percentage attribute, the posY and posX needs to be\n // the current scroll position's value, so that the elements are still positioned based on HTML layout\n var wrapperPosY = self.options.wrapper ? self.options.wrapper.scrollTop : (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);\n // If the option relativeToWrapper is true, use the wrappers offset to top, subtracted from the current page scroll.\n if (self.options.relativeToWrapper) {\n var scrollPosY = (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);\n wrapperPosY = scrollPosY - self.options.wrapper.offsetTop;\n }\n var posY = self.options.vertical ? ( dataPercentage || self.options.center ? wrapperPosY : 0 ) : 0;\n var posX = self.options.horizontal ? ( dataPercentage || self.options.center ? self.options.wrapper ? self.options.wrapper.scrollLeft : (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft) : 0 ) : 0;\n\n var blockTop = posY + el.getBoundingClientRect().top;\n var blockHeight = el.clientHeight || el.offsetHeight || el.scrollHeight;\n\n var blockLeft = posX + el.getBoundingClientRect().left;\n var blockWidth = el.clientWidth || el.offsetWidth || el.scrollWidth;\n\n // apparently parallax equation everyone uses\n var percentageY = dataPercentage ? dataPercentage : (posY - blockTop + screenY) / (blockHeight + screenY);\n var percentageX = dataPercentage ? dataPercentage : (posX - blockLeft + screenX) / (blockWidth + screenX);\n if(self.options.center){ percentageX = 0.5; percentageY = 0.5; }\n\n // Optional individual block speed as data attr, otherwise global speed\n var speed = (breakpoints && mapBreakpoints[currentBreakpoint] !== null) ? Number(mapBreakpoints[currentBreakpoint]) : (dataSpeed ? dataSpeed : self.options.speed);\n var verticalSpeed = dataVerticalSpeed ? dataVerticalSpeed : self.options.verticalSpeed;\n var horizontalSpeed = dataHorizontalSpeed ? dataHorizontalSpeed : self.options.horizontalSpeed;\n\n // Optional individual block movement axis direction as data attr, otherwise gobal movement direction\n var verticalScrollAxis = dataVericalScrollAxis ? dataVericalScrollAxis : self.options.verticalScrollAxis;\n var horizontalScrollAxis = dataHorizontalScrollAxis ? dataHorizontalScrollAxis : self.options.horizontalScrollAxis;\n\n var bases = updatePosition(percentageX, percentageY, speed, verticalSpeed, horizontalSpeed);\n\n // ~~Store non-translate3d transforms~~\n // Store inline styles and extract transforms\n var style = el.style.cssText;\n var transform = '';\n\n // Check if there's an inline styled transform\n var searchResult = /transform\\s*:/i.exec(style);\n if (searchResult) {\n // Get the index of the transform\n var index = searchResult.index;\n\n // Trim the style to the transform point and get the following semi-colon index\n var trimmedStyle = style.slice(index);\n var delimiter = trimmedStyle.indexOf(';');\n\n // Remove \"transform\" string and save the attribute\n if (delimiter) {\n transform = \" \" + trimmedStyle.slice(11, delimiter).replace(/\\s/g,'');\n } else {\n transform = \" \" + trimmedStyle.slice(11).replace(/\\s/g,'');\n }\n }\n\n return {\n baseX: bases.x,\n baseY: bases.y,\n top: blockTop,\n left: blockLeft,\n height: blockHeight,\n width: blockWidth,\n speed: speed,\n verticalSpeed: verticalSpeed,\n horizontalSpeed: horizontalSpeed,\n verticalScrollAxis: verticalScrollAxis,\n horizontalScrollAxis: horizontalScrollAxis,\n style: style,\n transform: transform,\n zindex: dataZindex,\n min: dataMin,\n max: dataMax,\n minX: dataMinX,\n maxX: dataMaxX,\n minY: dataMinY,\n maxY: dataMaxY\n };\n };\n\n // set scroll position (posY, posX)\n // side effect method is not ideal, but okay for now\n // returns true if the scroll changed, false if nothing happened\n var setPosition = function() {\n var oldY = posY;\n var oldX = posX;\n\n posY = self.options.wrapper ? self.options.wrapper.scrollTop : (document.documentElement || document.body.parentNode || document.body).scrollTop || window.pageYOffset;\n posX = self.options.wrapper ? self.options.wrapper.scrollLeft : (document.documentElement || document.body.parentNode || document.body).scrollLeft || window.pageXOffset;\n // If option relativeToWrapper is true, use relative wrapper value instead.\n if (self.options.relativeToWrapper) {\n var scrollPosY = (document.documentElement || document.body.parentNode || document.body).scrollTop || window.pageYOffset;\n posY = scrollPosY - self.options.wrapper.offsetTop;\n }\n\n\n if (oldY != posY && self.options.vertical) {\n // scroll changed, return true\n return true;\n }\n\n if (oldX != posX && self.options.horizontal) {\n // scroll changed, return true\n return true;\n }\n\n // scroll did not change\n return false;\n };\n\n // Ahh a pure function, gets new transform value\n // based on scrollPosition and speed\n // Allow for decimal pixel values\n var updatePosition = function(percentageX, percentageY, speed, verticalSpeed, horizontalSpeed) {\n var result = {};\n var valueX = ((horizontalSpeed ? horizontalSpeed : speed) * (100 * (1 - percentageX)));\n var valueY = ((verticalSpeed ? verticalSpeed : speed) * (100 * (1 - percentageY)));\n\n result.x = self.options.round ? Math.round(valueX) : Math.round(valueX * 100) / 100;\n result.y = self.options.round ? Math.round(valueY) : Math.round(valueY * 100) / 100;\n\n return result;\n };\n\n // Remove event listeners and loop again\n var deferredUpdate = function() {\n window.removeEventListener('resize', deferredUpdate);\n window.removeEventListener('orientationchange', deferredUpdate);\n (self.options.wrapper ? self.options.wrapper : window).removeEventListener('scroll', deferredUpdate);\n (self.options.wrapper ? self.options.wrapper : document).removeEventListener('touchmove', deferredUpdate);\n\n // loop again\n loopId = loop(update);\n };\n\n // Loop\n var update = function() {\n if (setPosition() && pause === false) {\n animate();\n\n // loop again\n loopId = loop(update);\n } else {\n loopId = null;\n\n // Don't animate until we get a position updating event\n window.addEventListener('resize', deferredUpdate);\n window.addEventListener('orientationchange', deferredUpdate);\n (self.options.wrapper ? self.options.wrapper : window).addEventListener('scroll', deferredUpdate, supportsPassive ? { passive: true } : false);\n (self.options.wrapper ? self.options.wrapper : document).addEventListener('touchmove', deferredUpdate, supportsPassive ? { passive: true } : false);\n }\n };\n\n // Transform3d on parallax element\n var animate = function() {\n var positions;\n for (var i = 0; i < self.elems.length; i++){\n // Determine relevant movement directions\n var verticalScrollAxis = blocks[i].verticalScrollAxis.toLowerCase();\n var horizontalScrollAxis = blocks[i].horizontalScrollAxis.toLowerCase();\n var verticalScrollX = verticalScrollAxis.indexOf(\"x\") != -1 ? posY : 0;\n var verticalScrollY = verticalScrollAxis.indexOf(\"y\") != -1 ? posY : 0;\n var horizontalScrollX = horizontalScrollAxis.indexOf(\"x\") != -1 ? posX : 0;\n var horizontalScrollY = horizontalScrollAxis.indexOf(\"y\") != -1 ? posX : 0;\n\n var percentageY = ((verticalScrollY + horizontalScrollY - blocks[i].top + screenY) / (blocks[i].height + screenY));\n var percentageX = ((verticalScrollX + horizontalScrollX - blocks[i].left + screenX) / (blocks[i].width + screenX));\n\n // Subtracting initialize value, so element stays in same spot as HTML\n positions = updatePosition(percentageX, percentageY, blocks[i].speed, blocks[i].verticalSpeed, blocks[i].horizontalSpeed);\n var positionY = positions.y - blocks[i].baseY;\n var positionX = positions.x - blocks[i].baseX;\n\n // The next two \"if\" blocks go like this:\n // Check if a limit is defined (first \"min\", then \"max\");\n // Check if we need to change the Y or the X\n // (Currently working only if just one of the axes is enabled)\n // Then, check if the new position is inside the allowed limit\n // If so, use new position. If not, set position to limit.\n\n // Check if a min limit is defined\n if (blocks[i].min !== null) {\n if (self.options.vertical && !self.options.horizontal) {\n positionY = positionY <= blocks[i].min ? blocks[i].min : positionY;\n }\n if (self.options.horizontal && !self.options.vertical) {\n positionX = positionX <= blocks[i].min ? blocks[i].min : positionX;\n }\n }\n\n // Check if directional min limits are defined\n if (blocks[i].minY != null) {\n positionY = positionY <= blocks[i].minY ? blocks[i].minY : positionY;\n }\n if (blocks[i].minX != null) {\n positionX = positionX <= blocks[i].minX ? blocks[i].minX : positionX;\n }\n\n // Check if a max limit is defined\n if (blocks[i].max !== null) {\n if (self.options.vertical && !self.options.horizontal) {\n positionY = positionY >= blocks[i].max ? blocks[i].max : positionY;\n }\n if (self.options.horizontal && !self.options.vertical) {\n positionX = positionX >= blocks[i].max ? blocks[i].max : positionX;\n }\n }\n\n // Check if directional max limits are defined\n if (blocks[i].maxY != null) {\n positionY = positionY >= blocks[i].maxY ? blocks[i].maxY : positionY;\n }\n if (blocks[i].maxX != null) {\n positionX = positionX >= blocks[i].maxX ? blocks[i].maxX : positionX;\n }\n\n var zindex = blocks[i].zindex;\n\n // Move that element\n // (Set the new translation and append initial inline transforms.)\n var translate = 'translate3d(' + (self.options.horizontal ? positionX : '0') + 'px,' + (self.options.vertical ? positionY : '0') + 'px,' + zindex + 'px) ' + blocks[i].transform;\n self.elems[i].style[transformProp] = translate;\n }\n self.options.callback(positions);\n };\n\n self.destroy = function() {\n for (var i = 0; i < self.elems.length; i++){\n self.elems[i].style.cssText = blocks[i].style;\n }\n\n // Remove resize event listener if not pause, and pause\n if (!pause) {\n window.removeEventListener('resize', init);\n pause = true;\n }\n\n // Clear the animation loop to prevent possible memory leak\n clearLoop(loopId);\n loopId = null;\n };\n\n // Init\n init();\n\n // Allow to recalculate the initial values whenever we want\n self.refresh = init;\n\n return self;\n };\n return Rellax;\n}));\n","import Rellax from 'rellax';\r\n\r\nconst parallax = () => {\r\n\r\n document.querySelectorAll('.parallax').forEach(($el: Element) => {\r\n if (!$el.hasAttribute('data-rellax-percentage')) {\r\n $el.setAttribute('data-rellax-percentage', '0.5');\r\n }\r\n\r\n if (!$el.hasAttribute('data-rellax-speed')) {\r\n $el.setAttribute('data-rellax-speed', '2');\r\n }\r\n });\r\n\r\n const rellax = new Rellax('.parallax');\r\n window.onload = () => {\r\n rellax.refresh();\r\n };\r\n};\r\n\r\nexport default parallax;\r\n","export const KEY_UP = 38;\r\nexport const KEY_DOWN = 40;\r\nexport const SPACE = 32;\r\n","import { KEY_DOWN, KEY_UP, SPACE } from '../../utils/keyCode';\r\n\r\n/**\r\n * Initialises the toggle nav button that's responsible for showing/hiding\r\n * the main menu (likely on smaller devices).\r\n */\r\nconst toggleNav = () => {\r\n const CSS_VISIBLE = 'is-nav-visible';\r\n const SELECTOR = '.js-nav-button';\r\n\r\n const validHideKeyCodes = [KEY_UP];\r\n const validShowKeyCodes = [KEY_DOWN, SPACE];\r\n\r\n const $html = document.querySelector('html') as HTMLHtmlElement;\r\n\r\n const checkKeyboardShortcutForToggle = (e: KeyboardEvent) => {\r\n if (validShowKeyCodes.indexOf(e.keyCode) >= 0) {\r\n show();\r\n return;\r\n }\r\n\r\n if (validHideKeyCodes.indexOf(e.keyCode) >= 0) {\r\n hide();\r\n return;\r\n }\r\n };\r\n\r\n const hide = ($el: Element | null = null) => {\r\n $html.classList.remove(CSS_VISIBLE);\r\n\r\n if ($el) {\r\n $el.setAttribute('aria-expanded', 'false');\r\n }\r\n };\r\n\r\n const show = ($el: Element | null | undefined = null) => {\r\n $html.classList.add(CSS_VISIBLE);\r\n\r\n if ($el) {\r\n $el.setAttribute('aria-expanded', 'true');\r\n }\r\n };\r\n\r\n const toggleVisibility = (e: MouseEvent) => {\r\n if (e) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n }\r\n\r\n const $target = (e.currentTarget as Element) || null;\r\n\r\n if ($html.classList.contains(CSS_VISIBLE)) {\r\n hide($target);\r\n return;\r\n }\r\n\r\n show($target);\r\n };\r\n\r\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\r\n const $htmlElement = $el as HTMLElement;\r\n\r\n $htmlElement.addEventListener('click', toggleVisibility);\r\n $htmlElement.addEventListener(\r\n 'keydown',\r\n checkKeyboardShortcutForToggle\r\n );\r\n });\r\n};\r\n\r\nexport default toggleNav;\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport 'picturefill';\r\n\r\nimport gallery from './legacy/components/gallery';\r\nimport nav from './legacy/components/nav';\r\nimport parallax from './legacy/components/parallax';\r\nimport toggleNav from './legacy/components/toggleNav';\r\n\r\n/**\r\n * Called once the page is loaded and handles initialising\r\n * the different components.\r\n */\r\nconst init = () => {\r\n gallery();\r\n nav();\r\n parallax();\r\n toggleNav();\r\n};\r\n\r\nconst canInit = () => {\r\n const regReady = (window as any).attachEvent ? /d$|^c/ : /d$|^c|^i/;\r\n return regReady.test(document.readyState || '');\r\n};\r\n\r\nlet timer: NodeJS.Timeout;\r\n\r\nconst checkCanInit = () => {\r\n if (canInit()) {\r\n if (timer) {\r\n clearTimeout(timer);\r\n }\r\n\r\n init();\r\n return;\r\n }\r\n\r\n timer = setTimeout(checkCanInit, 100);\r\n};\r\n\r\ncheckCanInit();\r\n"],"names":["window","ua","timer","dummySrc","fixRespimg","img","source","sizes","picture","findPictureImgs","i","imgs","onResize","mq","init","document","undefined","eminpx","alwaysCheckWDescriptor","evalId","pf","isSupportTestReady","noop","image","getImgAttr","setImgAttr","removeImgAttr","docElem","types","cfg","srcAttr","srcsetAttr","supportAbort","curSrcProp","regWDesc","regSize","setOptions","baseStyle","fsCss","isVwDirty","cssCache","sizeLengthCache","DPR","units","anchor","alreadyRun","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","on","obj","evt","fn","capture","memoize","cache","input","isSpace","c","evalCSS","regLength","replace","args","index","string","buildStr","css","length","parsedLength","setResolution","candidate","sizesattr","picturefill","opt","elements","plen","options","detectTypeSupport","type","typeUri","updateMetrics","chooseLowRes","lowerValue","higherValue","dprValue","isCached","bonusFactor","tooMuch","bonus","meanDensity","applyBestCandidate","srcSetCandidates","matchingSet","evaluated","ascendingSort","a","b","setSrcToCur","src","set","getCandidateForSrc","candidates","getAllSourceElements","len","srcset","sources","parseSrcset","collectCharacters","regEx","chars","match","pos","inputLength","url","descriptors","currentDescriptor","state","parseDescriptors","pError","w","d","h","desc","lastChar","value","intVal","floatVal","tokenize","parseSizes","strValue","regexCssLengthWithUnits","regexCssCalc","unparsedSizesList","unparsedSizesListLength","unparsedSize","lastComponentValue","size","parseComponentValues","str","chrctr","component","componentArray","listArray","parenDepth","inComment","pushComponent","pushComponentArray","isValidNonNegativeSourceSizeValue","s","image2","width2","width1","test","width","context","sel","media","sourceSizeValue","sourceSizeStr","body","div","originalHTMLCSS","originalBodyCSS","sourceSizeListStr","winningLength","j","bestCandidate","curSrc","curCan","candidateSrc","abortCurSrc","imageData","dpr","origWidth","supportsType","sets","element","parent","srcsetAttribute","imageSet","isWDescripor","srcsetParsed","hasPicture","extreme","isDomReady","regReady","run","readyState","timerId","debounce","func","wait","timeout","timestamp","later","last","lastClientWidth","name","module","global","factory","exports","this","utils","el","label","className","wrapper","property","event","detail","customEvent","events","_this","_id","_event","key","k","require$$0","_lgUtils","_lgUtils2","_interopRequireDefault","_extends","target","CustomEvent","params","defaults","Plugin","_hash","e","initialHideBarTimeout","list","controls","subHtmlCont","template","ariaLabelledby","ariaDescribedby","inner","wH","top","lGallery","support","transition","root","html","youtube","vimeo","dailymotion","vk","subHtml","currentEle","fL","rec","delay","_hasPoster","_img","_src","_poster","_srcset","_sizes","_html","_alt","getResponsiveSrc","srcItms","rsWidth","rsSrc","__src","wWidth","srcDyItms","iframe","_isVideo","videoClass","_speed","fromTouch","fromThumb","_prevIndex","_length","_time","_next","_prev","touchPrev","touchNext","next","prev","xValue","yValue","startCoords","endCoords","distance","isMoved","isDraging","mousedown","lguid","uid","err","f","n","t","o","require","u","p","r","mod","videoDefaults","Video","loadOnClick","$el","youtubePlayer","vimeoPlayer","dailymotionPlayer","html5Player","error","_loadVideo","$tempImg","$videoSlide","vkPlayer","addClass","noposter","video","autoplay","isVideo","videoTitle","firstImage","lightGallery","instance","gallery","makeSelector","cssClass","CSS_SELECTED","deselectItem","$anchor","hasSubItems","selectItem","$parent","onItemSelect","$selectedItem","$target","nav","Rellax","self","posY","screenY","posX","screenX","blocks","pause","loop","callback","loopId","supportsPassive","opts","clearLoop","transformProp","testEl","vendors","vendor","validateCustomBreakpoints","isAscending","isNumerical","lastVal","currentBreakpoint","getCurrentBreakpoint","bp","cacheBlocks","block","createBlock","setPosition","animate","update","dataPercentage","dataSpeed","dataXsSpeed","dataMobileSpeed","dataTabletSpeed","dataDesktopSpeed","dataVerticalSpeed","dataHorizontalSpeed","dataVericalScrollAxis","dataHorizontalScrollAxis","dataZindex","dataMin","dataMax","dataMinX","dataMaxX","dataMinY","dataMaxY","mapBreakpoints","breakpoints","wrapperPosY","scrollPosY","blockTop","blockHeight","blockLeft","blockWidth","percentageY","percentageX","speed","verticalSpeed","horizontalSpeed","verticalScrollAxis","horizontalScrollAxis","bases","updatePosition","style","transform","searchResult","trimmedStyle","delimiter","oldY","oldX","result","valueX","valueY","deferredUpdate","positions","verticalScrollX","verticalScrollY","horizontalScrollX","horizontalScrollY","positionY","positionX","zindex","translate","parallax","rellax","KEY_UP","KEY_DOWN","SPACE","toggleNav","CSS_VISIBLE","SELECTOR","validHideKeyCodes","validShowKeyCodes","$html","checkKeyboardShortcutForToggle","show","hide","toggleVisibility","$htmlElement","canInit","checkCanInit"],"mappings":"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","x_google_ignoreList":[0,1,2,3,7]}