{"version":3,"sources":["webpack:///./node_modules/lightgallery/lightgallery.es5.js","webpack:///./node_modules/macy/dist/macy.js"],"names":["_assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","window","CustomEvent","event","params","bubbles","cancelable","detail","evt","document","createEvent","initCustomEvent","Element","matches","msMatchesSelector","webkitMatchesSelector","lgQuery","selector","cssVenderPrefixes","_getSelector","firstElement","_getFirstEl","generateUUID","replace","c","r","Math","random","toString","context","substring","querySelector","querySelectorAll","_each","func","undefined","forEach","_setCssVendorPrefix","el","cssProperty","value","property","group1","toUpperCase","indexOf","style","charAt","toLowerCase","slice","isEventMatched","eventName","eventNamespace","split","filter","e","every","attr","getAttribute","setAttribute","find","$LG","first","eq","index","parent","parentElement","get","removeAttr","attributes","attrs","removeAttribute","wrap","className","wrapper","createElement","parentNode","insertBefore","removeChild","appendChild","addClass","classNames","classList","add","removeClass","remove","hasClass","contains","hasAttribute","attribute","toggleClass","css","_this","on","events","listener","Array","isArray","eventListeners","push","addEventListener","once","off","keys","removeEventListener","trigger","customEvent","dispatchEvent","load","url","fetch","then","res","innerHTML","html","append","insertAdjacentHTML","prepend","empty","scrollTop","body","documentElement","pageYOffset","scrollLeft","pageXOffset","offset","left","top","rect","getBoundingClientRect","bodyMarginLeft","marginLeft","parseFloat","currentStyle","getComputedStyle","width","clientWidth","paddingLeft","paddingRight","height","clientHeight","paddingTop","paddingBottom","defaultDynamicOptions","convertToData","g","utils","container","spacing","defaultLgSize","lgSize","isResponsiveSizes","wWidth","innerWidth","size_1","parseInt","size","cWidth","cHeight","maxWidth","min","maxHeight","ratio","bottom","imageSize","LGel","containerRect","wHeight","elWidth","elHeight","elStyle","x","borderLeft","y","borderTop","src","iframeWidth","iframeHeight","iframeTitle","altAttr","srcset","sizes","sources","imgMarkup","sourceTag","JSON","parse","map","source","key","srcItms","rsWidth","rsSrc","_src","splice","j","img","complete","naturalWidth","_poster","dummyImg","videoContStyle","_isVideo","youtube","vimeo","items","extraProps","getCaptionFromTitleOrAlt","exThumbImage","dynamicElements","availableDynamicOptions","il","k","a","jl","__spreadArrays","item","dynamicEl","specified","dynamicAttr","name","label","currentItem","alt","title","thumb","subHtml","test","navigator","userAgent","lightGalleryCoreSettings","mode","easing","speed","licenseKey","startClass","backdropDuration","startAnimationDuration","zoomFromOrigin","hideBarsDelay","showBarsAfter","slideDelay","supportLegacyBrowser","allowMediaOverlap","videoMaxSize","defaultCaptionHeight","ariaLabelledby","ariaDescribedby","closable","swipeToClose","closeOnTap","showCloseIcon","showMaximizeIcon","loop","escKey","keyPress","controls","slideEndAnimation","hideControlOnEnd","mousewheel","appendSubHtmlTo","subHtmlSelectorRelative","preload","numberOfSlideItemsInDom","showAfterLoad","selectWithin","nextHtml","prevHtml","download","counter","appendCounterTo","swipeThreshold","enableSwipe","enableDrag","dynamic","isMobile","mobileSettings","plugins","lGEvents","lgId","LightGallery","element","options","lgOpened","lGalleryOn","lgBusy","currentItemsInDom","prevScrollTop","isDummyImageRemoved","modulesLoaded","mediaContainerPosition","timeToLoadModules","settings","galleryItems","getItems","init","validateLicense","addSlideVideoInfo","buildStructure","instance","setTimeout","arrow","_loop_1","this_1","$element","uuid","preventDefault","currentItemIndex","openGallery","buildModules","numberOfModules","plugin","console","warn","error","getSlideItem","getSlideItemId","getIdName","id","getElementById","$container","subHtmlCont","addClasses","containerClassName","closeIcon","maximizeIcon","template","outer","$lgContent","$lgComponents","$backdrop","$inner","$toolbar","refreshOnResize","hideBars","manageCloseGallery","toggleMaximize","videoInfo","__slideVideoInfo","_a","getMediaContainerPosition","top_1","currentImageSize","resizeVideoSlide","imgStyle","getDummyImgStyles","lgVideoStyle","getVideoContStyle","updateSlides","currentSrc","_index","some","galleryItem","itemIndex","organizeSlideItems","loadContent","updateCurrentCounter","updateCounterTotal","closeGallery","children","focus","itemsToBeInsertedToDom","getItemsToBeInsertedToDom","addHtml","transform","setMediaContainerPosition","timeout","currentSlide_1","slide","captionHeight","thumbContainer","clearTimeout","hideBarTimeout","initPictureFill","$img","picturefill","elements","counterHtml","subHtmlUrl","fL","currentSlide","getDummyImageContent","$currentSlide","$currentItem","_dummyImgSrc","dummyImgContent","setImgMarkup","currentGalleryItem","onLgObjectLoad","$el","delay","dummyImageLoaded","handleLgObjectLoad","isVideo","video","html5","match","wistia","rec","poster","_html5Video","responsive","srcDyItms","iframe","top_2","videoSize","markup","isFirstSlide_1","hasStartAnimation","delay_1","html5Video","hasPoster","isFirstSlide","_speed","mediaObject","loadContentOnLoad","prevIndex","numberOfItems","possibleNumberOfItems","max","prevIndexItem","_element","idx","numberOfExistingItems","getPreviousSlideIndex","currentItemId","setDownloadValue","downloadUrl","makeSlideAnimation","direction","currentSlideItem","previousSlideItem","fromTouch","fromThumb","numberOfGalleryItems","previousSlideItem_1","getSlideType","top_3","arrowDisable","touchPrev","touchNext","touchMove","startCoords","endCoords","distanceX","pageX","distanceY","pageY","allowSwipe","swipeDirection","abs","setTranslate","offsetWidth","gutter","opacity","innerHeight","scale","touchEnd","distance","triggerClick","distanceAbs","goToNextSlide","goToPrevSlide","target","isPosterElement","isMoved","isSwiping","$item","targetTouches","touchAction","manageSwipeClass","isDraging","_touchNext","_touchPrev","_loop","keyCode","$prev","$next","xValue","yValue","scaleX","scaleY","deltaY","isSlideElement","playButton","mousedown","force","top_4","destroyModules","removeTimeout","destroy","module","err","closeTimeout","_typeof","Symbol","iterator","obj","constructor","o","Promise","A","recalculate","useContainerForBreakpoints","columns","b","margin","breakAt","mobileFirst","responsiveOptions","docWidth","O","u","l","rows","v","M","offsetHeight","isNaN","position","cols","dataset","macyComplete","tmpRows","f","lastcol","C","h","nodeName","byCss","selectors","RegExp","getElementsByClassName","getElementsByTagName","m","running","run","shift","clear","d","data","emit","naturalHeight","E","constants","EVENT_IMAGE_LOAD","catch","EVENT_IMAGE_ERROR","w","all","EVENT_IMAGE_COMPLETE","I","EVENT_RESIZE","queue","_","debug","N","resizer","T","useOwnImageLoader","waitForImages","EVENT_INITIALIZED","L","getPropertyValue","V","from","offsetParent","trueOrder","EVENT_RECALCULATED","R","useImageLoader","onInit","cancelLegacy","floor","q","recalculateOnImageLoad","runOnImageLoad","reInit","exports"],"mappings":"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","file":"js/10-8f77b5c08cd9420eb8e5.chunk.js","sourcesContent":["/*!\n * lightgallery | 2.0.1 | May 17th 2021\n * http://sachinchoolur.github.io/lightGallery/\n * Copyright (c) 2020 Sachin Neravath;\n * @license GPLv3\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nfunction __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n}\n\n(function () {\n if (typeof window.CustomEvent === 'function') return false;\n\n function CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: null\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n\n window.CustomEvent = CustomEvent;\n})();\n\n(function () {\n if (!Element.prototype.matches) {\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n})();\n\nvar lgQuery =\n/** @class */\nfunction () {\n function lgQuery(selector) {\n this.cssVenderPrefixes = ['TransitionDuration', 'TransitionTimingFunction', 'Transform', 'Transition'];\n this.selector = this._getSelector(selector);\n this.firstElement = this._getFirstEl();\n return this;\n }\n\n lgQuery.generateUUID = function () {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0,\n v = c == 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n };\n\n lgQuery.prototype._getSelector = function (selector, context) {\n if (context === void 0) {\n context = document;\n }\n\n if (typeof selector !== 'string') {\n return selector;\n }\n\n context = context || document;\n var fl = selector.substring(0, 1);\n\n if (fl === '#') {\n return context.querySelector(selector);\n } else {\n return context.querySelectorAll(selector);\n }\n };\n\n lgQuery.prototype._each = function (func) {\n if (!this.selector) {\n return this;\n }\n\n if (this.selector.length !== undefined) {\n [].forEach.call(this.selector, func);\n } else {\n func(this.selector, 0);\n }\n\n return this;\n };\n\n lgQuery.prototype._setCssVendorPrefix = function (el, cssProperty, value) {\n // prettier-ignore\n var property = cssProperty.replace(/-([a-z])/gi, function (s, group1) {\n return group1.toUpperCase();\n });\n\n if (this.cssVenderPrefixes.indexOf(property) !== -1) {\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 } else {\n el.style[property] = value;\n }\n };\n\n lgQuery.prototype._getFirstEl = function () {\n if (this.selector && this.selector.length !== undefined) {\n return this.selector[0];\n } else {\n return this.selector;\n }\n };\n\n lgQuery.prototype.isEventMatched = function (event, eventName) {\n var eventNamespace = eventName.split('.');\n return event.split('.').filter(function (e) {\n return e;\n }).every(function (e) {\n return eventNamespace.indexOf(e) !== -1;\n });\n };\n\n lgQuery.prototype.attr = function (attr, value) {\n if (value === undefined) {\n if (!this.firstElement) {\n return '';\n }\n\n return this.firstElement.getAttribute(attr);\n }\n\n this._each(function (el) {\n el.setAttribute(attr, value);\n });\n\n return this;\n };\n\n lgQuery.prototype.find = function (selector) {\n return $LG(this._getSelector(selector, this.selector));\n };\n\n lgQuery.prototype.first = function () {\n if (this.selector && this.selector.length !== undefined) {\n return $LG(this.selector[0]);\n } else {\n return $LG(this.selector);\n }\n };\n\n lgQuery.prototype.eq = function (index) {\n return $LG(this.selector[index]);\n };\n\n lgQuery.prototype.parent = function () {\n return $LG(this.selector.parentElement);\n };\n\n lgQuery.prototype.get = function () {\n return this._getFirstEl();\n };\n\n lgQuery.prototype.removeAttr = function (attributes) {\n var attrs = attributes.split(' ');\n\n this._each(function (el) {\n attrs.forEach(function (attr) {\n return el.removeAttribute(attr);\n });\n });\n\n return this;\n };\n\n lgQuery.prototype.wrap = function (className) {\n if (!this.firstElement) {\n return this;\n }\n\n var wrapper = document.createElement('div');\n wrapper.className = className;\n this.firstElement.parentNode.insertBefore(wrapper, this.firstElement);\n this.firstElement.parentNode.removeChild(this.firstElement);\n wrapper.appendChild(this.firstElement);\n return this;\n };\n\n lgQuery.prototype.addClass = function (classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n\n this._each(function (el) {\n // IE doesn't support multiple arguments\n classNames.split(' ').forEach(function (className) {\n el.classList.add(className);\n });\n });\n\n return this;\n };\n\n lgQuery.prototype.removeClass = function (classNames) {\n this._each(function (el) {\n // IE doesn't support multiple arguments\n classNames.split(' ').forEach(function (className) {\n el.classList.remove(className);\n });\n });\n\n return this;\n };\n\n lgQuery.prototype.hasClass = function (className) {\n if (!this.firstElement) {\n return false;\n }\n\n return this.firstElement.classList.contains(className);\n };\n\n lgQuery.prototype.hasAttribute = function (attribute) {\n if (!this.firstElement) {\n return false;\n }\n\n return this.firstElement.hasAttribute(attribute);\n };\n\n lgQuery.prototype.toggleClass = function (className) {\n if (!this.firstElement) {\n return this;\n }\n\n if (this.hasClass(className)) {\n this.removeClass(className);\n } else {\n this.addClass(className);\n }\n\n return this;\n };\n\n lgQuery.prototype.css = function (property, value) {\n var _this = this;\n\n this._each(function (el) {\n _this._setCssVendorPrefix(el, property, value);\n });\n\n return this;\n }; // Need to pass separate namespaces for separate elements\n\n\n lgQuery.prototype.on = function (events, listener) {\n var _this = this;\n\n if (!this.selector) {\n return this;\n }\n\n events.split(' ').forEach(function (event) {\n if (!Array.isArray(lgQuery.eventListeners[event])) {\n lgQuery.eventListeners[event] = [];\n }\n\n lgQuery.eventListeners[event].push(listener);\n\n _this.selector.addEventListener(event.split('.')[0], listener);\n });\n return this;\n }; // @todo - test this\n\n\n lgQuery.prototype.once = function (event, listener) {\n var _this = this;\n\n this.on(event, function () {\n _this.off(event);\n\n listener(event);\n });\n return this;\n };\n\n lgQuery.prototype.off = function (event) {\n var _this = this;\n\n if (!this.selector) {\n return this;\n }\n\n Object.keys(lgQuery.eventListeners).forEach(function (eventName) {\n if (_this.isEventMatched(event, eventName)) {\n lgQuery.eventListeners[eventName].forEach(function (listener) {\n _this.selector.removeEventListener(eventName.split('.')[0], listener);\n });\n lgQuery.eventListeners[eventName] = [];\n }\n });\n return this;\n };\n\n lgQuery.prototype.trigger = function (event, detail) {\n if (!this.firstElement) {\n return this;\n }\n\n var customEvent = new CustomEvent(event.split('.')[0], {\n detail: detail || null\n });\n this.firstElement.dispatchEvent(customEvent);\n return this;\n }; // Does not support IE\n\n\n lgQuery.prototype.load = function (url) {\n var _this = this;\n\n fetch(url).then(function (res) {\n _this.selector.innerHTML = res;\n });\n return this;\n };\n\n lgQuery.prototype.html = function (html) {\n if (html === undefined) {\n if (!this.firstElement) {\n return '';\n }\n\n return this.firstElement.innerHTML;\n }\n\n this._each(function (el) {\n el.innerHTML = html;\n });\n\n return this;\n };\n\n lgQuery.prototype.append = function (html) {\n this._each(function (el) {\n if (typeof html === 'string') {\n el.insertAdjacentHTML('beforeend', html);\n } else {\n el.appendChild(html);\n }\n });\n\n return this;\n };\n\n lgQuery.prototype.prepend = function (html) {\n this._each(function (el) {\n el.insertAdjacentHTML('afterbegin', html);\n });\n\n return this;\n };\n\n lgQuery.prototype.remove = function () {\n this._each(function (el) {\n el.parentNode.removeChild(el);\n });\n\n return this;\n };\n\n lgQuery.prototype.empty = function () {\n this._each(function (el) {\n el.innerHTML = '';\n });\n\n return this;\n };\n\n lgQuery.prototype.scrollTop = function (scrollTop) {\n if (scrollTop !== undefined) {\n document.body.scrollTop = scrollTop;\n document.documentElement.scrollTop = scrollTop;\n return this;\n } else {\n return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n }\n };\n\n lgQuery.prototype.scrollLeft = function (scrollLeft) {\n if (scrollLeft !== undefined) {\n document.body.scrollLeft = scrollLeft;\n document.documentElement.scrollLeft = scrollLeft;\n return this;\n } else {\n return window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n }\n };\n\n lgQuery.prototype.offset = function () {\n if (!this.firstElement) {\n return {\n left: 0,\n top: 0\n };\n }\n\n var rect = this.firstElement.getBoundingClientRect();\n var bodyMarginLeft = $LG('body').style().marginLeft; // Minus body margin - https://stackoverflow.com/questions/30711548/is-getboundingclientrect-left-returning-a-wrong-value\n\n return {\n left: rect.left - parseFloat(bodyMarginLeft) + this.scrollLeft(),\n top: rect.top + this.scrollTop()\n };\n };\n\n lgQuery.prototype.style = function () {\n if (!this.firstElement) {\n return {};\n }\n\n return this.firstElement.currentStyle || window.getComputedStyle(this.firstElement);\n }; // Width without padding and border even if box-sizing is used.\n\n\n lgQuery.prototype.width = function () {\n var style = this.style();\n return this.firstElement.clientWidth - parseFloat(style.paddingLeft) - parseFloat(style.paddingRight);\n }; // Height without padding and border even if box-sizing is used.\n\n\n lgQuery.prototype.height = function () {\n var style = this.style();\n return this.firstElement.clientHeight - parseFloat(style.paddingTop) - parseFloat(style.paddingBottom);\n };\n\n lgQuery.eventListeners = {};\n return lgQuery;\n}();\n\nfunction $LG(selector) {\n return new lgQuery(selector);\n}\n\nvar defaultDynamicOptions = ['src', 'sources', 'subHtml', 'subHtmlUrl', 'html', 'video', 'poster', 'slideName', 'responsive', 'srcset', 'sizes', 'iframe', 'downloadUrl', 'width', 'facebookShareUrl', 'tweetText', 'iframeTitle', 'twitterShareUrl', 'pinterestShareUrl', 'pinterestText', 'fbHtml', 'disqusIdentifier', 'disqusUrl']; // Convert html data-attribute to camalcase\n\nfunction convertToData(attr) {\n // FInd a way for lgsize\n if (attr === 'href') {\n return 'src';\n }\n\n attr = attr.replace('data-', '');\n attr = attr.charAt(0).toLowerCase() + attr.slice(1);\n attr = attr.replace(/-([a-z])/g, function (g) {\n return g[1].toUpperCase();\n });\n return attr;\n}\n\nvar utils = {\n /**\r\n * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option\r\n */\n getSize: function getSize(el, container, spacing, defaultLgSize) {\n if (spacing === void 0) {\n spacing = 0;\n }\n\n var LGel = $LG(el);\n var lgSize = LGel.attr('data-lg-size') || defaultLgSize;\n\n if (!lgSize) {\n return;\n }\n\n var isResponsiveSizes = lgSize.split(','); // if at-least two viewport sizes are available\n\n if (isResponsiveSizes[1]) {\n var wWidth = window.innerWidth;\n\n for (var i = 0; i < isResponsiveSizes.length; i++) {\n var size_1 = isResponsiveSizes[i];\n var responsiveWidth = parseInt(size_1.split('-')[2], 10);\n\n if (responsiveWidth > wWidth) {\n lgSize = size_1;\n break;\n } // take last item as last option\n\n\n if (i === isResponsiveSizes.length - 1) {\n lgSize = size_1;\n }\n }\n }\n\n var size = lgSize.split('-');\n var width = parseInt(size[0], 10);\n var height = parseInt(size[1], 10);\n var cWidth = container.width();\n var cHeight = container.height() - spacing;\n var maxWidth = Math.min(cWidth, width);\n var maxHeight = Math.min(cHeight, height);\n var ratio = Math.min(maxWidth / width, maxHeight / height);\n return {\n width: width * ratio,\n height: height * ratio\n };\n },\n\n /**\r\n * @desc Get transform value based on the imageSize. Used for ZoomFromOrigin option\r\n * @param {jQuery Element}\r\n * @returns {String} Transform CSS string\r\n */\n getTransform: function getTransform(el, container, top, bottom, imageSize) {\n if (!imageSize) {\n return;\n }\n\n var LGel = $LG(el).find('img').first();\n\n if (!LGel.get()) {\n return;\n }\n\n var containerRect = container.get().getBoundingClientRect();\n var wWidth = containerRect.width; // using innerWidth to include mobile safari bottom bar\n\n var wHeight = container.height() - (top + bottom);\n var elWidth = LGel.width();\n var elHeight = LGel.height();\n var elStyle = LGel.style();\n var x = (wWidth - elWidth) / 2 - LGel.offset().left + (parseFloat(elStyle.paddingLeft) || 0) + (parseFloat(elStyle.borderLeft) || 0) + $LG(window).scrollLeft() + containerRect.left;\n var y = (wHeight - elHeight) / 2 - LGel.offset().top + (parseFloat(elStyle.paddingTop) || 0) + (parseFloat(elStyle.borderTop) || 0) + $LG(window).scrollTop() + top;\n var scX = elWidth / imageSize.width;\n var scY = elHeight / imageSize.height;\n var transform = 'translate3d(' + (x *= -1) + 'px, ' + (y *= -1) + 'px, 0) scale3d(' + scX + ', ' + scY + ', 1)';\n return transform;\n },\n getIframeMarkup: function getIframeMarkup(src, iframeWidth, iframeHeight, iframeTitle) {\n var title = iframeTitle ? 'title=\"' + iframeTitle + '\"' : '';\n return \"
\\n \\n
\";\n },\n getImgMarkup: function getImgMarkup(index, src, altAttr, srcset, sizes, sources) {\n var srcsetAttr = srcset ? \"srcset=\" + srcset : '';\n var sizesAttr = sizes ? \"sizes=\" + sizes : '';\n var imgMarkup = \"\";\n var sourceTag = '';\n\n if (sources) {\n var sourceObj = typeof sources === 'string' ? JSON.parse(sources) : sources;\n sourceTag = sourceObj.map(function (source) {\n var attrs = '';\n Object.keys(source).forEach(function (key) {\n // Do not remove the first space as it is required to separate the attributes\n attrs += \" \" + key + \"=\\\"\" + source[key] + \"\\\"\";\n });\n return \"\";\n });\n }\n\n return \"\" + sourceTag + imgMarkup;\n },\n // Get src from responsive src\n getResponsiveSrc: function getResponsiveSrc(srcItms) {\n var rsWidth = [];\n var rsSrc = [];\n var src = '';\n\n for (var i = 0; i < srcItms.length; i++) {\n var _src = srcItms[i].split(' '); // Manage empty space\n\n\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\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 return src;\n },\n isImageLoaded: function isImageLoaded(img) {\n if (!img) return false; // During the onload event, IE correctly identifies any images that\n // weren’t downloaded as not complete. Others should too. Gecko-based\n // browsers act like NS4 in that they report this incorrectly.\n\n if (!img.complete) {\n return false;\n } // However, they do have two very useful properties: naturalWidth and\n // naturalHeight. These give the true size of the image. If it failed\n // to load, either of these should be zero.\n\n\n if (img.naturalWidth === 0) {\n return false;\n } // No other way of checking: assume it’s ok.\n\n\n return true;\n },\n getVideoPosterMarkup: function getVideoPosterMarkup(_poster, dummyImg, videoContStyle, _isVideo) {\n var videoClass = '';\n\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 return \"
\\n
\\n \\n Play video\\n \\n \\n \\n \\n \\n \\n \\n
\\n \" + (dummyImg || '') + \"\\n \\n
\";\n },\n\n /**\r\n * @desc Create dynamic elements array from gallery items when dynamic option is false\r\n * It helps to avoid frequent DOM interaction\r\n * and avoid multiple checks for dynamic elments\r\n *\r\n * @returns {Array} dynamicEl\r\n */\n getDynamicOptions: function getDynamicOptions(items, extraProps, getCaptionFromTitleOrAlt, exThumbImage) {\n var dynamicElements = [];\n\n var availableDynamicOptions = __spreadArrays(defaultDynamicOptions, extraProps);\n\n [].forEach.call(items, function (item) {\n var dynamicEl = {};\n\n for (var i = 0; i < item.attributes.length; i++) {\n var attr = item.attributes[i];\n\n if (attr.specified) {\n var dynamicAttr = convertToData(attr.name);\n var label = '';\n\n if (availableDynamicOptions.indexOf(dynamicAttr) > -1) {\n label = dynamicAttr;\n }\n\n if (label) {\n dynamicEl[label] = attr.value;\n }\n }\n }\n\n var currentItem = $LG(item);\n var alt = currentItem.find('img').first().attr('alt');\n var title = currentItem.attr('title');\n var thumb = exThumbImage ? currentItem.attr(exThumbImage) : currentItem.find('img').first().attr('src');\n dynamicEl.thumb = thumb;\n\n if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) {\n dynamicEl.subHtml = title || alt || '';\n }\n\n dynamicEl.alt = alt || title || '';\n dynamicElements.push(dynamicEl);\n });\n return dynamicElements;\n },\n isMobile: function isMobile() {\n return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\n }\n};\nvar lightGalleryCoreSettings = {\n mode: 'lg-slide',\n easing: 'ease',\n speed: 400,\n licenseKey: '0000-0000-000-0000',\n height: '100%',\n width: '100%',\n addClass: '',\n startClass: 'lg-start-zoom',\n backdropDuration: 300,\n container: document.body,\n startAnimationDuration: 400,\n zoomFromOrigin: true,\n hideBarsDelay: 0,\n showBarsAfter: 10000,\n slideDelay: 0,\n supportLegacyBrowser: true,\n allowMediaOverlap: false,\n videoMaxSize: '1280-720',\n defaultCaptionHeight: 0,\n ariaLabelledby: '',\n ariaDescribedby: '',\n closable: true,\n swipeToClose: true,\n closeOnTap: true,\n showCloseIcon: true,\n showMaximizeIcon: false,\n loop: true,\n escKey: true,\n keyPress: true,\n controls: true,\n slideEndAnimation: true,\n hideControlOnEnd: false,\n mousewheel: false,\n getCaptionFromTitleOrAlt: true,\n appendSubHtmlTo: '.lg-sub-html',\n subHtmlSelectorRelative: false,\n preload: 2,\n numberOfSlideItemsInDom: 10,\n showAfterLoad: true,\n selector: '',\n selectWithin: '',\n nextHtml: '',\n prevHtml: '',\n index: 0,\n iframeWidth: '100%',\n iframeHeight: '100%',\n download: true,\n counter: true,\n appendCounterTo: '.lg-toolbar',\n swipeThreshold: 50,\n enableSwipe: true,\n enableDrag: true,\n dynamic: false,\n dynamicEl: [],\n extraProps: [],\n exThumbImage: '',\n isMobile: undefined,\n mobileSettings: {\n controls: false,\n showCloseIcon: false,\n download: false\n },\n plugins: []\n};\n/**\r\n * List of lightGallery events\r\n * All events should be documented here\r\n * Below interfaces are used to build the website documentations\r\n * */\n\nvar lGEvents = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose'\n}; // @ref - https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio\n// @ref - https://2ality.com/2017/04/setting-up-multi-platform-packages.html\n// Unique id for each gallery\n\nvar lgId = 0;\n\nvar LightGallery =\n/** @class */\nfunction () {\n function LightGallery(element, options) {\n this.lgOpened = false;\n this.index = 0; // lightGallery modules\n\n this.plugins = []; // false when lightGallery load first slide content;\n\n this.lGalleryOn = false; // True when a slide animation is in progress\n\n this.lgBusy = false;\n this.currentItemsInDom = []; // Scroll top value before lightGallery is opened\n\n this.prevScrollTop = 0;\n this.isDummyImageRemoved = false;\n this.modulesLoaded = false;\n this.mediaContainerPosition = {\n top: 0,\n bottom: 0\n };\n this.timeToLoadModules = 0;\n\n if (!element) {\n return this;\n }\n\n lgId++;\n this.lgId = lgId;\n this.el = element;\n this.LGel = $LG(element); // lightGallery settings\n\n this.settings = _assign(_assign({}, lightGalleryCoreSettings), options);\n\n if (this.settings.isMobile && typeof this.settings.isMobile === 'function' ? this.settings.isMobile() : utils.isMobile()) {\n var mobileSettings = _assign(_assign({}, this.settings.mobileSettings), this.settings.mobileSettings);\n\n this.settings = _assign(_assign({}, this.settings), mobileSettings);\n } // When using dynamic mode, ensure dynamicEl is an array\n\n\n if (this.settings.dynamic && this.settings.dynamicEl !== undefined && !Array.isArray(this.settings.dynamicEl)) {\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\n }\n\n if (this.settings.slideEndAnimation) {\n this.settings.hideControlOnEnd = false;\n }\n\n if (!this.settings.closable) {\n this.settings.swipeToClose = false;\n } // And reset it on close to get the correct value next time\n\n\n this.zoomFromOrigin = this.settings.zoomFromOrigin; // Gallery items\n\n this.galleryItems = this.getItems(); // At the moment, Zoom from image doesn't support dynamic options\n // @todo add zoomFromOrigin support for dynamic images\n\n if (this.settings.dynamic) {\n this.zoomFromOrigin = false;\n } // settings.preload should not be grater than $item.length\n\n\n this.settings.preload = Math.min(this.settings.preload, this.galleryItems.length);\n this.init();\n this.validateLicense();\n return this;\n }\n\n LightGallery.prototype.init = function () {\n var _this = this;\n\n this.addSlideVideoInfo(this.galleryItems);\n this.timeToLoadModules = this.buildStructure();\n this.LGel.trigger(lGEvents.init, {\n instance: this\n });\n\n if (this.settings.keyPress) {\n this.keyPress();\n }\n\n setTimeout(function () {\n _this.enableDrag();\n\n _this.enableSwipe();\n }, 50);\n\n if (this.galleryItems.length > 1) {\n this.arrow();\n\n if (this.settings.mousewheel) {\n this.mousewheel();\n }\n }\n\n if (!this.settings.dynamic) {\n var _loop_1 = function _loop_1(index) {\n var element = this_1.items[index];\n var $element = $LG(element); // Using different namespace for click because click event should not unbind if selector is same object('this')\n // @todo manage all event listners - should have namespace that represent element\n\n var uuid = lgQuery.generateUUID();\n $element.attr('data-lg-id', uuid).on(\"click.lgcustom-item-\" + uuid, function (e) {\n e.preventDefault();\n var currentItemIndex = _this.settings.index || index;\n\n _this.openGallery(currentItemIndex, element);\n });\n };\n\n var this_1 = this; // Using for loop instead of using bubbling as the items can be any html element.\n\n for (var index = 0; index < this.items.length; index++) {\n _loop_1(index);\n }\n }\n };\n /**\r\n * Module constructor\r\n * Modules are build incrementally.\r\n * Gallery should be opened only once all the modules are initialized.\r\n * use moduleBuildTimeout to make sure this\r\n */\n\n\n LightGallery.prototype.buildModules = function () {\n var _this = this;\n\n var numberOfModules = 0;\n\n if (!this.settings.plugins.length) {\n this.modulesLoaded = true;\n return 0;\n }\n\n this.settings.plugins.forEach(function (plugin, index) {\n numberOfModules++;\n\n (function (num) {\n setTimeout(function () {\n _this.plugins.push(new plugin(_this, $LG));\n\n if (index === _this.settings.plugins.length - 1) {\n _this.modulesLoaded = true;\n }\n }, 10 * num);\n })(numberOfModules);\n });\n return numberOfModules * 10;\n };\n\n LightGallery.prototype.validateLicense = function () {\n if (!this.settings.licenseKey) {\n console.error('Please provide a valid license key');\n } else if (this.settings.licenseKey === '0000-0000-000-0000') {\n console.warn(\"lightGallery: \" + this.settings.licenseKey + \" license key is not valid for production use\");\n }\n };\n\n LightGallery.prototype.getSlideItem = function (index) {\n return $LG(this.getSlideItemId(index));\n };\n\n LightGallery.prototype.getSlideItemId = function (index) {\n return \"#lg-item-\" + this.lgId + \"-\" + index;\n };\n\n LightGallery.prototype.getIdName = function (id) {\n return id + \"-\" + this.lgId;\n };\n\n LightGallery.prototype.getElementById = function (id) {\n return $LG(\"#\" + this.getIdName(id));\n };\n\n LightGallery.prototype.buildStructure = function () {\n var _this = this;\n\n var container = this.$container && this.$container.get();\n\n if (container) {\n return 0;\n }\n\n var controls = '';\n var subHtmlCont = ''; // Create controls\n\n if (this.settings.controls && this.galleryItems.length > 1) {\n controls = \"\\n \";\n }\n\n if (this.settings.appendSubHtmlTo === '.lg-sub-html') {\n subHtmlCont = '
';\n }\n\n var addClasses = '';\n\n if (this.settings.allowMediaOverlap) {\n // Do not remove space before last single quote\n addClasses += 'lg-media-overlap ';\n }\n\n var ariaLabelledby = this.settings.ariaLabelledby ? 'aria-labelledby=\"' + this.settings.ariaLabelledby + '\"' : '';\n var ariaDescribedby = this.settings.ariaDescribedby ? 'aria-describedby=\"' + this.settings.ariaDescribedby + '\"' : '';\n var containerClassName = \"lg-container \" + this.settings.addClass + \" \" + (document.body !== this.settings.container ? 'lg-inline' : '');\n var closeIcon = this.settings.closable && this.settings.showCloseIcon ? \"\" : '';\n var maximizeIcon = this.settings.showMaximizeIcon ? \"\" : '';\n var template = \"\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \" + maximizeIcon + \"\\n \" + closeIcon + \"\\n
\\n \" + controls + \"\\n
\\n \" + subHtmlCont + \"\\n
\\n
\\n
\\n
\\n \";\n $LG(this.settings.container).css('position', 'relative').append(template);\n this.outer = this.getElementById('lg-outer');\n this.$lgContent = this.getElementById('lg-content');\n this.$lgComponents = this.getElementById('lg-components');\n this.$backdrop = this.getElementById('lg-backdrop');\n this.$container = this.getElementById('lg-container');\n this.$inner = this.getElementById('lg-inner');\n this.$toolbar = this.getElementById('lg-toolbar');\n this.$backdrop.css('transition-duration', this.settings.backdropDuration + 'ms');\n this.outer.addClass('lg-use-css3'); // add Class for css support and transition mode\n\n this.outer.addClass('lg-css3');\n this.outer.addClass(this.settings.mode);\n\n if (this.settings.enableDrag && this.galleryItems.length > 1) {\n this.outer.addClass('lg-grab');\n }\n\n if (this.settings.showAfterLoad) {\n this.outer.addClass('lg-show-after-load');\n }\n\n this.$inner.css('transition-timing-function', this.settings.easing);\n this.$inner.css('transition-duration', this.settings.speed + 'ms');\n\n if (this.settings.download) {\n this.$toolbar.append(\"\");\n }\n\n this.counter();\n $LG(window).on(\"resize.lg.global\" + this.lgId + \" orientationchange.lg.global\" + this.lgId, function () {\n _this.refreshOnResize();\n });\n this.hideBars();\n this.manageCloseGallery();\n this.toggleMaximize();\n return this.buildModules();\n };\n\n LightGallery.prototype.refreshOnResize = function () {\n if (this.lgOpened) {\n var currentGalleryItem = this.galleryItems[this.index];\n var videoInfo = currentGalleryItem.__slideVideoInfo;\n\n var _a = this.getMediaContainerPosition(),\n top_1 = _a.top,\n bottom = _a.bottom;\n\n this.currentImageSize = utils.getSize(this.items[this.index], this.$lgContent, top_1 + bottom, videoInfo && this.settings.videoMaxSize);\n\n if (videoInfo) {\n this.resizeVideoSlide(this.index, this.currentImageSize);\n }\n\n if (this.zoomFromOrigin && !this.isDummyImageRemoved) {\n var imgStyle = this.getDummyImgStyles(this.currentImageSize);\n this.outer.find('.lg-current .lg-dummy-img').first().attr('style', imgStyle);\n }\n\n this.LGel.trigger(lGEvents.containerResize);\n }\n };\n\n LightGallery.prototype.resizeVideoSlide = function (index, imageSize) {\n var lgVideoStyle = this.getVideoContStyle(imageSize);\n var currentSlide = this.getSlideItem(index);\n currentSlide.find('.lg-video-cont').attr('style', lgVideoStyle);\n };\n /**\r\n * Update slides dynamically.\r\n * Add, edit or delete slides dynamically when lightGallery is opened.\r\n * Modify the current gallery items and pass it via updateSlides method\r\n * @note\r\n * - Do not mutate existing lightGallery items directly.\r\n * - Always pass new list of gallery items\r\n * - You need to take care of thumbnails outside the gallery if any\r\n * @param items Gallery items\r\n * @param index After the update operation, which slide gallery should navigate to\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n *\r\n * // Adding slides dynamically\r\n * let galleryItems = [\r\n * // Access existing lightGallery items\r\n * // galleryItems are automatically generated internally from the gallery HTML markup\r\n * // or directly from galleryItems when dynamic gallery is used\r\n * ...plugin.galleryItems,\r\n * ...[\r\n * {\r\n * src: 'img/img-1.png',\r\n * thumb: 'img/thumb1.png',\r\n * },\r\n * ],\r\n * ];\r\n * plugin.updateSlides(\r\n * galleryItems,\r\n * plugin.index,\r\n * );\r\n *\r\n *\r\n * // Remove slides dynamically\r\n * galleryItems = JSON.parse(\r\n * JSON.stringify(updateSlideInstance.galleryItems),\r\n * );\r\n * galleryItems.shift();\r\n * updateSlideInstance.updateSlides(galleryItems, 1);\r\n * @see Demo\r\n */\n\n\n LightGallery.prototype.updateSlides = function (items, index) {\n if (this.index > items.length - 1) {\n this.index = items.length - 1;\n }\n\n if (items.length === 1) {\n this.index = 0;\n }\n\n if (!items.length) {\n this.closeGallery();\n return;\n }\n\n var currentSrc = this.galleryItems[index].src;\n this.addSlideVideoInfo(items);\n this.galleryItems = items;\n this.$inner.empty();\n this.currentItemsInDom = [];\n var _index = 0; // Find the current index based on source value of the slide\n\n this.galleryItems.some(function (galleryItem, itemIndex) {\n if (galleryItem.src === currentSrc) {\n _index = itemIndex;\n return true;\n }\n\n return false;\n });\n this.currentItemsInDom = this.organizeSlideItems(_index, -1);\n this.loadContent(_index, true);\n this.getSlideItem(_index).addClass('lg-current');\n this.index = _index;\n this.updateCurrentCounter(_index);\n this.updateCounterTotal();\n this.LGel.trigger(lGEvents.updateSlides);\n }; // Get gallery items based on multiple conditions\n\n\n LightGallery.prototype.getItems = function () {\n // Gallery items\n this.items = [];\n\n if (!this.settings.dynamic) {\n if (this.settings.selector === 'this') {\n this.items.push(this.el);\n } else if (this.settings.selector) {\n if (typeof this.settings.selector === 'string') {\n if (this.settings.selectWithin) {\n var selectWithin = $LG(this.settings.selectWithin);\n this.items = selectWithin.find(this.settings.selector).get();\n } else {\n this.items = this.el.querySelectorAll(this.settings.selector);\n }\n } else {\n this.items = this.settings.selector;\n }\n } else {\n this.items = this.el.children;\n }\n\n return utils.getDynamicOptions(this.items, this.settings.extraProps, this.settings.getCaptionFromTitleOrAlt, this.settings.exThumbImage);\n } else {\n return this.settings.dynamicEl || [];\n }\n };\n /**\r\n * Open lightGallery.\r\n * Open gallery with specific slide by passing index of the slide as parameter.\r\n * @category lGPublicMethods\r\n * @param {Number} index - index of the slide\r\n * @param {HTMLElement} element - Which image lightGallery should zoom from\r\n *\r\n * @example\r\n * const $dynamicGallery = document.getElementById('dynamic-gallery-demo');\r\n * const dynamicGallery = lightGallery($dynamicGallery, {\r\n * dynamic: true,\r\n * dynamicEl: [\r\n * {\r\n * src: 'img/1.jpg',\r\n * thumb: 'img/thumb-1.jpg',\r\n * subHtml: '

Image 1 title

Image 1 descriptions.

',\r\n * },\r\n * ...\r\n * ],\r\n * });\r\n * $dynamicGallery.addEventListener('click', function () {\r\n * // Starts with third item.(Optional).\r\n * // This is useful if you want use dynamic mode with\r\n * // custom thumbnails (thumbnails outside gallery),\r\n * dynamicGallery.openGallery(2);\r\n * });\r\n *\r\n */\n\n\n LightGallery.prototype.openGallery = function (index, element) {\n var _this = this;\n\n if (index === void 0) {\n index = this.settings.index;\n } // prevent accidental double execution\n\n\n if (this.lgOpened) return;\n\n if (!this.modulesLoaded) {\n setTimeout(function () {\n _this.openGallery(index, element);\n }, this.timeToLoadModules);\n return;\n }\n\n this.lgOpened = true;\n this.outer.get().focus();\n this.outer.removeClass('lg-hide-items'); // Add display block, but still has opacity 0\n\n this.$container.addClass('lg-show');\n var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, index);\n this.currentItemsInDom = itemsToBeInsertedToDom;\n var items = '';\n itemsToBeInsertedToDom.forEach(function (item) {\n items = items + (\"
\");\n });\n this.$inner.append(items);\n this.addHtml(index);\n var transform = '';\n this.mediaContainerPosition = this.getMediaContainerPosition();\n var _a = this.mediaContainerPosition,\n top = _a.top,\n bottom = _a.bottom;\n\n if (!this.settings.allowMediaOverlap) {\n this.setMediaContainerPosition(top, bottom);\n }\n\n if (this.zoomFromOrigin && element) {\n this.currentImageSize = utils.getSize(element, this.$lgContent, top + bottom, this.galleryItems[this.index].__slideVideoInfo && this.settings.videoMaxSize);\n transform = utils.getTransform(element, this.$lgContent, top, bottom, this.currentImageSize);\n }\n\n if (!this.zoomFromOrigin || !transform) {\n this.outer.addClass(this.settings.startClass);\n this.getSlideItem(index).removeClass('lg-complete');\n }\n\n var timeout = this.settings.zoomFromOrigin ? 100 : this.settings.backdropDuration;\n setTimeout(function () {\n _this.outer.addClass('lg-components-open');\n }, timeout);\n this.LGel.trigger(lGEvents.beforeOpen); // add class lg-current to remove initial transition\n\n this.getSlideItem(index).addClass('lg-current');\n this.lGalleryOn = false;\n this.index = index; // Store the current scroll top value to scroll back after closing the gallery..\n\n this.prevScrollTop = $LG(window).scrollTop();\n setTimeout(function () {\n // Need to check both zoomFromOrigin and transform values as we need to set set the\n // default opening animation if user missed to add the lg-size attribute\n if (_this.zoomFromOrigin && transform) {\n var currentSlide_1 = _this.getSlideItem(index);\n\n currentSlide_1.css('transform', transform);\n setTimeout(function () {\n currentSlide_1.addClass('lg-start-progress lg-start-end-progress').css('transition-duration', _this.settings.startAnimationDuration + 'ms');\n\n _this.outer.addClass('lg-zoom-from-image');\n });\n setTimeout(function () {\n currentSlide_1.css('transform', 'translate3d(0, 0, 0)');\n }, 100);\n }\n\n setTimeout(function () {\n _this.$backdrop.addClass('in');\n\n _this.$container.addClass('lg-show-in');\n }, 10); // lg-visible class resets gallery opacity to 1\n\n if (!_this.zoomFromOrigin || !transform) {\n setTimeout(function () {\n _this.outer.addClass('lg-visible');\n }, _this.settings.backdropDuration);\n } // initiate slide function\n\n\n _this.slide(index, false, false, false);\n\n _this.LGel.trigger(lGEvents.afterOpen);\n });\n\n if (document.body === this.settings.container) {\n $LG('html').addClass('lg-on');\n }\n };\n /**\r\n * Note - Changing the position of the media on every slide transition creates a flickering effect.\r\n * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption.\r\n * if you have dynamic captions for each media,\r\n * you can provide an appropriate height for the captions via allowMediaOverlap option\r\n */\n\n\n LightGallery.prototype.getMediaContainerPosition = function () {\n if (this.settings.allowMediaOverlap) {\n return {\n top: 0,\n bottom: 0\n };\n }\n\n var top = this.$toolbar.get().clientHeight || 0;\n var captionHeight = this.settings.defaultCaptionHeight || this.outer.find('.lg-sub-html').get().clientHeight;\n var thumbContainer = this.outer.find('.lg-thumb-outer').get();\n var thumbHeight = thumbContainer ? thumbContainer.clientHeight : 0;\n var bottom = thumbHeight + captionHeight;\n return {\n top: top,\n bottom: bottom\n };\n };\n\n LightGallery.prototype.setMediaContainerPosition = function (top, bottom) {\n if (top === void 0) {\n top = 0;\n }\n\n if (bottom === void 0) {\n bottom = 0;\n }\n\n this.$inner.css('top', top + 'px').css('bottom', bottom + 'px');\n };\n\n LightGallery.prototype.hideBars = function () {\n var _this = this; // Hide controllers if mouse doesn't move for some period\n\n\n setTimeout(function () {\n _this.outer.removeClass('lg-hide-items');\n\n if (_this.settings.hideBarsDelay > 0) {\n _this.outer.on('mousemove.lg click.lg touchstart.lg', function () {\n _this.outer.removeClass('lg-hide-items');\n\n clearTimeout(_this.hideBarTimeout); // Timeout will be cleared on each slide movement also\n\n _this.hideBarTimeout = setTimeout(function () {\n _this.outer.addClass('lg-hide-items');\n }, _this.settings.hideBarsDelay);\n });\n\n _this.outer.trigger('mousemove.lg');\n }\n }, this.settings.showBarsAfter);\n };\n\n LightGallery.prototype.initPictureFill = function ($img) {\n if (this.settings.supportLegacyBrowser) {\n try {\n picturefill({\n elements: [$img.get()]\n });\n } catch (e) {\n console.warn('lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.');\n }\n }\n };\n /**\r\n * @desc Create image counter\r\n * Ex: 1/10\r\n */\n\n\n LightGallery.prototype.counter = function () {\n if (this.settings.counter) {\n var counterHtml = \"
\\n \" + (this.index + 1) + \" / \\n \" + this.galleryItems.length + \"
\";\n this.outer.find(this.settings.appendCounterTo).append(counterHtml);\n }\n };\n /**\r\n * @desc add sub-html into the slide\r\n * @param {Number} index - index of the slide\r\n */\n\n\n LightGallery.prototype.addHtml = function (index) {\n var subHtml;\n var subHtmlUrl;\n\n if (this.galleryItems[index].subHtmlUrl) {\n subHtmlUrl = this.galleryItems[index].subHtmlUrl;\n } else {\n subHtml = this.galleryItems[index].subHtml;\n }\n\n if (!subHtmlUrl) {\n if (subHtml) {\n // get first letter of sub-html\n // if first letter starts with . or # get the html form the jQuery object\n var fL = subHtml.substring(0, 1);\n\n if (fL === '.' || fL === '#') {\n if (this.settings.subHtmlSelectorRelative && !this.settings.dynamic) {\n subHtml = $LG(this.items).eq(index).find(subHtml).first().html();\n } else {\n subHtml = $LG(subHtml).first().html();\n }\n }\n } else {\n subHtml = '';\n }\n }\n\n if (this.settings.appendSubHtmlTo === '.lg-sub-html') {\n if (subHtmlUrl) {\n this.outer.find('.lg-sub-html').load(subHtmlUrl);\n } else {\n this.outer.find('.lg-sub-html').html(subHtml);\n }\n } else {\n var currentSlide = $LG(this.getSlideItemId(index));\n\n if (subHtmlUrl) {\n currentSlide.load(subHtmlUrl);\n } else {\n currentSlide.append(\"
\" + subHtml + \"
\");\n }\n } // Add lg-empty-html class if title doesn't exist\n\n\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n if (subHtml === '') {\n this.outer.find(this.settings.appendSubHtmlTo).addClass('lg-empty-html');\n } else {\n this.outer.find(this.settings.appendSubHtmlTo).removeClass('lg-empty-html');\n }\n }\n\n this.LGel.trigger(lGEvents.afterAppendSubHtml, {\n index: index\n });\n };\n /**\r\n * @desc Preload slides\r\n * @param {Number} index - index of the slide\r\n * @todo preload not working for the first slide, Also, should work for the first and last slide as well\r\n */\n\n\n LightGallery.prototype.preload = function (index) {\n for (var i = 1; i <= this.settings.preload; i++) {\n if (i >= this.galleryItems.length - index) {\n break;\n }\n\n this.loadContent(index + i, false);\n }\n\n for (var j = 1; j <= this.settings.preload; j++) {\n if (index - j < 0) {\n break;\n }\n\n this.loadContent(index - j, false);\n }\n };\n\n LightGallery.prototype.getDummyImgStyles = function (imageSize) {\n if (!imageSize) return '';\n return \"width:\" + imageSize.width + \"px; \\n margin-left: -\" + imageSize.width / 2 + \"px;\\n margin-top: -\" + imageSize.height / 2 + \"px; \\n height:\" + imageSize.height + \"px\";\n };\n\n LightGallery.prototype.getVideoContStyle = function (imageSize) {\n if (!imageSize) return '';\n return \"width:\" + imageSize.width + \"px; \\n height:\" + imageSize.height + \"px\";\n };\n\n LightGallery.prototype.getDummyImageContent = function ($currentSlide, index, alt) {\n var $currentItem;\n\n if (!this.settings.dynamic) {\n $currentItem = $LG(this.items).eq(index);\n }\n\n if ($currentItem) {\n var _dummyImgSrc = void 0;\n\n if (!this.settings.exThumbImage) {\n _dummyImgSrc = $currentItem.find('img').first().attr('src');\n } else {\n _dummyImgSrc = $currentItem.attr(this.settings.exThumbImage);\n }\n\n if (!_dummyImgSrc) return '';\n var imgStyle = this.getDummyImgStyles(this.currentImageSize);\n var dummyImgContent = \"\";\n $currentSlide.addClass('lg-first-slide');\n this.outer.addClass('lg-first-slide-loading');\n return dummyImgContent;\n }\n\n return '';\n };\n\n LightGallery.prototype.setImgMarkup = function (src, $currentSlide, index) {\n var currentGalleryItem = this.galleryItems[index];\n var alt = currentGalleryItem.alt,\n srcset = currentGalleryItem.srcset,\n sizes = currentGalleryItem.sizes,\n sources = currentGalleryItem.sources; // Use the thumbnail as dummy image which will be resized to actual image size and\n // displayed on top of actual image\n\n var imgContent = '';\n var altAttr = alt ? 'alt=\"' + alt + '\"' : '';\n\n if (!this.lGalleryOn && this.zoomFromOrigin && this.currentImageSize) {\n imgContent = this.getDummyImageContent($currentSlide, index, altAttr);\n } else {\n imgContent = utils.getImgMarkup(index, src, altAttr, srcset, sizes, sources);\n }\n\n var imgMarkup = \" \" + imgContent + \"\";\n $currentSlide.prepend(imgMarkup);\n };\n\n LightGallery.prototype.onLgObjectLoad = function ($el, index, delay, speed, dummyImageLoaded) {\n var _this = this;\n\n if (dummyImageLoaded) {\n this.LGel.trigger(lGEvents.slideItemLoad, {\n index: index,\n delay: delay || 0\n });\n }\n\n $el.find('.lg-object').first().on('load.lg', function () {\n _this.handleLgObjectLoad($el, index, delay, speed, dummyImageLoaded);\n });\n setTimeout(function () {\n $el.find('.lg-object').first().on('error.lg', function () {\n $el.addClass('lg-complete lg-complete_');\n $el.html('Oops... Failed to load content...');\n });\n }, speed);\n };\n\n LightGallery.prototype.handleLgObjectLoad = function ($el, index, delay, speed, dummyImageLoaded) {\n var _this = this;\n\n setTimeout(function () {\n $el.addClass('lg-complete lg-complete_');\n\n if (!dummyImageLoaded) {\n _this.LGel.trigger(lGEvents.slideItemLoad, {\n index: index,\n delay: delay || 0\n });\n }\n }, speed);\n };\n /**\r\n * @desc Check the given src is video\r\n * @param {String} src\r\n * @return {Object} video type\r\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\r\n *\r\n * @todo - this information can be moved to dynamicEl to avoid frequent calls\r\n */\n\n\n LightGallery.prototype.isVideo = function (src, index) {\n if (!src) {\n if (this.galleryItems[index].video) {\n return {\n html5: true\n };\n } else {\n console.error('lightGallery :- data-src is not provided on slide item ' + (index + 1) + '. Please make sure the selector property is properly configured. More info - http://sachinchoolur.github.io/lightGallery/demos/html-markup.html');\n return;\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\\.)?(?:player\\.)?vimeo.com\\/(?:video\\/)?([0-9a-z\\-_]+)/i);\n var wistia = src.match(/https?:\\/\\/(.+)?(wistia\\.com|wi\\.st)\\/(medias|embed)\\/([0-9a-z\\-_]+)(.*)/);\n\n if (youtube) {\n return {\n youtube: youtube\n };\n } else if (vimeo) {\n return {\n vimeo: vimeo\n };\n } else if (wistia) {\n return {\n wistia: wistia\n };\n }\n }; // Add video slideInfo\n\n\n LightGallery.prototype.addSlideVideoInfo = function (items) {\n var _this = this;\n\n items.forEach(function (element, index) {\n element.__slideVideoInfo = _this.isVideo(element.src, index);\n });\n };\n /**\r\n * Load slide content into slide.\r\n * This is used to load content into slides that is not visible too\r\n * @param {Number} index - index of the slide.\r\n * @param {Boolean} rec - if true call loadcontent() function again.\r\n */\n\n\n LightGallery.prototype.loadContent = function (index, rec) {\n var _this = this;\n\n var currentGalleryItem = this.galleryItems[index];\n var $currentSlide = $LG(this.getSlideItemId(index));\n var poster = currentGalleryItem.poster,\n srcset = currentGalleryItem.srcset,\n sizes = currentGalleryItem.sizes,\n sources = currentGalleryItem.sources;\n var src = currentGalleryItem.src;\n var video = currentGalleryItem.video;\n\n var _html5Video = video && typeof video === 'string' ? JSON.parse(video) : video;\n\n if (currentGalleryItem.responsive) {\n var srcDyItms = currentGalleryItem.responsive.split(',');\n src = utils.getResponsiveSrc(srcDyItms) || src;\n }\n\n var videoInfo = currentGalleryItem.__slideVideoInfo;\n var lgVideoStyle = '';\n var iframe = !!currentGalleryItem.iframe;\n\n if (!$currentSlide.hasClass('lg-loaded')) {\n if (videoInfo) {\n var _a = this.mediaContainerPosition,\n top_2 = _a.top,\n bottom = _a.bottom;\n var videoSize = utils.getSize(this.items[index], this.$lgContent, top_2 + bottom, videoInfo && this.settings.videoMaxSize);\n lgVideoStyle = this.getVideoContStyle(videoSize);\n }\n\n if (iframe) {\n var markup = utils.getIframeMarkup(src, this.settings.iframeWidth, this.settings.iframeHeight, currentGalleryItem.iframeTitle);\n $currentSlide.prepend(markup);\n } else if (poster) {\n var dummyImg = '';\n var isFirstSlide_1 = !this.lGalleryOn;\n var hasStartAnimation = !this.lGalleryOn && this.zoomFromOrigin && this.currentImageSize;\n\n if (hasStartAnimation) {\n dummyImg = this.getDummyImageContent($currentSlide, index, '');\n }\n\n var markup = utils.getVideoPosterMarkup(poster, dummyImg || '', lgVideoStyle, videoInfo);\n $currentSlide.prepend(markup);\n var delay_1 = (hasStartAnimation ? this.settings.startAnimationDuration : this.settings.backdropDuration) + 100;\n setTimeout(function () {\n _this.LGel.trigger(lGEvents.hasVideo, {\n index: index,\n src: src,\n html5Video: _html5Video,\n hasPoster: true,\n isFirstSlide: isFirstSlide_1\n });\n }, delay_1);\n } else if (videoInfo) {\n var markup = \"
\";\n $currentSlide.prepend(markup);\n this.LGel.trigger(lGEvents.hasVideo, {\n index: index,\n src: src,\n html5Video: _html5Video,\n hasPoster: false\n });\n } else {\n this.setImgMarkup(src, $currentSlide, index);\n\n if (srcset || sources) {\n var $img = $currentSlide.find('.lg-object');\n this.initPictureFill($img);\n }\n }\n\n this.LGel.trigger(lGEvents.afterAppendSlide, {\n index: index\n });\n\n if (this.lGalleryOn && this.settings.appendSubHtmlTo !== '.lg-sub-html') {\n this.addHtml(index);\n }\n } // For first time add some delay for displaying the start animation.\n\n\n var _speed = 0; // delay for adding complete class. it is 0 except first time.\n\n var delay = 0;\n\n if (!this.lGalleryOn) {\n if (this.zoomFromOrigin && this.currentImageSize) {\n delay = this.settings.startAnimationDuration + 10;\n } else {\n delay = this.settings.backdropDuration + 10;\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\n\n if (delay && !$LG(document.body).hasClass('lg-from-hash')) {\n _speed = delay;\n } // Only for first slide\n\n\n if (!this.lGalleryOn && this.zoomFromOrigin && this.currentImageSize) {\n setTimeout(function () {\n $currentSlide.removeClass('lg-start-end-progress lg-start-progress').removeAttr('style');\n }, this.settings.startAnimationDuration + 100);\n\n if (!$currentSlide.hasClass('lg-loaded')) {\n setTimeout(function () {\n $currentSlide.find('.lg-img-wrap').append(utils.getImgMarkup(index, src, '', srcset, sizes, currentGalleryItem.sources));\n\n if (srcset || sources) {\n var $img = $currentSlide.find('.lg-object');\n\n _this.initPictureFill($img);\n }\n\n _this.onLgObjectLoad($currentSlide, index, delay, _speed, true);\n\n var mediaObject = $currentSlide.find('.lg-object').first();\n\n if (utils.isImageLoaded(mediaObject.get())) {\n _this.loadContentOnLoad(index, $currentSlide, _speed);\n } else {\n mediaObject.on('load.lg error.lg', function () {\n _this.loadContentOnLoad(index, $currentSlide, _speed);\n });\n }\n }, this.settings.startAnimationDuration + 100);\n }\n } // SLide content has been added to dom\n\n\n $currentSlide.addClass('lg-loaded');\n this.onLgObjectLoad($currentSlide, index, delay, _speed, false); // @todo check load state for html5 videos\n\n if (videoInfo && videoInfo.html5 && !poster) {\n $currentSlide.addClass('lg-complete lg-complete_');\n } // When gallery is opened once content is loaded (second time) need to add lg-complete class for css styling\n\n\n if ((!this.zoomFromOrigin || !this.currentImageSize) && $currentSlide.hasClass('lg-complete_') && !this.lGalleryOn) {\n setTimeout(function () {\n $currentSlide.addClass('lg-complete');\n }, this.settings.backdropDuration);\n } // Content loaded\n // Need to set lGalleryOn before calling preload function\n\n\n this.lGalleryOn = true;\n\n if (rec === true) {\n if (!$currentSlide.hasClass('lg-complete_')) {\n $currentSlide.find('.lg-object').first().on('load.lg error.lg', function () {\n _this.preload(index);\n });\n } else {\n this.preload(index);\n }\n }\n };\n\n LightGallery.prototype.loadContentOnLoad = function (index, $currentSlide, speed) {\n var _this = this;\n\n setTimeout(function () {\n $currentSlide.find('.lg-dummy-img').remove();\n $currentSlide.removeClass('lg-first-slide');\n\n _this.outer.removeClass('lg-first-slide-loading');\n\n _this.isDummyImageRemoved = true;\n\n _this.preload(index);\n }, speed + 300);\n };\n\n LightGallery.prototype.getItemsToBeInsertedToDom = function (index, prevIndex, numberOfItems) {\n var _this = this;\n\n if (numberOfItems === void 0) {\n numberOfItems = 0;\n }\n\n var itemsToBeInsertedToDom = []; // Minimum 2 items should be there\n\n var possibleNumberOfItems = Math.max(numberOfItems, 3);\n possibleNumberOfItems = Math.min(possibleNumberOfItems, this.galleryItems.length);\n var prevIndexItem = \"lg-item-\" + this.lgId + \"-\" + prevIndex;\n\n if (this.galleryItems.length <= 3) {\n this.galleryItems.forEach(function (_element, index) {\n itemsToBeInsertedToDom.push(\"lg-item-\" + _this.lgId + \"-\" + index);\n });\n return itemsToBeInsertedToDom;\n }\n\n if (index < (this.galleryItems.length - 1) / 2) {\n for (var idx = index; idx > index - possibleNumberOfItems / 2 && idx >= 0; idx--) {\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + idx);\n }\n\n var numberOfExistingItems = itemsToBeInsertedToDom.length;\n\n for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (index + idx + 1));\n }\n } else {\n for (var idx = index; idx <= this.galleryItems.length - 1 && idx < index + possibleNumberOfItems / 2; idx++) {\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + idx);\n }\n\n var numberOfExistingItems = itemsToBeInsertedToDom.length;\n\n for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (index - idx - 1));\n }\n }\n\n if (this.settings.loop) {\n if (index === this.galleryItems.length - 1) {\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + 0);\n } else if (index === 0) {\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (this.galleryItems.length - 1));\n }\n }\n\n if (itemsToBeInsertedToDom.indexOf(prevIndexItem) === -1) {\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + prevIndex);\n }\n\n return itemsToBeInsertedToDom;\n };\n\n LightGallery.prototype.organizeSlideItems = function (index, prevIndex) {\n var _this = this;\n\n var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, prevIndex, this.settings.numberOfSlideItemsInDom);\n itemsToBeInsertedToDom.forEach(function (item) {\n if (_this.currentItemsInDom.indexOf(item) === -1) {\n _this.$inner.append(\"
\");\n }\n });\n this.currentItemsInDom.forEach(function (item) {\n if (itemsToBeInsertedToDom.indexOf(item) === -1) {\n $LG(\"#\" + item).remove();\n }\n });\n return itemsToBeInsertedToDom;\n };\n /**\r\n * Get previous index of the slide\r\n */\n\n\n LightGallery.prototype.getPreviousSlideIndex = function () {\n var prevIndex = 0;\n\n try {\n var currentItemId = this.outer.find('.lg-current').first().attr('id');\n prevIndex = parseInt(currentItemId.split('-')[3]) || 0;\n } catch (error) {\n prevIndex = 0;\n }\n\n return prevIndex;\n };\n\n LightGallery.prototype.setDownloadValue = function (index) {\n if (this.settings.download) {\n var currentGalleryItem = this.galleryItems[index];\n var src = currentGalleryItem.downloadUrl !== false && (currentGalleryItem.downloadUrl || currentGalleryItem.src);\n\n if (src && !currentGalleryItem.iframe) {\n this.getElementById('lg-download').attr('href', src);\n }\n }\n };\n\n LightGallery.prototype.makeSlideAnimation = function (direction, currentSlideItem, previousSlideItem) {\n var _this = this;\n\n if (this.lGalleryOn) {\n previousSlideItem.addClass('lg-slide-progress');\n }\n\n setTimeout(function () {\n // remove all transitions\n _this.outer.addClass('lg-no-trans');\n\n _this.outer.find('.lg-item').removeClass('lg-prev-slide lg-next-slide');\n\n if (direction === 'prev') {\n //prevslide\n currentSlideItem.addClass('lg-prev-slide');\n previousSlideItem.addClass('lg-next-slide');\n } else {\n // next slide\n currentSlideItem.addClass('lg-next-slide');\n previousSlideItem.addClass('lg-prev-slide');\n } // give 50 ms for browser to add/remove class\n\n\n setTimeout(function () {\n _this.outer.find('.lg-item').removeClass('lg-current');\n\n currentSlideItem.addClass('lg-current'); // reset all transitions\n\n _this.outer.removeClass('lg-no-trans');\n }, 50);\n }, this.lGalleryOn ? this.settings.slideDelay : 0);\n };\n /**\r\n * Goto a specific slide.\r\n * @param {Number} index - index of the slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\r\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\r\n * @param {String} direction - Direction of the slide(next/prev)\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * // to go to 3rd slide\r\n * plugin.slide(2);\r\n *\r\n */\n\n\n LightGallery.prototype.slide = function (index, fromTouch, fromThumb, direction) {\n var _this = this;\n\n var prevIndex = this.getPreviousSlideIndex();\n this.currentItemsInDom = this.organizeSlideItems(index, prevIndex); // Prevent multiple call, Required for hsh plugin\n\n if (this.lGalleryOn && prevIndex === index) {\n return;\n }\n\n var numberOfGalleryItems = this.galleryItems.length;\n\n if (!this.lgBusy) {\n if (this.settings.counter) {\n this.updateCurrentCounter(index);\n }\n\n var currentSlideItem = this.getSlideItem(index);\n var previousSlideItem_1 = this.getSlideItem(prevIndex);\n var currentGalleryItem = this.galleryItems[index];\n var videoInfo = currentGalleryItem.__slideVideoInfo;\n this.outer.attr('data-lg-slide-type', this.getSlideType(currentGalleryItem));\n this.setDownloadValue(index);\n\n if (videoInfo) {\n var _a = this.mediaContainerPosition,\n top_3 = _a.top,\n bottom = _a.bottom;\n var videoSize = utils.getSize(this.items[index], this.$lgContent, top_3 + bottom, videoInfo && this.settings.videoMaxSize);\n this.resizeVideoSlide(index, videoSize);\n }\n\n this.LGel.trigger(lGEvents.beforeSlide, {\n prevIndex: prevIndex,\n index: index,\n fromTouch: !!fromTouch,\n fromThumb: !!fromThumb\n });\n this.lgBusy = true;\n clearTimeout(this.hideBarTimeout);\n this.arrowDisable(index);\n\n if (!direction) {\n if (index < prevIndex) {\n direction = 'prev';\n } else if (index > prevIndex) {\n direction = 'next';\n }\n }\n\n if (!fromTouch) {\n this.makeSlideAnimation(direction, currentSlideItem, previousSlideItem_1);\n } else {\n this.outer.find('.lg-item').removeClass('lg-prev-slide lg-current lg-next-slide');\n var touchPrev = void 0;\n var touchNext = void 0;\n\n if (numberOfGalleryItems > 2) {\n touchPrev = index - 1;\n touchNext = index + 1;\n\n if (index === 0 && prevIndex === numberOfGalleryItems - 1) {\n // next slide\n touchNext = 0;\n touchPrev = numberOfGalleryItems - 1;\n } else if (index === numberOfGalleryItems - 1 && prevIndex === 0) {\n // prev slide\n touchNext = 0;\n touchPrev = numberOfGalleryItems - 1;\n }\n } else {\n touchPrev = 0;\n touchNext = 1;\n }\n\n if (direction === 'prev') {\n this.getSlideItem(touchNext).addClass('lg-next-slide');\n } else {\n this.getSlideItem(touchPrev).addClass('lg-prev-slide');\n }\n\n currentSlideItem.addClass('lg-current');\n } // Do not put load content in set timeout as it needs to load immediately when the gallery is opened\n\n\n if (!this.lGalleryOn) {\n this.loadContent(index, true);\n }\n\n setTimeout(function () {\n if (_this.lGalleryOn) {\n _this.loadContent(index, true);\n } // Add title if this.settings.appendSubHtmlTo === lg-sub-html\n\n\n if (_this.settings.appendSubHtmlTo === '.lg-sub-html') {\n _this.addHtml(index);\n }\n }, (this.lGalleryOn ? this.settings.speed + 50 : 50) + (fromTouch ? 0 : this.settings.slideDelay));\n setTimeout(function () {\n _this.lgBusy = false;\n previousSlideItem_1.removeClass('lg-slide-progress');\n\n _this.LGel.trigger(lGEvents.afterSlide, {\n prevIndex: prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }, (this.lGalleryOn ? this.settings.speed + 100 : 100) + (fromTouch ? 0 : this.settings.slideDelay));\n }\n\n this.index = index;\n };\n\n LightGallery.prototype.updateCurrentCounter = function (index) {\n this.getElementById('lg-counter-current').html(index + 1 + '');\n };\n\n LightGallery.prototype.updateCounterTotal = function () {\n this.getElementById('lg-counter-all').html(this.galleryItems.length + '');\n };\n\n LightGallery.prototype.getSlideType = function (item) {\n if (item.__slideVideoInfo) {\n return 'video';\n } else if (item.iframe) {\n return 'iframe';\n } else {\n return 'image';\n }\n };\n\n LightGallery.prototype.touchMove = function (startCoords, endCoords) {\n var distanceX = endCoords.pageX - startCoords.pageX;\n var distanceY = endCoords.pageY - startCoords.pageY;\n var allowSwipe = false;\n\n if (this.swipeDirection) {\n allowSwipe = true;\n } else {\n if (Math.abs(distanceX) > 15) {\n this.swipeDirection = 'horizontal';\n allowSwipe = true;\n } else if (Math.abs(distanceY) > 15) {\n this.swipeDirection = 'vertical';\n allowSwipe = true;\n }\n }\n\n if (!allowSwipe) {\n return;\n }\n\n var $currentSlide = this.getSlideItem(this.index);\n\n if (this.swipeDirection === 'horizontal') {\n // reset opacity and transition duration\n this.outer.addClass('lg-dragging'); // move current slide\n\n this.setTranslate($currentSlide, distanceX, 0); // move next and prev slide with current slide\n\n var width = $currentSlide.get().offsetWidth;\n var slideWidthAmount = width * 15 / 100;\n var gutter = slideWidthAmount - Math.abs(distanceX * 10 / 100);\n this.setTranslate(this.outer.find('.lg-prev-slide').first(), -width + distanceX - gutter, 0);\n this.setTranslate(this.outer.find('.lg-next-slide').first(), width + distanceX + gutter, 0);\n } else if (this.swipeDirection === 'vertical') {\n if (this.settings.swipeToClose) {\n this.$container.addClass('lg-dragging-vertical');\n var opacity = 1 - Math.abs(distanceY) / window.innerHeight;\n this.$backdrop.css('opacity', opacity);\n var scale = 1 - Math.abs(distanceY) / (window.innerWidth * 2);\n this.setTranslate($currentSlide, 0, distanceY, scale, scale);\n\n if (Math.abs(distanceY) > 100) {\n this.outer.addClass('lg-hide-items').removeClass('lg-components-open');\n }\n }\n }\n };\n\n LightGallery.prototype.touchEnd = function (endCoords, startCoords, event) {\n var _this = this;\n\n var distance; // keep slide animation for any mode while dragg/swipe\n\n if (this.settings.mode !== 'lg-slide') {\n this.outer.addClass('lg-slide');\n } // set transition duration\n\n\n setTimeout(function () {\n _this.$container.removeClass('lg-dragging-vertical');\n\n _this.outer.removeClass('lg-dragging lg-hide-items').addClass('lg-components-open');\n\n var triggerClick = true;\n\n if (_this.swipeDirection === 'horizontal') {\n distance = endCoords.pageX - startCoords.pageX;\n var distanceAbs = Math.abs(endCoords.pageX - startCoords.pageX);\n\n if (distance < 0 && distanceAbs > _this.settings.swipeThreshold) {\n _this.goToNextSlide(true);\n\n triggerClick = false;\n } else if (distance > 0 && distanceAbs > _this.settings.swipeThreshold) {\n _this.goToPrevSlide(true);\n\n triggerClick = false;\n }\n } else if (_this.swipeDirection === 'vertical') {\n distance = Math.abs(endCoords.pageY - startCoords.pageY);\n\n if (_this.settings.closable && _this.settings.swipeToClose && distance > 100) {\n _this.closeGallery();\n\n return;\n } else {\n _this.$backdrop.css('opacity', 1);\n }\n }\n\n _this.outer.find('.lg-item').removeAttr('style');\n\n if (triggerClick && Math.abs(endCoords.pageX - startCoords.pageX) < 5) {\n // Trigger click if distance is less than 5 pix\n var target = $LG(event.target);\n\n if (_this.isPosterElement(target)) {\n _this.LGel.trigger(lGEvents.posterClick);\n }\n }\n\n _this.swipeDirection = undefined;\n }); // remove slide class once drag/swipe is completed if mode is not slide\n\n setTimeout(function () {\n if (!_this.outer.hasClass('lg-dragging') && _this.settings.mode !== 'lg-slide') {\n _this.outer.removeClass('lg-slide');\n }\n }, this.settings.speed + 100);\n };\n\n LightGallery.prototype.enableSwipe = function () {\n var _this = this;\n\n var startCoords = {};\n var endCoords = {};\n var isMoved = false;\n var isSwiping = false;\n\n if (this.settings.enableSwipe) {\n this.$inner.on('touchstart.lg', function (e) {\n e.preventDefault();\n\n var $item = _this.getSlideItem(_this.index);\n\n if (($LG(e.target).hasClass('lg-item') || $item.get().contains(e.target)) && !_this.outer.hasClass('lg-zoomed') && !_this.lgBusy && e.targetTouches.length === 1) {\n isSwiping = true;\n _this.touchAction = 'swipe';\n\n _this.manageSwipeClass();\n\n startCoords = {\n pageX: e.targetTouches[0].pageX,\n pageY: e.targetTouches[0].pageY\n };\n }\n });\n this.$inner.on('touchmove.lg', function (e) {\n e.preventDefault();\n\n if (isSwiping && _this.touchAction === 'swipe' && e.targetTouches.length === 1) {\n endCoords = {\n pageX: e.targetTouches[0].pageX,\n pageY: e.targetTouches[0].pageY\n };\n\n _this.touchMove(startCoords, endCoords);\n\n isMoved = true;\n }\n });\n this.$inner.on('touchend.lg', function (event) {\n if (_this.touchAction === 'swipe') {\n if (isMoved) {\n isMoved = false;\n\n _this.touchEnd(endCoords, startCoords, event);\n } else if (isSwiping) {\n var target = $LG(event.target);\n\n if (_this.isPosterElement(target)) {\n _this.LGel.trigger(lGEvents.posterClick);\n }\n }\n\n _this.touchAction = undefined;\n isSwiping = false;\n }\n });\n }\n };\n\n LightGallery.prototype.enableDrag = function () {\n var _this = this;\n\n var startCoords = {};\n var endCoords = {};\n var isDraging = false;\n var isMoved = false;\n\n if (this.settings.enableDrag) {\n this.outer.on('mousedown.lg', function (e) {\n var $item = _this.getSlideItem(_this.index);\n\n if ($LG(e.target).hasClass('lg-item') || $item.get().contains(e.target)) {\n if (!_this.outer.hasClass('lg-zoomed') && !_this.lgBusy) {\n e.preventDefault();\n\n if (!_this.lgBusy) {\n _this.manageSwipeClass();\n\n startCoords = {\n pageX: e.pageX,\n pageY: e.pageY\n };\n isDraging = true; // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n\n _this.outer.get().scrollLeft += 1;\n _this.outer.get().scrollLeft -= 1; // *\n\n _this.outer.removeClass('lg-grab').addClass('lg-grabbing');\n\n _this.LGel.trigger(lGEvents.dragStart);\n }\n }\n }\n });\n $LG(window).on(\"mousemove.lg.global\" + this.lgId, function (e) {\n if (isDraging && _this.lgOpened) {\n isMoved = true;\n endCoords = {\n pageX: e.pageX,\n pageY: e.pageY\n };\n\n _this.touchMove(startCoords, endCoords);\n\n _this.LGel.trigger(lGEvents.dragMove);\n }\n });\n $LG(window).on(\"mouseup.lg.global\" + this.lgId, function (event) {\n if (!_this.lgOpened) {\n return;\n }\n\n var target = $LG(event.target);\n\n if (isMoved) {\n isMoved = false;\n\n _this.touchEnd(endCoords, startCoords, event);\n\n _this.LGel.trigger(lGEvents.dragEnd);\n } else if (_this.isPosterElement(target)) {\n _this.LGel.trigger(lGEvents.posterClick);\n } // Prevent execution on click\n\n\n if (isDraging) {\n isDraging = false;\n\n _this.outer.removeClass('lg-grabbing').addClass('lg-grab');\n }\n });\n }\n };\n\n LightGallery.prototype.manageSwipeClass = function () {\n var _touchNext = this.index + 1;\n\n var _touchPrev = this.index - 1;\n\n if (this.settings.loop && this.galleryItems.length > 2) {\n if (this.index === 0) {\n _touchPrev = this.galleryItems.length - 1;\n } else if (this.index === this.galleryItems.length - 1) {\n _touchNext = 0;\n }\n }\n\n this.outer.find('.lg-item').removeClass('lg-next-slide lg-prev-slide');\n\n if (_touchPrev > -1) {\n this.getSlideItem(_touchPrev).addClass('lg-prev-slide');\n }\n\n this.getSlideItem(_touchNext).addClass('lg-next-slide');\n };\n /**\r\n * Go to next slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.goToNextSlide();\r\n * @see Demo\r\n */\n\n\n LightGallery.prototype.goToNextSlide = function (fromTouch) {\n var _this = this;\n\n var _loop = this.settings.loop;\n\n if (fromTouch && this.galleryItems.length < 3) {\n _loop = false;\n }\n\n if (!this.lgBusy) {\n if (this.index + 1 < this.galleryItems.length) {\n this.index++;\n this.LGel.trigger(lGEvents.beforeNextSlide, {\n index: this.index\n });\n this.slide(this.index, !!fromTouch, false, 'next');\n } else {\n if (_loop) {\n this.index = 0;\n this.LGel.trigger(lGEvents.beforeNextSlide, {\n index: this.index\n });\n this.slide(this.index, !!fromTouch, false, 'next');\n } else if (this.settings.slideEndAnimation && !fromTouch) {\n this.outer.addClass('lg-right-end');\n setTimeout(function () {\n _this.outer.removeClass('lg-right-end');\n }, 400);\n }\n }\n }\n };\n /**\r\n * Go to previous slides\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery({});\r\n * plugin.goToPrevSlide();\r\n * @see Demo\r\n *\r\n */\n\n\n LightGallery.prototype.goToPrevSlide = function (fromTouch) {\n var _this = this;\n\n var _loop = this.settings.loop;\n\n if (fromTouch && this.galleryItems.length < 3) {\n _loop = false;\n }\n\n if (!this.lgBusy) {\n if (this.index > 0) {\n this.index--;\n this.LGel.trigger(lGEvents.beforePrevSlide, {\n index: this.index,\n fromTouch: fromTouch\n });\n this.slide(this.index, !!fromTouch, false, 'prev');\n } else {\n if (_loop) {\n this.index = this.galleryItems.length - 1;\n this.LGel.trigger(lGEvents.beforePrevSlide, {\n index: this.index,\n fromTouch: fromTouch\n });\n this.slide(this.index, !!fromTouch, false, 'prev');\n } else if (this.settings.slideEndAnimation && !fromTouch) {\n this.outer.addClass('lg-left-end');\n setTimeout(function () {\n _this.outer.removeClass('lg-left-end');\n }, 400);\n }\n }\n }\n };\n\n LightGallery.prototype.keyPress = function () {\n var _this = this;\n\n $LG(window).on(\"keydown.lg.global\" + this.lgId, function (e) {\n if (_this.lgOpened && _this.settings.escKey === true && e.keyCode === 27) {\n e.preventDefault();\n\n if (_this.settings.allowMediaOverlap && _this.outer.hasClass('lg-can-toggle') && _this.outer.hasClass('lg-components-open')) {\n _this.outer.removeClass('lg-components-open');\n } else {\n _this.closeGallery();\n }\n }\n\n if (_this.lgOpened && _this.galleryItems.length > 1) {\n if (e.keyCode === 37) {\n e.preventDefault();\n\n _this.goToPrevSlide();\n }\n\n if (e.keyCode === 39) {\n e.preventDefault();\n\n _this.goToNextSlide();\n }\n }\n });\n };\n\n LightGallery.prototype.arrow = function () {\n var _this = this;\n\n this.getElementById('lg-prev').on('click.lg', function () {\n _this.goToPrevSlide();\n });\n this.getElementById('lg-next').on('click.lg', function () {\n _this.goToNextSlide();\n });\n };\n\n LightGallery.prototype.arrowDisable = function (index) {\n // Disable arrows if settings.hideControlOnEnd is true\n if (!this.settings.loop && this.settings.hideControlOnEnd) {\n var $prev = this.getElementById('lg-prev');\n var $next = this.getElementById('lg-next');\n\n if (index + 1 < this.galleryItems.length) {\n $prev.removeAttr('disabled').removeClass('disabled');\n } else {\n $prev.attr('disabled', 'disabled').addClass('disabled');\n }\n\n if (index > 0) {\n $next.removeAttr('disabled').removeClass('disabled');\n } else {\n $next.attr('disabled', 'disabled').addClass('disabled');\n }\n }\n };\n\n LightGallery.prototype.setTranslate = function ($el, xValue, yValue, scaleX, scaleY) {\n if (scaleX === void 0) {\n scaleX = 1;\n }\n\n if (scaleY === void 0) {\n scaleY = 1;\n }\n\n $el.css('transform', 'translate3d(' + xValue + 'px, ' + yValue + 'px, 0px) scale3d(' + scaleX + ', ' + scaleY + ', 1)');\n };\n\n LightGallery.prototype.mousewheel = function () {\n var _this = this;\n\n this.outer.on('mousewheel.lg', function (e) {\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 LightGallery.prototype.isSlideElement = function (target) {\n return target.hasClass('lg-outer') || target.hasClass('lg-item') || target.hasClass('lg-img-wrap');\n };\n\n LightGallery.prototype.isPosterElement = function (target) {\n var playButton = this.getSlideItem(this.index).find('.lg-video-play-button').get();\n return target.hasClass('lg-video-poster') || target.hasClass('lg-video-play-button') || playButton && playButton.contains(target.get());\n };\n /**\r\n * Maximize minimize inline gallery.\r\n * @category lGPublicMethods\r\n */\n\n\n LightGallery.prototype.toggleMaximize = function () {\n var _this = this;\n\n this.getElementById('lg-maximize').on('click.lg', function () {\n _this.$container.toggleClass('lg-inline');\n\n _this.refreshOnResize();\n });\n };\n\n LightGallery.prototype.manageCloseGallery = function () {\n var _this = this;\n\n if (!this.settings.closable) return;\n var mousedown = false;\n this.getElementById('lg-close').on('click.lg', function () {\n _this.closeGallery();\n });\n\n if (this.settings.closeOnTap) {\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 this.outer.on('mousedown.lg', function (e) {\n var target = $LG(e.target);\n\n if (_this.isSlideElement(target)) {\n mousedown = true;\n } else {\n mousedown = false;\n }\n });\n this.outer.on('mousemove.lg', function () {\n mousedown = false;\n });\n this.outer.on('mouseup.lg', function (e) {\n var target = $LG(e.target);\n\n if (_this.isSlideElement(target) && mousedown) {\n if (!_this.outer.hasClass('lg-dragging')) {\n _this.closeGallery();\n }\n }\n });\n }\n };\n /**\r\n * Close lightGallery if it is opened.\r\n *\r\n * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery\r\n * @return returns the estimated time to close gallery completely including the close animation duration\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.closeGallery();\r\n *\r\n */\n\n\n LightGallery.prototype.closeGallery = function (force) {\n var _this = this;\n\n if (!this.lgOpened || !this.settings.closable && !force) {\n return 0;\n }\n\n this.LGel.trigger(lGEvents.beforeClose);\n $LG(window).scrollTop(this.prevScrollTop);\n var currentItem = this.items[this.index];\n var transform;\n\n if (this.zoomFromOrigin && currentItem) {\n var _a = this.mediaContainerPosition,\n top_4 = _a.top,\n bottom = _a.bottom;\n var imageSize = utils.getSize(currentItem, this.$lgContent, top_4 + bottom, this.galleryItems[this.index].__slideVideoInfo && this.settings.videoMaxSize);\n transform = utils.getTransform(currentItem, this.$lgContent, top_4, bottom, imageSize);\n }\n\n if (this.zoomFromOrigin && transform) {\n this.outer.addClass('lg-closing lg-zoom-from-image');\n this.getSlideItem(this.index).addClass('lg-start-end-progress').css('transition-duration', this.settings.startAnimationDuration + 'ms').css('transform', transform);\n } else {\n this.outer.addClass('lg-hide-items'); // lg-zoom-from-image is used for setting the opacity to 1 if zoomFromOrigin is true\n // If the closing item doesn't have the lg-size attribute, remove this class to avoid the closing css conflicts\n\n this.outer.removeClass('lg-zoom-from-image');\n } // Unbind all events added by lightGallery\n // @todo\n //this.$el.off('.lg.tm');\n\n\n this.destroyModules();\n this.lGalleryOn = false;\n this.isDummyImageRemoved = false;\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\n clearTimeout(this.hideBarTimeout);\n this.hideBarTimeout = false;\n $LG('html').removeClass('lg-on');\n this.outer.removeClass('lg-visible lg-components-open'); // Resetting opacity to 0 isd required as vertical swipe to close function adds inline opacity.\n\n this.$backdrop.removeClass('in').css('opacity', 0);\n var removeTimeout = this.zoomFromOrigin && transform ? Math.max(this.settings.startAnimationDuration, this.settings.backdropDuration) : this.settings.backdropDuration;\n this.$container.removeClass('lg-show-in'); // Once the closign animation is completed and gallery is invisible\n\n setTimeout(function () {\n if (_this.zoomFromOrigin && transform) {\n _this.outer.removeClass('lg-zoom-from-image');\n }\n\n _this.$container.removeClass('lg-show'); // Need to remove inline opacity as it is used in the stylesheet as well\n\n\n _this.$backdrop.removeAttr('style').css('transition-duration', _this.settings.backdropDuration + 'ms');\n\n _this.outer.removeClass(\"lg-closing \" + _this.settings.startClass);\n\n _this.getSlideItem(_this.index).removeClass('lg-start-end-progress');\n\n _this.$inner.empty();\n\n if (_this.lgOpened) {\n _this.LGel.trigger(lGEvents.afterClose, {\n instance: _this\n });\n }\n\n _this.LGel.get().focus();\n\n _this.lgOpened = false;\n }, removeTimeout + 100);\n return removeTimeout + 100;\n };\n\n LightGallery.prototype.destroyModules = function (destroy) {\n this.plugins.forEach(function (module) {\n try {\n if (destroy) {\n module.destroy();\n } else {\n module.closeGallery && module.closeGallery();\n }\n } catch (err) {\n console.warn(\"lightGallery:- make sure lightGallery module is properly destroyed\");\n }\n });\n };\n /**\r\n * Destroy lightGallery.\r\n * Destroy lightGallery and its plugin instances completely\r\n *\r\n * @description This method also calls CloseGallery function internally\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.destroy();\r\n *\r\n */\n\n\n LightGallery.prototype.destroy = function () {\n var _this = this;\n\n var closeTimeout = this.closeGallery(true);\n setTimeout(function () {\n _this.destroyModules(true);\n\n if (!_this.settings.dynamic) {\n for (var index = 0; index < _this.items.length; index++) {\n var element = _this.items[index];\n var $element = $LG(element);\n $element.off(\"click.lgcustom-item-\" + $element.attr('data-lg-id'));\n }\n }\n\n $LG(window).off(\".lg.global\" + _this.lgId);\n\n _this.LGel.off('.lg');\n\n _this.$container.remove();\n }, closeTimeout);\n };\n\n return LightGallery;\n}();\n\nfunction lightGallery(el, options) {\n return new LightGallery(el, options);\n}\n\nexport default lightGallery;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n!function (t, n) {\n \"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) && \"undefined\" != typeof module ? module.exports = n() : \"function\" == typeof define && define.amd ? define(n) : t.Macy = n();\n}(this, function () {\n \"use strict\";\n\n function t(t, n) {\n var e = void 0;\n return function () {\n e && clearTimeout(e), e = setTimeout(t, n);\n };\n }\n\n function n(t, n) {\n for (var e = t.length, r = e, o = []; e--;) {\n o.push(n(t[r - e - 1]));\n }\n\n return o;\n }\n\n function e(t, n) {\n var e = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n if (window.Promise) return A(t, n, e);\n t.recalculate(!0, !0);\n }\n\n function r(t) {\n for (var n = t.options, e = t.responsiveOptions, r = t.keys, o = t.docWidth, i = void 0, s = 0; s < r.length; s++) {\n var a = parseInt(r[s], 10);\n o >= a && (i = n.breakAt[a], O(i, e));\n }\n\n return e;\n }\n\n function o(t) {\n for (var n = t.options, e = t.responsiveOptions, r = t.keys, o = t.docWidth, i = void 0, s = r.length - 1; s >= 0; s--) {\n var a = parseInt(r[s], 10);\n o <= a && (i = n.breakAt[a], O(i, e));\n }\n\n return e;\n }\n\n function i(t) {\n var n = t.useContainerForBreakpoints ? t.container.clientWidth : window.innerWidth,\n e = {\n columns: t.columns\n };\n b(t.margin) ? e.margin = {\n x: t.margin.x,\n y: t.margin.y\n } : e.margin = {\n x: t.margin,\n y: t.margin\n };\n var i = Object.keys(t.breakAt);\n return t.mobileFirst ? r({\n options: t,\n responsiveOptions: e,\n keys: i,\n docWidth: n\n }) : o({\n options: t,\n responsiveOptions: e,\n keys: i,\n docWidth: n\n });\n }\n\n function s(t) {\n return i(t).columns;\n }\n\n function a(t) {\n return i(t).margin;\n }\n\n function c(t) {\n var n = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1],\n e = s(t),\n r = a(t).x,\n o = 100 / e;\n if (!n) return o;\n if (1 === e) return \"100%\";\n var i = \"px\";\n\n if (\"string\" == typeof r) {\n var c = parseFloat(r);\n i = r.replace(c, \"\"), r = c;\n }\n\n return r = (e - 1) * r / e, \"%\" === i ? o - r + \"%\" : \"calc(\" + o + \"% - \" + r + i + \")\";\n }\n\n function u(t, n) {\n var e = s(t.options),\n r = 0,\n o = void 0,\n i = void 0;\n if (1 === ++n) return 0;\n i = a(t.options).x;\n var u = \"px\";\n\n if (\"string\" == typeof i) {\n var l = parseFloat(i, 10);\n u = i.replace(l, \"\"), i = l;\n }\n\n return o = (i - (e - 1) * i / e) * (n - 1), r += c(t.options, !1) * (n - 1), \"%\" === u ? r + o + \"%\" : \"calc(\" + r + \"% + \" + o + u + \")\";\n }\n\n function l(t) {\n var n = 0,\n e = t.container,\n r = t.rows;\n v(r, function (t) {\n n = t > n ? t : n;\n }), e.style.height = n + \"px\";\n }\n\n function p(t, n) {\n var e = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\n r = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3],\n o = s(t.options),\n i = a(t.options).y;\n M(t, o, e), v(n, function (n) {\n var e = 0,\n o = parseInt(n.offsetHeight, 10);\n isNaN(o) || (t.rows.forEach(function (n, r) {\n n < t.rows[e] && (e = r);\n }), n.style.position = \"absolute\", n.style.top = t.rows[e] + \"px\", n.style.left = \"\" + t.cols[e], t.rows[e] += isNaN(o) ? 0 : o + i, r && (n.dataset.macyComplete = 1));\n }), r && (t.tmpRows = null), l(t);\n }\n\n function f(t, n) {\n var e = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\n r = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3],\n o = s(t.options),\n i = a(t.options).y;\n M(t, o, e), v(n, function (n) {\n t.lastcol === o && (t.lastcol = 0);\n var e = C(n, \"height\");\n e = parseInt(n.offsetHeight, 10), isNaN(e) || (n.style.position = \"absolute\", n.style.top = t.rows[t.lastcol] + \"px\", n.style.left = \"\" + t.cols[t.lastcol], t.rows[t.lastcol] += isNaN(e) ? 0 : e + i, t.lastcol += 1, r && (n.dataset.macyComplete = 1));\n }), r && (t.tmpRows = null), l(t);\n }\n\n var h = function t(n, e) {\n if (!(this instanceof t)) return new t(n, e);\n if (n && n.nodeName) return n;\n if (n = n.replace(/^\\s*/, \"\").replace(/\\s*$/, \"\"), e) return this.byCss(n, e);\n\n for (var r in this.selectors) {\n if (e = r.split(\"/\"), new RegExp(e[1], e[2]).test(n)) return this.selectors[r](n);\n }\n\n return this.byCss(n);\n };\n\n h.prototype.byCss = function (t, n) {\n return (n || document).querySelectorAll(t);\n }, h.prototype.selectors = {}, h.prototype.selectors[/^\\.[\\w\\-]+$/] = function (t) {\n return document.getElementsByClassName(t.substring(1));\n }, h.prototype.selectors[/^\\w+$/] = function (t) {\n return document.getElementsByTagName(t);\n }, h.prototype.selectors[/^\\#[\\w\\-]+$/] = function (t) {\n return document.getElementById(t.substring(1));\n };\n\n var v = function v(t, n) {\n for (var e = t.length, r = e; e--;) {\n n(t[r - e - 1]);\n }\n },\n m = function m() {\n var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n this.running = !1, this.events = [], this.add(t);\n };\n\n m.prototype.run = function () {\n if (!this.running && this.events.length > 0) {\n var t = this.events.shift();\n this.running = !0, t(), this.running = !1, this.run();\n }\n }, m.prototype.add = function () {\n var t = this,\n n = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n return !!n && (Array.isArray(n) ? v(n, function (n) {\n return t.add(n);\n }) : (this.events.push(n), void this.run()));\n }, m.prototype.clear = function () {\n this.events = [];\n };\n\n var d = function d(t) {\n var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n return this.instance = t, this.data = n, this;\n },\n y = function y() {\n var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n this.events = {}, this.instance = t;\n };\n\n y.prototype.on = function () {\n var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],\n n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n return !(!t || !n) && (Array.isArray(this.events[t]) || (this.events[t] = []), this.events[t].push(n));\n }, y.prototype.emit = function () {\n var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],\n n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n if (!t || !Array.isArray(this.events[t])) return !1;\n var e = new d(this.instance, n);\n v(this.events[t], function (t) {\n return t(e);\n });\n };\n\n var g = function g(t) {\n return !(\"naturalHeight\" in t && t.naturalHeight + t.naturalWidth === 0) || t.width + t.height !== 0;\n },\n E = function E(t, n) {\n var e = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n return new Promise(function (t, e) {\n if (n.complete) return g(n) ? t(n) : e(n);\n n.addEventListener(\"load\", function () {\n return g(n) ? t(n) : e(n);\n }), n.addEventListener(\"error\", function () {\n return e(n);\n });\n }).then(function (n) {\n e && t.emit(t.constants.EVENT_IMAGE_LOAD, {\n img: n\n });\n }).catch(function (n) {\n return t.emit(t.constants.EVENT_IMAGE_ERROR, {\n img: n\n });\n });\n },\n w = function w(t, e) {\n var r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n return n(e, function (n) {\n return E(t, n, r);\n });\n },\n A = function A(t, n) {\n var e = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n return Promise.all(w(t, n, e)).then(function () {\n t.emit(t.constants.EVENT_IMAGE_COMPLETE);\n });\n },\n I = function I(n) {\n return t(function () {\n n.emit(n.constants.EVENT_RESIZE), n.queue.add(function () {\n return n.recalculate(!0, !0);\n });\n }, 100);\n },\n N = function N(t) {\n if (t.container = h(t.options.container), t.container instanceof h || !t.container) return !!t.options.debug && console.error(\"Error: Container not found\");\n t.container.length && (t.container = t.container[0]), t.options.container = t.container, t.container.style.position = \"relative\";\n },\n T = function T(t) {\n t.queue = new m(), t.events = new y(t), t.rows = [], t.resizer = I(t);\n },\n L = function L(t) {\n var n = h(\"img\", t.container);\n window.addEventListener(\"resize\", t.resizer), t.on(t.constants.EVENT_IMAGE_LOAD, function () {\n return t.recalculate(!1, !1);\n }), t.on(t.constants.EVENT_IMAGE_COMPLETE, function () {\n return t.recalculate(!0, !0);\n }), t.options.useOwnImageLoader || e(t, n, !t.options.waitForImages), t.emit(t.constants.EVENT_INITIALIZED);\n },\n _ = function _(t) {\n N(t), T(t), L(t);\n },\n b = function b(t) {\n return t === Object(t) && \"[object Array]\" !== Object.prototype.toString.call(t);\n },\n O = function O(t, n) {\n b(t) || (n.columns = t), b(t) && t.columns && (n.columns = t.columns), b(t) && t.margin && !b(t.margin) && (n.margin = {\n x: t.margin,\n y: t.margin\n }), b(t) && t.margin && b(t.margin) && t.margin.x && (n.margin.x = t.margin.x), b(t) && t.margin && b(t.margin) && t.margin.y && (n.margin.y = t.margin.y);\n },\n C = function C(t, n) {\n return window.getComputedStyle(t, null).getPropertyValue(n);\n },\n M = function M(t, n) {\n var e = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n\n if (t.lastcol || (t.lastcol = 0), t.rows.length < 1 && (e = !0), e) {\n t.rows = [], t.cols = [], t.lastcol = 0;\n\n for (var r = n - 1; r >= 0; r--) {\n t.rows[r] = 0, t.cols[r] = u(t, r);\n }\n } else if (t.tmpRows) {\n t.rows = [];\n\n for (var r = n - 1; r >= 0; r--) {\n t.rows[r] = t.tmpRows[r];\n }\n } else {\n t.tmpRows = [];\n\n for (var r = n - 1; r >= 0; r--) {\n t.tmpRows[r] = t.rows[r];\n }\n }\n },\n V = function V(t) {\n var n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],\n e = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2],\n r = n ? t.container.children : h(':scope > *:not([data-macy-complete=\"1\"])', t.container);\n r = Array.from(r).filter(function (t) {\n return null !== t.offsetParent;\n });\n var o = c(t.options);\n return v(r, function (t) {\n n && (t.dataset.macyComplete = 0), t.style.width = o;\n }), t.options.trueOrder ? (f(t, r, n, e), t.emit(t.constants.EVENT_RECALCULATED)) : (p(t, r, n, e), t.emit(t.constants.EVENT_RECALCULATED));\n },\n R = function R() {\n return !!window.Promise;\n },\n x = Object.assign || function (t) {\n for (var n = 1; n < arguments.length; n++) {\n var e = arguments[n];\n\n for (var r in e) {\n Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]);\n }\n }\n\n return t;\n };\n\n Array.from || (Array.from = function (t) {\n for (var n = 0, e = []; n < t.length;) {\n e.push(t[n++]);\n }\n\n return e;\n });\n var k = {\n columns: 4,\n margin: 2,\n trueOrder: !1,\n waitForImages: !1,\n useImageLoader: !0,\n breakAt: {},\n useOwnImageLoader: !1,\n onInit: !1,\n cancelLegacy: !1,\n useContainerForBreakpoints: !1\n };\n !function () {\n try {\n document.createElement(\"a\").querySelector(\":scope *\");\n } catch (t) {\n !function () {\n function t(t) {\n return function (e) {\n if (e && n.test(e)) {\n var r = this.getAttribute(\"id\");\n r || (this.id = \"q\" + Math.floor(9e6 * Math.random()) + 1e6), arguments[0] = e.replace(n, \"#\" + this.id);\n var o = t.apply(this, arguments);\n return null === r ? this.removeAttribute(\"id\") : r || (this.id = r), o;\n }\n\n return t.apply(this, arguments);\n };\n }\n\n var n = /:scope\\b/gi,\n e = t(Element.prototype.querySelector);\n\n Element.prototype.querySelector = function (t) {\n return e.apply(this, arguments);\n };\n\n var r = t(Element.prototype.querySelectorAll);\n\n Element.prototype.querySelectorAll = function (t) {\n return r.apply(this, arguments);\n };\n }();\n }\n }();\n\n var q = function t() {\n var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : k;\n if (!(this instanceof t)) return new t(n);\n this.options = {}, x(this.options, k, n), this.options.cancelLegacy && !R() || _(this);\n };\n\n return q.init = function (t) {\n return console.warn(\"Depreciated: Macy.init will be removed in v3.0.0 opt to use Macy directly like so Macy({ /*options here*/ }) \"), new q(t);\n }, q.prototype.recalculateOnImageLoad = function () {\n var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n return e(this, h(\"img\", this.container), !t);\n }, q.prototype.runOnImageLoad = function (t) {\n var n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],\n r = h(\"img\", this.container);\n return this.on(this.constants.EVENT_IMAGE_COMPLETE, t), n && this.on(this.constants.EVENT_IMAGE_LOAD, t), e(this, r, n);\n }, q.prototype.recalculate = function () {\n var t = this,\n n = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],\n e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n return e && this.queue.clear(), this.queue.add(function () {\n return V(t, n, e);\n });\n }, q.prototype.remove = function () {\n window.removeEventListener(\"resize\", this.resizer), v(this.container.children, function (t) {\n t.removeAttribute(\"data-macy-complete\"), t.removeAttribute(\"style\");\n }), this.container.removeAttribute(\"style\");\n }, q.prototype.reInit = function () {\n this.recalculate(!0, !0), this.emit(this.constants.EVENT_INITIALIZED), window.addEventListener(\"resize\", this.resizer), this.container.style.position = \"relative\";\n }, q.prototype.on = function (t, n) {\n this.events.on(t, n);\n }, q.prototype.emit = function (t, n) {\n this.events.emit(t, n);\n }, q.constants = {\n EVENT_INITIALIZED: \"macy.initialized\",\n EVENT_RECALCULATED: \"macy.recalculated\",\n EVENT_IMAGE_LOAD: \"macy.image.load\",\n EVENT_IMAGE_ERROR: \"macy.image.error\",\n EVENT_IMAGE_COMPLETE: \"macy.images.complete\",\n EVENT_RESIZE: \"macy.resize\"\n }, q.prototype.constants = q.constants, q;\n});"],"sourceRoot":""}