{"version":3,"file":"2091.js","mappings":"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","sources":["webpack://sakurairo-scripts/./node_modules/.pnpm/change-case@5.4.4/node_modules/change-case/dist/index.js","webpack://sakurairo-scripts/./src/page/lightGallery/util.ts","webpack://sakurairo-scripts/./src/page/lightGallery/import.ts","webpack://sakurairo-scripts/./node_modules/.pnpm/lightgallery@2.7.2/node_modules/lightgallery/lib/index.js","webpack://sakurairo-scripts/./node_modules/.pnpm/lightgallery@2.7.2/node_modules/lightgallery/lib/lg-events.js","webpack://sakurairo-scripts/./node_modules/.pnpm/lightgallery@2.7.2/node_modules/lightgallery/lib/lg-settings.js","webpack://sakurairo-scripts/./node_modules/.pnpm/lightgallery@2.7.2/node_modules/lightgallery/lib/lg-utils.js","webpack://sakurairo-scripts/./node_modules/.pnpm/lightgallery@2.7.2/node_modules/lightgallery/lib/lgQuery.js","webpack://sakurairo-scripts/./node_modules/.pnpm/lightgallery@2.7.2/node_modules/lightgallery/lib/lightgallery.js","webpack://sakurairo-scripts/./node_modules/lightgallery/plugins/ lazy ^\\.\\/.*\\.min\\.js$ chunkName: lg- namespace object"],"sourcesContent":["// Regexps involved with splitting words in various case formats.\nconst SPLIT_LOWER_UPPER_RE = /([\\p{Ll}\\d])(\\p{Lu})/gu;\nconst SPLIT_UPPER_UPPER_RE = /(\\p{Lu})([\\p{Lu}][\\p{Ll}])/gu;\n// Used to iterate over the initial split result and separate numbers.\nconst SPLIT_SEPARATE_NUMBER_RE = /(\\d)\\p{Ll}|(\\p{L})\\d/u;\n// Regexp involved with stripping non-word characters from the result.\nconst DEFAULT_STRIP_REGEXP = /[^\\p{L}\\d]+/giu;\n// The replacement value for splits.\nconst SPLIT_REPLACE_VALUE = \"$1\\0$2\";\n// The default characters to keep after transforming case.\nconst DEFAULT_PREFIX_SUFFIX_CHARACTERS = \"\";\n/**\n * Split any cased input strings into an array of words.\n */\nexport function split(value) {\n let result = value.trim();\n result = result\n .replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE)\n .replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE);\n result = result.replace(DEFAULT_STRIP_REGEXP, \"\\0\");\n let start = 0;\n let end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n if (start === end)\n return [];\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n return result.slice(start, end).split(/\\0/g);\n}\n/**\n * Split the input string into an array of words, separating numbers.\n */\nexport function splitSeparateNumbers(value) {\n const words = split(value);\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n const match = SPLIT_SEPARATE_NUMBER_RE.exec(word);\n if (match) {\n const offset = match.index + (match[1] ?? match[2]).length;\n words.splice(i, 1, word.slice(0, offset), word.slice(offset));\n }\n }\n return words;\n}\n/**\n * Convert a string to space separated lower case (`foo bar`).\n */\nexport function noCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n return (prefix +\n words.map(lowerFactory(options?.locale)).join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to camel case (`fooBar`).\n */\nexport function camelCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = options?.mergeAmbiguousCharacters\n ? capitalCaseTransformFactory(lower, upper)\n : pascalCaseTransformFactory(lower, upper);\n return (prefix +\n words\n .map((word, index) => {\n if (index === 0)\n return lower(word);\n return transform(word, index);\n })\n .join(options?.delimiter ?? \"\") +\n suffix);\n}\n/**\n * Convert a string to pascal case (`FooBar`).\n */\nexport function pascalCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = options?.mergeAmbiguousCharacters\n ? capitalCaseTransformFactory(lower, upper)\n : pascalCaseTransformFactory(lower, upper);\n return prefix + words.map(transform).join(options?.delimiter ?? \"\") + suffix;\n}\n/**\n * Convert a string to pascal snake case (`Foo_Bar`).\n */\nexport function pascalSnakeCase(input, options) {\n return capitalCase(input, { delimiter: \"_\", ...options });\n}\n/**\n * Convert a string to capital case (`Foo Bar`).\n */\nexport function capitalCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n return (prefix +\n words\n .map(capitalCaseTransformFactory(lower, upper))\n .join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to constant case (`FOO_BAR`).\n */\nexport function constantCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n return (prefix +\n words.map(upperFactory(options?.locale)).join(options?.delimiter ?? \"_\") +\n suffix);\n}\n/**\n * Convert a string to dot case (`foo.bar`).\n */\nexport function dotCase(input, options) {\n return noCase(input, { delimiter: \".\", ...options });\n}\n/**\n * Convert a string to kebab case (`foo-bar`).\n */\nexport function kebabCase(input, options) {\n return noCase(input, { delimiter: \"-\", ...options });\n}\n/**\n * Convert a string to path case (`foo/bar`).\n */\nexport function pathCase(input, options) {\n return noCase(input, { delimiter: \"/\", ...options });\n}\n/**\n * Convert a string to path case (`Foo bar`).\n */\nexport function sentenceCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = capitalCaseTransformFactory(lower, upper);\n return (prefix +\n words\n .map((word, index) => {\n if (index === 0)\n return transform(word);\n return lower(word);\n })\n .join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to snake case (`foo_bar`).\n */\nexport function snakeCase(input, options) {\n return noCase(input, { delimiter: \"_\", ...options });\n}\n/**\n * Convert a string to header case (`Foo-Bar`).\n */\nexport function trainCase(input, options) {\n return capitalCase(input, { delimiter: \"-\", ...options });\n}\nfunction lowerFactory(locale) {\n return locale === false\n ? (input) => input.toLowerCase()\n : (input) => input.toLocaleLowerCase(locale);\n}\nfunction upperFactory(locale) {\n return locale === false\n ? (input) => input.toUpperCase()\n : (input) => input.toLocaleUpperCase(locale);\n}\nfunction capitalCaseTransformFactory(lower, upper) {\n return (word) => `${upper(word[0])}${lower(word.slice(1))}`;\n}\nfunction pascalCaseTransformFactory(lower, upper) {\n return (word, index) => {\n const char0 = word[0];\n const initial = index > 0 && char0 >= \"0\" && char0 <= \"9\" ? \"_\" + char0 : upper(char0);\n return initial + lower(word.slice(1));\n };\n}\nfunction splitPrefixSuffix(input, options = {}) {\n const splitFn = options.split ?? (options.separateNumbers ? splitSeparateNumbers : split);\n const prefixCharacters = options.prefixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n const suffixCharacters = options.suffixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n let prefixIndex = 0;\n let suffixIndex = input.length;\n while (prefixIndex < input.length) {\n const char = input.charAt(prefixIndex);\n if (!prefixCharacters.includes(char))\n break;\n prefixIndex++;\n }\n while (suffixIndex > prefixIndex) {\n const index = suffixIndex - 1;\n const char = input.charAt(index);\n if (!suffixCharacters.includes(char))\n break;\n suffixIndex = index;\n }\n return [\n input.slice(0, prefixIndex),\n splitFn(input.slice(prefixIndex, suffixIndex)),\n input.slice(suffixIndex),\n ];\n}\n//# sourceMappingURL=index.js.map","import { kebabCase } from 'change-case';\nexport function solvePluginName(pluginName) {\n const fileName = kebabCase(pluginName);\n const folderName = pluginName[2].toLowerCase() + pluginName.replace(/^lg\\w/, '');\n return `${folderName}/${fileName}`;\n}\nexport const handleResult = (result) => result.status == 'fulfilled' ? result.value.default : console.error('加载lightGallery的插件时出错啦!', result.reason);\n","//@ts-ignore\nimport lightGallery from 'lightgallery/lib/index.js';\nimport 'lightgallery/css/lightgallery-bundle.min.css';\nimport { handleResult, solvePluginName } from './util';\nexport default async function initLightGallery() {\n const { plugins, ...opts } = _iro.lightGallery;\n lightGallery(document.querySelector('.entry-content'), {\n plugins: plugins && (await Promise.allSettled(plugins.map(\n //moduleNameFormat: lgHash->lg-hash\n name => import(\n /* webpackChunkName: \"lg-\" */\n 'lightgallery/plugins/' + solvePluginName(name) + '.min.js'))))\n .map(handleResult),\n ...opts\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lightgallery_1 = require(\"./lightgallery\");\nfunction lightGallery(el, options) {\n return new lightgallery_1.LightGallery(el, options);\n}\nexports.default = lightGallery;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lGEvents = void 0;\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexports.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 rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n//# sourceMappingURL=lg-events.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lightGalleryCoreSettings = void 0;\nexports.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: '',\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 loadYouTubePoster: true,\n defaultCaptionHeight: 0,\n ariaLabelledby: '',\n ariaDescribedby: '',\n resetScrollPosition: true,\n hideScrollbar: false,\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 trapFocus: 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 selector: '',\n selectWithin: '',\n nextHtml: '',\n prevHtml: '',\n index: 0,\n iframeWidth: '100%',\n iframeHeight: '100%',\n iframeMaxWidth: '100%',\n iframeMaxHeight: '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 strings: {\n closeGallery: 'Close gallery',\n toggleMaximize: 'Toggle maximize',\n previousSlide: 'Previous slide',\n nextSlide: 'Next slide',\n download: 'Download',\n playVideo: 'Play video',\n mediaLoadingFailed: 'Oops... Failed to load content...',\n },\n};\n//# sourceMappingURL=lg-settings.js.map","\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\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 return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertToData = void 0;\nvar lgQuery_1 = require(\"./lgQuery\");\nvar defaultDynamicOptions = [\n 'src',\n 'sources',\n 'subHtml',\n 'subHtmlUrl',\n 'html',\n 'video',\n 'poster',\n 'slideName',\n 'responsive',\n 'srcset',\n 'sizes',\n 'iframe',\n 'downloadUrl',\n 'download',\n 'width',\n 'facebookShareUrl',\n 'tweetText',\n 'iframeTitle',\n 'twitterShareUrl',\n 'pinterestShareUrl',\n 'pinterestText',\n 'fbHtml',\n 'disqusIdentifier',\n 'disqusUrl',\n];\n// Convert html data-attribute to camalcase\nfunction convertToData(attr) {\n // FInd a way for lgsize\n if (attr === 'href') {\n return 'src';\n }\n attr = attr.replace('data-', '');\n attr = attr.charAt(0).toLowerCase() + attr.slice(1);\n attr = attr.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });\n return attr;\n}\nexports.convertToData = convertToData;\nvar utils = {\n /**\n * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option\n */\n getSize: function (el, container, spacing, defaultLgSize) {\n if (spacing === void 0) { spacing = 0; }\n var LGel = lgQuery_1.$LG(el);\n var lgSize = LGel.attr('data-lg-size') || defaultLgSize;\n if (!lgSize) {\n return;\n }\n var isResponsiveSizes = lgSize.split(',');\n // if at-least two viewport sizes are available\n if (isResponsiveSizes[1]) {\n var wWidth = window.innerWidth;\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 if (responsiveWidth > wWidth) {\n lgSize = size_1;\n break;\n }\n // take last item as last option\n if (i === isResponsiveSizes.length - 1) {\n lgSize = size_1;\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 { width: width * ratio, height: height * ratio };\n },\n /**\n * @desc Get transform value based on the imageSize. Used for ZoomFromOrigin option\n * @param {jQuery Element}\n * @returns {String} Transform CSS string\n */\n getTransform: function (el, container, top, bottom, imageSize) {\n if (!imageSize) {\n return;\n }\n var LGel = lgQuery_1.$LG(el).find('img').first();\n if (!LGel.get()) {\n return;\n }\n var containerRect = container.get().getBoundingClientRect();\n var wWidth = containerRect.width;\n // using innerWidth to include mobile safari bottom bar\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 -\n LGel.offset().left +\n (parseFloat(elStyle.paddingLeft) || 0) +\n (parseFloat(elStyle.borderLeft) || 0) +\n lgQuery_1.$LG(window).scrollLeft() +\n containerRect.left;\n var y = (wHeight - elHeight) / 2 -\n LGel.offset().top +\n (parseFloat(elStyle.paddingTop) || 0) +\n (parseFloat(elStyle.borderTop) || 0) +\n lgQuery_1.$LG(window).scrollTop() +\n top;\n var scX = elWidth / imageSize.width;\n var scY = elHeight / imageSize.height;\n var transform = 'translate3d(' +\n (x *= -1) +\n 'px, ' +\n (y *= -1) +\n 'px, 0) scale3d(' +\n scX +\n ', ' +\n scY +\n ', 1)';\n return transform;\n },\n getIframeMarkup: function (iframeWidth, iframeHeight, iframeMaxWidth, iframeMaxHeight, src, iframeTitle) {\n var title = iframeTitle ? 'title=\"' + iframeTitle + '\"' : '';\n return \"
\\n \\n
\";\n },\n getImgMarkup: function (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 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 return \"\" + sourceTag + imgMarkup;\n },\n // Get src from responsive src\n getResponsiveSrc: function (srcItms) {\n var rsWidth = [];\n var rsSrc = [];\n var src = '';\n for (var i = 0; i < srcItms.length; i++) {\n var _src = srcItms[i].split(' ');\n // Manage empty space\n if (_src[0] === '') {\n _src.splice(0, 1);\n }\n rsSrc.push(_src[0]);\n rsWidth.push(_src[1]);\n }\n var wWidth = window.innerWidth;\n for (var j = 0; j < rsWidth.length; j++) {\n if (parseInt(rsWidth[j], 10) > wWidth) {\n src = rsSrc[j];\n break;\n }\n }\n return src;\n },\n isImageLoaded: function (img) {\n if (!img)\n return false;\n // 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 if (!img.complete) {\n return false;\n }\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 if (img.naturalWidth === 0) {\n return false;\n }\n // No other way of checking: assume it’s ok.\n return true;\n },\n getVideoPosterMarkup: function (_poster, dummyImg, videoContStyle, playVideoString, _isVideo) {\n var videoClass = '';\n if (_isVideo && _isVideo.youtube) {\n videoClass = 'lg-has-youtube';\n }\n else if (_isVideo && _isVideo.vimeo) {\n videoClass = 'lg-has-vimeo';\n }\n else {\n videoClass = 'lg-has-html5';\n }\n return \"
\\n
\\n \\n \" + playVideoString + \"\\n \\n \\n \\n \\n \\n \\n \\n
\\n \" + (dummyImg || '') + \"\\n \\n
\";\n },\n getFocusableElements: function (container) {\n var elements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])');\n var visibleElements = [].filter.call(elements, function (element) {\n var style = window.getComputedStyle(element);\n return style.display !== 'none' && style.visibility !== 'hidden';\n });\n return visibleElements;\n },\n /**\n * @desc Create dynamic elements array from gallery items when dynamic option is false\n * It helps to avoid frequent DOM interaction\n * and avoid multiple checks for dynamic elments\n *\n * @returns {Array} dynamicEl\n */\n getDynamicOptions: function (items, extraProps, getCaptionFromTitleOrAlt, exThumbImage) {\n var dynamicElements = [];\n var availableDynamicOptions = __spreadArrays(defaultDynamicOptions, extraProps);\n [].forEach.call(items, function (item) {\n var dynamicEl = {};\n for (var i = 0; i < item.attributes.length; i++) {\n var attr = item.attributes[i];\n if (attr.specified) {\n var dynamicAttr = convertToData(attr.name);\n var label = '';\n if (availableDynamicOptions.indexOf(dynamicAttr) > -1) {\n label = dynamicAttr;\n }\n if (label) {\n dynamicEl[label] = attr.value;\n }\n }\n }\n var currentItem = lgQuery_1.$LG(item);\n var alt = currentItem.find('img').first().attr('alt');\n var title = currentItem.attr('title');\n var thumb = exThumbImage\n ? currentItem.attr(exThumbImage)\n : currentItem.find('img').first().attr('src');\n dynamicEl.thumb = thumb;\n if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) {\n dynamicEl.subHtml = title || alt || '';\n }\n dynamicEl.alt = alt || title || '';\n dynamicElements.push(dynamicEl);\n });\n return dynamicElements;\n },\n isMobile: function () {\n return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\n },\n /**\n * @desc Check the given src is video\n * @param {String} src\n * @return {Object} video type\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\n *\n * @todo - this information can be moved to dynamicEl to avoid frequent calls\n */\n isVideo: function (src, isHTML5VIdeo, index) {\n if (!src) {\n if (isHTML5VIdeo) {\n return {\n html5: true,\n };\n }\n else {\n console.error('lightGallery :- data-src is not provided on slide item ' +\n (index + 1) +\n '. Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/');\n return;\n }\n }\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)([\\&|?][\\S]*)*/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 if (youtube) {\n return {\n youtube: youtube,\n };\n }\n else if (vimeo) {\n return {\n vimeo: vimeo,\n };\n }\n else if (wistia) {\n return {\n wistia: wistia,\n };\n }\n },\n};\nexports.default = utils;\n//# sourceMappingURL=lg-utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.$LG = exports.lgQuery = void 0;\nfunction initLgPolyfills() {\n (function () {\n if (typeof window.CustomEvent === 'function')\n return false;\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 window.CustomEvent = CustomEvent;\n })();\n (function () {\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n Element.prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n }\n })();\n}\nvar lgQuery = /** @class */ (function () {\n function lgQuery(selector) {\n this.cssVenderPrefixes = [\n 'TransitionDuration',\n 'TransitionTimingFunction',\n 'Transform',\n 'Transition',\n ];\n this.selector = this._getSelector(selector);\n this.firstElement = this._getFirstEl();\n return this;\n }\n lgQuery.generateUUID = function () {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n };\n lgQuery.prototype._getSelector = function (selector, context) {\n if (context === void 0) { context = document; }\n if (typeof selector !== 'string') {\n return selector;\n }\n context = context || document;\n var fl = selector.substring(0, 1);\n if (fl === '#') {\n return context.querySelector(selector);\n }\n else {\n return context.querySelectorAll(selector);\n }\n };\n lgQuery.prototype._each = function (func) {\n if (!this.selector) {\n return this;\n }\n if (this.selector.length !== undefined) {\n [].forEach.call(this.selector, func);\n }\n else {\n func(this.selector, 0);\n }\n return this;\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 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 }\n else {\n el.style[property] = value;\n }\n };\n lgQuery.prototype._getFirstEl = function () {\n if (this.selector && this.selector.length !== undefined) {\n return this.selector[0];\n }\n else {\n return this.selector;\n }\n };\n lgQuery.prototype.isEventMatched = function (event, eventName) {\n var eventNamespace = eventName.split('.');\n return event\n .split('.')\n .filter(function (e) { return e; })\n .every(function (e) {\n return eventNamespace.indexOf(e) !== -1;\n });\n };\n lgQuery.prototype.attr = function (attr, value) {\n if (value === undefined) {\n if (!this.firstElement) {\n return '';\n }\n return this.firstElement.getAttribute(attr);\n }\n this._each(function (el) {\n el.setAttribute(attr, value);\n });\n return this;\n };\n lgQuery.prototype.find = function (selector) {\n return $LG(this._getSelector(selector, this.selector));\n };\n lgQuery.prototype.first = function () {\n if (this.selector && this.selector.length !== undefined) {\n return $LG(this.selector[0]);\n }\n else {\n return $LG(this.selector);\n }\n };\n lgQuery.prototype.eq = function (index) {\n return $LG(this.selector[index]);\n };\n lgQuery.prototype.parent = function () {\n return $LG(this.selector.parentElement);\n };\n lgQuery.prototype.get = function () {\n return this._getFirstEl();\n };\n lgQuery.prototype.removeAttr = function (attributes) {\n var attrs = attributes.split(' ');\n this._each(function (el) {\n attrs.forEach(function (attr) { return el.removeAttribute(attr); });\n });\n return this;\n };\n lgQuery.prototype.wrap = function (className) {\n if (!this.firstElement) {\n return this;\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 lgQuery.prototype.addClass = function (classNames) {\n if (classNames === void 0) { classNames = ''; }\n this._each(function (el) {\n // IE doesn't support multiple arguments\n classNames.split(' ').forEach(function (className) {\n if (className) {\n el.classList.add(className);\n }\n });\n });\n return this;\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 if (className) {\n el.classList.remove(className);\n }\n });\n });\n return this;\n };\n lgQuery.prototype.hasClass = function (className) {\n if (!this.firstElement) {\n return false;\n }\n return this.firstElement.classList.contains(className);\n };\n lgQuery.prototype.hasAttribute = function (attribute) {\n if (!this.firstElement) {\n return false;\n }\n return this.firstElement.hasAttribute(attribute);\n };\n lgQuery.prototype.toggleClass = function (className) {\n if (!this.firstElement) {\n return this;\n }\n if (this.hasClass(className)) {\n this.removeClass(className);\n }\n else {\n this.addClass(className);\n }\n return this;\n };\n lgQuery.prototype.css = function (property, value) {\n var _this = this;\n this._each(function (el) {\n _this._setCssVendorPrefix(el, property, value);\n });\n return this;\n };\n // Need to pass separate namespaces for separate elements\n lgQuery.prototype.on = function (events, listener) {\n var _this = this;\n if (!this.selector) {\n return this;\n }\n events.split(' ').forEach(function (event) {\n if (!Array.isArray(lgQuery.eventListeners[event])) {\n lgQuery.eventListeners[event] = [];\n }\n lgQuery.eventListeners[event].push(listener);\n _this.selector.addEventListener(event.split('.')[0], listener);\n });\n return this;\n };\n // @todo - test this\n lgQuery.prototype.once = function (event, listener) {\n var _this = this;\n this.on(event, function () {\n _this.off(event);\n listener(event);\n });\n return this;\n };\n lgQuery.prototype.off = function (event) {\n var _this = this;\n if (!this.selector) {\n return this;\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 lgQuery.prototype.trigger = function (event, detail) {\n if (!this.firstElement) {\n return this;\n }\n var customEvent = new CustomEvent(event.split('.')[0], {\n detail: detail || null,\n });\n this.firstElement.dispatchEvent(customEvent);\n return this;\n };\n // Does not support IE\n lgQuery.prototype.load = function (url) {\n var _this = this;\n fetch(url)\n .then(function (res) { return res.text(); })\n .then(function (html) {\n _this.selector.innerHTML = html;\n });\n return this;\n };\n lgQuery.prototype.html = function (html) {\n if (html === undefined) {\n if (!this.firstElement) {\n return '';\n }\n return this.firstElement.innerHTML;\n }\n this._each(function (el) {\n el.innerHTML = html;\n });\n return this;\n };\n lgQuery.prototype.append = function (html) {\n this._each(function (el) {\n if (typeof html === 'string') {\n el.insertAdjacentHTML('beforeend', html);\n }\n else {\n el.appendChild(html);\n }\n });\n return this;\n };\n lgQuery.prototype.prepend = function (html) {\n this._each(function (el) {\n el.insertAdjacentHTML('afterbegin', html);\n });\n return this;\n };\n lgQuery.prototype.remove = function () {\n this._each(function (el) {\n el.parentNode.removeChild(el);\n });\n return this;\n };\n lgQuery.prototype.empty = function () {\n this._each(function (el) {\n el.innerHTML = '';\n });\n return this;\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 }\n else {\n return (window.pageYOffset ||\n document.documentElement.scrollTop ||\n document.body.scrollTop ||\n 0);\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 }\n else {\n return (window.pageXOffset ||\n document.documentElement.scrollLeft ||\n document.body.scrollLeft ||\n 0);\n }\n };\n lgQuery.prototype.offset = function () {\n if (!this.firstElement) {\n return {\n left: 0,\n top: 0,\n };\n }\n var rect = this.firstElement.getBoundingClientRect();\n var bodyMarginLeft = $LG('body').style().marginLeft;\n // Minus body margin - https://stackoverflow.com/questions/30711548/is-getboundingclientrect-left-returning-a-wrong-value\n return {\n left: rect.left - parseFloat(bodyMarginLeft) + this.scrollLeft(),\n top: rect.top + this.scrollTop(),\n };\n };\n lgQuery.prototype.style = function () {\n if (!this.firstElement) {\n return {};\n }\n return (this.firstElement.currentStyle ||\n window.getComputedStyle(this.firstElement));\n };\n // Width without padding and border even if box-sizing is used.\n lgQuery.prototype.width = function () {\n var style = this.style();\n return (this.firstElement.clientWidth -\n parseFloat(style.paddingLeft) -\n parseFloat(style.paddingRight));\n };\n // Height without padding and border even if box-sizing is used.\n lgQuery.prototype.height = function () {\n var style = this.style();\n return (this.firstElement.clientHeight -\n parseFloat(style.paddingTop) -\n parseFloat(style.paddingBottom));\n };\n lgQuery.eventListeners = {};\n return lgQuery;\n}());\nexports.lgQuery = lgQuery;\nfunction $LG(selector) {\n initLgPolyfills();\n return new lgQuery(selector);\n}\nexports.$LG = $LG;\n//# sourceMappingURL=lgQuery.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LightGallery = void 0;\nvar lg_events_1 = require(\"./lg-events\");\nvar lg_settings_1 = require(\"./lg-settings\");\nvar lg_utils_1 = require(\"./lg-utils\");\nvar lgQuery_1 = require(\"./lgQuery\");\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\nvar lgId = 0;\nvar LightGallery = /** @class */ (function () {\n function LightGallery(element, options) {\n this.lgOpened = false;\n this.index = 0;\n // lightGallery modules\n this.plugins = [];\n // false when lightGallery load first slide content;\n this.lGalleryOn = false;\n // True when a slide animation is in progress\n this.lgBusy = false;\n this.currentItemsInDom = [];\n // Scroll top value before lightGallery is opened\n this.prevScrollTop = 0;\n this.bodyPaddingRight = 0;\n this.isDummyImageRemoved = false;\n this.dragOrSwipeEnabled = false;\n this.mediaContainerPosition = {\n top: 0,\n bottom: 0,\n };\n if (!element) {\n return this;\n }\n lgId++;\n this.lgId = lgId;\n this.el = element;\n this.LGel = lgQuery_1.$LG(element);\n this.generateSettings(options);\n this.buildModules();\n // When using dynamic mode, ensure dynamicEl is an array\n if (this.settings.dynamic &&\n this.settings.dynamicEl !== undefined &&\n !Array.isArray(this.settings.dynamicEl)) {\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\n }\n this.galleryItems = this.getItems();\n this.normalizeSettings();\n // Gallery items\n this.init();\n this.validateLicense();\n return this;\n }\n LightGallery.prototype.generateSettings = function (options) {\n // lightGallery settings\n this.settings = __assign(__assign({}, lg_settings_1.lightGalleryCoreSettings), options);\n if (this.settings.isMobile &&\n typeof this.settings.isMobile === 'function'\n ? this.settings.isMobile()\n : lg_utils_1.default.isMobile()) {\n var mobileSettings = __assign(__assign({}, this.settings.mobileSettings), this.settings.mobileSettings);\n this.settings = __assign(__assign({}, this.settings), mobileSettings);\n }\n };\n LightGallery.prototype.normalizeSettings = function () {\n if (this.settings.slideEndAnimation) {\n this.settings.hideControlOnEnd = false;\n }\n if (!this.settings.closable) {\n this.settings.swipeToClose = false;\n }\n // And reset it on close to get the correct value next time\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\n // At the moment, Zoom from image doesn't support dynamic options\n // @todo add zoomFromOrigin support for dynamic images\n if (this.settings.dynamic) {\n this.zoomFromOrigin = false;\n }\n if (!this.settings.container) {\n this.settings.container = document.body;\n }\n // settings.preload should not be grater than $item.length\n this.settings.preload = Math.min(this.settings.preload, this.galleryItems.length);\n };\n LightGallery.prototype.init = function () {\n var _this = this;\n this.addSlideVideoInfo(this.galleryItems);\n this.buildStructure();\n this.LGel.trigger(lg_events_1.lGEvents.init, {\n instance: this,\n });\n if (this.settings.keyPress) {\n this.keyPress();\n }\n setTimeout(function () {\n _this.enableDrag();\n _this.enableSwipe();\n _this.triggerPosterClick();\n }, 50);\n this.arrow();\n if (this.settings.mousewheel) {\n this.mousewheel();\n }\n if (!this.settings.dynamic) {\n this.openGalleryOnItemClick();\n }\n };\n LightGallery.prototype.openGalleryOnItemClick = function () {\n var _this = this;\n var _loop_1 = function (index) {\n var element = this_1.items[index];\n var $element = lgQuery_1.$LG(element);\n // 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 var uuid = lgQuery_1.lgQuery.generateUUID();\n $element\n .attr('data-lg-id', uuid)\n .on(\"click.lgcustom-item-\" + uuid, function (e) {\n e.preventDefault();\n var currentItemIndex = _this.settings.index || index;\n _this.openGallery(currentItemIndex, element);\n });\n };\n var this_1 = this;\n // Using for loop instead of using bubbling as the items can be any html element.\n for (var index = 0; index < this.items.length; index++) {\n _loop_1(index);\n }\n };\n /**\n * Module constructor\n * Modules are build incrementally.\n * Gallery should be opened only once all the modules are initialized.\n * use moduleBuildTimeout to make sure this\n */\n LightGallery.prototype.buildModules = function () {\n var _this = this;\n this.settings.plugins.forEach(function (plugin) {\n _this.plugins.push(new plugin(_this, lgQuery_1.$LG));\n });\n };\n LightGallery.prototype.validateLicense = function () {\n if (!this.settings.licenseKey) {\n console.error('Please provide a valid license key');\n }\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 LightGallery.prototype.getSlideItem = function (index) {\n return lgQuery_1.$LG(this.getSlideItemId(index));\n };\n LightGallery.prototype.getSlideItemId = function (index) {\n return \"#lg-item-\" + this.lgId + \"-\" + index;\n };\n LightGallery.prototype.getIdName = function (id) {\n return id + \"-\" + this.lgId;\n };\n LightGallery.prototype.getElementById = function (id) {\n return lgQuery_1.$LG(\"#\" + this.getIdName(id));\n };\n LightGallery.prototype.manageSingleSlideClassName = function () {\n if (this.galleryItems.length < 2) {\n this.outer.addClass('lg-single-item');\n }\n else {\n this.outer.removeClass('lg-single-item');\n }\n };\n LightGallery.prototype.buildStructure = function () {\n var _this = this;\n var container = this.$container && this.$container.get();\n if (container) {\n return;\n }\n var controls = '';\n var subHtmlCont = '';\n // Create controls\n if (this.settings.controls) {\n controls = \"\\n \";\n }\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\n subHtmlCont =\n '
';\n }\n var addClasses = '';\n if (this.settings.allowMediaOverlap) {\n // Do not remove space before last single quote\n addClasses += 'lg-media-overlap ';\n }\n var ariaLabelledby = this.settings.ariaLabelledby\n ? 'aria-labelledby=\"' + this.settings.ariaLabelledby + '\"'\n : '';\n var ariaDescribedby = this.settings.ariaDescribedby\n ? 'aria-describedby=\"' + this.settings.ariaDescribedby + '\"'\n : '';\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 ? \"\"\n : '';\n var maximizeIcon = this.settings.showMaximizeIcon\n ? \"\"\n : '';\n var template = \"\\n
\\n
\\n\\n
\\n\\n
\\n
\\n
\\n \" + controls + \"\\n
\\n
\\n \" + maximizeIcon + \"\\n \" + closeIcon + \"\\n
\\n \" + (this.settings.appendSubHtmlTo === '.lg-outer'\n ? subHtmlCont\n : '') + \"\\n
\\n \" + (this.settings.appendSubHtmlTo === '.lg-sub-html'\n ? subHtmlCont\n : '') + \"\\n
\\n
\\n
\\n \";\n lgQuery_1.$LG(this.settings.container).append(template);\n if (document.body !== this.settings.container) {\n lgQuery_1.$LG(this.settings.container).css('position', 'relative');\n }\n this.outer = this.getElementById('lg-outer');\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.$content = this.getElementById('lg-content');\n this.$toolbar = this.getElementById('lg-toolbar');\n this.$backdrop.css('transition-duration', this.settings.backdropDuration + 'ms');\n var outerClassNames = this.settings.mode + \" \";\n this.manageSingleSlideClassName();\n if (this.settings.enableDrag) {\n outerClassNames += 'lg-grab ';\n }\n this.outer.addClass(outerClassNames);\n this.$inner.css('transition-timing-function', this.settings.easing);\n this.$inner.css('transition-duration', this.settings.speed + 'ms');\n if (this.settings.download) {\n this.$toolbar.append(\"\");\n }\n this.counter();\n lgQuery_1.$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 this.initModules();\n };\n LightGallery.prototype.refreshOnResize = function () {\n if (this.lgOpened) {\n var currentGalleryItem = this.galleryItems[this.index];\n var __slideVideoInfo = currentGalleryItem.__slideVideoInfo;\n this.mediaContainerPosition = this.getMediaContainerPosition();\n var _a = this.mediaContainerPosition, top_1 = _a.top, bottom = _a.bottom;\n this.currentImageSize = lg_utils_1.default.getSize(this.items[this.index], this.outer, top_1 + bottom, __slideVideoInfo && this.settings.videoMaxSize);\n if (__slideVideoInfo) {\n this.resizeVideoSlide(this.index, this.currentImageSize);\n }\n if (this.zoomFromOrigin && !this.isDummyImageRemoved) {\n var imgStyle = this.getDummyImgStyles(this.currentImageSize);\n this.outer\n .find('.lg-current .lg-dummy-img')\n .first()\n .attr('style', imgStyle);\n }\n this.LGel.trigger(lg_events_1.lGEvents.containerResize);\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 /**\n * Update slides dynamically.\n * Add, edit or delete slides dynamically when lightGallery is opened.\n * Modify the current gallery items and pass it via updateSlides method\n * @note\n * - Do not mutate existing lightGallery items directly.\n * - Always pass new list of gallery items\n * - You need to take care of thumbnails outside the gallery if any\n * - user this method only if you want to update slides when the gallery is opened. Otherwise, use `refresh()` method.\n * @param items Gallery items\n * @param index After the update operation, which slide gallery should navigate to\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n *\n * // Adding slides dynamically\n * let galleryItems = [\n * // Access existing lightGallery items\n * // galleryItems are automatically generated internally from the gallery HTML markup\n * // or directly from galleryItems when dynamic gallery is used\n * ...plugin.galleryItems,\n * ...[\n * {\n * src: 'img/img-1.png',\n * thumb: 'img/thumb1.png',\n * },\n * ],\n * ];\n * plugin.updateSlides(\n * galleryItems,\n * plugin.index,\n * );\n *\n *\n * // Remove slides dynamically\n * galleryItems = JSON.parse(\n * JSON.stringify(updateSlideInstance.galleryItems),\n * );\n * galleryItems.shift();\n * updateSlideInstance.updateSlides(galleryItems, 1);\n * @see Demo\n */\n LightGallery.prototype.updateSlides = function (items, index) {\n if (this.index > items.length - 1) {\n this.index = items.length - 1;\n }\n if (items.length === 1) {\n this.index = 0;\n }\n if (!items.length) {\n this.closeGallery();\n return;\n }\n var currentSrc = this.galleryItems[index].src;\n this.galleryItems = items;\n this.updateControls();\n this.$inner.empty();\n this.currentItemsInDom = [];\n var _index = 0;\n // Find the current index based on source value of the slide\n this.galleryItems.some(function (galleryItem, itemIndex) {\n if (galleryItem.src === currentSrc) {\n _index = itemIndex;\n return true;\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.LGel.trigger(lg_events_1.lGEvents.updateSlides);\n };\n // Get gallery items based on multiple conditions\n LightGallery.prototype.getItems = function () {\n // Gallery items\n this.items = [];\n if (!this.settings.dynamic) {\n if (this.settings.selector === 'this') {\n this.items.push(this.el);\n }\n else if (this.settings.selector) {\n if (typeof this.settings.selector === 'string') {\n if (this.settings.selectWithin) {\n var selectWithin = lgQuery_1.$LG(this.settings.selectWithin);\n this.items = selectWithin\n .find(this.settings.selector)\n .get();\n }\n else {\n this.items = this.el.querySelectorAll(this.settings.selector);\n }\n }\n else {\n this.items = this.settings.selector;\n }\n }\n else {\n this.items = this.el.children;\n }\n return lg_utils_1.default.getDynamicOptions(this.items, this.settings.extraProps, this.settings.getCaptionFromTitleOrAlt, this.settings.exThumbImage);\n }\n else {\n return this.settings.dynamicEl || [];\n }\n };\n LightGallery.prototype.shouldHideScrollbar = function () {\n return (this.settings.hideScrollbar &&\n document.body === this.settings.container);\n };\n LightGallery.prototype.hideScrollbar = function () {\n if (!this.shouldHideScrollbar()) {\n return;\n }\n this.bodyPaddingRight = parseFloat(lgQuery_1.$LG('body').style().paddingRight);\n var bodyRect = document.documentElement.getBoundingClientRect();\n var scrollbarWidth = window.innerWidth - bodyRect.width;\n lgQuery_1.$LG(document.body).css('padding-right', scrollbarWidth + this.bodyPaddingRight + 'px');\n lgQuery_1.$LG(document.body).addClass('lg-overlay-open');\n };\n LightGallery.prototype.resetScrollBar = function () {\n if (!this.shouldHideScrollbar()) {\n return;\n }\n lgQuery_1.$LG(document.body).css('padding-right', this.bodyPaddingRight + 'px');\n lgQuery_1.$LG(document.body).removeClass('lg-overlay-open');\n };\n /**\n * Open lightGallery.\n * Open gallery with specific slide by passing index of the slide as parameter.\n * @category lGPublicMethods\n * @param {Number} index - index of the slide\n * @param {HTMLElement} element - Which image lightGallery should zoom from\n *\n * @example\n * const $dynamicGallery = document.getElementById('dynamic-gallery-demo');\n * const dynamicGallery = lightGallery($dynamicGallery, {\n * dynamic: true,\n * dynamicEl: [\n * {\n * src: 'img/1.jpg',\n * thumb: 'img/thumb-1.jpg',\n * subHtml: '

Image 1 title

Image 1 descriptions.

',\n * },\n * ...\n * ],\n * });\n * $dynamicGallery.addEventListener('click', function () {\n * // Starts with third item.(Optional).\n * // This is useful if you want use dynamic mode with\n * // custom thumbnails (thumbnails outside gallery),\n * dynamicGallery.openGallery(2);\n * });\n *\n */\n LightGallery.prototype.openGallery = function (index, element) {\n var _this = this;\n if (index === void 0) { index = this.settings.index; }\n // prevent accidental double execution\n if (this.lgOpened)\n return;\n this.lgOpened = true;\n this.outer.removeClass('lg-hide-items');\n this.hideScrollbar();\n // Add display block, but still has opacity 0\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, top = _a.top, bottom = _a.bottom;\n if (!this.settings.allowMediaOverlap) {\n this.setMediaContainerPosition(top, bottom);\n }\n var __slideVideoInfo = this.galleryItems[index].__slideVideoInfo;\n if (this.zoomFromOrigin && element) {\n this.currentImageSize = lg_utils_1.default.getSize(element, this.outer, top + bottom, __slideVideoInfo && this.settings.videoMaxSize);\n transform = lg_utils_1.default.getTransform(element, this.outer, top, bottom, this.currentImageSize);\n }\n if (!this.zoomFromOrigin || !transform) {\n this.outer.addClass(this.settings.startClass);\n this.getSlideItem(index).removeClass('lg-complete');\n }\n var timeout = this.settings.zoomFromOrigin\n ? 100\n : this.settings.backdropDuration;\n setTimeout(function () {\n _this.outer.addClass('lg-components-open');\n }, timeout);\n this.index = index;\n this.LGel.trigger(lg_events_1.lGEvents.beforeOpen);\n // add class lg-current to remove initial transition\n this.getSlideItem(index).addClass('lg-current');\n this.lGalleryOn = false;\n // Store the current scroll top value to scroll back after closing the gallery..\n this.prevScrollTop = lgQuery_1.$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 currentSlide_1.css('transform', transform);\n setTimeout(function () {\n currentSlide_1\n .addClass('lg-start-progress lg-start-end-progress')\n .css('transition-duration', _this.settings.startAnimationDuration + 'ms');\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 setTimeout(function () {\n _this.$backdrop.addClass('in');\n _this.$container.addClass('lg-show-in');\n }, 10);\n setTimeout(function () {\n if (_this.settings.trapFocus &&\n document.body === _this.settings.container) {\n _this.trapFocus();\n }\n }, _this.settings.backdropDuration + 50);\n // lg-visible class resets gallery opacity to 1\n if (!_this.zoomFromOrigin || !transform) {\n setTimeout(function () {\n _this.outer.addClass('lg-visible');\n }, _this.settings.backdropDuration);\n }\n // initiate slide function\n _this.slide(index, false, false, false);\n _this.LGel.trigger(lg_events_1.lGEvents.afterOpen);\n });\n if (document.body === this.settings.container) {\n lgQuery_1.$LG('html').addClass('lg-on');\n }\n };\n /**\n * Note - Changing the position of the media on every slide transition creates a flickering effect.\n * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption.\n * if you have dynamic captions for each media,\n * you can provide an appropriate height for the captions via allowMediaOverlap option\n */\n LightGallery.prototype.getMediaContainerPosition = function () {\n if (this.settings.allowMediaOverlap) {\n return {\n top: 0,\n bottom: 0,\n };\n }\n var top = this.$toolbar.get().clientHeight || 0;\n var subHtml = this.outer.find('.lg-components .lg-sub-html').get();\n var captionHeight = this.settings.defaultCaptionHeight ||\n (subHtml && subHtml.clientHeight) ||\n 0;\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 LightGallery.prototype.setMediaContainerPosition = function (top, bottom) {\n if (top === void 0) { top = 0; }\n if (bottom === void 0) { bottom = 0; }\n this.$content.css('top', top + 'px').css('bottom', bottom + 'px');\n };\n LightGallery.prototype.hideBars = function () {\n var _this = this;\n // Hide controllers if mouse doesn't move for some period\n setTimeout(function () {\n _this.outer.removeClass('lg-hide-items');\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 clearTimeout(_this.hideBarTimeout);\n // Timeout will be cleared on each slide movement also\n _this.hideBarTimeout = setTimeout(function () {\n _this.outer.addClass('lg-hide-items');\n }, _this.settings.hideBarsDelay);\n });\n _this.outer.trigger('mousemove.lg');\n }\n }, this.settings.showBarsAfter);\n };\n LightGallery.prototype.initPictureFill = function ($img) {\n if (this.settings.supportLegacyBrowser) {\n try {\n picturefill({\n elements: [$img.get()],\n });\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 /**\n * @desc Create image counter\n * Ex: 1/10\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 /**\n * @desc add sub-html into the slide\n * @param {Number} index - index of the slide\n */\n LightGallery.prototype.addHtml = function (index) {\n var subHtml;\n var subHtmlUrl;\n if (this.galleryItems[index].subHtmlUrl) {\n subHtmlUrl = this.galleryItems[index].subHtmlUrl;\n }\n else {\n subHtml = this.galleryItems[index].subHtml;\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 if (fL === '.' || fL === '#') {\n if (this.settings.subHtmlSelectorRelative &&\n !this.settings.dynamic) {\n subHtml = lgQuery_1.$LG(this.items)\n .eq(index)\n .find(subHtml)\n .first()\n .html();\n }\n else {\n subHtml = lgQuery_1.$LG(subHtml).first().html();\n }\n }\n }\n else {\n subHtml = '';\n }\n }\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\n if (subHtmlUrl) {\n this.outer.find('.lg-sub-html').load(subHtmlUrl);\n }\n else {\n this.outer.find('.lg-sub-html').html(subHtml);\n }\n }\n else {\n var currentSlide = lgQuery_1.$LG(this.getSlideItemId(index));\n if (subHtmlUrl) {\n currentSlide.load(subHtmlUrl);\n }\n else {\n currentSlide.append(\"
\" + subHtml + \"
\");\n }\n }\n // Add lg-empty-html class if title doesn't exist\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n if (subHtml === '') {\n this.outer\n .find(this.settings.appendSubHtmlTo)\n .addClass('lg-empty-html');\n }\n else {\n this.outer\n .find(this.settings.appendSubHtmlTo)\n .removeClass('lg-empty-html');\n }\n }\n this.LGel.trigger(lg_events_1.lGEvents.afterAppendSubHtml, {\n index: index,\n });\n };\n /**\n * @desc Preload slides\n * @param {Number} index - index of the slide\n * @todo preload not working for the first slide, Also, should work for the first and last slide as well\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 this.loadContent(index + i, false);\n }\n for (var j = 1; j <= this.settings.preload; j++) {\n if (index - j < 0) {\n break;\n }\n this.loadContent(index - j, false);\n }\n };\n LightGallery.prototype.getDummyImgStyles = function (imageSize) {\n if (!imageSize)\n 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 LightGallery.prototype.getVideoContStyle = function (imageSize) {\n if (!imageSize)\n return '';\n return \"width:\" + imageSize.width + \"px;\\n height:\" + imageSize.height + \"px\";\n };\n LightGallery.prototype.getDummyImageContent = function ($currentSlide, index, alt) {\n var $currentItem;\n if (!this.settings.dynamic) {\n $currentItem = lgQuery_1.$LG(this.items).eq(index);\n }\n if ($currentItem) {\n var _dummyImgSrc = void 0;\n if (!this.settings.exThumbImage) {\n _dummyImgSrc = $currentItem.find('img').first().attr('src');\n }\n else {\n _dummyImgSrc = $currentItem.attr(this.settings.exThumbImage);\n }\n if (!_dummyImgSrc)\n 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 return '';\n };\n LightGallery.prototype.setImgMarkup = function (src, $currentSlide, index) {\n var currentGalleryItem = this.galleryItems[index];\n var alt = currentGalleryItem.alt, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;\n // Use the thumbnail as dummy image which will be resized to actual image size and\n // displayed on top of actual image\n var imgContent = '';\n var altAttr = alt ? 'alt=\"' + alt + '\"' : '';\n if (this.isFirstSlideWithZoomAnimation()) {\n imgContent = this.getDummyImageContent($currentSlide, index, altAttr);\n }\n else {\n imgContent = lg_utils_1.default.getImgMarkup(index, src, altAttr, srcset, sizes, sources);\n }\n var imgMarkup = \" \" + imgContent + \"\";\n $currentSlide.prepend(imgMarkup);\n };\n LightGallery.prototype.onSlideObjectLoad = function ($slide, isHTML5VideoWithoutPoster, onLoad, onError) {\n var mediaObject = $slide.find('.lg-object').first();\n if (lg_utils_1.default.isImageLoaded(mediaObject.get()) ||\n isHTML5VideoWithoutPoster) {\n onLoad();\n }\n else {\n mediaObject.on('load.lg error.lg', function () {\n onLoad && onLoad();\n });\n mediaObject.on('error.lg', function () {\n onError && onError();\n });\n }\n };\n /**\n *\n * @param $el Current slide item\n * @param index\n * @param delay Delay is 0 except first time\n * @param speed Speed is same as delay, except it is 0 if gallery is opened via hash plugin\n * @param isFirstSlide\n */\n LightGallery.prototype.onLgObjectLoad = function (currentSlide, index, delay, speed, isFirstSlide, isHTML5VideoWithoutPoster) {\n var _this = this;\n this.onSlideObjectLoad(currentSlide, isHTML5VideoWithoutPoster, function () {\n _this.triggerSlideItemLoad(currentSlide, index, delay, speed, isFirstSlide);\n }, function () {\n currentSlide.addClass('lg-complete lg-complete_');\n currentSlide.html('' +\n _this.settings.strings['mediaLoadingFailed'] +\n '');\n });\n };\n LightGallery.prototype.triggerSlideItemLoad = function ($currentSlide, index, delay, speed, isFirstSlide) {\n var _this = this;\n var currentGalleryItem = this.galleryItems[index];\n // Adding delay for video slides without poster for better performance and user experience\n // Videos should start playing once once the gallery is completely loaded\n var _speed = isFirstSlide &&\n this.getSlideType(currentGalleryItem) === 'video' &&\n !currentGalleryItem.poster\n ? speed\n : 0;\n setTimeout(function () {\n $currentSlide.addClass('lg-complete lg-complete_');\n _this.LGel.trigger(lg_events_1.lGEvents.slideItemLoad, {\n index: index,\n delay: delay || 0,\n isFirstSlide: isFirstSlide,\n });\n }, _speed);\n };\n LightGallery.prototype.isFirstSlideWithZoomAnimation = function () {\n return !!(!this.lGalleryOn &&\n this.zoomFromOrigin &&\n this.currentImageSize);\n };\n // Add video slideInfo\n LightGallery.prototype.addSlideVideoInfo = function (items) {\n var _this = this;\n items.forEach(function (element, index) {\n element.__slideVideoInfo = lg_utils_1.default.isVideo(element.src, !!element.video, index);\n if (element.__slideVideoInfo &&\n _this.settings.loadYouTubePoster &&\n !element.poster &&\n element.__slideVideoInfo.youtube) {\n element.poster = \"//img.youtube.com/vi/\" + element.__slideVideoInfo.youtube[1] + \"/maxresdefault.jpg\";\n }\n });\n };\n /**\n * Load slide content into slide.\n * This is used to load content into slides that is not visible too\n * @param {Number} index - index of the slide.\n * @param {Boolean} rec - if true call loadcontent() function again.\n */\n LightGallery.prototype.loadContent = function (index, rec) {\n var _this = this;\n var currentGalleryItem = this.galleryItems[index];\n var $currentSlide = lgQuery_1.$LG(this.getSlideItemId(index));\n var poster = currentGalleryItem.poster, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;\n var src = currentGalleryItem.src;\n var video = currentGalleryItem.video;\n var _html5Video = video && typeof video === 'string' ? JSON.parse(video) : video;\n if (currentGalleryItem.responsive) {\n var srcDyItms = currentGalleryItem.responsive.split(',');\n src = lg_utils_1.default.getResponsiveSrc(srcDyItms) || src;\n }\n var videoInfo = currentGalleryItem.__slideVideoInfo;\n var lgVideoStyle = '';\n var iframe = !!currentGalleryItem.iframe;\n var isFirstSlide = !this.lGalleryOn;\n // delay for adding complete class. it is 0 except first time.\n var delay = 0;\n if (isFirstSlide) {\n if (this.zoomFromOrigin && this.currentImageSize) {\n delay = this.settings.startAnimationDuration + 10;\n }\n else {\n delay = this.settings.backdropDuration + 10;\n }\n }\n if (!$currentSlide.hasClass('lg-loaded')) {\n if (videoInfo) {\n var _a = this.mediaContainerPosition, top_2 = _a.top, bottom = _a.bottom;\n var videoSize = lg_utils_1.default.getSize(this.items[index], this.outer, top_2 + bottom, videoInfo && this.settings.videoMaxSize);\n lgVideoStyle = this.getVideoContStyle(videoSize);\n }\n if (iframe) {\n var markup = lg_utils_1.default.getIframeMarkup(this.settings.iframeWidth, this.settings.iframeHeight, this.settings.iframeMaxWidth, this.settings.iframeMaxHeight, src, currentGalleryItem.iframeTitle);\n $currentSlide.prepend(markup);\n }\n else if (poster) {\n var dummyImg = '';\n var hasStartAnimation = isFirstSlide &&\n this.zoomFromOrigin &&\n this.currentImageSize;\n if (hasStartAnimation) {\n dummyImg = this.getDummyImageContent($currentSlide, index, '');\n }\n var markup = lg_utils_1.default.getVideoPosterMarkup(poster, dummyImg || '', lgVideoStyle, this.settings.strings['playVideo'], videoInfo);\n $currentSlide.prepend(markup);\n }\n else if (videoInfo) {\n var markup = \"
\";\n $currentSlide.prepend(markup);\n }\n else {\n this.setImgMarkup(src, $currentSlide, index);\n if (srcset || sources) {\n var $img = $currentSlide.find('.lg-object');\n this.initPictureFill($img);\n }\n }\n if (poster || videoInfo) {\n this.LGel.trigger(lg_events_1.lGEvents.hasVideo, {\n index: index,\n src: src,\n html5Video: _html5Video,\n hasPoster: !!poster,\n });\n }\n this.LGel.trigger(lg_events_1.lGEvents.afterAppendSlide, { index: index });\n if (this.lGalleryOn &&\n this.settings.appendSubHtmlTo === '.lg-item') {\n this.addHtml(index);\n }\n }\n // For first time add some delay for displaying the start animation.\n var _speed = 0;\n // Do not change the delay value because it is required for zoom plugin.\n // If gallery opened from direct url (hash) speed value should be 0\n if (delay && !lgQuery_1.$LG(document.body).hasClass('lg-from-hash')) {\n _speed = delay;\n }\n // Only for first slide and zoomFromOrigin is enabled\n if (this.isFirstSlideWithZoomAnimation()) {\n setTimeout(function () {\n $currentSlide\n .removeClass('lg-start-end-progress lg-start-progress')\n .removeAttr('style');\n }, this.settings.startAnimationDuration + 100);\n if (!$currentSlide.hasClass('lg-loaded')) {\n setTimeout(function () {\n if (_this.getSlideType(currentGalleryItem) === 'image') {\n var alt = currentGalleryItem.alt;\n var altAttr = alt ? 'alt=\"' + alt + '\"' : '';\n $currentSlide\n .find('.lg-img-wrap')\n .append(lg_utils_1.default.getImgMarkup(index, src, altAttr, srcset, sizes, currentGalleryItem.sources));\n if (srcset || sources) {\n var $img = $currentSlide.find('.lg-object');\n _this.initPictureFill($img);\n }\n }\n if (_this.getSlideType(currentGalleryItem) === 'image' ||\n (_this.getSlideType(currentGalleryItem) === 'video' &&\n poster)) {\n _this.onLgObjectLoad($currentSlide, index, delay, _speed, true, false);\n // load remaining slides once the slide is completely loaded\n _this.onSlideObjectLoad($currentSlide, !!(videoInfo && videoInfo.html5 && !poster), function () {\n _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);\n }, function () {\n _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);\n });\n }\n }, this.settings.startAnimationDuration + 100);\n }\n }\n // SLide content has been added to dom\n $currentSlide.addClass('lg-loaded');\n if (!this.isFirstSlideWithZoomAnimation() ||\n (this.getSlideType(currentGalleryItem) === 'video' && !poster)) {\n this.onLgObjectLoad($currentSlide, index, delay, _speed, isFirstSlide, !!(videoInfo && videoInfo.html5 && !poster));\n }\n // When gallery is opened once content is loaded (second time) need to add lg-complete class for css styling\n if ((!this.zoomFromOrigin || !this.currentImageSize) &&\n $currentSlide.hasClass('lg-complete_') &&\n !this.lGalleryOn) {\n setTimeout(function () {\n $currentSlide.addClass('lg-complete');\n }, this.settings.backdropDuration);\n }\n // Content loaded\n // Need to set lGalleryOn before calling preload function\n this.lGalleryOn = true;\n if (rec === true) {\n if (!$currentSlide.hasClass('lg-complete_')) {\n $currentSlide\n .find('.lg-object')\n .first()\n .on('load.lg error.lg', function () {\n _this.preload(index);\n });\n }\n else {\n this.preload(index);\n }\n }\n };\n /**\n * @desc Remove dummy image content and load next slides\n * Called only for the first time if zoomFromOrigin animation is enabled\n * @param index\n * @param $currentSlide\n * @param speed\n */\n LightGallery.prototype.loadContentOnFirstSlideLoad = function (index, $currentSlide, speed) {\n var _this = this;\n setTimeout(function () {\n $currentSlide.find('.lg-dummy-img').remove();\n $currentSlide.removeClass('lg-first-slide');\n _this.outer.removeClass('lg-first-slide-loading');\n _this.isDummyImageRemoved = true;\n _this.preload(index);\n }, speed + 300);\n };\n LightGallery.prototype.getItemsToBeInsertedToDom = function (index, prevIndex, numberOfItems) {\n var _this = this;\n if (numberOfItems === void 0) { numberOfItems = 0; }\n var itemsToBeInsertedToDom = [];\n // Minimum 2 items should be there\n var possibleNumberOfItems = Math.max(numberOfItems, 3);\n possibleNumberOfItems = Math.min(possibleNumberOfItems, this.galleryItems.length);\n var prevIndexItem = \"lg-item-\" + this.lgId + \"-\" + prevIndex;\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 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 var numberOfExistingItems = itemsToBeInsertedToDom.length;\n for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (index + idx + 1));\n }\n }\n else {\n for (var idx = index; idx <= this.galleryItems.length - 1 &&\n idx < index + possibleNumberOfItems / 2; idx++) {\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + idx);\n }\n var numberOfExistingItems = itemsToBeInsertedToDom.length;\n for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (index - idx - 1));\n }\n }\n if (this.settings.loop) {\n if (index === this.galleryItems.length - 1) {\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + 0);\n }\n else if (index === 0) {\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (this.galleryItems.length - 1));\n }\n }\n if (itemsToBeInsertedToDom.indexOf(prevIndexItem) === -1) {\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + prevIndex);\n }\n return itemsToBeInsertedToDom;\n };\n LightGallery.prototype.organizeSlideItems = function (index, prevIndex) {\n var _this = this;\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 lgQuery_1.$LG(\"#\" + item).remove();\n }\n });\n return itemsToBeInsertedToDom;\n };\n /**\n * Get previous index of the slide\n */\n LightGallery.prototype.getPreviousSlideIndex = function () {\n var prevIndex = 0;\n try {\n var currentItemId = this.outer\n .find('.lg-current')\n .first()\n .attr('id');\n prevIndex = parseInt(currentItemId.split('-')[3]) || 0;\n }\n catch (error) {\n prevIndex = 0;\n }\n return prevIndex;\n };\n LightGallery.prototype.setDownloadValue = function (index) {\n if (this.settings.download) {\n var currentGalleryItem = this.galleryItems[index];\n var hideDownloadBtn = currentGalleryItem.downloadUrl === false ||\n currentGalleryItem.downloadUrl === 'false';\n if (hideDownloadBtn) {\n this.outer.addClass('lg-hide-download');\n }\n else {\n var $download = this.getElementById('lg-download');\n this.outer.removeClass('lg-hide-download');\n $download.attr('href', currentGalleryItem.downloadUrl ||\n currentGalleryItem.src);\n if (currentGalleryItem.download) {\n $download.attr('download', currentGalleryItem.download);\n }\n }\n }\n };\n LightGallery.prototype.makeSlideAnimation = function (direction, currentSlideItem, previousSlideItem) {\n var _this = this;\n if (this.lGalleryOn) {\n previousSlideItem.addClass('lg-slide-progress');\n }\n setTimeout(function () {\n // remove all transitions\n _this.outer.addClass('lg-no-trans');\n _this.outer\n .find('.lg-item')\n .removeClass('lg-prev-slide lg-next-slide');\n if (direction === 'prev') {\n //prevslide\n currentSlideItem.addClass('lg-prev-slide');\n previousSlideItem.addClass('lg-next-slide');\n }\n else {\n // next slide\n currentSlideItem.addClass('lg-next-slide');\n previousSlideItem.addClass('lg-prev-slide');\n }\n // give 50 ms for browser to add/remove class\n setTimeout(function () {\n _this.outer.find('.lg-item').removeClass('lg-current');\n currentSlideItem.addClass('lg-current');\n // reset all transitions\n _this.outer.removeClass('lg-no-trans');\n }, 50);\n }, this.lGalleryOn ? this.settings.slideDelay : 0);\n };\n /**\n * Goto a specific slide.\n * @param {Number} index - index of the slide\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\n * @param {String} direction - Direction of the slide(next/prev)\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * // to go to 3rd slide\n * plugin.slide(2);\n *\n */\n LightGallery.prototype.slide = function (index, fromTouch, fromThumb, direction) {\n var _this = this;\n var prevIndex = this.getPreviousSlideIndex();\n this.currentItemsInDom = this.organizeSlideItems(index, prevIndex);\n // Prevent multiple call, Required for hsh plugin\n if (this.lGalleryOn && prevIndex === index) {\n return;\n }\n var numberOfGalleryItems = this.galleryItems.length;\n if (!this.lgBusy) {\n if (this.settings.counter) {\n this.updateCurrentCounter(index);\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 if (videoInfo) {\n var _a = this.mediaContainerPosition, top_3 = _a.top, bottom = _a.bottom;\n var videoSize = lg_utils_1.default.getSize(this.items[index], this.outer, top_3 + bottom, videoInfo && this.settings.videoMaxSize);\n this.resizeVideoSlide(index, videoSize);\n }\n this.LGel.trigger(lg_events_1.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 if (!direction) {\n if (index < prevIndex) {\n direction = 'prev';\n }\n else if (index > prevIndex) {\n direction = 'next';\n }\n }\n if (!fromTouch) {\n this.makeSlideAnimation(direction, currentSlideItem, previousSlideItem_1);\n }\n else {\n this.outer\n .find('.lg-item')\n .removeClass('lg-prev-slide lg-current lg-next-slide');\n var touchPrev = void 0;\n var touchNext = void 0;\n if (numberOfGalleryItems > 2) {\n touchPrev = index - 1;\n touchNext = index + 1;\n if (index === 0 && prevIndex === numberOfGalleryItems - 1) {\n // next slide\n touchNext = 0;\n touchPrev = numberOfGalleryItems - 1;\n }\n else if (index === numberOfGalleryItems - 1 &&\n prevIndex === 0) {\n // prev slide\n touchNext = 0;\n touchPrev = numberOfGalleryItems - 1;\n }\n }\n else {\n touchPrev = 0;\n touchNext = 1;\n }\n if (direction === 'prev') {\n this.getSlideItem(touchNext).addClass('lg-next-slide');\n }\n else {\n this.getSlideItem(touchPrev).addClass('lg-prev-slide');\n }\n currentSlideItem.addClass('lg-current');\n }\n // Do not put load content in set timeout as it needs to load immediately when the gallery is opened\n if (!this.lGalleryOn) {\n this.loadContent(index, true);\n }\n else {\n setTimeout(function () {\n _this.loadContent(index, true);\n // Add title if this.settings.appendSubHtmlTo === lg-sub-html\n if (_this.settings.appendSubHtmlTo !== '.lg-item') {\n _this.addHtml(index);\n }\n }, this.settings.speed + 50 + (fromTouch ? 0 : this.settings.slideDelay));\n }\n setTimeout(function () {\n _this.lgBusy = false;\n previousSlideItem_1.removeClass('lg-slide-progress');\n _this.LGel.trigger(lg_events_1.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 this.index = index;\n };\n LightGallery.prototype.updateCurrentCounter = function (index) {\n this.getElementById('lg-counter-current').html(index + 1 + '');\n };\n LightGallery.prototype.updateCounterTotal = function () {\n this.getElementById('lg-counter-all').html(this.galleryItems.length + '');\n };\n LightGallery.prototype.getSlideType = function (item) {\n if (item.__slideVideoInfo) {\n return 'video';\n }\n else if (item.iframe) {\n return 'iframe';\n }\n else {\n return 'image';\n }\n };\n LightGallery.prototype.touchMove = function (startCoords, endCoords, e) {\n var distanceX = endCoords.pageX - startCoords.pageX;\n var distanceY = endCoords.pageY - startCoords.pageY;\n var allowSwipe = false;\n if (this.swipeDirection) {\n allowSwipe = true;\n }\n else {\n if (Math.abs(distanceX) > 15) {\n this.swipeDirection = 'horizontal';\n allowSwipe = true;\n }\n else if (Math.abs(distanceY) > 15) {\n this.swipeDirection = 'vertical';\n allowSwipe = true;\n }\n }\n if (!allowSwipe) {\n return;\n }\n var $currentSlide = this.getSlideItem(this.index);\n if (this.swipeDirection === 'horizontal') {\n e === null || e === void 0 ? void 0 : e.preventDefault();\n // reset opacity and transition duration\n this.outer.addClass('lg-dragging');\n // move current slide\n this.setTranslate($currentSlide, distanceX, 0);\n // move next and prev slide with current slide\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 }\n else if (this.swipeDirection === 'vertical') {\n if (this.settings.swipeToClose) {\n e === null || e === void 0 ? void 0 : e.preventDefault();\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 if (Math.abs(distanceY) > 100) {\n this.outer\n .addClass('lg-hide-items')\n .removeClass('lg-components-open');\n }\n }\n }\n };\n LightGallery.prototype.touchEnd = function (endCoords, startCoords, event) {\n var _this = this;\n var distance;\n // keep slide animation for any mode while dragg/swipe\n if (this.settings.mode !== 'lg-slide') {\n this.outer.addClass('lg-slide');\n }\n // set transition duration\n setTimeout(function () {\n _this.$container.removeClass('lg-dragging-vertical');\n _this.outer\n .removeClass('lg-dragging lg-hide-items')\n .addClass('lg-components-open');\n var triggerClick = true;\n if (_this.swipeDirection === 'horizontal') {\n distance = endCoords.pageX - startCoords.pageX;\n var distanceAbs = Math.abs(endCoords.pageX - startCoords.pageX);\n if (distance < 0 &&\n distanceAbs > _this.settings.swipeThreshold) {\n _this.goToNextSlide(true);\n triggerClick = false;\n }\n else if (distance > 0 &&\n distanceAbs > _this.settings.swipeThreshold) {\n _this.goToPrevSlide(true);\n triggerClick = false;\n }\n }\n else if (_this.swipeDirection === 'vertical') {\n distance = Math.abs(endCoords.pageY - startCoords.pageY);\n if (_this.settings.closable &&\n _this.settings.swipeToClose &&\n distance > 100) {\n _this.closeGallery();\n return;\n }\n else {\n _this.$backdrop.css('opacity', 1);\n }\n }\n _this.outer.find('.lg-item').removeAttr('style');\n if (triggerClick &&\n Math.abs(endCoords.pageX - startCoords.pageX) < 5) {\n // Trigger click if distance is less than 5 pix\n var target = lgQuery_1.$LG(event.target);\n if (_this.isPosterElement(target)) {\n _this.LGel.trigger(lg_events_1.lGEvents.posterClick);\n }\n }\n _this.swipeDirection = undefined;\n });\n // remove slide class once drag/swipe is completed if mode is not slide\n setTimeout(function () {\n if (!_this.outer.hasClass('lg-dragging') &&\n _this.settings.mode !== 'lg-slide') {\n _this.outer.removeClass('lg-slide');\n }\n }, this.settings.speed + 100);\n };\n LightGallery.prototype.enableSwipe = function () {\n var _this = this;\n var startCoords = {};\n var endCoords = {};\n var isMoved = false;\n var isSwiping = false;\n if (this.settings.enableSwipe) {\n this.$inner.on('touchstart.lg', function (e) {\n _this.dragOrSwipeEnabled = true;\n var $item = _this.getSlideItem(_this.index);\n if ((lgQuery_1.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target)) &&\n !_this.outer.hasClass('lg-zoomed') &&\n !_this.lgBusy &&\n e.touches.length === 1) {\n isSwiping = true;\n _this.touchAction = 'swipe';\n _this.manageSwipeClass();\n startCoords = {\n pageX: e.touches[0].pageX,\n pageY: e.touches[0].pageY,\n };\n }\n });\n this.$inner.on('touchmove.lg', function (e) {\n if (isSwiping &&\n _this.touchAction === 'swipe' &&\n e.touches.length === 1) {\n endCoords = {\n pageX: e.touches[0].pageX,\n pageY: e.touches[0].pageY,\n };\n _this.touchMove(startCoords, endCoords, e);\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 _this.touchEnd(endCoords, startCoords, event);\n }\n else if (isSwiping) {\n var target = lgQuery_1.$LG(event.target);\n if (_this.isPosterElement(target)) {\n _this.LGel.trigger(lg_events_1.lGEvents.posterClick);\n }\n }\n _this.touchAction = undefined;\n isSwiping = false;\n }\n });\n }\n };\n LightGallery.prototype.enableDrag = function () {\n var _this = this;\n var startCoords = {};\n var endCoords = {};\n var isDraging = false;\n var isMoved = false;\n if (this.settings.enableDrag) {\n this.outer.on('mousedown.lg', function (e) {\n _this.dragOrSwipeEnabled = true;\n var $item = _this.getSlideItem(_this.index);\n if (lgQuery_1.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target)) {\n if (!_this.outer.hasClass('lg-zoomed') && !_this.lgBusy) {\n e.preventDefault();\n if (!_this.lgBusy) {\n _this.manageSwipeClass();\n startCoords = {\n pageX: e.pageX,\n pageY: e.pageY,\n };\n isDraging = true;\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.outer.get().scrollLeft += 1;\n _this.outer.get().scrollLeft -= 1;\n // *\n _this.outer\n .removeClass('lg-grab')\n .addClass('lg-grabbing');\n _this.LGel.trigger(lg_events_1.lGEvents.dragStart);\n }\n }\n }\n });\n lgQuery_1.$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 _this.touchMove(startCoords, endCoords);\n _this.LGel.trigger(lg_events_1.lGEvents.dragMove);\n }\n });\n lgQuery_1.$LG(window).on(\"mouseup.lg.global\" + this.lgId, function (event) {\n if (!_this.lgOpened) {\n return;\n }\n var target = lgQuery_1.$LG(event.target);\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords, startCoords, event);\n _this.LGel.trigger(lg_events_1.lGEvents.dragEnd);\n }\n else if (_this.isPosterElement(target)) {\n _this.LGel.trigger(lg_events_1.lGEvents.posterClick);\n }\n // Prevent execution on click\n if (isDraging) {\n isDraging = false;\n _this.outer.removeClass('lg-grabbing').addClass('lg-grab');\n }\n });\n }\n };\n LightGallery.prototype.triggerPosterClick = function () {\n var _this = this;\n this.$inner.on('click.lg', function (event) {\n if (!_this.dragOrSwipeEnabled &&\n _this.isPosterElement(lgQuery_1.$LG(event.target))) {\n _this.LGel.trigger(lg_events_1.lGEvents.posterClick);\n }\n });\n };\n LightGallery.prototype.manageSwipeClass = function () {\n var _touchNext = this.index + 1;\n var _touchPrev = this.index - 1;\n if (this.settings.loop && this.galleryItems.length > 2) {\n if (this.index === 0) {\n _touchPrev = this.galleryItems.length - 1;\n }\n else if (this.index === this.galleryItems.length - 1) {\n _touchNext = 0;\n }\n }\n this.outer.find('.lg-item').removeClass('lg-next-slide lg-prev-slide');\n if (_touchPrev > -1) {\n this.getSlideItem(_touchPrev).addClass('lg-prev-slide');\n }\n this.getSlideItem(_touchNext).addClass('lg-next-slide');\n };\n /**\n * Go to next slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * plugin.goToNextSlide();\n * @see Demo\n */\n LightGallery.prototype.goToNextSlide = function (fromTouch) {\n var _this = this;\n var _loop = this.settings.loop;\n if (fromTouch && this.galleryItems.length < 3) {\n _loop = false;\n }\n if (!this.lgBusy) {\n if (this.index + 1 < this.galleryItems.length) {\n this.index++;\n this.LGel.trigger(lg_events_1.lGEvents.beforeNextSlide, {\n index: this.index,\n });\n this.slide(this.index, !!fromTouch, false, 'next');\n }\n else {\n if (_loop) {\n this.index = 0;\n this.LGel.trigger(lg_events_1.lGEvents.beforeNextSlide, {\n index: this.index,\n });\n this.slide(this.index, !!fromTouch, false, 'next');\n }\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 /**\n * Go to previous slides\n * @param {Boolean} fromTouch - true if slide function called via touch event\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery({});\n * plugin.goToPrevSlide();\n * @see Demo\n *\n */\n LightGallery.prototype.goToPrevSlide = function (fromTouch) {\n var _this = this;\n var _loop = this.settings.loop;\n if (fromTouch && this.galleryItems.length < 3) {\n _loop = false;\n }\n if (!this.lgBusy) {\n if (this.index > 0) {\n this.index--;\n this.LGel.trigger(lg_events_1.lGEvents.beforePrevSlide, {\n index: this.index,\n fromTouch: fromTouch,\n });\n this.slide(this.index, !!fromTouch, false, 'prev');\n }\n else {\n if (_loop) {\n this.index = this.galleryItems.length - 1;\n this.LGel.trigger(lg_events_1.lGEvents.beforePrevSlide, {\n index: this.index,\n fromTouch: fromTouch,\n });\n this.slide(this.index, !!fromTouch, false, 'prev');\n }\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 LightGallery.prototype.keyPress = function () {\n var _this = this;\n lgQuery_1.$LG(window).on(\"keydown.lg.global\" + this.lgId, function (e) {\n if (_this.lgOpened &&\n _this.settings.escKey === true &&\n e.keyCode === 27) {\n e.preventDefault();\n if (_this.settings.allowMediaOverlap &&\n _this.outer.hasClass('lg-can-toggle') &&\n _this.outer.hasClass('lg-components-open')) {\n _this.outer.removeClass('lg-components-open');\n }\n else {\n _this.closeGallery();\n }\n }\n if (_this.lgOpened && _this.galleryItems.length > 1) {\n if (e.keyCode === 37) {\n e.preventDefault();\n _this.goToPrevSlide();\n }\n if (e.keyCode === 39) {\n e.preventDefault();\n _this.goToNextSlide();\n }\n }\n });\n };\n LightGallery.prototype.arrow = function () {\n var _this = this;\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 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 if (index + 1 === this.galleryItems.length) {\n $next.attr('disabled', 'disabled').addClass('disabled');\n }\n else {\n $next.removeAttr('disabled').removeClass('disabled');\n }\n if (index === 0) {\n $prev.attr('disabled', 'disabled').addClass('disabled');\n }\n else {\n $prev.removeAttr('disabled').removeClass('disabled');\n }\n }\n };\n LightGallery.prototype.setTranslate = function ($el, xValue, yValue, scaleX, scaleY) {\n if (scaleX === void 0) { scaleX = 1; }\n if (scaleY === void 0) { scaleY = 1; }\n $el.css('transform', 'translate3d(' +\n xValue +\n 'px, ' +\n yValue +\n 'px, 0px) scale3d(' +\n scaleX +\n ', ' +\n scaleY +\n ', 1)');\n };\n LightGallery.prototype.mousewheel = function () {\n var _this = this;\n var lastCall = 0;\n this.outer.on('wheel.lg', function (e) {\n if (!e.deltaY || _this.galleryItems.length < 2) {\n return;\n }\n e.preventDefault();\n var now = new Date().getTime();\n if (now - lastCall < 1000) {\n return;\n }\n lastCall = now;\n if (e.deltaY > 0) {\n _this.goToNextSlide();\n }\n else if (e.deltaY < 0) {\n _this.goToPrevSlide();\n }\n });\n };\n LightGallery.prototype.isSlideElement = function (target) {\n return (target.hasClass('lg-outer') ||\n target.hasClass('lg-item') ||\n target.hasClass('lg-img-wrap'));\n };\n LightGallery.prototype.isPosterElement = function (target) {\n var playButton = this.getSlideItem(this.index)\n .find('.lg-video-play-button')\n .get();\n return (target.hasClass('lg-video-poster') ||\n target.hasClass('lg-video-play-button') ||\n (playButton && playButton.contains(target.get())));\n };\n /**\n * Maximize minimize inline gallery.\n * @category lGPublicMethods\n */\n LightGallery.prototype.toggleMaximize = function () {\n var _this = this;\n this.getElementById('lg-maximize').on('click.lg', function () {\n _this.$container.toggleClass('lg-inline');\n _this.refreshOnResize();\n });\n };\n LightGallery.prototype.invalidateItems = function () {\n for (var index = 0; index < this.items.length; index++) {\n var element = this.items[index];\n var $element = lgQuery_1.$LG(element);\n $element.off(\"click.lgcustom-item-\" + $element.attr('data-lg-id'));\n }\n };\n LightGallery.prototype.trapFocus = function () {\n var _this = this;\n this.$container.get().focus({\n preventScroll: true,\n });\n lgQuery_1.$LG(window).on(\"keydown.lg.global\" + this.lgId, function (e) {\n if (!_this.lgOpened) {\n return;\n }\n var isTabPressed = e.key === 'Tab' || e.keyCode === 9;\n if (!isTabPressed) {\n return;\n }\n var focusableEls = lg_utils_1.default.getFocusableElements(_this.$container.get());\n var firstFocusableEl = focusableEls[0];\n var lastFocusableEl = focusableEls[focusableEls.length - 1];\n if (e.shiftKey) {\n if (document.activeElement === firstFocusableEl) {\n lastFocusableEl.focus();\n e.preventDefault();\n }\n }\n else {\n if (document.activeElement === lastFocusableEl) {\n firstFocusableEl.focus();\n e.preventDefault();\n }\n }\n });\n };\n LightGallery.prototype.manageCloseGallery = function () {\n var _this = this;\n if (!this.settings.closable)\n return;\n var mousedown = false;\n this.getElementById('lg-close').on('click.lg', function () {\n _this.closeGallery();\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 = lgQuery_1.$LG(e.target);\n if (_this.isSlideElement(target)) {\n mousedown = true;\n }\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 = lgQuery_1.$LG(e.target);\n if (_this.isSlideElement(target) && mousedown) {\n if (!_this.outer.hasClass('lg-dragging')) {\n _this.closeGallery();\n }\n }\n });\n }\n };\n /**\n * Close lightGallery if it is opened.\n *\n * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery\n * @return returns the estimated time to close gallery completely including the close animation duration\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * plugin.closeGallery();\n *\n */\n LightGallery.prototype.closeGallery = function (force) {\n var _this = this;\n if (!this.lgOpened || (!this.settings.closable && !force)) {\n return 0;\n }\n this.LGel.trigger(lg_events_1.lGEvents.beforeClose);\n if (this.settings.resetScrollPosition && !this.settings.hideScrollbar) {\n lgQuery_1.$LG(window).scrollTop(this.prevScrollTop);\n }\n var currentItem = this.items[this.index];\n var transform;\n if (this.zoomFromOrigin && currentItem) {\n var _a = this.mediaContainerPosition, top_4 = _a.top, bottom = _a.bottom;\n var _b = this.galleryItems[this.index], __slideVideoInfo = _b.__slideVideoInfo, poster = _b.poster;\n var imageSize = lg_utils_1.default.getSize(currentItem, this.outer, top_4 + bottom, __slideVideoInfo && poster && this.settings.videoMaxSize);\n transform = lg_utils_1.default.getTransform(currentItem, this.outer, top_4, bottom, imageSize);\n }\n if (this.zoomFromOrigin && transform) {\n this.outer.addClass('lg-closing lg-zoom-from-image');\n this.getSlideItem(this.index)\n .addClass('lg-start-end-progress')\n .css('transition-duration', this.settings.startAnimationDuration + 'ms')\n .css('transform', transform);\n }\n else {\n this.outer.addClass('lg-hide-items');\n // 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 this.outer.removeClass('lg-zoom-from-image');\n }\n // Unbind all events added by lightGallery\n // @todo\n //this.$el.off('.lg.tm');\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 lgQuery_1.$LG('html').removeClass('lg-on');\n this.outer.removeClass('lg-visible lg-components-open');\n // Resetting opacity to 0 isd required as vertical swipe to close function adds inline opacity.\n this.$backdrop.removeClass('in').css('opacity', 0);\n var removeTimeout = this.zoomFromOrigin && transform\n ? Math.max(this.settings.startAnimationDuration, this.settings.backdropDuration)\n : this.settings.backdropDuration;\n this.$container.removeClass('lg-show-in');\n // Once the closign animation is completed and gallery is invisible\n setTimeout(function () {\n if (_this.zoomFromOrigin && transform) {\n _this.outer.removeClass('lg-zoom-from-image');\n }\n _this.$container.removeClass('lg-show');\n // Reset scrollbar\n _this.resetScrollBar();\n // Need to remove inline opacity as it is used in the stylesheet as well\n _this.$backdrop\n .removeAttr('style')\n .css('transition-duration', _this.settings.backdropDuration + 'ms');\n _this.outer.removeClass(\"lg-closing \" + _this.settings.startClass);\n _this.getSlideItem(_this.index).removeClass('lg-start-end-progress');\n _this.$inner.empty();\n if (_this.lgOpened) {\n _this.LGel.trigger(lg_events_1.lGEvents.afterClose, {\n instance: _this,\n });\n }\n if (_this.$container.get()) {\n _this.$container.get().blur();\n }\n _this.lgOpened = false;\n }, removeTimeout + 100);\n return removeTimeout + 100;\n };\n LightGallery.prototype.initModules = function () {\n this.plugins.forEach(function (module) {\n try {\n module.init();\n }\n catch (err) {\n console.warn(\"lightGallery:- make sure lightGallery module is properly initiated\");\n }\n });\n };\n LightGallery.prototype.destroyModules = function (destroy) {\n this.plugins.forEach(function (module) {\n try {\n if (destroy) {\n module.destroy();\n }\n else {\n module.closeGallery && module.closeGallery();\n }\n }\n catch (err) {\n console.warn(\"lightGallery:- make sure lightGallery module is properly destroyed\");\n }\n });\n };\n /**\n * Refresh lightGallery with new set of children.\n *\n * @description This is useful to update the gallery when the child elements are changed without calling destroy method.\n *\n * If you are using dynamic mode, you can pass the modified array of dynamicEl as the first parameter to refresh the dynamic gallery\n * @see Demo\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * // Delete or add children, then call\n * plugin.refresh();\n *\n */\n LightGallery.prototype.refresh = function (galleryItems) {\n if (!this.settings.dynamic) {\n this.invalidateItems();\n }\n if (galleryItems) {\n this.galleryItems = galleryItems;\n }\n else {\n this.galleryItems = this.getItems();\n }\n this.updateControls();\n this.openGalleryOnItemClick();\n this.LGel.trigger(lg_events_1.lGEvents.updateSlides);\n };\n LightGallery.prototype.updateControls = function () {\n this.addSlideVideoInfo(this.galleryItems);\n this.updateCounterTotal();\n this.manageSingleSlideClassName();\n };\n LightGallery.prototype.destroyGallery = function () {\n this.destroyModules(true);\n if (!this.settings.dynamic) {\n this.invalidateItems();\n }\n lgQuery_1.$LG(window).off(\".lg.global\" + this.lgId);\n this.LGel.off('.lg');\n this.$container.remove();\n };\n /**\n * Destroy lightGallery.\n * Destroy lightGallery and its plugin instances completely\n *\n * @description This method also calls CloseGallery function internally. Returns the time takes to completely close and destroy the instance.\n * In case if you want to re-initialize lightGallery right after destroying it, initialize it only once the destroy process is completed.\n * You can use refresh method most of the times.\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * plugin.destroy();\n *\n */\n LightGallery.prototype.destroy = function () {\n var closeTimeout = this.closeGallery(true);\n if (closeTimeout) {\n setTimeout(this.destroyGallery.bind(this), closeTimeout);\n }\n else {\n this.destroyGallery();\n }\n return closeTimeout;\n };\n return LightGallery;\n}());\nexports.LightGallery = LightGallery;\n//# sourceMappingURL=lightgallery.js.map","var map = {\n\t\"./autoplay/lg-autoplay.min.js\": [\n\t\t842,\n\t\t5459\n\t],\n\t\"./comment/lg-comment.min.js\": [\n\t\t8478,\n\t\t6458\n\t],\n\t\"./fullscreen/lg-fullscreen.min.js\": [\n\t\t6621,\n\t\t2065\n\t],\n\t\"./hash/lg-hash.min.js\": [\n\t\t2154,\n\t\t9256\n\t],\n\t\"./mediumZoom/lg-medium-zoom.min.js\": [\n\t\t4725,\n\t\t8279\n\t],\n\t\"./pager/lg-pager.min.js\": [\n\t\t8490,\n\t\t5470\n\t],\n\t\"./relativeCaption/lg-relative-caption.min.js\": [\n\t\t1092,\n\t\t2661\n\t],\n\t\"./rotate/lg-rotate.min.js\": [\n\t\t7506,\n\t\t8268\n\t],\n\t\"./share/lg-share.min.js\": [\n\t\t9082,\n\t\t7435\n\t],\n\t\"./thumbnail/lg-thumbnail.min.js\": [\n\t\t2896,\n\t\t3042\n\t],\n\t\"./video/lg-video.min.js\": [\n\t\t8906,\n\t\t9438\n\t],\n\t\"./vimeoThumbnail/lg-vimeo-thumbnail.min.js\": [\n\t\t6861,\n\t\t8599\n\t],\n\t\"./zoom/lg-zoom.min.js\": [\n\t\t7002,\n\t\t2236\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__.t(id, 7 | 16);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 4141;\nmodule.exports = webpackAsyncContext;"],"names":["SPLIT_LOWER_UPPER_RE","SPLIT_UPPER_UPPER_RE","SPLIT_SEPARATE_NUMBER_RE","DEFAULT_STRIP_REGEXP","SPLIT_REPLACE_VALUE","DEFAULT_PREFIX_SUFFIX_CHARACTERS","split","value","result","trim","replace","start","end","length","charAt","slice","splitSeparateNumbers","words","i","word","match","exec","offset","index","splice","noCase","input","options","prefix","suffix","splitPrefixSuffix","map","lowerFactory","locale","join","delimiter","toLowerCase","toLocaleLowerCase","splitFn","separateNumbers","prefixCharacters","suffixCharacters","prefixIndex","suffixIndex","char","includes","solvePluginName","pluginName","fileName","handleResult","status","default","console","error","reason","async","initLightGallery","plugins","opts","_iro","lightGallery","document","querySelector","Promise","allSettled","name","lightgallery_1","exports","el","LightGallery","Object","defineProperty","lGEvents","afterAppendSlide","init","hasVideo","containerResize","updateSlides","afterAppendSubHtml","beforeOpen","afterOpen","slideItemLoad","beforeSlide","afterSlide","posterClick","dragStart","dragMove","dragEnd","beforeNextSlide","beforePrevSlide","beforeClose","afterClose","rotateLeft","rotateRight","flipHorizontal","flipVertical","autoplay","autoplayStart","autoplayStop","lightGalleryCoreSettings","mode","easing","speed","licenseKey","height","width","addClass","startClass","backdropDuration","container","startAnimationDuration","zoomFromOrigin","hideBarsDelay","showBarsAfter","slideDelay","supportLegacyBrowser","allowMediaOverlap","videoMaxSize","loadYouTubePoster","defaultCaptionHeight","ariaLabelledby","ariaDescribedby","resetScrollPosition","hideScrollbar","closable","swipeToClose","closeOnTap","showCloseIcon","showMaximizeIcon","loop","escKey","keyPress","trapFocus","controls","slideEndAnimation","hideControlOnEnd","mousewheel","getCaptionFromTitleOrAlt","appendSubHtmlTo","subHtmlSelectorRelative","preload","numberOfSlideItemsInDom","selector","selectWithin","nextHtml","prevHtml","iframeWidth","iframeHeight","iframeMaxWidth","iframeMaxHeight","download","counter","appendCounterTo","swipeThreshold","enableSwipe","enableDrag","dynamic","dynamicEl","extraProps","exThumbImage","isMobile","undefined","mobileSettings","strings","closeGallery","toggleMaximize","previousSlide","nextSlide","playVideo","mediaLoadingFailed","__spreadArrays","this","s","il","arguments","r","Array","k","a","j","jl","convertToData","lgQuery_1","defaultDynamicOptions","attr","g","toUpperCase","utils","getSize","spacing","defaultLgSize","lgSize","$LG","isResponsiveSizes","wWidth","window","innerWidth","size_1","parseInt","size","cWidth","cHeight","maxWidth","Math","min","maxHeight","ratio","getTransform","top","bottom","imageSize","LGel","find","first","get","containerRect","getBoundingClientRect","wHeight","elWidth","elHeight","elStyle","style","x","left","parseFloat","paddingLeft","borderLeft","scrollLeft","y","paddingTop","borderTop","scrollTop","getIframeMarkup","src","iframeTitle","getImgMarkup","altAttr","srcset","sizes","sources","imgMarkup","sourceTag","JSON","parse","source","attrs","keys","forEach","key","getResponsiveSrc","srcItms","rsWidth","rsSrc","_src","push","isImageLoaded","img","complete","naturalWidth","getVideoPosterMarkup","_poster","dummyImg","videoContStyle","playVideoString","_isVideo","youtube","vimeo","getFocusableElements","elements","querySelectorAll","filter","call","element","getComputedStyle","display","visibility","getDynamicOptions","items","dynamicElements","availableDynamicOptions","item","attributes","specified","dynamicAttr","label","indexOf","currentItem","alt","title","thumb","subHtml","test","navigator","userAgent","isVideo","isHTML5VIdeo","html5","wistia","lgQuery","cssVenderPrefixes","_getSelector","firstElement","_getFirstEl","generateUUID","c","random","toString","prototype","context","substring","_each","func","_setCssVendorPrefix","cssProperty","property","group1","isEventMatched","event","eventName","eventNamespace","e","every","getAttribute","setAttribute","eq","parent","parentElement","removeAttr","removeAttribute","wrap","className","wrapper","createElement","parentNode","insertBefore","removeChild","appendChild","classNames","classList","add","removeClass","remove","hasClass","contains","hasAttribute","attribute","toggleClass","css","_this","on","events","listener","isArray","eventListeners","addEventListener","once","off","removeEventListener","trigger","detail","customEvent","CustomEvent","dispatchEvent","load","url","fetch","then","res","text","html","innerHTML","append","insertAdjacentHTML","prepend","empty","body","documentElement","pageYOffset","pageXOffset","rect","bodyMarginLeft","marginLeft","currentStyle","clientWidth","paddingRight","clientHeight","paddingBottom","params","bubbles","cancelable","evt","createEvent","initCustomEvent","Element","matches","msMatchesSelector","webkitMatchesSelector","__assign","assign","t","n","p","hasOwnProperty","apply","lg_events_1","lg_settings_1","lg_utils_1","lgId","lgOpened","lGalleryOn","lgBusy","currentItemsInDom","prevScrollTop","bodyPaddingRight","isDummyImageRemoved","dragOrSwipeEnabled","mediaContainerPosition","generateSettings","buildModules","settings","galleryItems","getItems","normalizeSettings","validateLicense","addSlideVideoInfo","buildStructure","instance","setTimeout","triggerPosterClick","arrow","openGalleryOnItemClick","_loop_1","this_1","$element","uuid","preventDefault","currentItemIndex","openGallery","plugin","warn","getSlideItem","getSlideItemId","getIdName","id","getElementById","manageSingleSlideClassName","outer","$container","subHtmlCont","addClasses","containerClassName","closeIcon","maximizeIcon","template","$lgComponents","$backdrop","$inner","$content","$toolbar","outerClassNames","refreshOnResize","hideBars","manageCloseGallery","initModules","__slideVideoInfo","getMediaContainerPosition","_a","top_1","currentImageSize","resizeVideoSlide","imgStyle","getDummyImgStyles","lgVideoStyle","getVideoContStyle","currentSrc","updateControls","_index","some","galleryItem","itemIndex","organizeSlideItems","loadContent","updateCurrentCounter","children","shouldHideScrollbar","bodyRect","scrollbarWidth","resetScrollBar","itemsToBeInsertedToDom","getItemsToBeInsertedToDom","addHtml","transform","setMediaContainerPosition","timeout","currentSlide_1","slide","captionHeight","thumbContainer","clearTimeout","hideBarTimeout","initPictureFill","$img","picturefill","counterHtml","subHtmlUrl","fL","currentSlide","getDummyImageContent","$currentSlide","$currentItem","_dummyImgSrc","dummyImgContent","setImgMarkup","currentGalleryItem","isFirstSlideWithZoomAnimation","onSlideObjectLoad","$slide","isHTML5VideoWithoutPoster","onLoad","onError","mediaObject","onLgObjectLoad","delay","isFirstSlide","triggerSlideItemLoad","_speed","getSlideType","poster","video","rec","_html5Video","responsive","srcDyItms","videoInfo","iframe","top_2","videoSize","markup","html5Video","hasPoster","loadContentOnFirstSlideLoad","prevIndex","numberOfItems","possibleNumberOfItems","max","prevIndexItem","_element","idx","numberOfExistingItems","getPreviousSlideIndex","currentItemId","setDownloadValue","downloadUrl","$download","makeSlideAnimation","direction","currentSlideItem","previousSlideItem","fromTouch","fromThumb","numberOfGalleryItems","previousSlideItem_1","top_3","arrowDisable","touchPrev","touchNext","updateCounterTotal","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","touches","touchAction","manageSwipeClass","isDraging","_touchNext","_touchPrev","_loop","keyCode","$prev","$next","$el","xValue","yValue","scaleX","scaleY","lastCall","deltaY","now","Date","getTime","isSlideElement","playButton","invalidateItems","focus","preventScroll","focusableEls","firstFocusableEl","lastFocusableEl","shiftKey","activeElement","mousedown","force","top_4","_b","destroyModules","removeTimeout","blur","module","err","destroy","refresh","destroyGallery","closeTimeout","bind","webpackAsyncContext","req","__webpack_require__","o","resolve","Error","code","ids"],"sourceRoot":""}