{"mappings":"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","sources":["node_modules/lightgallery.js/lib/js/lg-utils.js","Assets/Scripts/components/addClassOnScroll/index.ts","Assets/Scripts/utils/debounce.ts","Assets/Scripts/components/carousel/index.ts","node_modules/lightgallery.js/lib/js/lightgallery.js","node_modules/lg-video.js/dist/lg-video.js","Assets/Scripts/components/gallery/index.ts","Assets/Scripts/components/inViewport/index.ts","Assets/Scripts/components/numericAnimation/index.ts","node_modules/rellax/rellax.js","Assets/Scripts/components/parallax/index.ts","Assets/Scripts/components/scrollDown/index.ts","Assets/Scripts/components/toggleNav/index.ts","Assets/Scripts/utils/keyCode.ts","Assets/Scripts/index.ts","Assets/Scripts/components/nav/index.ts"],"sourcesContent":["(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports);\n global.lgUtils = mod.exports;\n }\n})(this, function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var utils = {\n getAttribute: function getAttribute(el, label) {\n return el[label];\n },\n\n setAttribute: function setAttribute(el, label, value) {\n el[label] = value;\n },\n wrap: function wrap(el, className) {\n if (!el) {\n return;\n }\n\n var wrapper = document.createElement('div');\n wrapper.className = className;\n el.parentNode.insertBefore(wrapper, el);\n el.parentNode.removeChild(el);\n wrapper.appendChild(el);\n },\n\n addClass: function addClass(el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n el.classList.add(className);\n } else {\n el.className += ' ' + className;\n }\n },\n\n removeClass: function removeClass(el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n },\n\n hasClass: function hasClass(el, className) {\n if (el.classList) {\n return el.classList.contains(className);\n } else {\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);\n }\n },\n\n // ex Transform\n // ex TransitionTimingFunction\n setVendor: function setVendor(el, property, value) {\n if (!el) {\n return;\n }\n\n el.style[property.charAt(0).toLowerCase() + property.slice(1)] = value;\n el.style['webkit' + property] = value;\n el.style['moz' + property] = value;\n el.style['ms' + property] = value;\n el.style['o' + property] = value;\n },\n\n trigger: function trigger(el, event) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!el) {\n return;\n }\n\n var customEvent = new CustomEvent(event, {\n detail: detail\n });\n el.dispatchEvent(customEvent);\n },\n\n Listener: {\n uid: 0\n },\n on: function on(el, events, fn) {\n var _this = this;\n\n if (!el) {\n return;\n }\n\n events.split(' ').forEach(function (event) {\n var _id = _this.getAttribute(el, 'lg-event-uid') || '';\n utils.Listener.uid++;\n _id += '&' + utils.Listener.uid;\n _this.setAttribute(el, 'lg-event-uid', _id);\n utils.Listener[event + utils.Listener.uid] = fn;\n el.addEventListener(event.split('.')[0], fn, false);\n });\n },\n\n off: function off(el, event) {\n if (!el) {\n return;\n }\n\n var _id = this.getAttribute(el, 'lg-event-uid');\n if (_id) {\n _id = _id.split('&');\n for (var i = 0; i < _id.length; i++) {\n if (_id[i]) {\n var _event = event + _id[i];\n if (_event.substring(0, 1) === '.') {\n for (var key in utils.Listener) {\n if (utils.Listener.hasOwnProperty(key)) {\n if (key.split('.').indexOf(_event.split('.')[1]) > -1) {\n el.removeEventListener(key.split('.')[0], utils.Listener[key]);\n this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[key];\n }\n }\n }\n } else {\n el.removeEventListener(_event.split('.')[0], utils.Listener[_event]);\n this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[_event];\n }\n }\n }\n }\n },\n\n param: function param(obj) {\n return Object.keys(obj).map(function (k) {\n return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]);\n }).join('&');\n }\n };\n\n exports.default = utils;\n});","/**\r\n * Applies a class when page height has been scrolled\r\n */\r\nconst SELECTOR = \".js-add-class-on-scroll\";\r\nconst defaultCSS = \"page-scrolled\";\r\nconst pageDistance = 0.5;\r\nlet pageHeight: number;\r\nlet $scrollElements: NodeListOf;\r\n\r\nconst scrollBehaviour = () => {\r\n $scrollElements.forEach(($el: Element) => {\r\n const $htmlEl = $el as HTMLElement;\r\n let cssClass = defaultCSS;\r\n\r\n if ($htmlEl.dataset.class) {\r\n cssClass = $htmlEl.dataset.class;\r\n }\r\n\r\n if (window.scrollY > pageHeight * pageDistance) {\r\n $el.classList.add(cssClass);\r\n return;\r\n }\r\n\r\n $el.classList.remove(cssClass);\r\n });\r\n};\r\n\r\nconst addClassOnScroll = () => {\r\n $scrollElements = document.querySelectorAll(SELECTOR);\r\n if (!$scrollElements.length) {\r\n return;\r\n }\r\n\r\n pageHeight = window.innerHeight;\r\n\r\n scrollBehaviour();\r\n\r\n document.addEventListener(\"scroll\", scrollBehaviour);\r\n\r\n window.addEventListener(\"resize\", () => {\r\n pageHeight = window.innerHeight;\r\n });\r\n};\r\n\r\nexport default addClassOnScroll;\r\n","const defaultDelay = 250;\r\n\r\nconst debounce = (fn: () => void, ms: number = defaultDelay) => {\r\n let timeoutId: ReturnType;\r\n\r\n return function (this: any, ...args: []) {\r\n clearTimeout(timeoutId);\r\n timeoutId = setTimeout(() => fn.apply(this, args), ms);\r\n };\r\n};\r\n\r\nexport default debounce;\r\n","/**\r\n * Handles showing multiple featured items within a carousel.\r\n */\r\n\r\nimport debounce from '../../utils/debounce';\r\n\r\nconst CSS = {\r\n active: 'is-active',\r\n};\r\n\r\nconst defaults = {\r\n duration: 5000,\r\n};\r\n\r\nconst instance = ($el: Element) => {\r\n const dom = {\r\n $items: $el.querySelectorAll('.js-carousel-item'),\r\n $track: $el.querySelector('.js-carousel-track') as HTMLElement,\r\n $nextBtn: $el.querySelector('.js-next-btn'),\r\n $prevBtn: $el.querySelector('.js-prev-btn'),\r\n $changeBtns: $el.querySelectorAll('.js-change-to-btn'),\r\n };\r\n\r\n const itemCount: number = dom.$items.length;\r\n\r\n const configurdDuration: string | null = $el.getAttribute('data-duration');\r\n let duration: number = defaults.duration;\r\n\r\n if (configurdDuration !== null) {\r\n duration = parseInt(configurdDuration, 10);\r\n }\r\n\r\n let activeIndex: number = 0;\r\n let timer: number;\r\n\r\n const changeTo = (event: Event) => {\r\n const index: string | null = (\r\n event.currentTarget as HTMLButtonElement\r\n ).getAttribute('data-index');\r\n\r\n if (index !== null) {\r\n setActive(parseInt(index, 10));\r\n }\r\n };\r\n\r\n const enableTimer = () => {\r\n if (duration === 0 || dom.$items.length < 2) {\r\n return;\r\n }\r\n\r\n timer = window.setTimeout(() => {\r\n if (activeIndex + 1 === itemCount) {\r\n setActive(0);\r\n return;\r\n }\r\n\r\n setActive(activeIndex + 1);\r\n }, duration);\r\n };\r\n\r\n const next = () => {\r\n setActive(activeIndex + 1);\r\n };\r\n\r\n const previous = () => {\r\n setActive(activeIndex - 1);\r\n };\r\n\r\n const setActive = (index: number) => {\r\n clearTimeout(timer);\r\n const itemWidth = dom.$items[0].clientWidth;\r\n\r\n if (index >= itemCount) {\r\n index = 0;\r\n }\r\n\r\n if (index === -1) {\r\n index = itemCount - 1;\r\n }\r\n\r\n const offset = itemWidth * index * -1;\r\n\r\n dom.$items[activeIndex].classList.remove(CSS.active);\r\n dom.$track.style.transform = `translateX(${offset}px)`;\r\n dom.$items[index].classList.add(CSS.active);\r\n\r\n let parentElement: HTMLElement | null =\r\n dom.$changeBtns[activeIndex].parentElement;\r\n\r\n if (parentElement !== null) {\r\n parentElement.classList.remove(CSS.active);\r\n }\r\n\r\n parentElement = dom.$changeBtns[index].parentElement;\r\n\r\n if (parentElement !== null) {\r\n parentElement.classList.add(CSS.active);\r\n }\r\n\r\n activeIndex = index;\r\n\r\n enableTimer();\r\n };\r\n\r\n if (dom.$nextBtn) {\r\n dom.$nextBtn.addEventListener('click', next);\r\n }\r\n\r\n if (dom.$prevBtn) {\r\n dom.$prevBtn.addEventListener('click', previous);\r\n }\r\n\r\n for (const $btn of dom.$changeBtns) {\r\n $btn.addEventListener('click', changeTo);\r\n }\r\n\r\n window.addEventListener(\r\n 'resize',\r\n debounce(() => {\r\n // Reset on resize\r\n // (as item width will otherwise cause layout issues)\r\n dom.$track.style.transform = 'translateX(0)';\r\n })\r\n );\r\n\r\n enableTimer();\r\n};\r\n\r\nconst carousel = () => {\r\n const SELECTOR = '.js-carousel';\r\n\r\n document.querySelectorAll(SELECTOR).forEach(($el) => {\r\n instance($el);\r\n });\r\n};\r\n\r\nexport default carousel;\r\n","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['./lg-utils'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(require('./lg-utils'));\n } else {\n var mod = {\n exports: {}\n };\n factory(global.lgUtils);\n global.lightgallery = mod.exports;\n }\n})(this, function (_lgUtils) {\n 'use strict';\n\n var _lgUtils2 = _interopRequireDefault(_lgUtils);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n /** Polyfill the CustomEvent() constructor functionality in Internet Explorer 9 and higher */\n (function () {\n\n if (typeof window.CustomEvent === 'function') {\n return false;\n }\n\n function CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n\n CustomEvent.prototype = window.Event.prototype;\n\n window.CustomEvent = CustomEvent;\n })();\n\n window.utils = _lgUtils2.default;\n window.lgData = {\n uid: 0\n };\n\n window.lgModules = {};\n var defaults = {\n\n mode: 'lg-slide',\n\n // Ex : 'ease'\n cssEasing: 'ease',\n\n //'for jquery animation'\n easing: 'linear',\n speed: 600,\n height: '100%',\n width: '100%',\n addClass: '',\n startClass: 'lg-start-zoom',\n backdropDuration: 150,\n\n // Set 0, if u don't want to hide the controls \n hideBarsDelay: 6000,\n\n useLeft: false,\n\n // aria-labelledby attribute fot gallery\n ariaLabelledby: '',\n\n //aria-describedby attribute for gallery\n ariaDescribedby: '',\n\n closable: true,\n loop: true,\n escKey: true,\n keyPress: true,\n controls: true,\n slideEndAnimatoin: true,\n hideControlOnEnd: false,\n mousewheel: false,\n\n getCaptionFromTitleOrAlt: true,\n\n // .lg-item || '.lg-sub-html'\n appendSubHtmlTo: '.lg-sub-html',\n\n subHtmlSelectorRelative: false,\n\n /**\n * @desc number of preload slides\n * will exicute only after the current slide is fully loaded.\n *\n * @ex you clicked on 4th image and if preload = 1 then 3rd slide and 5th\n * slide will be loaded in the background after the 4th slide is fully loaded..\n * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ...\n *\n */\n preload: 1,\n showAfterLoad: true,\n selector: '',\n selectWithin: '',\n nextHtml: '',\n prevHtml: '',\n\n // 0, 1\n index: false,\n\n iframeMaxWidth: '100%',\n\n download: true,\n counter: true,\n appendCounterTo: '.lg-toolbar',\n\n swipeThreshold: 50,\n enableSwipe: true,\n enableDrag: true,\n\n dynamic: false,\n dynamicEl: [],\n galleryId: 1,\n supportLegacyBrowser: true\n };\n\n function Plugin(element, options) {\n\n // Current lightGallery element\n this.el = element;\n\n // lightGallery settings\n this.s = _extends({}, defaults, options);\n\n // When using dynamic mode, ensure dynamicEl is an array\n if (this.s.dynamic && this.s.dynamicEl !== 'undefined' && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) {\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\n }\n\n // lightGallery modules\n this.modules = {};\n\n // false when lightgallery complete first slide;\n this.lGalleryOn = false;\n\n this.lgBusy = false;\n\n // Timeout function for hiding controls;\n this.hideBartimeout = false;\n\n // To determine browser supports for touch events;\n this.isTouch = 'ontouchstart' in document.documentElement;\n\n // Disable hideControlOnEnd if sildeEndAnimation is true\n if (this.s.slideEndAnimatoin) {\n this.s.hideControlOnEnd = false;\n }\n\n this.items = [];\n\n // Gallery items\n if (this.s.dynamic) {\n this.items = this.s.dynamicEl;\n } else {\n if (this.s.selector === 'this') {\n this.items.push(this.el);\n } else if (this.s.selector !== '') {\n if (this.s.selectWithin) {\n this.items = document.querySelector(this.s.selectWithin).querySelectorAll(this.s.selector);\n } else {\n this.items = this.el.querySelectorAll(this.s.selector);\n }\n } else {\n this.items = this.el.children;\n }\n }\n\n // .lg-item\n\n this.___slide = '';\n\n // .lg-outer\n this.outer = '';\n\n this.init();\n\n return this;\n }\n\n Plugin.prototype.init = function () {\n\n var _this = this;\n\n // s.preload should not be more than $item.length\n if (_this.s.preload > _this.items.length) {\n _this.s.preload = _this.items.length;\n }\n\n // if dynamic option is enabled execute immediately\n var _hash = window.location.hash;\n if (_hash.indexOf('lg=' + this.s.galleryId) > 0) {\n\n _this.index = parseInt(_hash.split('&slide=')[1], 10);\n\n _lgUtils2.default.addClass(document.body, 'lg-from-hash');\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n }\n\n if (_this.s.dynamic) {\n\n _lgUtils2.default.trigger(this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || 0;\n\n // prevent accidental double execution\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n } else {\n\n for (var i = 0; i < _this.items.length; i++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n\n // Using different namespace for click because click event should not unbind if selector is same object('this')\n _lgUtils2.default.on(_this.items[index], 'click.lgcustom', function (e) {\n\n e.preventDefault();\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || index;\n\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _this.build(_this.index);\n _lgUtils2.default.addClass(document.body, 'lg-on');\n }\n });\n })(i);\n }\n }\n };\n\n Plugin.prototype.build = function (index) {\n\n var _this = this;\n\n _this.structure();\n\n for (var key in window.lgModules) {\n _this.modules[key] = new window.lgModules[key](_this.el);\n }\n\n // initiate slide function\n _this.slide(index, false, false);\n\n if (_this.s.keyPress) {\n _this.keyPress();\n }\n\n if (_this.items.length > 1) {\n\n _this.arrow();\n\n setTimeout(function () {\n _this.enableDrag();\n _this.enableSwipe();\n }, 50);\n\n if (_this.s.mousewheel) {\n _this.mousewheel();\n }\n }\n\n _this.counter();\n\n _this.closeGallery();\n\n _lgUtils2.default.trigger(_this.el, 'onAfterOpen');\n\n // Hide controllers if mouse doesn't move for some period\n if (_this.s.hideBarsDelay > 0) {\n\n // Hide controls if user doesn't use mouse or touch after opening gallery\n var initialHideBarTimeout = setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-items');\n }, _this.s.hideBarsDelay);\n _lgUtils2.default.on(_this.outer, 'mousemove.lg click.lg touchstart.lg', function () {\n\n // Cancel initalHideBarTimout if user uses mouse or touch events\n // Before it fires\n clearTimeout(initialHideBarTimeout);\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-items');\n\n clearTimeout(_this.hideBartimeout);\n\n // Timeout will be cleared on each slide movement also\n _this.hideBartimeout = setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-items');\n }, _this.s.hideBarsDelay);\n });\n }\n };\n\n Plugin.prototype.structure = function () {\n var list = '';\n var controls = '';\n var i = 0;\n var subHtmlCont = '';\n var template;\n var _this = this;\n\n document.body.insertAdjacentHTML('beforeend', '
');\n _lgUtils2.default.setVendor(document.querySelector('.lg-backdrop'), 'TransitionDuration', this.s.backdropDuration + 'ms');\n\n // Create gallery items\n for (i = 0; i < this.items.length; i++) {\n list += '
';\n }\n\n // Create controlls\n if (this.s.controls && this.items.length > 1) {\n controls = '
' + '' + '' + '
';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n subHtmlCont = '
';\n }\n\n var ariaLabelledby = this.s.ariaLabelledby ? 'aria-labelledby=\"' + this.s.ariaLabelledby + '\"' : '';\n var ariaDescribedby = this.s.ariaDescribedby ? 'aria-describedby=\"' + this.s.ariaDescribedby + '\"' : '';\n\n template = '
' + '
' + '
' + list + '
' + '
' + '' + '
' + controls + subHtmlCont + '
' + '
';\n\n document.body.insertAdjacentHTML('beforeend', template);\n this.outer = document.querySelector('.lg-outer');\n this.outer.focus();\n this.___slide = this.outer.querySelectorAll('.lg-item');\n\n if (this.s.useLeft) {\n _lgUtils2.default.addClass(this.outer, 'lg-use-left');\n\n // Set mode lg-slide if use left is true;\n this.s.mode = 'lg-slide';\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-use-css3');\n }\n\n // For fixed height gallery\n _this.setTop();\n _lgUtils2.default.on(window, 'resize.lg orientationchange.lg', function () {\n setTimeout(function () {\n _this.setTop();\n }, 100);\n });\n\n // add class lg-current to remove initial transition\n _lgUtils2.default.addClass(this.___slide[this.index], 'lg-current');\n\n // add Class for css support and transition mode\n if (this.doCss()) {\n _lgUtils2.default.addClass(this.outer, 'lg-css3');\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-css');\n\n // Set speed 0 because no animation will happen if browser doesn't support css3\n this.s.speed = 0;\n }\n\n _lgUtils2.default.addClass(this.outer, this.s.mode);\n\n if (this.s.enableDrag && this.items.length > 1) {\n _lgUtils2.default.addClass(this.outer, 'lg-grab');\n }\n\n if (this.s.showAfterLoad) {\n _lgUtils2.default.addClass(this.outer, 'lg-show-after-load');\n }\n\n if (this.doCss()) {\n var inner = this.outer.querySelector('.lg-inner');\n _lgUtils2.default.setVendor(inner, 'TransitionTimingFunction', this.s.cssEasing);\n _lgUtils2.default.setVendor(inner, 'TransitionDuration', this.s.speed + 'ms');\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(document.querySelector('.lg-backdrop'), 'in');\n });\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-visible');\n }, this.s.backdropDuration);\n\n if (this.s.download) {\n this.outer.querySelector('.lg-toolbar').insertAdjacentHTML('beforeend', '');\n }\n\n // Store the current scroll top value to scroll back after closing the gallery..\n this.prevScrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n };\n\n // For fixed height gallery\n Plugin.prototype.setTop = function () {\n if (this.s.height !== '100%') {\n var wH = window.innerHeight;\n var top = (wH - parseInt(this.s.height, 10)) / 2;\n var lGallery = this.outer.querySelector('.lg');\n if (wH >= parseInt(this.s.height, 10)) {\n lGallery.style.top = top + 'px';\n } else {\n lGallery.style.top = '0px';\n }\n }\n };\n\n // Find css3 support\n Plugin.prototype.doCss = function () {\n // check for css animation support\n var support = function support() {\n var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];\n var root = document.documentElement;\n var i = 0;\n for (i = 0; i < transition.length; i++) {\n if (transition[i] in root.style) {\n return true;\n }\n }\n };\n\n if (support()) {\n return true;\n }\n\n return false;\n };\n\n /**\n * @desc Check the given src is video\n * @param {String} src\n * @return {Object} video type\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\n */\n Plugin.prototype.isVideo = function (src, index) {\n\n var html;\n if (this.s.dynamic) {\n html = this.s.dynamicEl[index].html;\n } else {\n html = this.items[index].getAttribute('data-html');\n }\n\n if (!src && html) {\n return {\n html5: true\n };\n }\n\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)/i);\n var vimeo = src.match(/\\/\\/(?:www\\.)?vimeo.com\\/([0-9a-z\\-_]+)/i);\n var dailymotion = src.match(/\\/\\/(?:www\\.)?dai.ly\\/([0-9a-z\\-_]+)/i);\n var vk = src.match(/\\/\\/(?:www\\.)?(?:vk\\.com|vkontakte\\.ru)\\/(?:video_ext\\.php\\?)(.*)/i);\n\n if (youtube) {\n return {\n youtube: youtube\n };\n } else if (vimeo) {\n return {\n vimeo: vimeo\n };\n } else if (dailymotion) {\n return {\n dailymotion: dailymotion\n };\n } else if (vk) {\n return {\n vk: vk\n };\n }\n };\n\n /**\n * @desc Create image counter\n * Ex: 1/10\n */\n Plugin.prototype.counter = function () {\n if (this.s.counter) {\n this.outer.querySelector(this.s.appendCounterTo).insertAdjacentHTML('beforeend', '
' + (parseInt(this.index, 10) + 1) + ' / ' + this.items.length + '
');\n }\n };\n\n /**\n * @desc add sub-html into the slide\n * @param {Number} index - index of the slide\n */\n Plugin.prototype.addHtml = function (index) {\n var subHtml = null;\n var currentEle;\n if (this.s.dynamic) {\n subHtml = this.s.dynamicEl[index].subHtml;\n } else {\n currentEle = this.items[index];\n subHtml = currentEle.getAttribute('data-sub-html');\n if (this.s.getCaptionFromTitleOrAlt && !subHtml) {\n subHtml = currentEle.getAttribute('title');\n if (subHtml && currentEle.querySelector('img')) {\n subHtml = currentEle.querySelector('img').getAttribute('alt');\n }\n }\n }\n\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n\n // get first letter of subhtml\n // if first letter starts with . or # get the html form the jQuery object\n var fL = subHtml.substring(0, 1);\n if (fL === '.' || fL === '#') {\n if (this.s.subHtmlSelectorRelative && !this.s.dynamic) {\n subHtml = currentEle.querySelector(subHtml).innerHTML;\n } else {\n subHtml = document.querySelector(subHtml).innerHTML;\n }\n }\n } else {\n subHtml = '';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n this.outer.querySelector(this.s.appendSubHtmlTo).innerHTML = subHtml;\n } else {\n this.___slide[index].insertAdjacentHTML('beforeend', subHtml);\n }\n\n // Add lg-empty-html class if title doesn't exist\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n if (subHtml === '') {\n _lgUtils2.default.addClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n } else {\n _lgUtils2.default.removeClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n }\n }\n\n _lgUtils2.default.trigger(this.el, 'onAfterAppendSubHtml', {\n index: index\n });\n };\n\n /**\n * @desc Preload slides\n * @param {Number} index - index of the slide\n */\n Plugin.prototype.preload = function (index) {\n var i = 1;\n var j = 1;\n for (i = 1; i <= this.s.preload; i++) {\n if (i >= this.items.length - index) {\n break;\n }\n\n this.loadContent(index + i, false, 0);\n }\n\n for (j = 1; j <= this.s.preload; j++) {\n if (index - j < 0) {\n break;\n }\n\n this.loadContent(index - j, false, 0);\n }\n };\n\n /**\n * @desc Load slide content into slide.\n * @param {Number} index - index of the slide.\n * @param {Boolean} rec - if true call loadcontent() function again.\n * @param {Boolean} delay - delay for adding complete class. it is 0 except first time.\n */\n Plugin.prototype.loadContent = function (index, rec, delay) {\n\n var _this = this;\n var _hasPoster = false;\n var _img;\n var _src;\n var _poster;\n var _srcset;\n var _sizes;\n var _html;\n var _alt;\n var getResponsiveSrc = function getResponsiveSrc(srcItms) {\n var rsWidth = [];\n var rsSrc = [];\n for (var i = 0; i < srcItms.length; i++) {\n var __src = srcItms[i].split(' ');\n\n // Manage empty space\n if (__src[0] === '') {\n __src.splice(0, 1);\n }\n\n rsSrc.push(__src[0]);\n rsWidth.push(__src[1]);\n }\n\n var wWidth = window.innerWidth;\n for (var j = 0; j < rsWidth.length; j++) {\n if (parseInt(rsWidth[j], 10) > wWidth) {\n _src = rsSrc[j];\n break;\n }\n }\n };\n\n if (_this.s.dynamic) {\n\n if (_this.s.dynamicEl[index].poster) {\n _hasPoster = true;\n _poster = _this.s.dynamicEl[index].poster;\n }\n\n _html = _this.s.dynamicEl[index].html;\n _src = _this.s.dynamicEl[index].src;\n _alt = _this.s.dynamicEl[index].alt;\n\n if (_this.s.dynamicEl[index].responsive) {\n var srcDyItms = _this.s.dynamicEl[index].responsive.split(',');\n getResponsiveSrc(srcDyItms);\n }\n\n _srcset = _this.s.dynamicEl[index].srcset;\n _sizes = _this.s.dynamicEl[index].sizes;\n } else {\n\n if (_this.items[index].getAttribute('data-poster')) {\n _hasPoster = true;\n _poster = _this.items[index].getAttribute('data-poster');\n }\n\n _html = _this.items[index].getAttribute('data-html');\n _src = _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src');\n _alt = _this.items[index].getAttribute('title');\n\n if (_this.items[index].querySelector('img')) {\n _alt = _alt || _this.items[index].querySelector('img').getAttribute('alt');\n }\n\n if (_this.items[index].getAttribute('data-responsive')) {\n var srcItms = _this.items[index].getAttribute('data-responsive').split(',');\n getResponsiveSrc(srcItms);\n }\n\n _srcset = _this.items[index].getAttribute('data-srcset');\n _sizes = _this.items[index].getAttribute('data-sizes');\n }\n\n //if (_src || _srcset || _sizes || _poster) {\n\n var iframe = false;\n if (_this.s.dynamic) {\n if (_this.s.dynamicEl[index].iframe) {\n iframe = true;\n }\n } else {\n if (_this.items[index].getAttribute('data-iframe') === 'true') {\n iframe = true;\n }\n }\n\n var _isVideo = _this.isVideo(_src, index);\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-loaded')) {\n if (iframe) {\n _this.___slide[index].insertAdjacentHTML('afterbegin', '
');\n } else if (_hasPoster) {\n var videoClass = '';\n if (_isVideo && _isVideo.youtube) {\n videoClass = 'lg-has-youtube';\n } else if (_isVideo && _isVideo.vimeo) {\n videoClass = 'lg-has-vimeo';\n } else {\n videoClass = 'lg-has-html5';\n }\n\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n } else if (_isVideo) {\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n _lgUtils2.default.trigger(_this.el, 'hasVideo', {\n index: index,\n src: _src,\n html: _html\n });\n } else {\n _alt = _alt ? 'alt=\"' + _alt + '\"' : '';\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n }\n\n _lgUtils2.default.trigger(_this.el, 'onAferAppendSlide', {\n index: index\n });\n\n _img = _this.___slide[index].querySelector('.lg-object');\n if (_sizes) {\n _img.setAttribute('sizes', _sizes);\n }\n\n if (_srcset) {\n _img.setAttribute('srcset', _srcset);\n\n if (this.s.supportLegacyBrowser) {\n try {\n picturefill({\n elements: [_img[0]]\n });\n } catch (e) {\n console.warn('If you want srcset to be supported for older browsers, ' + 'please include picturefil javascript library in your document.');\n }\n }\n }\n\n if (this.s.appendSubHtmlTo !== '.lg-sub-html') {\n _this.addHtml(index);\n }\n\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-loaded');\n }\n\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n\n // For first time add some delay for displaying the start animation.\n var _speed = 0;\n\n // Do not change the delay value because it is required for zoom plugin.\n // If gallery opened from direct url (hash) speed value should be 0\n if (delay && !_lgUtils2.default.hasClass(document.body, 'lg-from-hash')) {\n _speed = delay;\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n\n _lgUtils2.default.trigger(_this.el, 'onSlideItemLoad', {\n index: index,\n delay: delay || 0\n });\n }, _speed);\n });\n\n // @todo check load state for html5 videos\n if (_isVideo && _isVideo.html5 && !_hasPoster) {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n }\n\n if (rec === true) {\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-complete')) {\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n _this.preload(index);\n });\n } else {\n _this.preload(index);\n }\n }\n\n //}\n };\n\n /**\n * @desc slide function for lightgallery\n ** Slide() gets call on start\n ** ** Set lg.on true once slide() function gets called.\n ** Call loadContent() on slide() function inside setTimeout\n ** ** On first slide we do not want any animation like slide of fade\n ** ** So on first slide( if lg.on if false that is first slide) loadContent() should start loading immediately\n ** ** Else loadContent() should wait for the transition to complete.\n ** ** So set timeout s.speed + 50\n <=> ** loadContent() will load slide content in to the particular slide\n ** ** It has recursion (rec) parameter. if rec === true loadContent() will call preload() function.\n ** ** preload will execute only when the previous slide is fully loaded (images iframe)\n ** ** avoid simultaneous image load\n <=> ** Preload() will check for s.preload value and call loadContent() again accoring to preload value\n ** loadContent() <====> Preload();\n \n * @param {Number} index - index of the slide\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\n */\n Plugin.prototype.slide = function (index, fromTouch, fromThumb) {\n\n var _prevIndex = 0;\n for (var i = 0; i < this.___slide.length; i++) {\n if (_lgUtils2.default.hasClass(this.___slide[i], 'lg-current')) {\n _prevIndex = i;\n break;\n }\n }\n\n var _this = this;\n\n // Prevent if multiple call\n // Required for hsh plugin\n if (_this.lGalleryOn && _prevIndex === index) {\n return;\n }\n\n var _length = this.___slide.length;\n var _time = _this.lGalleryOn ? this.s.speed : 0;\n var _next = false;\n var _prev = false;\n\n if (!_this.lgBusy) {\n\n if (this.s.download) {\n var _src;\n if (_this.s.dynamic) {\n _src = _this.s.dynamicEl[index].downloadUrl !== false && (_this.s.dynamicEl[index].downloadUrl || _this.s.dynamicEl[index].src);\n } else {\n _src = _this.items[index].getAttribute('data-download-url') !== 'false' && (_this.items[index].getAttribute('data-download-url') || _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src'));\n }\n\n if (_src) {\n document.getElementById('lg-download').setAttribute('href', _src);\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-download');\n } else {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-download');\n }\n }\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n\n _this.lgBusy = true;\n\n clearTimeout(_this.hideBartimeout);\n\n // Add title if this.s.appendSubHtmlTo === lg-sub-html\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n\n // wait for slide animation to complete\n setTimeout(function () {\n _this.addHtml(index);\n }, _time);\n }\n\n this.arrowDisable(index);\n\n if (!fromTouch) {\n\n // remove all transitions\n _lgUtils2.default.addClass(_this.outer, 'lg-no-trans');\n\n for (var j = 0; j < this.___slide.length; j++) {\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-prev-slide');\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-next-slide');\n }\n\n if (index < _prevIndex) {\n _prev = true;\n if (index === 0 && _prevIndex === _length - 1 && !fromThumb) {\n _prev = false;\n _next = true;\n }\n } else if (index > _prevIndex) {\n _next = true;\n if (index === _length - 1 && _prevIndex === 0 && !fromThumb) {\n _prev = true;\n _next = false;\n }\n }\n\n if (_prev) {\n\n //prevslide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-prev-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-next-slide');\n } else if (_next) {\n\n // next slide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-next-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-prev-slide');\n }\n\n // give 50 ms for browser to add/remove class\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n\n //_this.$slide.eq(_prevIndex).removeClass('lg-current');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n\n // reset all transitions\n _lgUtils2.default.removeClass(_this.outer, 'lg-no-trans');\n }, 50);\n } else {\n\n var touchPrev = index - 1;\n var touchNext = index + 1;\n\n if (index === 0 && _prevIndex === _length - 1) {\n\n // next slide\n touchNext = 0;\n touchPrev = _length - 1;\n } else if (index === _length - 1 && _prevIndex === 0) {\n\n // prev slide\n touchNext = 0;\n touchPrev = _length - 1;\n }\n\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-prev-slide'), 'lg-prev-slide');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-next-slide'), 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[touchPrev], 'lg-prev-slide');\n _lgUtils2.default.addClass(_this.___slide[touchNext], 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n }\n\n if (_this.lGalleryOn) {\n setTimeout(function () {\n _this.loadContent(index, true, 0);\n }, this.s.speed + 50);\n\n setTimeout(function () {\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }, this.s.speed);\n } else {\n _this.loadContent(index, true, _this.s.backdropDuration);\n\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }\n\n _this.lGalleryOn = true;\n\n if (this.s.counter) {\n if (document.getElementById('lg-counter-current')) {\n document.getElementById('lg-counter-current').innerHTML = index + 1;\n }\n }\n }\n };\n\n /**\n * @desc Go to next slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n */\n Plugin.prototype.goToNextSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index + 1 < _this.___slide.length) {\n _this.index++;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = 0;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-right-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-right-end');\n }, 400);\n }\n }\n }\n };\n\n /**\n * @desc Go to previous slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n */\n Plugin.prototype.goToPrevSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index > 0) {\n _this.index--;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = _this.items.length - 1;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-left-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-left-end');\n }, 400);\n }\n }\n }\n };\n\n Plugin.prototype.keyPress = function () {\n var _this = this;\n if (this.items.length > 1) {\n _lgUtils2.default.on(window, 'keyup.lg', function (e) {\n if (_this.items.length > 1) {\n if (e.keyCode === 37) {\n e.preventDefault();\n _this.goToPrevSlide();\n }\n\n if (e.keyCode === 39) {\n e.preventDefault();\n _this.goToNextSlide();\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'keydown.lg', function (e) {\n if (_this.s.escKey === true && e.keyCode === 27) {\n e.preventDefault();\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-thumb-open')) {\n _this.destroy();\n } else {\n _lgUtils2.default.removeClass(_this.outer, 'lg-thumb-open');\n }\n }\n });\n };\n\n Plugin.prototype.arrow = function () {\n var _this = this;\n _lgUtils2.default.on(this.outer.querySelector('.lg-prev'), 'click.lg', function () {\n _this.goToPrevSlide();\n });\n\n _lgUtils2.default.on(this.outer.querySelector('.lg-next'), 'click.lg', function () {\n _this.goToNextSlide();\n });\n };\n\n Plugin.prototype.arrowDisable = function (index) {\n\n // Disable arrows if s.hideControlOnEnd is true\n if (!this.s.loop && this.s.hideControlOnEnd) {\n var next = this.outer.querySelector('.lg-next');\n var prev = this.outer.querySelector('.lg-prev');\n if (index + 1 < this.___slide.length) {\n next.removeAttribute('disabled');\n _lgUtils2.default.removeClass(next, 'disabled');\n } else {\n next.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(next, 'disabled');\n }\n\n if (index > 0) {\n prev.removeAttribute('disabled');\n _lgUtils2.default.removeClass(prev, 'disabled');\n } else {\n prev.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(prev, 'disabled');\n }\n }\n };\n\n Plugin.prototype.setTranslate = function (el, xValue, yValue) {\n // jQuery supports Automatic CSS prefixing since jQuery 1.8.0\n if (this.s.useLeft) {\n el.style.left = xValue;\n } else {\n _lgUtils2.default.setVendor(el, 'Transform', 'translate3d(' + xValue + 'px, ' + yValue + 'px, 0px)');\n }\n };\n\n Plugin.prototype.touchMove = function (startCoords, endCoords) {\n\n var distance = endCoords - startCoords;\n\n if (Math.abs(distance) > 15) {\n // reset opacity and transition duration\n _lgUtils2.default.addClass(this.outer, 'lg-dragging');\n\n // move current slide\n this.setTranslate(this.___slide[this.index], distance, 0);\n\n // move next and prev slide with current slide\n this.setTranslate(document.querySelector('.lg-prev-slide'), -this.___slide[this.index].clientWidth + distance, 0);\n this.setTranslate(document.querySelector('.lg-next-slide'), this.___slide[this.index].clientWidth + distance, 0);\n }\n };\n\n Plugin.prototype.touchEnd = function (distance) {\n var _this = this;\n\n // keep slide animation for any mode while dragg/swipe\n if (_this.s.mode !== 'lg-slide') {\n _lgUtils2.default.addClass(_this.outer, 'lg-slide');\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n if (!_lgUtils2.default.hasClass(this.___slide[i], 'lg-current') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-prev-slide') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-next-slide')) {\n this.___slide[i].style.opacity = '0';\n }\n }\n\n // set transition duration\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-dragging');\n if (distance < 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToNextSlide(true);\n } else if (distance > 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToPrevSlide(true);\n } else if (Math.abs(distance) < 5) {\n\n // Trigger click if distance is less than 5 pix\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n for (var i = 0; i < _this.___slide.length; i++) {\n _this.___slide[i].removeAttribute('style');\n }\n });\n\n // remove slide class once drag/swipe is completed if mode is not slide\n setTimeout(function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging') && _this.s.mode !== 'lg-slide') {\n _lgUtils2.default.removeClass(_this.outer, 'lg-slide');\n }\n }, _this.s.speed + 100);\n };\n\n Plugin.prototype.enableSwipe = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isMoved = false;\n\n if (_this.s.enableSwipe && _this.isTouch && _this.doCss()) {\n\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'touchstart.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed') && !_this.lgBusy) {\n e.preventDefault();\n _this.manageSwipeClass();\n startCoords = e.targetTouches[0].pageX;\n }\n });\n }\n\n for (var j = 0; j < _this.___slide.length; j++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[j], 'touchmove.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n e.preventDefault();\n endCoords = e.targetTouches[0].pageX;\n _this.touchMove(startCoords, endCoords);\n isMoved = true;\n }\n });\n }\n\n for (var k = 0; k < _this.___slide.length; k++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[k], 'touchend.lg', function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n } else {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n }\n });\n }\n }\n };\n\n Plugin.prototype.enableDrag = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isDraging = false;\n var isMoved = false;\n if (_this.s.enableDrag && !_this.isTouch && _this.doCss()) {\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'mousedown.lg', function (e) {\n // execute only on .lg-object\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n e.preventDefault();\n\n if (!_this.lgBusy) {\n _this.manageSwipeClass();\n startCoords = e.pageX;\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.outer.scrollLeft += 1;\n _this.outer.scrollLeft -= 1;\n\n // *\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-grab');\n _lgUtils2.default.addClass(_this.outer, 'lg-grabbing');\n\n _lgUtils2.default.trigger(_this.el, 'onDragstart');\n }\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'mousemove.lg', function (e) {\n if (isDraging) {\n isMoved = true;\n endCoords = e.pageX;\n _this.touchMove(startCoords, endCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragmove');\n }\n });\n\n _lgUtils2.default.on(window, 'mouseup.lg', function (e) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragend');\n } else if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n // Prevent execution on click\n if (isDraging) {\n isDraging = false;\n _lgUtils2.default.removeClass(_this.outer, 'lg-grabbing');\n _lgUtils2.default.addClass(_this.outer, 'lg-grab');\n }\n });\n }\n };\n\n Plugin.prototype.manageSwipeClass = function () {\n var touchNext = this.index + 1;\n var touchPrev = this.index - 1;\n var length = this.___slide.length;\n if (this.s.loop) {\n if (this.index === 0) {\n touchPrev = length - 1;\n } else if (this.index === length - 1) {\n touchNext = 0;\n }\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-next-slide');\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-prev-slide');\n }\n\n if (touchPrev > -1) {\n _lgUtils2.default.addClass(this.___slide[touchPrev], 'lg-prev-slide');\n }\n\n _lgUtils2.default.addClass(this.___slide[touchNext], 'lg-next-slide');\n };\n\n Plugin.prototype.mousewheel = function () {\n var _this = this;\n _lgUtils2.default.on(_this.outer, 'mousewheel.lg', function (e) {\n\n if (!e.deltaY) {\n return;\n }\n\n if (e.deltaY > 0) {\n _this.goToPrevSlide();\n } else {\n _this.goToNextSlide();\n }\n\n e.preventDefault();\n });\n };\n\n Plugin.prototype.closeGallery = function () {\n\n var _this = this;\n var mousedown = false;\n _lgUtils2.default.on(this.outer.querySelector('.lg-close'), 'click.lg', function () {\n _this.destroy();\n });\n\n if (_this.s.closable) {\n\n // If you drag the slide and release outside gallery gets close on chrome\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\n _lgUtils2.default.on(_this.outer, 'mousedown.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap')) {\n mousedown = true;\n } else {\n mousedown = false;\n }\n });\n\n _lgUtils2.default.on(_this.outer, 'mouseup.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap') && mousedown) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging')) {\n _this.destroy();\n }\n }\n });\n }\n };\n\n Plugin.prototype.destroy = function (d) {\n\n var _this = this;\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onBeforeClose');\n }\n\n document.body.scrollTop = _this.prevScrollTop;\n document.documentElement.scrollTop = _this.prevScrollTop;\n\n /**\n * if d is false or undefined destroy will only close the gallery\n * plugins instance remains with the element\n *\n * if d is true destroy will completely remove the plugin\n */\n\n if (d) {\n if (!_this.s.dynamic) {\n // only when not using dynamic mode is $items a jquery collection\n\n for (var i = 0; i < this.items.length; i++) {\n _lgUtils2.default.off(this.items[i], '.lg');\n _lgUtils2.default.off(this.items[i], '.lgcustom');\n }\n }\n\n var lguid = _this.el.getAttribute('lg-uid');\n delete window.lgData[lguid];\n _this.el.removeAttribute('lg-uid');\n }\n\n // Unbind all events added by lightGallery\n _lgUtils2.default.off(this.el, '.lgtm');\n\n // Distroy all lightGallery modules\n for (var key in window.lgModules) {\n if (_this.modules[key]) {\n _this.modules[key].destroy(d);\n }\n }\n\n this.lGalleryOn = false;\n\n clearTimeout(_this.hideBartimeout);\n this.hideBartimeout = false;\n _lgUtils2.default.off(window, '.lg');\n _lgUtils2.default.removeClass(document.body, 'lg-on');\n _lgUtils2.default.removeClass(document.body, 'lg-from-hash');\n\n if (_this.outer) {\n _lgUtils2.default.removeClass(_this.outer, 'lg-visible');\n }\n\n _lgUtils2.default.removeClass(document.querySelector('.lg-backdrop'), 'in');\n setTimeout(function () {\n try {\n if (_this.outer) {\n _this.outer.parentNode.removeChild(_this.outer);\n }\n\n if (document.querySelector('.lg-backdrop')) {\n document.querySelector('.lg-backdrop').parentNode.removeChild(document.querySelector('.lg-backdrop'));\n }\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onCloseAfter');\n }\n _this.el.focus();\n } catch (err) {}\n }, _this.s.backdropDuration + 50);\n };\n\n window.lightGallery = function (el, options) {\n if (!el) {\n return;\n }\n\n try {\n if (!el.getAttribute('lg-uid')) {\n var uid = 'lg' + window.lgData.uid++;\n window.lgData[uid] = new Plugin(el, options);\n el.setAttribute('lg-uid', uid);\n } else {\n window.lgData[el.getAttribute('lg-uid')].init();\n }\n } catch (err) {\n console.error('lightGallery has not initiated properly', err);\n }\n };\n});","/**!\n * lg-video.js | 1.3.0 | November 7th 2020\n * http://sachinchoolur.github.io/lg-video.js\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgVideo = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 1 && (_this.core.s.enableSwipe && _this.core.isTouch || _this.core.s.enableDrag && !_this.core.isTouch)) {\n utils.on(_this.core.el, 'onSlideClick.lgtm', function () {\n var $el = _this.core.___slide[_this.core.index];\n loadOnClick($el);\n });\n } else {\n\n // For IE 9 and bellow\n for (var i = 0; i < _this.core.___slide.length; i++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n utils.on(_this.core.___slide[index], 'click.lg', function () {\n loadOnClick(_this.core.___slide[index]);\n });\n })(i);\n }\n }\n\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function (event) {\n\n var $videoSlide = _this.core.___slide[event.detail.prevIndex];\n var youtubePlayer = $videoSlide.querySelector('.lg-youtube');\n var vimeoPlayer = $videoSlide.querySelector('.lg-vimeo');\n var dailymotionPlayer = $videoSlide.querySelector('.lg-dailymotion');\n var vkPlayer = $videoSlide.querySelector('.lg-vk');\n var html5Player = $videoSlide.querySelector('.lg-html5');\n if (youtubePlayer) {\n youtubePlayer.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}', '*');\n } else if (vimeoPlayer) {\n try {\n new Vimeo.Player(vimeoPlayer).pause().catch(function (error) {\n console.error('Unable to pause the video:', error.name);\n });\n } catch (e) {\n console.warn('lightGallery:- Make sure you have included https://github.com/vimeo/player.js');\n }\n } else if (dailymotionPlayer) {\n dailymotionPlayer.contentWindow.postMessage('pause', '*');\n } else if (html5Player) {\n if (_this.core.s.videojs) {\n try {\n videojs(html5Player).pause();\n } catch (e) {\n console.error('lightGallery:- Make sure you have included videojs');\n }\n } else {\n html5Player.pause();\n }\n }if (vkPlayer) {\n\n vkPlayer.setAttribute('src', vkPlayer.getAttribute('src').replace('&autoplay', '&noplay'));\n }\n\n var _src;\n if (_this.core.s.dynamic) {\n _src = _this.core.s.dynamicEl[event.detail.index].src;\n } else {\n _src = _this.core.items[event.detail.index].getAttribute('href') || _this.core.items[event.detail.index].getAttribute('data-src');\n }\n\n var _isVideo = _this.core.isVideo(_src, event.detail.index) || {};\n if (_isVideo.youtube || _isVideo.vimeo || _isVideo.dailymotion || _isVideo.vk) {\n utils.addClass(_this.core.outer, 'lg-hide-download');\n }\n\n //$videoSlide.addClass('lg-complete');\n });\n\n utils.on(_this.core.el, 'onAfterSlide.lgtm', function (event) {\n utils.removeClass(_this.core.___slide[event.detail.prevIndex], 'lg-video-playing');\n });\n };\n\n Video.prototype.loadVideo = function (src, addClass, noposter, index, html) {\n var video = '';\n var autoplay = 1;\n var a = '';\n var isVideo = this.core.isVideo(src, index) || {};\n\n // Enable autoplay for first video if poster doesn't exist\n if (noposter) {\n if (this.videoLoaded) {\n autoplay = 0;\n } else {\n autoplay = this.core.s.autoplayFirstVideo ? 1 : 0;\n }\n }\n\n var videoTitle;\n\n if (this.core.s.dynamic) {\n videoTitle = this.core.s.dynamicEl[index].title;\n } else {\n videoTitle = this.core.items[index].getAttribute('title');\n if (!videoTitle) {\n var firstImage = this.core.items[index].querySelector('img');\n if (firstImage) {\n videoTitle = firstImage.getAttribute('alt');\n }\n }\n }\n\n videoTitle = videoTitle ? 'title=\"' + videoTitle + '\"' : '';\n\n if (isVideo.youtube) {\n\n a = '?wmode=opaque&autoplay=' + autoplay + '&enablejsapi=1';\n if (this.core.s.youtubePlayerParams) {\n a = a + '&' + utils.param(this.core.s.youtubePlayerParams);\n }\n\n video = '';\n } else if (isVideo.vimeo) {\n\n a = '?autoplay=' + autoplay;\n if (this.core.s.vimeoPlayerParams) {\n a = a + '&' + utils.param(this.core.s.vimeoPlayerParams);\n }\n\n video = '';\n } else if (isVideo.dailymotion) {\n\n a = '?wmode=opaque&autoplay=' + autoplay + '&api=postMessage';\n if (this.core.s.dailymotionPlayerParams) {\n a = a + '&' + utils.param(this.core.s.dailymotionPlayerParams);\n }\n\n video = '';\n } else if (isVideo.html5) {\n var fL = html.substring(0, 1);\n if (fL === '.' || fL === '#') {\n html = document.querySelector(html).innerHTML;\n }\n\n video = html;\n } else if (isVideo.vk) {\n\n a = '&autoplay=' + autoplay;\n if (this.core.s.vkPlayerParams) {\n a = a + '&' + utils.param(this.core.s.vkPlayerParams);\n }\n\n video = '';\n }\n\n return video;\n };\n\n Video.prototype.destroy = function () {\n this.videoLoaded = false;\n };\n\n window.lgModules.video = Video;\n});\n\n},{}]},{},[1])(1)\n});\n","/**\r\n * Gallery lightbox\r\n */\r\n\r\n// lightgallery.js must come before lg-video otherwise an\r\n// undefined error occurs\r\n\r\n/* tslint:disable */\r\nimport 'lightgallery.js';\r\nimport 'lg-video.js';\r\n/* tslint:enable */\r\n\r\nconst lightGallery = (window as any).lightGallery;\r\n\r\nconst instance = ($el: Element) => {\r\n // Handle multiple images/links\r\n lightGallery($el, {\r\n selector: 'a',\r\n videoMaxWidth: '100%',\r\n });\r\n};\r\n\r\nconst gallery = () => {\r\n const SELECTOR = '.js-gallery';\r\n\r\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\r\n instance($el);\r\n });\r\n};\r\n\r\nexport default gallery;\r\n","/**\r\n * Applies special classes to relevant items when they're scrolled into view.\r\n * This can be used to apply animation or other CSS behaviour\r\n * that should occur when an element becomes visible\r\n */\r\nconst inViewport = () => {\r\n const CLASS = 'in-viewport';\r\n const SELECTOR = '.js-in-viewport';\r\n const attributes = {\r\n REPEAT: 'data-repeat',\r\n };\r\n\r\n if (typeof IntersectionObserver === 'undefined') {\r\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\r\n $el.classList.add(CLASS);\r\n });\r\n\r\n return;\r\n }\r\n\r\n const checkEntry = (entry: IntersectionObserverEntry) => {\r\n const $entry = entry.target as HTMLHtmlElement;\r\n\r\n if (entry.isIntersecting) {\r\n $entry.classList.add(CLASS);\r\n\r\n if (!isRepeat($entry)) {\r\n observer.unobserve($entry);\r\n }\r\n\r\n return;\r\n }\r\n\r\n $entry.classList.remove(CLASS);\r\n };\r\n\r\n const callback = (entries: IntersectionObserverEntry[]) => {\r\n entries.forEach(checkEntry);\r\n };\r\n\r\n const isRepeat = ($el: HTMLHtmlElement) => {\r\n return $el.getAttribute(attributes.REPEAT) === 'true';\r\n };\r\n\r\n const observer = new IntersectionObserver(callback, {\r\n rootMargin: '0px',\r\n threshold: 0,\r\n });\r\n\r\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\r\n observer.observe($el as HTMLElement);\r\n });\r\n};\r\n\r\nexport default inViewport;\r\n","const regexFindNumbers = /\\d+/g;\r\nconst countUpDuration = 1000;\r\n\r\nconst animateValue = (\r\n $elementContainingNumber: HTMLElement,\r\n start: number,\r\n end: number,\r\n duration: number\r\n) => {\r\n let startTimestamp: number | null = null;\r\n\r\n const step = (timestamp: number) => {\r\n if (!startTimestamp) {\r\n startTimestamp = timestamp;\r\n }\r\n\r\n const progress = Math.min((timestamp - startTimestamp) / duration, 1);\r\n\r\n $elementContainingNumber.innerHTML = Math.floor(\r\n progress * (end - start) + start\r\n ).toString();\r\n\r\n if (progress < 1) {\r\n window.requestAnimationFrame(step);\r\n }\r\n };\r\n\r\n window.requestAnimationFrame(step);\r\n};\r\n\r\nconst numericAnimation = () => {\r\n const SELECTOR = \".js-numeric-animation\";\r\n\r\n if (typeof IntersectionObserver === \"undefined\") {\r\n return;\r\n }\r\n\r\n const checkEntry = (entry: IntersectionObserverEntry) => {\r\n const $entry = entry.target as HTMLHtmlElement;\r\n\r\n if (!entry.isIntersecting || !$entry.dataset.nums) {\r\n return;\r\n }\r\n\r\n const nums = JSON.parse($entry.dataset.nums.toString());\r\n\r\n for (let i = 0; i < nums.length; i++) {\r\n const $wrapper = $entry.querySelector(\r\n `.js-num-wrapper-${i}`\r\n ) as HTMLElement;\r\n\r\n animateValue($wrapper, 0, nums[i], countUpDuration);\r\n }\r\n\r\n // Remove width when animation complete\r\n setTimeout(() => {\r\n $entry.style.removeProperty(\"width\");\r\n }, countUpDuration);\r\n\r\n observer.unobserve($entry);\r\n return;\r\n };\r\n\r\n const callback = (entries: IntersectionObserverEntry[]) => {\r\n entries.forEach(checkEntry);\r\n };\r\n\r\n const observer = new IntersectionObserver(callback, {\r\n rootMargin: \"0px\",\r\n threshold: 0,\r\n });\r\n\r\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\r\n const $htmlEl = $el as HTMLElement;\r\n\r\n // Zero any numbers and add them to a data attribute so they can be counted up later\r\n const elementText = $el.innerHTML as string;\r\n let matchExecArray: RegExpExecArray | null;\r\n const matches: string[] = [];\r\n let count = 0;\r\n\r\n while (true) {\r\n matchExecArray = regexFindNumbers.exec(elementText);\r\n if (!matchExecArray) {\r\n break;\r\n }\r\n\r\n matches.push(matchExecArray[0]);\r\n\r\n // Set width so number changing doesn't result in things moving around\r\n $htmlEl.style.width = `${$el.clientWidth}px`;\r\n\r\n $el.innerHTML = $el.innerHTML.replace(\r\n matchExecArray[0],\r\n `0`\r\n );\r\n count++;\r\n }\r\n\r\n $el.setAttribute(\"data-nums\", JSON.stringify(matches));\r\n\r\n // Observe to figure out when to count them back up\r\n observer.observe($el as HTMLElement);\r\n });\r\n};\r\n\r\nexport default numericAnimation;\r\n","\n// ------------------------------------------\n// Rellax.js\n// Buttery smooth parallax library\n// Copyright (c) 2016 Moe Amaya (@moeamaya)\n// MIT license\n//\n// Thanks to Paraxify.js and Jaime Cabllero\n// for parallax concepts\n// ------------------------------------------\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.Rellax = factory();\n }\n}(typeof window !== \"undefined\" ? window : global, function () {\n var Rellax = function(el, options){\n \"use strict\";\n\n var self = Object.create(Rellax.prototype);\n\n var posY = 0;\n var screenY = 0;\n var posX = 0;\n var screenX = 0;\n var blocks = [];\n var pause = true;\n\n // check what requestAnimationFrame to use, and if\n // it's not supported, use the onscroll event\n var loop = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n function(callback){ return setTimeout(callback, 1000 / 60); };\n\n // store the id for later use\n var loopId = null;\n\n // Test via a getter in the options object to see if the passive property is accessed\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"testPassive\", null, opts);\n window.removeEventListener(\"testPassive\", null, opts);\n } catch (e) {}\n\n // check what cancelAnimation method to use\n var clearLoop = window.cancelAnimationFrame || window.mozCancelAnimationFrame || clearTimeout;\n\n // check which transform property to use\n var transformProp = window.transformProp || (function(){\n var testEl = document.createElement('div');\n if (testEl.style.transform === null) {\n var vendors = ['Webkit', 'Moz', 'ms'];\n for (var vendor in vendors) {\n if (testEl.style[ vendors[vendor] + 'Transform' ] !== undefined) {\n return vendors[vendor] + 'Transform';\n }\n }\n }\n return 'transform';\n })();\n\n // Default Settings\n self.options = {\n speed: -2,\n\t verticalSpeed: null,\n\t horizontalSpeed: null,\n breakpoints: [576, 768, 1201],\n center: false,\n wrapper: null,\n relativeToWrapper: false,\n round: true,\n vertical: true,\n horizontal: false,\n verticalScrollAxis: \"y\",\n horizontalScrollAxis: \"x\",\n callback: function() {},\n };\n\n // User defined options (might have more in the future)\n if (options){\n Object.keys(options).forEach(function(key){\n self.options[key] = options[key];\n });\n }\n\n function validateCustomBreakpoints () {\n if (self.options.breakpoints.length === 3 && Array.isArray(self.options.breakpoints)) {\n var isAscending = true;\n var isNumerical = true;\n var lastVal;\n self.options.breakpoints.forEach(function (i) {\n if (typeof i !== 'number') isNumerical = false;\n if (lastVal !== null) {\n if (i < lastVal) isAscending = false;\n }\n lastVal = i;\n });\n if (isAscending && isNumerical) return;\n }\n // revert defaults if set incorrectly\n self.options.breakpoints = [576, 768, 1201];\n console.warn(\"Rellax: You must pass an array of 3 numbers in ascending order to the breakpoints option. Defaults reverted\");\n }\n\n if (options && options.breakpoints) {\n validateCustomBreakpoints();\n }\n\n // By default, rellax class\n if (!el) {\n el = '.rellax';\n }\n\n // check if el is a className or a node\n var elements = typeof el === 'string' ? document.querySelectorAll(el) : [el];\n\n // Now query selector\n if (elements.length > 0) {\n self.elems = elements;\n }\n\n // The elements don't exist\n else {\n console.warn(\"Rellax: The elements you're trying to select don't exist.\");\n return;\n }\n\n // Has a wrapper and it exists\n if (self.options.wrapper) {\n if (!self.options.wrapper.nodeType) {\n var wrapper = document.querySelector(self.options.wrapper);\n\n if (wrapper) {\n self.options.wrapper = wrapper;\n } else {\n console.warn(\"Rellax: The wrapper you're trying to use doesn't exist.\");\n return;\n }\n }\n }\n\n // set a placeholder for the current breakpoint\n var currentBreakpoint;\n\n // helper to determine current breakpoint\n var getCurrentBreakpoint = function (w) {\n var bp = self.options.breakpoints;\n if (w < bp[0]) return 'xs';\n if (w >= bp[0] && w < bp[1]) return 'sm';\n if (w >= bp[1] && w < bp[2]) return 'md';\n return 'lg';\n };\n\n // Get and cache initial position of all elements\n var cacheBlocks = function() {\n for (var i = 0; i < self.elems.length; i++){\n var block = createBlock(self.elems[i]);\n blocks.push(block);\n }\n };\n\n\n // Let's kick this script off\n // Build array for cached element values\n var init = function() {\n for (var i = 0; i < blocks.length; i++){\n self.elems[i].style.cssText = blocks[i].style;\n }\n\n blocks = [];\n\n screenY = window.innerHeight;\n screenX = window.innerWidth;\n currentBreakpoint = getCurrentBreakpoint(screenX);\n\n setPosition();\n\n cacheBlocks();\n\n animate();\n\n // If paused, unpause and set listener for window resizing events\n if (pause) {\n window.addEventListener('resize', init);\n pause = false;\n // Start the loop\n update();\n }\n };\n\n // We want to cache the parallax blocks'\n // values: base, top, height, speed\n // el: is dom object, return: el cache values\n var createBlock = function(el) {\n var dataPercentage = el.getAttribute( 'data-rellax-percentage' );\n var dataSpeed = el.getAttribute( 'data-rellax-speed' );\n var dataXsSpeed = el.getAttribute( 'data-rellax-xs-speed' );\n var dataMobileSpeed = el.getAttribute( 'data-rellax-mobile-speed' );\n var dataTabletSpeed = el.getAttribute( 'data-rellax-tablet-speed' );\n var dataDesktopSpeed = el.getAttribute( 'data-rellax-desktop-speed' );\n var dataVerticalSpeed = el.getAttribute('data-rellax-vertical-speed');\n var dataHorizontalSpeed = el.getAttribute('data-rellax-horizontal-speed');\n var dataVericalScrollAxis = el.getAttribute('data-rellax-vertical-scroll-axis');\n var dataHorizontalScrollAxis = el.getAttribute('data-rellax-horizontal-scroll-axis');\n var dataZindex = el.getAttribute( 'data-rellax-zindex' ) || 0;\n var dataMin = el.getAttribute( 'data-rellax-min' );\n var dataMax = el.getAttribute( 'data-rellax-max' );\n var dataMinX = el.getAttribute('data-rellax-min-x');\n var dataMaxX = el.getAttribute('data-rellax-max-x');\n var dataMinY = el.getAttribute('data-rellax-min-y');\n var dataMaxY = el.getAttribute('data-rellax-max-y');\n var mapBreakpoints;\n var breakpoints = true;\n\n if (!dataXsSpeed && !dataMobileSpeed && !dataTabletSpeed && !dataDesktopSpeed) {\n breakpoints = false;\n } else {\n mapBreakpoints = {\n 'xs': dataXsSpeed,\n 'sm': dataMobileSpeed,\n 'md': dataTabletSpeed,\n 'lg': dataDesktopSpeed\n };\n }\n\n // initializing at scrollY = 0 (top of browser), scrollX = 0 (left of browser)\n // ensures elements are positioned based on HTML layout.\n //\n // If the element has the percentage attribute, the posY and posX needs to be\n // the current scroll position's value, so that the elements are still positioned based on HTML layout\n var wrapperPosY = self.options.wrapper ? self.options.wrapper.scrollTop : (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);\n // If the option relativeToWrapper is true, use the wrappers offset to top, subtracted from the current page scroll.\n if (self.options.relativeToWrapper) {\n var scrollPosY = (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);\n wrapperPosY = scrollPosY - self.options.wrapper.offsetTop;\n }\n var posY = self.options.vertical ? ( dataPercentage || self.options.center ? wrapperPosY : 0 ) : 0;\n var posX = self.options.horizontal ? ( dataPercentage || self.options.center ? self.options.wrapper ? self.options.wrapper.scrollLeft : (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft) : 0 ) : 0;\n\n var blockTop = posY + el.getBoundingClientRect().top;\n var blockHeight = el.clientHeight || el.offsetHeight || el.scrollHeight;\n\n var blockLeft = posX + el.getBoundingClientRect().left;\n var blockWidth = el.clientWidth || el.offsetWidth || el.scrollWidth;\n\n // apparently parallax equation everyone uses\n var percentageY = dataPercentage ? dataPercentage : (posY - blockTop + screenY) / (blockHeight + screenY);\n var percentageX = dataPercentage ? dataPercentage : (posX - blockLeft + screenX) / (blockWidth + screenX);\n if(self.options.center){ percentageX = 0.5; percentageY = 0.5; }\n\n // Optional individual block speed as data attr, otherwise global speed\n var speed = (breakpoints && mapBreakpoints[currentBreakpoint] !== null) ? Number(mapBreakpoints[currentBreakpoint]) : (dataSpeed ? dataSpeed : self.options.speed);\n var verticalSpeed = dataVerticalSpeed ? dataVerticalSpeed : self.options.verticalSpeed;\n var horizontalSpeed = dataHorizontalSpeed ? dataHorizontalSpeed : self.options.horizontalSpeed;\n\n // Optional individual block movement axis direction as data attr, otherwise gobal movement direction\n var verticalScrollAxis = dataVericalScrollAxis ? dataVericalScrollAxis : self.options.verticalScrollAxis;\n var horizontalScrollAxis = dataHorizontalScrollAxis ? dataHorizontalScrollAxis : self.options.horizontalScrollAxis;\n\n var bases = updatePosition(percentageX, percentageY, speed, verticalSpeed, horizontalSpeed);\n\n // ~~Store non-translate3d transforms~~\n // Store inline styles and extract transforms\n var style = el.style.cssText;\n var transform = '';\n\n // Check if there's an inline styled transform\n var searchResult = /transform\\s*:/i.exec(style);\n if (searchResult) {\n // Get the index of the transform\n var index = searchResult.index;\n\n // Trim the style to the transform point and get the following semi-colon index\n var trimmedStyle = style.slice(index);\n var delimiter = trimmedStyle.indexOf(';');\n\n // Remove \"transform\" string and save the attribute\n if (delimiter) {\n transform = \" \" + trimmedStyle.slice(11, delimiter).replace(/\\s/g,'');\n } else {\n transform = \" \" + trimmedStyle.slice(11).replace(/\\s/g,'');\n }\n }\n\n return {\n baseX: bases.x,\n baseY: bases.y,\n top: blockTop,\n left: blockLeft,\n height: blockHeight,\n width: blockWidth,\n speed: speed,\n verticalSpeed: verticalSpeed,\n horizontalSpeed: horizontalSpeed,\n verticalScrollAxis: verticalScrollAxis,\n horizontalScrollAxis: horizontalScrollAxis,\n style: style,\n transform: transform,\n zindex: dataZindex,\n min: dataMin,\n max: dataMax,\n minX: dataMinX,\n maxX: dataMaxX,\n minY: dataMinY,\n maxY: dataMaxY\n };\n };\n\n // set scroll position (posY, posX)\n // side effect method is not ideal, but okay for now\n // returns true if the scroll changed, false if nothing happened\n var setPosition = function() {\n var oldY = posY;\n var oldX = posX;\n\n posY = self.options.wrapper ? self.options.wrapper.scrollTop : (document.documentElement || document.body.parentNode || document.body).scrollTop || window.pageYOffset;\n posX = self.options.wrapper ? self.options.wrapper.scrollLeft : (document.documentElement || document.body.parentNode || document.body).scrollLeft || window.pageXOffset;\n // If option relativeToWrapper is true, use relative wrapper value instead.\n if (self.options.relativeToWrapper) {\n var scrollPosY = (document.documentElement || document.body.parentNode || document.body).scrollTop || window.pageYOffset;\n posY = scrollPosY - self.options.wrapper.offsetTop;\n }\n\n\n if (oldY != posY && self.options.vertical) {\n // scroll changed, return true\n return true;\n }\n\n if (oldX != posX && self.options.horizontal) {\n // scroll changed, return true\n return true;\n }\n\n // scroll did not change\n return false;\n };\n\n // Ahh a pure function, gets new transform value\n // based on scrollPosition and speed\n // Allow for decimal pixel values\n var updatePosition = function(percentageX, percentageY, speed, verticalSpeed, horizontalSpeed) {\n var result = {};\n var valueX = ((horizontalSpeed ? horizontalSpeed : speed) * (100 * (1 - percentageX)));\n var valueY = ((verticalSpeed ? verticalSpeed : speed) * (100 * (1 - percentageY)));\n\n result.x = self.options.round ? Math.round(valueX) : Math.round(valueX * 100) / 100;\n result.y = self.options.round ? Math.round(valueY) : Math.round(valueY * 100) / 100;\n\n return result;\n };\n\n // Remove event listeners and loop again\n var deferredUpdate = function() {\n window.removeEventListener('resize', deferredUpdate);\n window.removeEventListener('orientationchange', deferredUpdate);\n (self.options.wrapper ? self.options.wrapper : window).removeEventListener('scroll', deferredUpdate);\n (self.options.wrapper ? self.options.wrapper : document).removeEventListener('touchmove', deferredUpdate);\n\n // loop again\n loopId = loop(update);\n };\n\n // Loop\n var update = function() {\n if (setPosition() && pause === false) {\n animate();\n\n // loop again\n loopId = loop(update);\n } else {\n loopId = null;\n\n // Don't animate until we get a position updating event\n window.addEventListener('resize', deferredUpdate);\n window.addEventListener('orientationchange', deferredUpdate);\n (self.options.wrapper ? self.options.wrapper : window).addEventListener('scroll', deferredUpdate, supportsPassive ? { passive: true } : false);\n (self.options.wrapper ? self.options.wrapper : document).addEventListener('touchmove', deferredUpdate, supportsPassive ? { passive: true } : false);\n }\n };\n\n // Transform3d on parallax element\n var animate = function() {\n var positions;\n for (var i = 0; i < self.elems.length; i++){\n // Determine relevant movement directions\n var verticalScrollAxis = blocks[i].verticalScrollAxis.toLowerCase();\n var horizontalScrollAxis = blocks[i].horizontalScrollAxis.toLowerCase();\n var verticalScrollX = verticalScrollAxis.indexOf(\"x\") != -1 ? posY : 0;\n var verticalScrollY = verticalScrollAxis.indexOf(\"y\") != -1 ? posY : 0;\n var horizontalScrollX = horizontalScrollAxis.indexOf(\"x\") != -1 ? posX : 0;\n var horizontalScrollY = horizontalScrollAxis.indexOf(\"y\") != -1 ? posX : 0;\n\n var percentageY = ((verticalScrollY + horizontalScrollY - blocks[i].top + screenY) / (blocks[i].height + screenY));\n var percentageX = ((verticalScrollX + horizontalScrollX - blocks[i].left + screenX) / (blocks[i].width + screenX));\n\n // Subtracting initialize value, so element stays in same spot as HTML\n positions = updatePosition(percentageX, percentageY, blocks[i].speed, blocks[i].verticalSpeed, blocks[i].horizontalSpeed);\n var positionY = positions.y - blocks[i].baseY;\n var positionX = positions.x - blocks[i].baseX;\n\n // The next two \"if\" blocks go like this:\n // Check if a limit is defined (first \"min\", then \"max\");\n // Check if we need to change the Y or the X\n // (Currently working only if just one of the axes is enabled)\n // Then, check if the new position is inside the allowed limit\n // If so, use new position. If not, set position to limit.\n\n // Check if a min limit is defined\n if (blocks[i].min !== null) {\n if (self.options.vertical && !self.options.horizontal) {\n positionY = positionY <= blocks[i].min ? blocks[i].min : positionY;\n }\n if (self.options.horizontal && !self.options.vertical) {\n positionX = positionX <= blocks[i].min ? blocks[i].min : positionX;\n }\n }\n\n // Check if directional min limits are defined\n if (blocks[i].minY != null) {\n positionY = positionY <= blocks[i].minY ? blocks[i].minY : positionY;\n }\n if (blocks[i].minX != null) {\n positionX = positionX <= blocks[i].minX ? blocks[i].minX : positionX;\n }\n\n // Check if a max limit is defined\n if (blocks[i].max !== null) {\n if (self.options.vertical && !self.options.horizontal) {\n positionY = positionY >= blocks[i].max ? blocks[i].max : positionY;\n }\n if (self.options.horizontal && !self.options.vertical) {\n positionX = positionX >= blocks[i].max ? blocks[i].max : positionX;\n }\n }\n\n // Check if directional max limits are defined\n if (blocks[i].maxY != null) {\n positionY = positionY >= blocks[i].maxY ? blocks[i].maxY : positionY;\n }\n if (blocks[i].maxX != null) {\n positionX = positionX >= blocks[i].maxX ? blocks[i].maxX : positionX;\n }\n\n var zindex = blocks[i].zindex;\n\n // Move that element\n // (Set the new translation and append initial inline transforms.)\n var translate = 'translate3d(' + (self.options.horizontal ? positionX : '0') + 'px,' + (self.options.vertical ? positionY : '0') + 'px,' + zindex + 'px) ' + blocks[i].transform;\n self.elems[i].style[transformProp] = translate;\n }\n self.options.callback(positions);\n };\n\n self.destroy = function() {\n for (var i = 0; i < self.elems.length; i++){\n self.elems[i].style.cssText = blocks[i].style;\n }\n\n // Remove resize event listener if not pause, and pause\n if (!pause) {\n window.removeEventListener('resize', init);\n pause = true;\n }\n\n // Clear the animation loop to prevent possible memory leak\n clearLoop(loopId);\n loopId = null;\n };\n\n // Init\n init();\n\n // Allow to recalculate the initial values whenever we want\n self.refresh = init;\n\n return self;\n };\n return Rellax;\n}));\n","import Rellax from \"rellax\";\r\n\r\nconst defaults = {\r\n percentage: 0.5,\r\n speed: 4,\r\n};\r\n\r\nconst parallax = () => {\r\n let hasInstance = false;\r\n\r\n document.querySelectorAll(\".js-parallax\").forEach(($el: Element) => {\r\n if (!$el.hasAttribute(\"data-rellax-percentage\")) {\r\n $el.setAttribute(\r\n \"data-rellax-percentage\",\r\n defaults.percentage.toString()\r\n );\r\n }\r\n\r\n if (!$el.hasAttribute(\"data-rellax-speed\")) {\r\n $el.setAttribute(\"data-rellax-speed\", defaults.speed.toString());\r\n }\r\n\r\n hasInstance = true;\r\n });\r\n\r\n if (!hasInstance) {\r\n return;\r\n }\r\n\r\n const rellax = new Rellax(\".js-parallax\");\r\n\r\n window.onload = () => {\r\n rellax.refresh();\r\n document.querySelectorAll(\".js-parallax\").forEach(($el: Element) => {\r\n $el.classList.add(\"parallax-initialised\");\r\n });\r\n };\r\n};\r\n\r\nexport default parallax;\r\n","const SELECTOR = \".js-scroll-down\";\r\nconst animationFactor = 1.5;\r\n\r\nconst scrollDown = () => {\r\n const $scrollElements = document.querySelectorAll(SELECTOR);\r\n if (!$scrollElements.length) {\r\n return;\r\n }\r\n\r\n $scrollElements.forEach(($el: Element) => {\r\n $el.addEventListener(\"click\", () => {\r\n var rect = $el.getBoundingClientRect();\r\n\r\n // Animation factor included so if you click something while it's\r\n // in motion, you scroll far enough away, based on current value\r\n // of transform used in animation.\r\n window.scrollBy(0, rect.top + $el.clientHeight * animationFactor);\r\n });\r\n });\r\n};\r\n\r\nexport default scrollDown;\r\n","import { KEY_DOWN, KEY_UP, SPACE } from '../../utils/keyCode';\r\n\r\n/**\r\n * Initialises the toggle nav button that's responsible for showing/hiding\r\n * the main menu (likely on smaller devices).\r\n */\r\nconst toggleNav = () => {\r\n const CSS_VISIBLE = 'is-nav-visible';\r\n const SELECTOR = '.js-nav-button';\r\n\r\n const validHideKeyCodes = [KEY_UP];\r\n const validShowKeyCodes = [KEY_DOWN, SPACE];\r\n\r\n const $html = document.querySelector('html') as HTMLHtmlElement;\r\n\r\n const checkKeyboardShortcutForToggle = (e: KeyboardEvent) => {\r\n if (validShowKeyCodes.indexOf(e.keyCode) >= 0) {\r\n show();\r\n return;\r\n }\r\n\r\n if (validHideKeyCodes.indexOf(e.keyCode) >= 0) {\r\n hide();\r\n return;\r\n }\r\n };\r\n\r\n const hide = ($el: Element | null = null) => {\r\n $html.classList.remove(CSS_VISIBLE);\r\n\r\n if ($el) {\r\n $el.setAttribute('aria-expanded', 'false');\r\n }\r\n };\r\n\r\n const show = ($el: Element | null | undefined = null) => {\r\n $html.classList.add(CSS_VISIBLE);\r\n\r\n if ($el) {\r\n $el.setAttribute('aria-expanded', 'true');\r\n }\r\n };\r\n\r\n const toggleVisibility = (e: MouseEvent) => {\r\n if (e) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n }\r\n\r\n const $target = (e.currentTarget as Element) || null;\r\n\r\n if ($html.classList.contains(CSS_VISIBLE)) {\r\n hide($target);\r\n return;\r\n }\r\n\r\n show($target);\r\n };\r\n\r\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\r\n const $htmlElement = $el as HTMLElement;\r\n\r\n $htmlElement.addEventListener('click', toggleVisibility);\r\n $htmlElement.addEventListener(\r\n 'keydown',\r\n checkKeyboardShortcutForToggle\r\n );\r\n });\r\n};\r\n\r\nexport default toggleNav;\r\n","export const KEY_UP = 38;\r\nexport const KEY_DOWN = 40;\r\nexport const SPACE = 32;\r\n","import addClassOnScroll from \"./components/addClassOnScroll\";\r\nimport carousel from \"./components/carousel\";\r\nimport gallery from \"./components/gallery\";\r\nimport inViewport from \"./components/inViewport\";\r\nimport nav from \"./components/nav\";\r\nimport numericAnimation from \"./components/numericAnimation\";\r\nimport parallax from \"./components/parallax\";\r\nimport scrollbarWidth from \"./components/scrollbarWidth\";\r\nimport scrollDown from \"./components/scrollDown\";\r\nimport toggleNav from \"./components/toggleNav\";\r\n\r\n/**\r\n * Called once the page is loaded and handles initialising\r\n * the different components.\r\n */\r\nconst init = () => {\r\n addClassOnScroll();\r\n carousel();\r\n gallery();\r\n inViewport();\r\n nav();\r\n numericAnimation();\r\n parallax();\r\n scrollbarWidth();\r\n scrollDown();\r\n toggleNav();\r\n};\r\n\r\nconst canInit = () => {\r\n const regReady = (window as any).attachEvent ? /d$|^c/ : /d$|^c|^i/;\r\n return regReady.test(document.readyState || \"\");\r\n};\r\n\r\nlet timer: NodeJS.Timeout;\r\n\r\nconst checkCanInit = () => {\r\n if (canInit()) {\r\n if (timer) {\r\n clearTimeout(timer);\r\n }\r\n\r\n init();\r\n return;\r\n }\r\n\r\n timer = setTimeout(checkCanInit, 100);\r\n};\r\n\r\n// update DOM to indicate JavaScript is available\r\n// https://www.paulirish.com/2009/avoiding-the-fouc-v3/\r\ndocument.documentElement.className = document.documentElement.className.replace(\r\n /\\bno-js\\b/,\r\n \"js\"\r\n);\r\n\r\ncheckCanInit();\r\n","const CSS_SELECTED = 'is-selected';\r\n\r\n/**\r\n * Reverts selected state on provided item.\r\n */\r\nconst deselectItem = ($el: Element) => {\r\n $el.classList.remove(CSS_SELECTED);\r\n\r\n const $anchor = $el.querySelector('a');\r\n\r\n if ($anchor) {\r\n $anchor.setAttribute('aria-expanded', 'false');\r\n }\r\n};\r\n\r\n/**\r\n * Returns whether the navigation item has any sub items.\r\n */\r\nconst hasSubItems = ($el: Element): boolean => {\r\n if (!$el.parentNode) {\r\n return false;\r\n }\r\n\r\n return $el.parentNode.children.length > 1;\r\n};\r\n\r\n/**\r\n * Sets the selected state on provided item.\r\n */\r\nconst selectItem = ($el: Element) => {\r\n const $parent = $el.parentNode as Element;\r\n\r\n if (!$parent) {\r\n return;\r\n }\r\n\r\n $parent.classList.add(CSS_SELECTED);\r\n $el.setAttribute('aria-expanded', 'true');\r\n};\r\n\r\n/**\r\n * Initialises a new navigation component.\r\n */\r\nconst instance = ($el: Element) => {\r\n /**\r\n * Handles a top level item being selected but unselecting the currently\r\n * selected item and setting the top level item has selected, unless it\r\n * was already selected.\r\n */\r\n const onItemSelect = (e: Event) => {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n\r\n const $selectedItem = $el.querySelector(`.${CSS_SELECTED}`);\r\n const $target = e.currentTarget as Element;\r\n\r\n // de-select the currently selected item if there is one.\r\n if ($selectedItem) {\r\n deselectItem($selectedItem);\r\n }\r\n\r\n if ($target && $selectedItem !== $target.parentNode) {\r\n selectItem($target);\r\n }\r\n };\r\n\r\n $el.querySelectorAll('.js-nav-parent-link').forEach(($anchor: Element) => {\r\n if (!hasSubItems($anchor)) {\r\n return;\r\n }\r\n\r\n $anchor.addEventListener('click', onItemSelect);\r\n });\r\n};\r\n\r\n/**\r\n * Initialises each element matching the selector.\r\n */\r\nconst nav = () => {\r\n const SELECTOR = '.js-nav';\r\n\r\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\r\n instance($el);\r\n });\r\n};\r\n\r\nexport default nav;\r\n"],"names":["factory","module","exports","exports1","Object","defineProperty","value","utils","getAttribute","el","label","setAttribute","wrap","className","wrapper","document","createElement","parentNode","insertBefore","removeChild","appendChild","addClass","classList","add","removeClass","remove","replace","RegExp","split","join","hasClass","contains","test","setVendor","property","style","charAt","toLowerCase","slice","trigger","event","detail","arguments","length","undefined","customEvent","CustomEvent","dispatchEvent","Listener","uid","on","events","fn","_this","this","forEach","_id","addEventListener","off","i","_event","substring","key","hasOwnProperty","indexOf","removeEventListener","param","obj","keys","map","k","encodeURIComponent","default","define","amd","$33247863d2fc8f66$var$pageHeight","$33247863d2fc8f66$var$$scrollElements","$el","$htmlEl","cssClass","dataset","class","window","scrollY","$e766e32719d72692$export$2e2bcd8739ae039","ms","timeoutId","args","clearTimeout","setTimeout","apply","$5d3e390c775c8244$var$CSS","$5d3e390c775c8244$var$defaults","$5d3e390c775c8244$export$2e2bcd8739ae039","querySelectorAll","dom","$items","$track","querySelector","$nextBtn","$prevBtn","$changeBtns","itemCount","configurdDuration","duration","parseInt","timer","activeIndex","changeTo","index","currentTarget","setActive","enableTimer","itemWidth","clientWidth","offset","transform","parentElement","$btn","$5d3e390c775c8244$var$instance","_lgUtils","_lgUtils2","__esModule","_extends","assign","target","source","prototype","call","params","bubbles","cancelable","evt","createEvent","initCustomEvent","Event","lgData","lgModules","defaults","mode","cssEasing","easing","speed","height","width","startClass","backdropDuration","hideBarsDelay","useLeft","ariaLabelledby","ariaDescribedby","closable","loop","escKey","keyPress","controls","slideEndAnimatoin","hideControlOnEnd","mousewheel","getCaptionFromTitleOrAlt","appendSubHtmlTo","subHtmlSelectorRelative","preload","showAfterLoad","selector","selectWithin","nextHtml","prevHtml","iframeMaxWidth","download","counter","appendCounterTo","swipeThreshold","enableSwipe","enableDrag","dynamic","dynamicEl","galleryId","supportLegacyBrowser","Plugin","element","options","s","constructor","Array","modules","lGalleryOn","lgBusy","hideBartimeout","isTouch","documentElement","items","push","children","___slide","outer","init","_hash","location","hash","body","build","e","preventDefault","structure","slide","arrow","closeGallery","initialHideBarTimeout","template","list","subHtmlCont","insertAdjacentHTML","focus","setTop","doCss","inner","prevScrollTop","scrollTop","wH","innerHeight","top","lGallery","transition","root","support","isVideo","src","html","html5","youtube","match","vimeo","dailymotion","vk","addHtml","currentEle","subHtml","fL","innerHTML","j","loadContent","rec","delay","_img","_src","_poster","_srcset","_sizes","_html","_alt","_hasPoster","getResponsiveSrc","srcItms","rsWidth","rsSrc","__src","splice","wWidth","innerWidth","poster","alt","responsive","srcset","sizes","iframe","_isVideo","videoClass","picturefill","elements","console","warn","_speed","fromTouch","fromThumb","_prevIndex","_length","_time","_next","_prev","downloadUrl","getElementById","prevIndex","arrowDisable","touchPrev","touchNext","goToNextSlide","goToPrevSlide","keyCode","destroy","next","prev","removeAttribute","setTranslate","xValue","yValue","left","touchMove","startCoords","endCoords","distance","Math","abs","touchEnd","opacity","isMoved","manageSwipeClass","targetTouches","pageX","isDraging","scrollLeft","deltaY","mousedown","d","lguid","err","lightGallery","error","parcelRequire","r","n","t","o","f","c","u","a","Error","code","p","require1","module1","global","mod","lgVideo","videoDefaults","videoMaxWidth","autoplayFirstVideo","youtubePlayerParams","vimeoPlayerParams","dailymotionPlayerParams","vkPlayerParams","videojs","videojsOptions","Video","core","videoLoaded","loadVideo","play","maxWidth","loadOnClick","display","youtubePlayer","vimeoPlayer","dailymotionPlayer","html5Player","contentWindow","postMessage","Vimeo","Player","catch","name","e1","_loadVideo","$tempImg","$videoSlide","vkPlayer","pause","noposter","videoTitle","video","autoplay","title","firstImage","$91f6069a7f09231f$var$lightGallery","$91f6069a7f09231f$export$2e2bcd8739ae039","$91f6069a7f09231f$var$instance","CLASS","SELECTOR","attributes","IntersectionObserver","entry","$entry","isIntersecting","isRepeat","observer","unobserve","entries","checkEntry","rootMargin","threshold","$10e77214495e4331$var$regexFindNumbers","$10e77214495e4331$var$animateValue","$elementContainingNumber","start","end","startTimestamp","step","timestamp","progress","min","floor","toString","requestAnimationFrame","$10e77214495e4331$export$2e2bcd8739ae039","nums","JSON","parse","$wrapper","removeProperty","elementText","matchExecArray","matches","count","exec","stringify","observe","$5969335597108856$exports","Rellax","$parcel$global","self","create","posY","screenY","posX","screenX","blocks","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","callback","loopId","supportsPassive","opts","get","clearLoop","cancelAnimationFrame","mozCancelAnimationFrame","transformProp","testEl","vendors","vendor","verticalSpeed","horizontalSpeed","breakpoints","center","relativeToWrapper","round","vertical","horizontal","verticalScrollAxis","horizontalScrollAxis","isArray","lastVal","isAscending","isNumerical","validateCustomBreakpoints","elems","nodeType","currentBreakpoint","cssText","w","bp","setPosition","block","createBlock","cacheBlocks","animate","update","mapBreakpoints","dataPercentage","dataSpeed","dataXsSpeed","dataMobileSpeed","dataTabletSpeed","dataDesktopSpeed","dataVerticalSpeed","dataHorizontalSpeed","dataVericalScrollAxis","dataHorizontalScrollAxis","dataZindex","dataMin","dataMax","dataMinX","dataMaxX","dataMinY","dataMaxY","xs","sm","md","lg","wrapperPosY","pageYOffset","offsetTop","pageXOffset","blockTop","getBoundingClientRect","blockHeight","clientHeight","offsetHeight","scrollHeight","blockLeft","blockWidth","offsetWidth","scrollWidth","percentageY","percentageX","Number","bases","updatePosition","searchResult","trimmedStyle","delimiter","baseX","x","baseY","y","zindex","max","minX","maxX","minY","maxY","oldY","oldX","scrollPosY","result","valueX","valueY","deferredUpdate","passive","positions","verticalScrollX","verticalScrollY","horizontalScrollX","positionY","positionX","translate","refresh","$c0e8681d04857e7e$var$defaults","percentage","$c0e8681d04857e7e$export$2e2bcd8739ae039","hasInstance","hasAttribute","rellax","$parcel$interopDefault","onload","$b6b27d51190a5009$export$2e2bcd8739ae039","$scrollElements","rect","scrollBy","CSS_VISIBLE","validHideKeyCodes","validShowKeyCodes","show","hide","$html","stopImmediatePropagation","$target","$htmlElement","toggleVisibility","checkKeyboardShortcutForToggle","attachEvent","readyState","$8ce035caea21363b$var$timer","$33247863d2fc8f66$var$scrollBehaviour","$9ebc6bc63f24c722$export$2e2bcd8739ae039","onItemSelect","$selectedItem","$anchor","$665e108a81b796ed$var$deselectItem","$parent","$665e108a81b796ed$var$selectItem","$139fe293bc3f8aa6$export$2e2bcd8739ae039","$8ce035caea21363b$var$checkCanInit"],"version":3,"file":"index.js.map"}