{"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","Assets/Scripts/components/closeMenuOnAnchorClick/index.ts","node_modules/lg-video.js/dist/lg-video.js","Assets/Scripts/components/gallery/index.ts","Assets/Scripts/components/iframeModal/index.ts","Assets/Scripts/components/inViewport/index.ts","Assets/Scripts/components/nav/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/scrollbarWidth/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});","/*\n * Applies a class when page height has been scrolled\n */\nconst SELECTOR = \".js-add-class-on-scroll\";\nconst defaultCSS = \"page-scrolled\";\nlet pageHeight: number;\nlet $scrollElements: NodeListOf;\n\nconst scrollBehaviour = () => {\n $scrollElements.forEach(($el: Element) => {\n const $htmlEl = $el as HTMLElement;\n let cssClass = defaultCSS;\n\n if ($htmlEl.dataset.class) {\n cssClass = $htmlEl.dataset.class;\n }\n\n if (window.scrollY > pageHeight) {\n $el.classList.add(cssClass);\n return;\n }\n\n $el.classList.remove(cssClass);\n });\n};\n\nconst addClassOnScroll = () => {\n $scrollElements = document.querySelectorAll(SELECTOR);\n if (!$scrollElements.length) {\n return;\n }\n\n pageHeight = window.innerHeight;\n\n scrollBehaviour();\n\n document.addEventListener(\"scroll\", scrollBehaviour);\n\n window.addEventListener(\"resize\", () => {\n pageHeight = window.innerHeight;\n });\n};\n\nexport default addClassOnScroll;\n","const defaultDelay = 250;\n\nconst debounce = (fn: () => void, ms: number = defaultDelay) => {\n let timeoutId: ReturnType;\n\n return function (this: any, ...args: []) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn.apply(this, args), ms);\n };\n};\n\nexport default debounce;\n","/*\n * Handles showing multiple featured items within a carousel.\n */\n\nimport debounce from \"../../utils/debounce\";\n\nconst CSS = {\n active: \"is-active\",\n};\n\nconst defaults = {\n duration: 5000,\n};\n\nconst instance = ($el: Element) => {\n const dom = {\n $items: $el.querySelectorAll(\".js-carousel-item\"),\n $track: $el.querySelector(\".js-carousel-track\") as HTMLElement,\n $nextBtn: $el.querySelector(\".js-next-btn\"),\n $prevBtn: $el.querySelector(\".js-prev-btn\"),\n $changeBtns: $el.querySelectorAll(\".js-change-to-btn\"),\n };\n\n const itemCount: number = dom.$items.length;\n\n const configurdDuration: string | null = $el.getAttribute(\"data-duration\");\n let duration: number = defaults.duration;\n\n if (configurdDuration !== null) {\n duration = parseInt(configurdDuration, 10);\n }\n\n let activeIndex = 0;\n let timer: number;\n\n const changeTo = (event: Event) => {\n const index: string | null = (\n event.currentTarget as HTMLButtonElement\n ).getAttribute(\"data-index\");\n\n if (index !== null) {\n setActive(parseInt(index, 10));\n }\n };\n\n const enableTimer = () => {\n if (duration === 0 || dom.$items.length < 2) {\n return;\n }\n\n timer = window.setTimeout(() => {\n if (activeIndex + 1 === itemCount) {\n setActive(0);\n return;\n }\n\n setActive(activeIndex + 1);\n }, duration);\n };\n\n const next = () => {\n setActive(activeIndex + 1);\n };\n\n const previous = () => {\n setActive(activeIndex - 1);\n };\n\n const setActive = (index: number) => {\n clearTimeout(timer);\n const itemWidth = dom.$items[0].clientWidth;\n\n if (index >= itemCount) {\n index = 0;\n }\n\n if (index === -1) {\n index = itemCount - 1;\n }\n\n const offset = itemWidth * index * -1;\n\n dom.$items[activeIndex].classList.remove(CSS.active);\n dom.$track.style.transform = `translateX(${offset}px)`;\n dom.$items[index].classList.add(CSS.active);\n\n let parentElement: HTMLElement | null =\n dom.$changeBtns[activeIndex].parentElement;\n\n if (parentElement !== null) {\n parentElement.classList.remove(CSS.active);\n }\n\n parentElement = dom.$changeBtns[index].parentElement;\n\n if (parentElement !== null) {\n parentElement.classList.add(CSS.active);\n }\n\n activeIndex = index;\n\n enableTimer();\n };\n\n if (dom.$nextBtn) {\n dom.$nextBtn.addEventListener(\"click\", next);\n }\n\n if (dom.$prevBtn) {\n dom.$prevBtn.addEventListener(\"click\", previous);\n }\n\n for (const $btn of dom.$changeBtns) {\n $btn.addEventListener(\"click\", changeTo);\n }\n\n window.addEventListener(\n \"resize\",\n debounce(() => {\n // Reset on resize\n // (as item width will otherwise cause layout issues)\n dom.$track.style.transform = \"translateX(0)\";\n })\n );\n\n enableTimer();\n};\n\nconst carousel = () => {\n const SELECTOR = \".js-carousel\";\n\n document.querySelectorAll(SELECTOR).forEach(($el) => {\n instance($el);\n });\n};\n\nexport default carousel;\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});","const MENU_LINK_SELECTOR = '.nav__item a[href^=\"#\"], .nav__item a[href^=\"/#\"]';\nconst CSS_VISIBLE = \"is-nav-visible\";\n\nconst closeMenuOnAnchorClick = () => {\n const menuLinks = document.querySelectorAll(MENU_LINK_SELECTOR);\n const $html = document.querySelector(\"html\") as HTMLHtmlElement;\n\n menuLinks.forEach((link) => {\n link.addEventListener(\"click\", (e) => {\n $html.classList.remove(CSS_VISIBLE);\n return true;\n });\n });\n};\n\nexport default closeMenuOnAnchorClick;\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","/*\n * Gallery lightbox\n */\n\n// lightgallery.js must come before lg-video otherwise an\n// undefined error occurs\n\n/* tslint:disable */\nimport \"lightgallery.js\";\nimport \"lg-video.js\";\n/* tslint:enable */\n\nconst lightGallery = (window as any).lightGallery;\n\nconst instance = ($el: Element) => {\n // Handle multiple images/links\n lightGallery($el, {\n getCaptionFromTitleOrAlt: false,\n hideBarsDelay: 0,\n selector: \"a\",\n videoMaxWidth: \"100%\",\n });\n};\n\nconst gallery = () => {\n const SELECTOR = \".js-gallery\";\n\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\n instance($el);\n });\n};\n\nexport default gallery;\n","/*\n * iframeModal lightbox\n */\n\n/* tslint:disable */\nimport \"lightgallery.js\";\n/* tslint:enable */\n\nconst lightGallery = (window as any).lightGallery;\n\nconst instance = ($el: Element) => {\n const isWide = () => {\n return $el.getAttribute(\"data-wide\") === \"true\";\n };\n\n // Handle multiple images/links\n lightGallery($el, {\n counter: false,\n download: false,\n getCaptionFromTitleOrAlt: false,\n height: \"100%\",\n hideBarsDelay: 0,\n iframeMaxWidth: \"100%\",\n selector: \"this\",\n videoMaxWidth: \"100%\",\n });\n\n $el.addEventListener(\n \"onAfterOpen\",\n (e) => {\n const $wrapper = document.getElementsByClassName(\"lg-video\");\n if ($wrapper.length < 0) {\n return;\n }\n\n if (!isWide()) {\n $wrapper[0].classList.add(\"lg-iframe\");\n }\n },\n false\n );\n\n $el.addEventListener(\n \"onAfterClose\",\n (e) => {\n const $wrapper = document.getElementsByClassName(\"lg-video\");\n if ($wrapper.length < 0) {\n return;\n }\n\n if (!isWide()) {\n $wrapper[0].classList.remove(\"lg-iframe\");\n }\n },\n false\n );\n};\n\nconst iframeModal = () => {\n const SELECTOR = \".js-iframe-modal\";\n\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\n instance($el);\n });\n};\n\nexport default iframeModal;\n","/*\n * Applies special classes to relevant items when they're scrolled into view.\n * This can be used to apply animation or other CSS behaviour\n * that should occur when an element becomes visible\n */\nconst inViewport = () => {\n const CLASS = \"in-viewport\";\n const SELECTOR = \".js-in-viewport\";\n const attributes = {\n REPEAT: \"data-repeat\",\n };\n\n if (typeof IntersectionObserver === \"undefined\") {\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\n $el.classList.add(CLASS);\n });\n\n return;\n }\n\n const checkEntry = (entry: IntersectionObserverEntry) => {\n const $entry = entry.target as HTMLHtmlElement;\n\n if (entry.isIntersecting) {\n $entry.classList.add(CLASS);\n\n if (!isRepeat($entry)) {\n observer.unobserve($entry);\n }\n\n return;\n }\n\n $entry.classList.remove(CLASS);\n };\n\n const callback = (entries: IntersectionObserverEntry[]) => {\n entries.forEach(checkEntry);\n };\n\n const isRepeat = ($el: HTMLHtmlElement) => {\n return $el.getAttribute(attributes.REPEAT) === \"true\";\n };\n\n const observer = new IntersectionObserver(callback, {\n rootMargin: \"0px\",\n threshold: 0,\n });\n\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\n observer.observe($el as HTMLElement);\n });\n};\n\nexport default inViewport;\n","const CSS_SELECTED = \"is-selected\";\n\n/*\n * Reverts selected state on provided item.\n */\nconst deselectItem = ($el: Element) => {\n $el.classList.remove(CSS_SELECTED);\n\n const $anchor = $el.querySelector(\"a\");\n\n if ($anchor) {\n $anchor.setAttribute(\"aria-expanded\", \"false\");\n }\n};\n\n/*\n * Returns whether the navigation item has any sub items.\n */\nconst hasSubItems = ($el: Element): boolean => {\n if (!$el.parentNode) {\n return false;\n }\n\n return $el.parentNode.children.length > 1;\n};\n\n/*\n * Sets the selected state on provided item.\n */\nconst selectItem = ($el: Element) => {\n const $parent = $el.parentNode as Element;\n\n if (!$parent) {\n return;\n }\n\n $parent.classList.add(CSS_SELECTED);\n $el.setAttribute(\"aria-expanded\", \"true\");\n};\n\n/*\n * Initialises a new navigation component.\n */\nconst instance = ($el: Element) => {\n /**\n * Handles a top level item being selected but unselecting the currently\n * selected item and setting the top level item has selected, unless it\n * was already selected.\n */\n const onItemSelect = (e: Event) => {\n e.stopImmediatePropagation();\n e.preventDefault();\n\n const $selectedItem = $el.querySelector(`.${CSS_SELECTED}`);\n const $target = e.currentTarget as Element;\n\n // de-select the currently selected item if there is one.\n if ($selectedItem) {\n deselectItem($selectedItem);\n }\n\n if ($target && $selectedItem !== $target.parentNode) {\n selectItem($target);\n }\n };\n\n $el.querySelectorAll(\".js-nav-parent-link\").forEach(($anchor: Element) => {\n if (!hasSubItems($anchor)) {\n return;\n }\n\n $anchor.addEventListener(\"click\", onItemSelect);\n });\n};\n\n/*\n * Initialises each element matching the selector.\n */\nconst nav = () => {\n const SELECTOR = \".js-nav\";\n\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\n instance($el);\n });\n};\n\nexport default nav;\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\";\n\nconst defaults = {\n percentage: 0.5,\n speed: 4,\n};\n\nconst parallax = () => {\n let hasInstance = false;\n\n document.querySelectorAll(\".js-parallax\").forEach(($el: Element) => {\n if (!$el.hasAttribute(\"data-rellax-percentage\")) {\n $el.setAttribute(\n \"data-rellax-percentage\",\n defaults.percentage.toString()\n );\n }\n\n if (!$el.hasAttribute(\"data-rellax-speed\")) {\n $el.setAttribute(\"data-rellax-speed\", defaults.speed.toString());\n }\n\n hasInstance = true;\n });\n\n if (!hasInstance) {\n return;\n }\n\n const rellax = new Rellax(\".js-parallax\");\n\n window.onload = () => {\n rellax.refresh();\n };\n};\n\nexport default parallax;\n","const SELECTOR = \".js-scroll-down\";\nconst animationFactor = 1.5;\n\nconst scrollDown = () => {\n const $scrollElements = document.querySelectorAll(SELECTOR);\n if (!$scrollElements.length) {\n return;\n }\n\n $scrollElements.forEach(($el: Element) => {\n $el.addEventListener(\"click\", () => {\n const rect = $el.getBoundingClientRect();\n\n // Animation factor included so if you click something while it's\n // in motion, you scroll far enough away, based on current value\n // of transform used in animation.\n window.scrollBy(0, rect.top + $el.clientHeight * animationFactor);\n });\n });\n};\n\nexport default scrollDown;\n","import { KEY_DOWN, KEY_UP, SPACE } from \"../../utils/keyCode\";\n\n/*\n * Initialises the toggle nav button that's responsible for showing/hiding\n * the main menu (likely on smaller devices).\n */\nconst toggleNav = () => {\n const CSS_VISIBLE = \"is-nav-visible\";\n const SELECTOR = \".js-nav-button\";\n\n const validHideKeyCodes = [KEY_UP];\n const validShowKeyCodes = [KEY_DOWN, SPACE];\n\n const $html = document.querySelector(\"html\") as HTMLHtmlElement;\n\n const checkKeyboardShortcutForToggle = (e: KeyboardEvent) => {\n if (validShowKeyCodes.indexOf(e.keyCode) >= 0) {\n show();\n return;\n }\n\n if (validHideKeyCodes.indexOf(e.keyCode) >= 0) {\n hide();\n return;\n }\n };\n\n const hide = ($el: Element | null = null) => {\n $html.classList.remove(CSS_VISIBLE);\n\n if ($el) {\n $el.setAttribute(\"aria-expanded\", \"false\");\n }\n };\n\n const show = ($el: Element | null | undefined = null) => {\n $html.classList.add(CSS_VISIBLE);\n\n if ($el) {\n $el.setAttribute(\"aria-expanded\", \"true\");\n }\n };\n\n const toggleVisibility = (e: MouseEvent) => {\n if (e) {\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n\n const $target = (e.currentTarget as Element) || null;\n\n if ($html.classList.contains(CSS_VISIBLE)) {\n hide($target);\n return;\n }\n\n show($target);\n };\n\n document.querySelectorAll(SELECTOR).forEach(($el: Element) => {\n const $htmlElement = $el as HTMLElement;\n\n $htmlElement.addEventListener(\"click\", toggleVisibility);\n $htmlElement.addEventListener(\n \"keydown\",\n checkKeyboardShortcutForToggle\n );\n });\n};\n\nexport default toggleNav;\n","export const KEY_UP = 38;\nexport const KEY_DOWN = 40;\nexport const SPACE = 32;\n","import addClassOnScroll from \"./components/addClassOnScroll\";\nimport carousel from \"./components/carousel\";\nimport closeMenuOnAnchorClick from \"./components/closeMenuOnAnchorClick\";\nimport gallery from \"./components/gallery\";\nimport iframeModal from \"./components/iframeModal\";\nimport inViewport from \"./components/inViewport\";\nimport nav from \"./components/nav\";\nimport parallax from \"./components/parallax\";\nimport scrollDown from \"./components/scrollDown\";\nimport scrollbarWidth from \"./components/scrollbarWidth\";\nimport toggleNav from \"./components/toggleNav\";\n\n/*\n * Called once the page is loaded and handles initialising\n * the different components.\n */\nconst init = () => {\n addClassOnScroll();\n carousel();\n closeMenuOnAnchorClick();\n gallery();\n iframeModal();\n inViewport();\n nav();\n parallax();\n scrollDown();\n scrollbarWidth();\n toggleNav();\n};\n\nconst canInit = () => {\n const regReady = (window as any).attachEvent ? /d$|^c/ : /d$|^c|^i/;\n return regReady.test(document.readyState || \"\");\n};\n\nlet timer: NodeJS.Timeout;\n\nconst checkCanInit = () => {\n if (canInit()) {\n if (timer) {\n clearTimeout(timer);\n }\n\n init();\n return;\n }\n\n timer = setTimeout(checkCanInit, 100);\n};\n\n// update DOM to indicate JavaScript is available\n// https://www.paulirish.com/2009/avoiding-the-fouc-v3/\ndocument.documentElement.className = document.documentElement.className.replace(\n /\\bno-js\\b/,\n \"js\"\n);\n\ncheckCanInit();\n","/*\n * Makes the scrollbar width available as a CSS variable.\n *\n * vw units return viewport width but assumes that scrollbars do not exist:\n * https://drafts.csswg.org/css-values-3/#viewport-relative-lengths\n * Scrollbar width changes per device, and is required if you want to\n * accurately create a 100vw element (inside a thinner element) which\n * accounts for the presence of a scrollbar.\n *\n * Example usage:\n * `width: calc(100vw - var(--scrollbarWidth));`\n */\n\nconst scrollbarWidth = () => {\n document.documentElement.style.setProperty(\n \"--scrollbarWidth\",\n `${window.innerWidth - document.documentElement.clientWidth}px`\n );\n};\n\nexport default scrollbarWidth;\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","customEvent","CustomEvent","detail","arguments","length","undefined","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","$33247863d2fc8f66$var$scrollBehaviour","$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","$a9487c4a28336032$export$2e2bcd8739ae039","menuLinks","$html","link","e","_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","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","_loadVideo","$tempImg","$videoSlide","vkPlayer","pause","noposter","videoTitle","video","autoplay","title","firstImage","$91f6069a7f09231f$var$lightGallery","$91f6069a7f09231f$export$2e2bcd8739ae039","$91f6069a7f09231f$var$instance","$31ddeb7e9599b098$var$lightGallery","$31ddeb7e9599b098$export$2e2bcd8739ae039","isWide","$wrapper","getElementsByClassName","$31ddeb7e9599b098$var$instance","$9ebc6bc63f24c722$export$2e2bcd8739ae039","CLASS","SELECTOR","attributes","IntersectionObserver","checkEntry","entry","$entry","isIntersecting","isRepeat","observer","unobserve","entries","rootMargin","threshold","observe","$665e108a81b796ed$var$CSS_SELECTED","$665e108a81b796ed$var$instance","onItemSelect","stopImmediatePropagation","$selectedItem","$target","$anchor","$665e108a81b796ed$var$deselectItem","$parent","$665e108a81b796ed$var$selectItem","$665e108a81b796ed$var$hasSubItems","$5969335597108856$exports","Rellax","$parcel$global","self","create","posY","screenY","posX","screenX","blocks","requestAnimationFrame","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","exec","trimmedStyle","delimiter","baseX","x","baseY","y","zindex","min","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","toString","rellax","$parcel$interopDefault","onload","$b6b27d51190a5009$export$2e2bcd8739ae039","$scrollElements","rect","scrollBy","$139fe293bc3f8aa6$export$2e2bcd8739ae039","CSS_VISIBLE","validHideKeyCodes","validShowKeyCodes","checkKeyboardShortcutForToggle","show","hide","toggleVisibility","$htmlElement","$8ce035caea21363b$var$timer","$8ce035caea21363b$var$checkCanInit","attachEvent","readyState","setProperty"],"version":3,"file":"index.js.map"}