{"version":3,"file":"common.bundle.js","mappings":"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","sources":["webpack://enjoy-digital-frontend-foundation/./node_modules/scroll-lock/dist/scroll-lock.js","webpack://enjoy-digital-frontend-foundation/webpack/bootstrap","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/lazyGoogleMaps.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/helpers/debounce.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/accordion.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/tabs.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/raf.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/caf.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/extend.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/checkStorageValue.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/setLocalStorage.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/getBody.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/docElement.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/setFakeBody.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/resetFakeBody.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/addCSSRule.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/getCssRulesLength.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/forEach.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/classListSupport.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/hasClass.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/addClass.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/removeClass.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/hasAttr.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/getAttr.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/isNodeList.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/setAttrs.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/removeAttrs.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/arrayFromNodeList.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/hideElement.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/showElement.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/isVisible.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/whichProperty.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/getEndProperty.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/passiveOption.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/addEvents.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/removeEvents.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/events.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/tiny-slider.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/navigation.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/calc.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/percentageLayout.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/mediaquerySupport.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/has3DTransforms.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/getSlideId.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/createStyleSheet.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/jsTransform.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/removeCSSRule.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/toDegree.js","webpack://enjoy-digital-frontend-foundation/./node_modules/tiny-slider/src/helpers/getTouchDirection.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/helpers/swipe-direction.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/testimonialsCarousel.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/controlVh.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/overlay.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/ui/loader.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/save-job.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/sticky-nav.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/input.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/formValidator.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/breadcrumbs.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/popup.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/contentCarousel.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/locationMenu.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/helpers/youtube-related-video.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/video.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/lazyLoadImages.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/modal.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/up-arrow.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/application-select.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/adaptiveHeroMaskedContent.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/article-filter.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/faq.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/employersCarousel.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/checkFlexGap.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/file-upload.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/common.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/navigation-account-submenu.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/utmTracker.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/toast-message.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"scrollLock\"] = factory();\n\telse\n\t\troot[\"scrollLock\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./src/tools.js\nvar argumentAsArray = function argumentAsArray(argument) {\n return Array.isArray(argument) ? argument : [argument];\n};\nvar isElement = function isElement(target) {\n return target instanceof Node;\n};\nvar isElementList = function isElementList(nodeList) {\n return nodeList instanceof NodeList;\n};\nvar eachNode = function eachNode(nodeList, callback) {\n if (nodeList && callback) {\n nodeList = isElementList(nodeList) ? nodeList : [nodeList];\n\n for (var i = 0; i < nodeList.length; i++) {\n if (callback(nodeList[i], i, nodeList.length) === true) {\n break;\n }\n }\n }\n};\nvar throwError = function throwError(message) {\n return console.error(\"[scroll-lock] \".concat(message));\n};\nvar arrayAsSelector = function arrayAsSelector(array) {\n if (Array.isArray(array)) {\n var selector = array.join(', ');\n return selector;\n }\n};\nvar nodeListAsArray = function nodeListAsArray(nodeList) {\n var nodes = [];\n eachNode(nodeList, function (node) {\n return nodes.push(node);\n });\n return nodes;\n};\nvar findParentBySelector = function findParentBySelector($el, selector) {\n var self = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var $root = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : document;\n\n if (self && nodeListAsArray($root.querySelectorAll(selector)).indexOf($el) !== -1) {\n return $el;\n }\n\n while (($el = $el.parentElement) && nodeListAsArray($root.querySelectorAll(selector)).indexOf($el) === -1) {\n ;\n }\n\n return $el;\n};\nvar elementHasSelector = function elementHasSelector($el, selector) {\n var $root = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : document;\n var has = nodeListAsArray($root.querySelectorAll(selector)).indexOf($el) !== -1;\n return has;\n};\nvar elementHasOverflowHidden = function elementHasOverflowHidden($el) {\n if ($el) {\n var computedStyle = getComputedStyle($el);\n var overflowIsHidden = computedStyle.overflow === 'hidden';\n return overflowIsHidden;\n }\n};\nvar elementScrollTopOnStart = function elementScrollTopOnStart($el) {\n if ($el) {\n if (elementHasOverflowHidden($el)) {\n return true;\n }\n\n var scrollTop = $el.scrollTop;\n return scrollTop <= 0;\n }\n};\nvar elementScrollTopOnEnd = function elementScrollTopOnEnd($el) {\n if ($el) {\n if (elementHasOverflowHidden($el)) {\n return true;\n }\n\n var scrollTop = $el.scrollTop;\n var scrollHeight = $el.scrollHeight;\n var scrollTopWithHeight = scrollTop + $el.offsetHeight;\n return scrollTopWithHeight >= scrollHeight;\n }\n};\nvar elementScrollLeftOnStart = function elementScrollLeftOnStart($el) {\n if ($el) {\n if (elementHasOverflowHidden($el)) {\n return true;\n }\n\n var scrollLeft = $el.scrollLeft;\n return scrollLeft <= 0;\n }\n};\nvar elementScrollLeftOnEnd = function elementScrollLeftOnEnd($el) {\n if ($el) {\n if (elementHasOverflowHidden($el)) {\n return true;\n }\n\n var scrollLeft = $el.scrollLeft;\n var scrollWidth = $el.scrollWidth;\n var scrollLeftWithWidth = scrollLeft + $el.offsetWidth;\n return scrollLeftWithWidth >= scrollWidth;\n }\n};\nvar elementIsScrollableField = function elementIsScrollableField($el) {\n var selector = 'textarea, [contenteditable=\"true\"]';\n return elementHasSelector($el, selector);\n};\nvar elementIsInputRange = function elementIsInputRange($el) {\n var selector = 'input[type=\"range\"]';\n return elementHasSelector($el, selector);\n};\n// CONCATENATED MODULE: ./src/scroll-lock.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"disablePageScroll\", function() { return disablePageScroll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enablePageScroll\", function() { return enablePageScroll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getScrollState\", function() { return getScrollState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearQueueScrollLocks\", function() { return clearQueueScrollLocks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTargetScrollBarWidth\", function() { return scroll_lock_getTargetScrollBarWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCurrentTargetScrollBarWidth\", function() { return scroll_lock_getCurrentTargetScrollBarWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPageScrollBarWidth\", function() { return getPageScrollBarWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCurrentPageScrollBarWidth\", function() { return getCurrentPageScrollBarWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addScrollableTarget\", function() { return scroll_lock_addScrollableTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeScrollableTarget\", function() { return scroll_lock_removeScrollableTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addScrollableSelector\", function() { return scroll_lock_addScrollableSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeScrollableSelector\", function() { return scroll_lock_removeScrollableSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLockableTarget\", function() { return scroll_lock_addLockableTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLockableSelector\", function() { return scroll_lock_addLockableSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setFillGapMethod\", function() { return scroll_lock_setFillGapMethod; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addFillGapTarget\", function() { return scroll_lock_addFillGapTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeFillGapTarget\", function() { return scroll_lock_removeFillGapTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addFillGapSelector\", function() { return scroll_lock_addFillGapSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeFillGapSelector\", function() { return scroll_lock_removeFillGapSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"refillGaps\", function() { return refillGaps; });\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\nvar FILL_GAP_AVAILABLE_METHODS = ['padding', 'margin', 'width', 'max-width', 'none'];\nvar TOUCH_DIRECTION_DETECT_OFFSET = 3;\nvar state = {\n scroll: true,\n queue: 0,\n scrollableSelectors: ['[data-scroll-lock-scrollable]'],\n lockableSelectors: ['body', '[data-scroll-lock-lockable]'],\n fillGapSelectors: ['body', '[data-scroll-lock-fill-gap]', '[data-scroll-lock-lockable]'],\n fillGapMethod: FILL_GAP_AVAILABLE_METHODS[0],\n //\n startTouchY: 0,\n startTouchX: 0\n};\nvar disablePageScroll = function disablePageScroll(target) {\n if (state.queue <= 0) {\n state.scroll = false;\n scroll_lock_hideLockableOverflow();\n fillGaps();\n }\n\n scroll_lock_addScrollableTarget(target);\n state.queue++;\n};\nvar enablePageScroll = function enablePageScroll(target) {\n state.queue > 0 && state.queue--;\n\n if (state.queue <= 0) {\n state.scroll = true;\n scroll_lock_showLockableOverflow();\n unfillGaps();\n }\n\n scroll_lock_removeScrollableTarget(target);\n};\nvar getScrollState = function getScrollState() {\n return state.scroll;\n};\nvar clearQueueScrollLocks = function clearQueueScrollLocks() {\n state.queue = 0;\n};\nvar scroll_lock_getTargetScrollBarWidth = function getTargetScrollBarWidth($target) {\n var onlyExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (isElement($target)) {\n var currentOverflowYProperty = $target.style.overflowY;\n\n if (onlyExists) {\n if (!getScrollState()) {\n $target.style.overflowY = $target.getAttribute('data-scroll-lock-saved-overflow-y-property');\n }\n } else {\n $target.style.overflowY = 'scroll';\n }\n\n var width = scroll_lock_getCurrentTargetScrollBarWidth($target);\n $target.style.overflowY = currentOverflowYProperty;\n return width;\n } else {\n return 0;\n }\n};\nvar scroll_lock_getCurrentTargetScrollBarWidth = function getCurrentTargetScrollBarWidth($target) {\n if (isElement($target)) {\n if ($target === document.body) {\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n var currentWidth = windowWidth - documentWidth;\n return currentWidth;\n } else {\n var borderLeftWidthCurrentProperty = $target.style.borderLeftWidth;\n var borderRightWidthCurrentProperty = $target.style.borderRightWidth;\n $target.style.borderLeftWidth = '0px';\n $target.style.borderRightWidth = '0px';\n\n var _currentWidth = $target.offsetWidth - $target.clientWidth;\n\n $target.style.borderLeftWidth = borderLeftWidthCurrentProperty;\n $target.style.borderRightWidth = borderRightWidthCurrentProperty;\n return _currentWidth;\n }\n } else {\n return 0;\n }\n};\nvar getPageScrollBarWidth = function getPageScrollBarWidth() {\n var onlyExists = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return scroll_lock_getTargetScrollBarWidth(document.body, onlyExists);\n};\nvar getCurrentPageScrollBarWidth = function getCurrentPageScrollBarWidth() {\n return scroll_lock_getCurrentTargetScrollBarWidth(document.body);\n};\nvar scroll_lock_addScrollableTarget = function addScrollableTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.setAttribute('data-scroll-lock-scrollable', '');\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n }\n};\nvar scroll_lock_removeScrollableTarget = function removeScrollableTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.removeAttribute('data-scroll-lock-scrollable');\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n }\n};\nvar scroll_lock_addScrollableSelector = function addScrollableSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n state.scrollableSelectors.push(selector);\n });\n }\n};\nvar scroll_lock_removeScrollableSelector = function removeScrollableSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n state.scrollableSelectors = state.scrollableSelectors.filter(function (sSelector) {\n return sSelector !== selector;\n });\n });\n }\n};\nvar scroll_lock_addLockableTarget = function addLockableTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.setAttribute('data-scroll-lock-lockable', '');\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n\n if (!getScrollState()) {\n scroll_lock_hideLockableOverflow();\n }\n }\n};\nvar scroll_lock_addLockableSelector = function addLockableSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n state.lockableSelectors.push(selector);\n });\n\n if (!getScrollState()) {\n scroll_lock_hideLockableOverflow();\n }\n\n scroll_lock_addFillGapSelector(selector);\n }\n};\nvar scroll_lock_setFillGapMethod = function setFillGapMethod(method) {\n if (method) {\n if (FILL_GAP_AVAILABLE_METHODS.indexOf(method) !== -1) {\n state.fillGapMethod = method;\n refillGaps();\n } else {\n var methods = FILL_GAP_AVAILABLE_METHODS.join(', ');\n throwError(\"\\\"\".concat(method, \"\\\" method is not available!\\nAvailable fill gap methods: \").concat(methods, \".\"));\n }\n }\n};\nvar scroll_lock_addFillGapTarget = function addFillGapTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.setAttribute('data-scroll-lock-fill-gap', '');\n\n if (!state.scroll) {\n scroll_lock_fillGapTarget($target);\n }\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n }\n};\nvar scroll_lock_removeFillGapTarget = function removeFillGapTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.removeAttribute('data-scroll-lock-fill-gap');\n\n if (!state.scroll) {\n scroll_lock_unfillGapTarget($target);\n }\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n }\n};\nvar scroll_lock_addFillGapSelector = function addFillGapSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n if (state.fillGapSelectors.indexOf(selector) === -1) {\n state.fillGapSelectors.push(selector);\n\n if (!state.scroll) {\n scroll_lock_fillGapSelector(selector);\n }\n }\n });\n }\n};\nvar scroll_lock_removeFillGapSelector = function removeFillGapSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n state.fillGapSelectors = state.fillGapSelectors.filter(function (fSelector) {\n return fSelector !== selector;\n });\n\n if (!state.scroll) {\n scroll_lock_unfillGapSelector(selector);\n }\n });\n }\n};\nvar refillGaps = function refillGaps() {\n if (!state.scroll) {\n fillGaps();\n }\n};\n\nvar scroll_lock_hideLockableOverflow = function hideLockableOverflow() {\n var selector = arrayAsSelector(state.lockableSelectors);\n scroll_lock_hideLockableOverflowSelector(selector);\n};\n\nvar scroll_lock_showLockableOverflow = function showLockableOverflow() {\n var selector = arrayAsSelector(state.lockableSelectors);\n scroll_lock_showLockableOverflowSelector(selector);\n};\n\nvar scroll_lock_hideLockableOverflowSelector = function hideLockableOverflowSelector(selector) {\n var $targets = document.querySelectorAll(selector);\n eachNode($targets, function ($target) {\n scroll_lock_hideLockableOverflowTarget($target);\n });\n};\n\nvar scroll_lock_showLockableOverflowSelector = function showLockableOverflowSelector(selector) {\n var $targets = document.querySelectorAll(selector);\n eachNode($targets, function ($target) {\n scroll_lock_showLockableOverflowTarget($target);\n });\n};\n\nvar scroll_lock_hideLockableOverflowTarget = function hideLockableOverflowTarget($target) {\n if (isElement($target) && $target.getAttribute('data-scroll-lock-locked') !== 'true') {\n var computedStyle = window.getComputedStyle($target);\n $target.setAttribute('data-scroll-lock-saved-overflow-y-property', computedStyle.overflowY);\n $target.setAttribute('data-scroll-lock-saved-inline-overflow-property', $target.style.overflow);\n $target.setAttribute('data-scroll-lock-saved-inline-overflow-y-property', $target.style.overflowY);\n $target.style.overflow = 'hidden';\n $target.setAttribute('data-scroll-lock-locked', 'true');\n }\n};\n\nvar scroll_lock_showLockableOverflowTarget = function showLockableOverflowTarget($target) {\n if (isElement($target) && $target.getAttribute('data-scroll-lock-locked') === 'true') {\n $target.style.overflow = $target.getAttribute('data-scroll-lock-saved-inline-overflow-property');\n $target.style.overflowY = $target.getAttribute('data-scroll-lock-saved-inline-overflow-y-property');\n $target.removeAttribute('data-scroll-lock-saved-overflow-property');\n $target.removeAttribute('data-scroll-lock-saved-inline-overflow-property');\n $target.removeAttribute('data-scroll-lock-saved-inline-overflow-y-property');\n $target.removeAttribute('data-scroll-lock-locked');\n }\n};\n\nvar fillGaps = function fillGaps() {\n state.fillGapSelectors.map(function (selector) {\n scroll_lock_fillGapSelector(selector);\n });\n};\n\nvar unfillGaps = function unfillGaps() {\n state.fillGapSelectors.map(function (selector) {\n scroll_lock_unfillGapSelector(selector);\n });\n};\n\nvar scroll_lock_fillGapSelector = function fillGapSelector(selector) {\n var $targets = document.querySelectorAll(selector);\n var isLockable = state.lockableSelectors.indexOf(selector) !== -1;\n eachNode($targets, function ($target) {\n scroll_lock_fillGapTarget($target, isLockable);\n });\n};\n\nvar scroll_lock_fillGapTarget = function fillGapTarget($target) {\n var isLockable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (isElement($target)) {\n var scrollBarWidth;\n\n if ($target.getAttribute('data-scroll-lock-lockable') === '' || isLockable) {\n scrollBarWidth = scroll_lock_getTargetScrollBarWidth($target, true);\n } else {\n var $lockableParent = findParentBySelector($target, arrayAsSelector(state.lockableSelectors));\n scrollBarWidth = scroll_lock_getTargetScrollBarWidth($lockableParent, true);\n }\n\n if ($target.getAttribute('data-scroll-lock-filled-gap') === 'true') {\n scroll_lock_unfillGapTarget($target);\n }\n\n var computedStyle = window.getComputedStyle($target);\n $target.setAttribute('data-scroll-lock-filled-gap', 'true');\n $target.setAttribute('data-scroll-lock-current-fill-gap-method', state.fillGapMethod);\n\n if (state.fillGapMethod === 'margin') {\n var currentMargin = parseFloat(computedStyle.marginRight);\n $target.style.marginRight = \"\".concat(currentMargin + scrollBarWidth, \"px\");\n } else if (state.fillGapMethod === 'width') {\n $target.style.width = \"calc(100% - \".concat(scrollBarWidth, \"px)\");\n } else if (state.fillGapMethod === 'max-width') {\n $target.style.maxWidth = \"calc(100% - \".concat(scrollBarWidth, \"px)\");\n } else if (state.fillGapMethod === 'padding') {\n var currentPadding = parseFloat(computedStyle.paddingRight);\n $target.style.paddingRight = \"\".concat(currentPadding + scrollBarWidth, \"px\");\n }\n }\n};\n\nvar scroll_lock_unfillGapSelector = function unfillGapSelector(selector) {\n var $targets = document.querySelectorAll(selector);\n eachNode($targets, function ($target) {\n scroll_lock_unfillGapTarget($target);\n });\n};\n\nvar scroll_lock_unfillGapTarget = function unfillGapTarget($target) {\n if (isElement($target)) {\n if ($target.getAttribute('data-scroll-lock-filled-gap') === 'true') {\n var currentFillGapMethod = $target.getAttribute('data-scroll-lock-current-fill-gap-method');\n $target.removeAttribute('data-scroll-lock-filled-gap');\n $target.removeAttribute('data-scroll-lock-current-fill-gap-method');\n\n if (currentFillGapMethod === 'margin') {\n $target.style.marginRight = \"\";\n } else if (currentFillGapMethod === 'width') {\n $target.style.width = \"\";\n } else if (currentFillGapMethod === 'max-width') {\n $target.style.maxWidth = \"\";\n } else if (currentFillGapMethod === 'padding') {\n $target.style.paddingRight = \"\";\n }\n }\n }\n};\n\nvar onResize = function onResize(e) {\n refillGaps();\n};\n\nvar onTouchStart = function onTouchStart(e) {\n if (!state.scroll) {\n state.startTouchY = e.touches[0].clientY;\n state.startTouchX = e.touches[0].clientX;\n }\n};\n\nvar scroll_lock_onTouchMove = function onTouchMove(e) {\n if (!state.scroll) {\n var startTouchY = state.startTouchY,\n startTouchX = state.startTouchX;\n var currentClientY = e.touches[0].clientY;\n var currentClientX = e.touches[0].clientX;\n\n if (e.touches.length < 2) {\n var selector = arrayAsSelector(state.scrollableSelectors);\n var direction = {\n up: startTouchY < currentClientY,\n down: startTouchY > currentClientY,\n left: startTouchX < currentClientX,\n right: startTouchX > currentClientX\n };\n var directionWithOffset = {\n up: startTouchY + TOUCH_DIRECTION_DETECT_OFFSET < currentClientY,\n down: startTouchY - TOUCH_DIRECTION_DETECT_OFFSET > currentClientY,\n left: startTouchX + TOUCH_DIRECTION_DETECT_OFFSET < currentClientX,\n right: startTouchX - TOUCH_DIRECTION_DETECT_OFFSET > currentClientX\n };\n\n var handle = function handle($el) {\n var skip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if ($el) {\n var parentScrollableEl = findParentBySelector($el, selector, false);\n\n if (elementIsInputRange($el)) {\n return false;\n }\n\n if (skip || elementIsScrollableField($el) && findParentBySelector($el, selector) || elementHasSelector($el, selector)) {\n var prevent = false;\n\n if (elementScrollLeftOnStart($el) && elementScrollLeftOnEnd($el)) {\n if (direction.up && elementScrollTopOnStart($el) || direction.down && elementScrollTopOnEnd($el)) {\n prevent = true;\n }\n } else if (elementScrollTopOnStart($el) && elementScrollTopOnEnd($el)) {\n if (direction.left && elementScrollLeftOnStart($el) || direction.right && elementScrollLeftOnEnd($el)) {\n prevent = true;\n }\n } else if (directionWithOffset.up && elementScrollTopOnStart($el) || directionWithOffset.down && elementScrollTopOnEnd($el) || directionWithOffset.left && elementScrollLeftOnStart($el) || directionWithOffset.right && elementScrollLeftOnEnd($el)) {\n prevent = true;\n }\n\n if (prevent) {\n if (parentScrollableEl) {\n handle(parentScrollableEl, true);\n } else {\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n }\n } else {\n handle(parentScrollableEl);\n }\n } else {\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n };\n\n handle(e.target);\n }\n }\n};\n\nvar onTouchEnd = function onTouchEnd(e) {\n if (!state.scroll) {\n state.startTouchY = 0;\n state.startTouchX = 0;\n }\n};\n\nif (typeof window !== 'undefined') {\n window.addEventListener('resize', onResize);\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('touchstart', onTouchStart);\n document.addEventListener('touchmove', scroll_lock_onTouchMove, {\n passive: false\n });\n document.addEventListener('touchend', onTouchEnd);\n}\n\nvar deprecatedMethods = {\n hide: function hide(target) {\n throwError('\"hide\" is deprecated! Use \"disablePageScroll\" instead. \\n https://github.com/FL3NKEY/scroll-lock#disablepagescrollscrollabletarget');\n disablePageScroll(target);\n },\n show: function show(target) {\n throwError('\"show\" is deprecated! Use \"enablePageScroll\" instead. \\n https://github.com/FL3NKEY/scroll-lock#enablepagescrollscrollabletarget');\n enablePageScroll(target);\n },\n toggle: function toggle(target) {\n throwError('\"toggle\" is deprecated! Do not use it.');\n\n if (getScrollState()) {\n disablePageScroll();\n } else {\n enablePageScroll(target);\n }\n },\n getState: function getState() {\n throwError('\"getState\" is deprecated! Use \"getScrollState\" instead. \\n https://github.com/FL3NKEY/scroll-lock#getscrollstate');\n return getScrollState();\n },\n getWidth: function getWidth() {\n throwError('\"getWidth\" is deprecated! Use \"getPageScrollBarWidth\" instead. \\n https://github.com/FL3NKEY/scroll-lock#getpagescrollbarwidth');\n return getPageScrollBarWidth();\n },\n getCurrentWidth: function getCurrentWidth() {\n throwError('\"getCurrentWidth\" is deprecated! Use \"getCurrentPageScrollBarWidth\" instead. \\n https://github.com/FL3NKEY/scroll-lock#getcurrentpagescrollbarwidth');\n return getCurrentPageScrollBarWidth();\n },\n setScrollableTargets: function setScrollableTargets(target) {\n throwError('\"setScrollableTargets\" is deprecated! Use \"addScrollableTarget\" instead. \\n https://github.com/FL3NKEY/scroll-lock#addscrollabletargetscrollabletarget');\n scroll_lock_addScrollableTarget(target);\n },\n setFillGapSelectors: function setFillGapSelectors(selector) {\n throwError('\"setFillGapSelectors\" is deprecated! Use \"addFillGapSelector\" instead. \\n https://github.com/FL3NKEY/scroll-lock#addfillgapselectorfillgapselector');\n scroll_lock_addFillGapSelector(selector);\n },\n setFillGapTargets: function setFillGapTargets(target) {\n throwError('\"setFillGapTargets\" is deprecated! Use \"addFillGapTarget\" instead. \\n https://github.com/FL3NKEY/scroll-lock#addfillgaptargetfillgaptarget');\n scroll_lock_addFillGapTarget(target);\n },\n clearQueue: function clearQueue() {\n throwError('\"clearQueue\" is deprecated! Use \"clearQueueScrollLocks\" instead. \\n https://github.com/FL3NKEY/scroll-lock#clearqueuescrolllocks');\n clearQueueScrollLocks();\n }\n};\n\nvar scrollLock = _objectSpread({\n disablePageScroll: disablePageScroll,\n enablePageScroll: enablePageScroll,\n getScrollState: getScrollState,\n clearQueueScrollLocks: clearQueueScrollLocks,\n getTargetScrollBarWidth: scroll_lock_getTargetScrollBarWidth,\n getCurrentTargetScrollBarWidth: scroll_lock_getCurrentTargetScrollBarWidth,\n getPageScrollBarWidth: getPageScrollBarWidth,\n getCurrentPageScrollBarWidth: getCurrentPageScrollBarWidth,\n addScrollableSelector: scroll_lock_addScrollableSelector,\n removeScrollableSelector: scroll_lock_removeScrollableSelector,\n addScrollableTarget: scroll_lock_addScrollableTarget,\n removeScrollableTarget: scroll_lock_removeScrollableTarget,\n addLockableSelector: scroll_lock_addLockableSelector,\n addLockableTarget: scroll_lock_addLockableTarget,\n addFillGapSelector: scroll_lock_addFillGapSelector,\n removeFillGapSelector: scroll_lock_removeFillGapSelector,\n addFillGapTarget: scroll_lock_addFillGapTarget,\n removeFillGapTarget: scroll_lock_removeFillGapTarget,\n setFillGapMethod: scroll_lock_setFillGapMethod,\n refillGaps: refillGaps,\n _state: state\n}, deprecatedMethods);\n\n/* harmony default export */ var scroll_lock = __webpack_exports__[\"default\"] = (scrollLock);\n\n/***/ })\n/******/ ])[\"default\"];\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","export default function LazyGoogleMaps() {\r\n observeMaps();\r\n}\r\n\r\n//default config - these values are used if nothing is passed into the function via data attributes & picked up in lazyGoogleMaps_init()\r\nvar lazyGoogleMaps_defaultConfig = {\r\n mapStyle: [],\r\n mapTypeId: \"roadmap\",\r\n mapTypeControl: false,\r\n fullscreenControl: false,\r\n streetViewControl: false,\r\n zoomControl: true,\r\n keyboardShortcuts: false,\r\n draggable: true,\r\n zoomControlOptions: {\r\n style: 0\r\n },\r\n zoom: 11,\r\n center: { lat: 53.795231, lng: -1.538458 } //ultimate fall back to Enjoy Digital office. Only really used if default (map center) lat & lng set to blank in view\r\n};\r\n\r\nvar markerIcon = [ //svg marker\r\n '',\r\n '',\r\n ''\r\n ].join('\\n')\r\n\r\nfunction observeMaps() {\r\n var lazyGoogleMaps = document.querySelectorAll(\".lazyGoogleMap\");\r\n\r\n\r\n if (!('IntersectionObserver' in window) ||\r\n !('IntersectionObserverEntry' in window) ||\r\n !('intersectionRatio' in window.IntersectionObserverEntry.prototype)) {\r\n // Older browser fallback for when Intersection Observer isn't supported\r\n\r\n for (var i = 0; i < lazyGoogleMaps.length; i++) {\r\n initMap(lazyGoogleMaps[i]);\r\n }\r\n }\r\n else {\r\n var observerOptions = {\r\n rootMargin: '350px',\r\n threshold: 0\r\n };\r\n var observer = new IntersectionObserver(function (entries, observer) {\r\n entries.forEach(function (entry) {\r\n if (entry.isIntersecting) {\r\n var target = entry.target;\r\n initMap(target);\r\n observer.unobserve(target);\r\n }\r\n });\r\n }, observerOptions);\r\n\r\n lazyGoogleMaps.forEach(function (lazyGoogleMap) {\r\n observer.observe(lazyGoogleMap);\r\n });\r\n }\r\n}\r\n\r\nfunction initMap(lazyGoogleMap) {\r\n\r\n lazyGoogleMap.classList.add(\"init\");\r\n\r\n var scriptCheck = document.querySelectorAll(\"script[src*='//maps.googleapis.com/maps/api/js']\");\r\n if (scriptCheck.length === 0) {\r\n var mapsJS = document.createElement('script');\r\n mapsJS.src = 'https://maps.googleapis.com/maps/api/js?callback=lazyGoogleMaps_init&key=' + lazyGoogleMap.getAttribute(\"data-key\");\r\n mapsJS.async = true;\r\n document.getElementsByTagName('head')[0].appendChild(mapsJS);\r\n }\r\n else {\r\n setLazyGoogleMapsOptions();\r\n }\r\n};\r\n\r\nwindow.lazyGoogleMaps_init = function() { //called by Google Maps script from the page, we have to set this on the window object or it's inaccessible \r\n var lazyGoogleMaps = document.querySelectorAll(\".lazyGoogleMap.init\");\r\n \r\n for (var i = 0; i < lazyGoogleMaps.length; i++) {\r\n var lazyGoogleMap = lazyGoogleMaps[i]; \r\n var lazyGoogleMap_config = lazyGoogleMaps_defaultConfig;\r\n \r\n if (lazyGoogleMap.hasAttribute(\"data-lat\") && lazyGoogleMap.getAttribute(\"data-lat\") !== \"\" &&\r\n lazyGoogleMap.hasAttribute(\"data-lng\") && lazyGoogleMap.getAttribute(\"data-lng\") !== \"\") {\r\n var defaultPosition = { lat: parseFloat(lazyGoogleMap.getAttribute(\"data-lat\")), lng: parseFloat(lazyGoogleMap.getAttribute(\"data-lng\")) };\r\n lazyGoogleMap_config.center = defaultPosition;\r\n }\r\n \r\n if (lazyGoogleMap.hasAttribute(\"data-zoom\") && lazyGoogleMap.getAttribute(\"data-zoom\") !== \"\") {\r\n var defaultZoom = parseFloat(lazyGoogleMap.getAttribute(\"data-zoom\"));\r\n lazyGoogleMap_config.zoom = defaultZoom;\r\n }\r\n\r\n if (lazyGoogleMap.hasAttribute(\"data-map-type\") && lazyGoogleMap.getAttribute(\"data-map-type\") !== \"\") {\r\n var defaultMapType = lazyGoogleMap.getAttribute(\"data-map-type\");\r\n lazyGoogleMap_config.mapTypeId = defaultMapType;\r\n }\r\n\r\n if (typeof(mapStyle) != \"undefined\") {\r\n var defaultMapStyle = mapStyle;\r\n lazyGoogleMap_config.mapStyle = defaultMapStyle;\r\n }\r\n\r\n let map;\r\n\r\n map = new google.maps.Map(document.getElementById(\"map\"), {\r\n center: lazyGoogleMap_config.center,\r\n zoom: lazyGoogleMap_config.zoom,\r\n mapTypeId: lazyGoogleMap_config.mapTypeId == \"styled_map\" ? \"roadmap\" : lazyGoogleMap_config.mapTypeId,\r\n styles: lazyGoogleMap_config.mapStyle,\r\n mapTypeControl: lazyGoogleMap_config.mapTypeControl,\r\n scaleControl: lazyGoogleMap_config.scaleControl,\r\n fullscreenControl: lazyGoogleMap_config.fullscreenControl,\r\n streetViewControl: lazyGoogleMap_config.streetViewControl,\r\n zoomControl: lazyGoogleMap_config.zoomControl,\r\n keyboardShortcuts: lazyGoogleMap_config.keyboardShortcuts,\r\n draggable: lazyGoogleMap_config.draggable,\r\n zoomControlOptions: lazyGoogleMap_config.zoomControlOptions\r\n });\r\n\r\n if (lazyGoogleMap.hasAttribute(\"data-marker-title\") && lazyGoogleMap.getAttribute(\"data-marker-title\") !== \"\") {\r\n var defaultMarkerTitle = parseFloat(lazyGoogleMap.getAttribute(\"data-marker-title\"));\r\n marker_defaultConfig.title = defaultMarkerTitle;\r\n }\r\n\r\n new google.maps.Marker({\r\n map,\r\n position: map.getCenter(),\r\n icon: {\r\n url: 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(markerIcon)\r\n , scaledSize: new google.maps.Size(42, 64)\r\n },\r\n });\r\n\r\n lazyGoogleMap.classList.remove(\"init\");\r\n lazyGoogleMap.classList.add(\"loaded\");\r\n }\r\n}","const DEBOUNCE_INTERVAL_IN_MS = 300;\r\n\r\nexport default function debounce(cb) {\r\n let lastTimeout = null;\r\n\r\n return function () {\r\n const parameters = arguments;\r\n if (lastTimeout) {\r\n clearTimeout(lastTimeout);\r\n }\r\n lastTimeout = setTimeout(function () {\r\n cb.apply(null, parameters);\r\n }, DEBOUNCE_INTERVAL_IN_MS);\r\n };\r\n}\r\n","import debounce from '../helpers/debounce.js';\r\n\r\nconst DELAY = '300';\r\nconst STICKY_NAV_HEIGHT = 80;\r\n\r\nexport default function AccordionInit() {\r\n initAccordion();\r\n}\r\n\r\nfunction initAccordion() {\r\n const accordionContainers = document.querySelectorAll(\r\n '.js-accordion-container'\r\n );\r\n\r\n for (let container of accordionContainers) {\r\n const accordion = new Accordion(container);\r\n\r\n accordion.initialize();\r\n }\r\n}\r\n\r\nclass Accordion {\r\n constructor(accordion) {\r\n this.accordion = accordion;\r\n this.accordionHeight = null;\r\n this.currentWidth = window.innerWidth;\r\n this.showedItems = this.accordion.dataset.showedItems;\r\n this.button = this.accordion.querySelector('.js-accordion-button');\r\n this.collapsedContainer = this.accordion.querySelector(\r\n '[data-accordion-collapsed]'\r\n );\r\n this.items = this.accordion.querySelectorAll('[data-accordion-item]');\r\n this.disableWidth = accordion.dataset.disableAccordionWidth;\r\n }\r\n\r\n initialize() {\r\n if (\r\n !this.showedItems ||\r\n !this.button ||\r\n !this.collapsedContainer ||\r\n !this.items\r\n )\r\n return;\r\n\r\n if (this.items.length < +this.showedItems + 1) {\r\n this.button.style.display = 'none';\r\n } else {\r\n this.calculateAccordionHeight();\r\n if (\r\n this.disableWidth &&\r\n document.documentElement.clientWidth > Number(this.disableWidth)\r\n ) {\r\n this.collapsedContainer.style.maxHeight = 'none';\r\n } else {\r\n setTimeout(() => {\r\n this.collapsedContainer.style.maxHeight = `${this.accordionHeight}px`;\r\n }, 1);\r\n }\r\n\r\n this.button.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n if (this.accordion.classList.contains('is-collapsed')) {\r\n this.collapsedContainer.style.maxHeight = '2000px';\r\n this.accordion.classList.remove('is-collapsed');\r\n setTimeout(() => {\r\n this.button.innerHTML = 'Show less';\r\n }, DELAY);\r\n } else {\r\n this.collapsedContainer.style.maxHeight = `${this.accordionHeight}px`;\r\n this.accordion.classList.add('is-collapsed');\r\n const coords =\r\n this.accordion.parentElement.getBoundingClientRect();\r\n window.scrollTo({\r\n top:\r\n coords.top + window.pageYOffset - STICKY_NAV_HEIGHT,\r\n behavior: 'smooth',\r\n });\r\n setTimeout(() => {\r\n this.button.innerHTML = 'Show more';\r\n }, DELAY);\r\n }\r\n });\r\n\r\n window.addEventListener(\r\n 'resize',\r\n debounce(() => {\r\n if (this.currentWidth == window.innerWidth) return;\r\n this.currentWidth = window.innerWidth;\r\n this.calculateAccordionHeight();\r\n if (\r\n this.disableWidth &&\r\n document.documentElement.clientWidth >\r\n Number(this.disableWidth)\r\n ) {\r\n this.collapsedContainer.style.maxHeight = 'none';\r\n } else {\r\n this.collapsedContainer.style.maxHeight = `${this.accordionHeight}px`;\r\n }\r\n\r\n setTimeout(() => {\r\n this.accordion.classList.add('is-collapsed');\r\n this.button.innerHTML = 'Show more';\r\n }, DELAY);\r\n })\r\n );\r\n }\r\n }\r\n\r\n calculateAccordionHeight() {\r\n let accordionHeight = 0;\r\n\r\n for (let i = 0; i < this.showedItems; i++) {\r\n const itemHeight = this.items[i].offsetHeight\r\n ? this.items[i].offsetHeight\r\n : this.getHiddenHeight(this.items[i]);\r\n accordionHeight += itemHeight;\r\n }\r\n\r\n if (+this.accordion.dataset.marginHeight != 0) {\r\n accordionHeight +=\r\n this.showedItems * this.accordion.dataset.marginHeight;\r\n }\r\n\r\n this.accordionHeight = accordionHeight;\r\n }\r\n\r\n // Calculate height of hidden accordion elements, for example in tabs\r\n getHiddenHeight(el) {\r\n if (!el?.cloneNode) {\r\n return null;\r\n }\r\n\r\n const clone = el.cloneNode(true);\r\n\r\n Object.assign(clone.style, {\r\n overflow: 'visible',\r\n height: 'auto',\r\n maxHeight: 'none',\r\n opacity: '0',\r\n visibility: 'hidden',\r\n listStyle: 'none',\r\n });\r\n\r\n document.querySelector('main').after(clone);\r\n const height = clone.offsetHeight;\r\n\r\n clone.remove();\r\n\r\n return height;\r\n }\r\n}\r\n","export default function Tabs() {\r\n const tabs = document.querySelectorAll('.tabs');\r\n if (!tabs || !tabs.length) {\r\n return;\r\n }\r\n tabs.forEach((tabItem) => {\r\n const tab = new Tab(tabItem);\r\n tab.init();\r\n });\r\n}\r\n\r\n// For easy reference\r\nconst KEYS = {\r\n end: 35,\r\n home: 36,\r\n left: 37,\r\n up: 38,\r\n right: 39,\r\n down: 40,\r\n delete: 46,\r\n};\r\n\r\n// Add or substract depending on key pressed\r\nconst DIRECTION = {\r\n 37: -1,\r\n 38: -1,\r\n 39: 1,\r\n 40: 1,\r\n};\r\n\r\nclass Tab {\r\n constructor(tabItem) {\r\n this.tab = tabItem;\r\n }\r\n\r\n init() {\r\n this.tabList = this.tab.querySelectorAll('[role=\"tablist\"]')[0];\r\n this.tabs = this.tab.querySelectorAll('[role=\"tab\"]');\r\n this.panels = this.tab.querySelectorAll('[role=\"tabpanel\"]');\r\n this.delay = this.determineDelay();\r\n\r\n for (let i = 0; i < this.tabs.length; ++i) {\r\n this.addListeners(i);\r\n }\r\n }\r\n\r\n addListeners(index) {\r\n this.tabs[index].addEventListener('click', (evt) =>\r\n this.clickEventListener(evt)\r\n );\r\n this.tabs[index].addEventListener('keydown', (evt) =>\r\n this.keydownEventListener(evt)\r\n );\r\n this.tabs[index].addEventListener('keyup', (evt) =>\r\n this.keyupEventListener(evt)\r\n );\r\n\r\n // Build an array with all tabs (s) in it\r\n this.tabs[index].index = index;\r\n }\r\n\r\n determineDelay() {\r\n if (this.tabList && this.tabList.length > 0) {\r\n const hasDelay = this.tabList.hasAttribute('data-delay');\r\n let delay = 0;\r\n\r\n if (hasDelay) {\r\n const delayValue = this.tabList.getAttribute('data-delay');\r\n if (delayValue) {\r\n delay = delayValue;\r\n } else {\r\n // If no value is specified, default to 300ms\r\n delay = 300;\r\n }\r\n }\r\n\r\n return delay;\r\n }\r\n }\r\n\r\n // When a tab is clicked, activateTab is fired to activate it\r\n clickEventListener(event) {\r\n const tab = event.target;\r\n this.activateTab(tab, false);\r\n }\r\n\r\n // Handle keydown on tabs\r\n keydownEventListener(event) {\r\n const key = event.keyCode;\r\n\r\n switch (key) {\r\n case KEYS.end:\r\n event.preventDefault();\r\n // Activate last tab\r\n this.activateTab(this.tabs[this.tabs.length - 1]);\r\n break;\r\n case KEYS.home:\r\n event.preventDefault();\r\n // Activate first tab\r\n this.activateTab(this.tabs[0]);\r\n break;\r\n\r\n // Up and down are in keydown\r\n // because we need to prevent page scroll >:)\r\n case KEYS.up:\r\n case KEYS.down:\r\n this.determineOrientation(event);\r\n break;\r\n }\r\n }\r\n\r\n // Handle keyup on tabs\r\n keyupEventListener(event) {\r\n const key = event.keyCode;\r\n\r\n switch (key) {\r\n case KEYS.left:\r\n case KEYS.right:\r\n this.determineOrientation(event);\r\n break;\r\n case KEYS.delete:\r\n this.determineDeletable(event);\r\n break;\r\n }\r\n }\r\n\r\n // When a tablist aria-orientation is set to vertical,\r\n // only up and down arrow should function.\r\n // In all other cases only left and right arrow function.\r\n determineOrientation(event) {\r\n const key = event.keyCode;\r\n const vertical =\r\n this.tabList.getAttribute('aria-orientation') == 'vertical';\r\n let proceed = false;\r\n\r\n if (vertical) {\r\n if (key === KEYS.up || key === KEYS.down) {\r\n event.preventDefault();\r\n proceed = true;\r\n }\r\n } else {\r\n if (key === KEYS.left || key === KEYS.right) {\r\n proceed = true;\r\n }\r\n }\r\n\r\n if (proceed) {\r\n this.switchTabOnArrowPress(event);\r\n }\r\n }\r\n\r\n // Either focus the next, previous, first, or last tab\r\n // depending on key pressed\r\n switchTabOnArrowPress(event) {\r\n const pressed = event.keyCode;\r\n\r\n for (let x = 0; x < this.tabs.length; x++) {\r\n this.tabs[x].addEventListener('focus', (evt) =>\r\n this.focusEventHandler(evt)\r\n );\r\n }\r\n\r\n if (DIRECTION[pressed]) {\r\n const target = event.target;\r\n if (target.index !== undefined) {\r\n if (this.tabs[target.index + DIRECTION[pressed]]) {\r\n this.tabs[target.index + DIRECTION[pressed]].focus();\r\n } else if (pressed === KEYS.left || pressed === KEYS.up) {\r\n this.focusLastTab();\r\n } else if (pressed === KEYS.right || pressed == KEYS.down) {\r\n this.focusFirstTab();\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Make a guess\r\n focusFirstTab() {\r\n this.tabs[0].focus();\r\n }\r\n\r\n // Activates any given tab panel\r\n activateTab(tab, setFocus) {\r\n setFocus = setFocus || true;\r\n // Deactivate all other tabs\r\n this.deactivateTabs();\r\n\r\n // Remove tabindex attribute\r\n tab.removeAttribute('tabindex');\r\n\r\n // Set the tab as selected\r\n tab.setAttribute('aria-selected', 'true');\r\n\r\n // Get the value of aria-controls (which is an ID)\r\n const controls = tab.getAttribute('aria-controls');\r\n\r\n // Remove hidden attribute from tab panel to make it visible\r\n document.getElementById(controls).removeAttribute('hidden');\r\n\r\n // Set focus when required\r\n if (setFocus) {\r\n tab.focus();\r\n }\r\n }\r\n\r\n // Deactivate all tabs and tab panels\r\n deactivateTabs() {\r\n for (let t = 0; t < this.tabs.length; t++) {\r\n // tabs[t].setAttribute('tabindex', '-1'); // in the case of two elements, this makes the inactive tab inaccessible from the keyboard\r\n this.tabs[t].setAttribute('aria-selected', 'false');\r\n this.tabs[t].removeEventListener('focus', this.focusEventHandler);\r\n }\r\n\r\n for (let p = 0; p < this.panels.length; p++) {\r\n this.panels[p].setAttribute('hidden', 'hidden');\r\n }\r\n }\r\n\r\n focusEventHandler(event) {\r\n const target = event.target;\r\n setTimeout(() => this.checkTabFocus(target), this.delay, target);\r\n }\r\n\r\n // Only activate tab on focus if it still has focus after the delay\r\n checkTabFocus(target) {\r\n const focused = document.activeElement;\r\n\r\n if (target === focused) {\r\n this.activateTab(target, false);\r\n }\r\n }\r\n}\r\n","var win = window;\n\nexport var raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n","var win = window;\n\nexport var caf = win.cancelAnimationFrame\n || win.mozCancelAnimationFrame\n || function(id){ clearTimeout(id); };\n","export function extend() {\n var obj, name, copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n}","export function checkStorageValue (value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}","export function setLocalStorage(storage, key, value, access) {\n if (access) {\n try { storage.setItem(key, value); } catch (e) {}\n }\n return value;\n}","export function getBody () {\n var doc = document,\n body = doc.body;\n\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n\n return body;\n}","export var docElement = document.documentElement;","import { docElement } from './docElement.js';\n\nexport function setFakeBody (body) {\n var docOverflow = '';\n if (body.fake) {\n docOverflow = docElement.style.overflow;\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}","import { docElement } from './docElement.js';\n\nexport function resetFakeBody (body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n }\n}","// cross browsers addRule method\nimport { raf } from './raf.js';\nexport function addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ?\n sheet.insertRule(selector + '{' + rules + '}', index) :\n sheet.addRule(selector, rules, index);\n // });\n}","export function getCssRulesLength(sheet) {\n var rule = ('insertRule' in sheet) ? sheet.cssRules : sheet.rules;\n return rule.length;\n}","// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\nexport function forEach (arr, callback, scope) {\n for (var i = 0, l = arr.length; i < l; i++) {\n callback.call(scope, arr[i], i);\n }\n}","export var classListSupport = 'classList' in document.createElement('_');","import { classListSupport } from './classListSupport.js';\n\nvar hasClass = classListSupport ?\n function (el, str) { return el.classList.contains(str); } :\n function (el, str) { return el.className.indexOf(str) >= 0; };\n\nexport { classListSupport, hasClass };","import { classListSupport, hasClass } from './hasClass.js';\nvar addClass = classListSupport ?\n function (el, str) {\n if (!hasClass(el, str)) { el.classList.add(str); }\n } :\n function (el, str) {\n if (!hasClass(el, str)) { el.className += ' ' + str; }\n };\n\nexport { addClass };","import { classListSupport, hasClass } from './hasClass.js';\nvar removeClass = classListSupport ?\n function (el, str) {\n if (hasClass(el, str)) { el.classList.remove(str); }\n } :\n function (el, str) {\n if (hasClass(el, str)) { el.className = el.className.replace(str, ''); }\n };\n\nexport { removeClass };","export function hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}","export function getAttr(el, attr) {\n return el.getAttribute(attr);\n}","export function isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\"; \n}","import { isNodeList } from \"./isNodeList.js\";\n\nexport function setAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n if (Object.prototype.toString.call(attrs) !== '[object Object]') { return; }\n\n for (var i = els.length; i--;) {\n for(var key in attrs) {\n els[i].setAttribute(key, attrs[key]);\n }\n }\n}","import { isNodeList } from \"./isNodeList.js\";\n\nexport function removeAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n attrs = (attrs instanceof Array) ? attrs : [attrs];\n\n var attrLength = attrs.length;\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\n}","export function arrayFromNodeList (nl) {\n var arr = [];\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n return arr;\n}","export function hideElement(el, forceHide) {\n if (el.style.display !== 'none') { el.style.display = 'none'; }\n}","export function showElement(el, forceHide) {\n if (el.style.display === 'none') { el.style.display = ''; }\n}","export function isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\n}","export function whichProperty(props){\n if (typeof props === 'string') {\n var arr = [props],\n Props = props.charAt(0).toUpperCase() + props.substr(1),\n prefixes = ['Webkit', 'Moz', 'ms', 'O'];\n \n prefixes.forEach(function(prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n\n props = arr;\n }\n\n var el = document.createElement('fakeelement'),\n len = props.length;\n for(var i = 0; i < props.length; i++){\n var prop = props[i];\n if( el.style[prop] !== undefined ){ return prop; }\n }\n\n return false; // explicit for ie9-\n}\n","// get transitionend, animationend based on transitionDuration\n// @propin: string\n// @propOut: string, first-letter uppercase\n// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd\nexport function getEndProperty(propIn, propOut) {\n var endProp = false;\n if (/^Webkit/.test(propIn)) {\n endProp = 'webkit' + propOut + 'End';\n } else if (/^O/.test(propIn)) {\n endProp = 'o' + propOut + 'End';\n } else if (propIn) {\n endProp = propOut.toLowerCase() + 'end';\n }\n return endProp;\n}","// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\nexport var passiveOption = supportsPassive ? { passive: true } : false;","import { passiveOption } from './passiveOption.js';\n\nexport function addEvents(el, obj, preventScrolling) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? passiveOption : false;\n el.addEventListener(prop, obj[prop], option);\n }\n}","import { passiveOption } from './passiveOption.js';\n\nexport function removeEvents(el, obj) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? passiveOption : false;\n el.removeEventListener(prop, obj[prop], option);\n }\n}","export function Events() {\n return {\n topics: {},\n on: function (eventName, fn) {\n this.topics[eventName] = this.topics[eventName] || [];\n this.topics[eventName].push(fn);\n },\n off: function(eventName, fn) {\n if (this.topics[eventName]) {\n for (var i = 0; i < this.topics[eventName].length; i++) {\n if (this.topics[eventName][i] === fn) {\n this.topics[eventName].splice(i, 1);\n break;\n }\n }\n }\n },\n emit: function (eventName, data) {\n data.type = eventName;\n if (this.topics[eventName]) {\n this.topics[eventName].forEach(function(fn) {\n fn(data, eventName);\n });\n }\n }\n };\n};","// Object.keys\nif (!Object.keys) {\n Object.keys = function(object) {\n var keys = [];\n for (var name in object) {\n if (Object.prototype.hasOwnProperty.call(object, name)) {\n keys.push(name);\n }\n }\n return keys;\n };\n}\n\n// ChildNode.remove\nif(!(\"remove\" in Element.prototype)){\n Element.prototype.remove = function(){\n if(this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\n\nimport { raf } from './helpers/raf.js';\nimport { caf } from './helpers/caf.js';\nimport { extend } from './helpers/extend.js';\nimport { checkStorageValue } from './helpers/checkStorageValue.js';\nimport { setLocalStorage } from './helpers/setLocalStorage.js';\nimport { getSlideId } from './helpers/getSlideId.js';\nimport { calc } from './helpers/calc.js';\nimport { percentageLayout } from './helpers/percentageLayout.js';\nimport { mediaquerySupport } from './helpers/mediaquerySupport.js';\nimport { createStyleSheet } from './helpers/createStyleSheet.js';\nimport { addCSSRule } from './helpers/addCSSRule.js';\nimport { removeCSSRule } from './helpers/removeCSSRule.js';\nimport { getCssRulesLength } from './helpers/getCssRulesLength.js';\nimport { toDegree } from './helpers/toDegree.js';\nimport { getTouchDirection } from './helpers/getTouchDirection.js';\nimport { forEach } from './helpers/forEach.js';\nimport { hasClass } from './helpers/hasClass.js';\nimport { addClass } from './helpers/addClass.js';\nimport { removeClass } from './helpers/removeClass.js';\nimport { hasAttr } from './helpers/hasAttr.js';\nimport { getAttr } from './helpers/getAttr.js';\nimport { setAttrs } from './helpers/setAttrs.js';\nimport { removeAttrs } from './helpers/removeAttrs.js';\nimport { arrayFromNodeList } from './helpers/arrayFromNodeList.js';\nimport { hideElement } from './helpers/hideElement.js';\nimport { showElement } from './helpers/showElement.js';\nimport { isVisible } from './helpers/isVisible.js';\nimport { whichProperty } from './helpers/whichProperty.js';\nimport { has3DTransforms } from './helpers/has3DTransforms.js';\nimport { getEndProperty } from './helpers/getEndProperty.js';\nimport { addEvents } from './helpers/addEvents.js';\nimport { removeEvents } from './helpers/removeEvents.js';\nimport { Events } from './helpers/events.js';\nimport { jsTransform } from './helpers/jsTransform.js';\n\nexport var tns = function(options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true,\n nonce: false\n }, options || {});\n\n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date;\n\n try {\n tnsStorage = win.localStorage;\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n if (!localStorageAccess) { tnsStorage = {}; }\n } catch(e) {\n localStorageAccess = false;\n }\n\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function(item) { tnsStorage.removeItem(item); });\n }\n // update browserInfo\n localStorage['tnsApp'] = browserInfo;\n }\n }\n\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess);\n\n // get element nodes from selectors\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'],\n optionsElements = {};\n\n tnsList.forEach(function(item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) { console.warn('Can\\'t find', options[item]); }\n return;\n }\n }\n });\n\n // make sure at least 1 slide\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) { console.warn('No slides found in', options.container); }\n return;\n }\n\n // update options\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n\n var responsiveTem = {};\n for (var key in responsive) {\n var val = responsive[key];\n // update responsive\n // from: 300: 2\n // to:\n // 300: {\n // items: 2\n // }\n val = typeof val === 'number' ? {items: val} : val;\n responsiveTem[key] = val;\n }\n responsive = responsiveTem;\n responsiveTem = null;\n }\n\n // update options\n function updateOptions (obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') { obj[key] = 'page'; }\n if (key === 'edgePadding') { obj[key] = false; }\n if (key === 'autoHeight') { obj[key] = false; }\n }\n\n // update responsive options\n if (key === 'responsive') { updateOptions(obj[key]); }\n }\n }\n if (!carousel) { updateOptions(options); }\n\n\n // === define and set variables ===\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n if (responsive) { setBreakpointZone(); }\n if (carousel) { container.className += ' tns-vpfix'; }\n\n // fixedWidth: viewport > rightBoundary > indexMax\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(null, getOption('nonce')),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions, // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = (!carousel || !loop) ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = (function () {\n if (fixedWidth) {\n return function() { return center && !loop ? slideCount - 1 : Math.ceil(- rightBoundary / (fixedWidth + gutter)); };\n } else if (autoWidth) {\n return function() {\n for (var i = 0; i < slideCountNew; i++) {\n if (slidePositions[i] >= - rightBoundary) { return i; }\n }\n };\n } else {\n return function() {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n })(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index,\n displayIndex = getCurrentSlide(),\n indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n // resize\n resizeTimer,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {'visibilitychange': onVisibilityChange},\n docmentKeydownEvent = {'keydown': onDocumentKeydown},\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n }, dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n slideClonedClass = 'tns-slide-cloned',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false;\n\n // controls\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n }\n\n // nav\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n }\n\n // autoplay\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['', ' animation'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n disX,\n disY,\n panStart = false,\n rafIndex,\n getDist = horizontal ?\n function(a, b) { return a.x - b.x; } :\n function(a, b) { return a.y - b.y; };\n }\n\n // disable slider when slidecount <= items\n if (!autoWidth) { resetVariblesWhenDisable(disable || freeze); }\n\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n\n }\n\n if (carousel) { container.className = container.className.replace('tns-vpfix', ''); }\n initStructure();\n initSheet();\n initSliderTransform();\n\n // === COMMON FUNCTIONS === //\n function resetVariblesWhenDisable (condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n\n function getCurrentSlide () {\n var tem = carousel ? index - cloneCount : index;\n while (tem < 0) { tem += slideCount; }\n return tem%slideCount + 1;\n }\n\n function getStartIndex (ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n\n function getAbsIndex (i) {\n if (i == null) { i = index; }\n\n if (carousel) { i -= cloneCount; }\n while (i < 0) { i += slideCount; }\n\n return Math.floor(i%slideCount);\n }\n\n function getCurrentNavIndex () {\n var absIndex = getAbsIndex(),\n result;\n\n result = navAsThumbnails ? absIndex :\n fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) :\n Math.floor(absIndex / items);\n\n // set active nav to the last one when reaches the right edge\n if (!loop && carousel && index === indexMax) { result = pages - 1; }\n\n return result;\n }\n\n function getItemsMax () {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || (fixedWidth && !viewportMax)) {\n return slideCount - 1;\n // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) { arr.push(options[str]); }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n if (tem && (fixedWidth || tem < slideCount)) { arr.push(tem); }\n }\n }\n\n if (!arr.length) { arr.push(0); }\n\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n\n function getCloneCountForLoop () {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount)/2) : (itemsMax * 4 - slideCount);\n result = Math.max(itemsMax, result);\n\n return hasOption('edgePadding') ? result + 1 : result;\n }\n\n function getWindowWidth () {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n\n function getInsertPosition (pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n\n function getClientWidth (el) {\n if (el == null) { return; }\n var div = doc.createElement('div'), rect, width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n\n function getViewportWidth () {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n\n function hasOption (item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) { return true; }\n }\n }\n return false;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n function getOption (item, ww) {\n if (ww == null) { ww = windowWidth; }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n\n } else {\n var result = options[item];\n\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) { result = responsive[bp][item]; }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') { result = getOption('items'); }\n if (!carousel && (item === 'slideBy' || item === 'items')) { result = Math.floor(result); }\n\n return result;\n }\n }\n\n function getSlideMarginLeft (i) {\n return CALC ?\n CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' :\n i * 100 / slideCountNew + '%';\n }\n\n function getInnerWrapperStyles (edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n if (gutterTem) { gap -= gutterTem; }\n str = horizontal ?\n 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' :\n 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';'\n }\n\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) { str += getTransitionDurationStyle(speedTem); }\n return str;\n }\n\n function getContainerWidth (fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ?\n CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' :\n slideCountNew * 100 / itemsTem + '%';\n }\n }\n\n function getSlideWidthStyle (fixedWidthTem, gutterTem, itemsTem) {\n var width;\n\n if (fixedWidthTem) {\n width = (fixedWidthTem + gutterTem) + 'px';\n } else {\n if (!carousel) { itemsTem = Math.floor(itemsTem); }\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ?\n CALC + '(100% / ' + dividend + ')' :\n 100 / dividend + '%';\n }\n\n width = 'width:' + width;\n\n // inner slider: overwrite outer slider styles\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle (gutterTem) {\n var str = '';\n\n // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n\n return str;\n }\n\n function getCSSPrefix (name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n if (prefix) { prefix = '-' + prefix + '-'; }\n\n return prefix;\n }\n\n function getTransitionDurationStyle (speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n\n function getAnimationDurationStyle (speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n\n function initStructure () {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner',\n hasGutter = hasOption('gutter');\n\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw';\n\n // set container properties\n if (container.id === '') { container.id = slideId; }\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n if (autoWidth) { newContainerClasses += ' tns-autowidth'; }\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses;\n\n // add constrain layer for carousel\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container);\n\n // add id, class, aria attributes\n // before clone slides\n forEach(slideItems, function(item, i) {\n addClass(item, 'tns-item');\n if (!item.id) { item.id = slideId + '-item' + i; }\n if (!carousel && animateNormal) { addClass(item, animateNormal); }\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n });\n\n // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(),\n fragmentAfter = doc.createDocumentFragment();\n\n for (var j = cloneCount; j--;) {\n var num = j%slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n addClass(cloneFirst, slideClonedClass);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n addClass(cloneLast, slideClonedClass);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n\n }\n\n function initSliderTransform () {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img');\n\n // add img load event listener\n forEach(imgs, function(img) {\n var src = img.src;\n\n if (!lazyload) {\n // not data img\n if (src && src.indexOf('data:image') < 0) {\n img.src = '';\n addEvents(img, imgEvents);\n addClass(img, 'loading');\n\n img.src = src;\n // data img\n } else {\n imgLoaded(img);\n }\n }\n });\n\n // set imgsComplete\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // reset imgs for auto height: check visible imgs only\n if (hasOption('autoHeight')) { imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1)); }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck); });\n\n } else {\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck () {\n if (autoWidth && slideCount > 1) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n\n (function stylesApplicationCheck() {\n var left = slideItems[num].getBoundingClientRect().left;\n var right = slideItems[num - 1].getBoundingClientRect().right;\n\n (Math.abs(left - right) <= 1) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck() }, 16);\n })();\n\n } else {\n initSliderTransformCore();\n }\n }\n\n\n function initSliderTransformCore () {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n if (freezable) { freeze = getFreeze(); }\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n }\n\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n\n function initSheet () {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) {\n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // #### LAYOUT\n\n // ## INLINE-BLOCK VS FLOAT\n\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n }\n\n\n // ## BASIC STYLES\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n }\n\n // inner wrapper styles\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet));\n\n // container styles\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n }\n\n // slide styles\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n if (options.gutter) { str += getSlideGutterStyle(options.gutter); }\n // set gallery items transition-duration\n if (!carousel) {\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n if (ANIMATIONDURATION) { str += getAnimationDurationStyle(speed); }\n }\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n\n // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n } else {\n // middle wrapper styles\n update_carousel_transition_duration();\n\n // inner wrapper styles\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight);\n\n // container styles\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n if (gutter) { str += getSlideGutterStyle(gutter); }\n\n // append to the last line\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n }\n\n // ## MEDIAQUERIES\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp);\n\n // middle wrapper string\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n }\n\n // inner wrapper string\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n }\n\n // container string\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || (fixedWidth && 'gutter' in opts))) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n }\n\n // slide string\n if ('fixedWidth' in opts || (fixedWidth && 'gutter' in opts) || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n }\n // set gallery items transition-duration\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) { slideStr += getTransitionDurationStyle(speedBP); }\n if (ANIMATIONDURATION) { slideStr += getAnimationDurationStyle(speedBP); }\n }\n if (slideStr) { slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}'; }\n\n // add up\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n\n function initTools () {\n // == slides ==\n updateSlideStatus();\n\n // == live region ==\n outerWrapper.insertAdjacentHTML('afterbegin', 'slide ' + getLiveRegionStr() + ' of ' + slideCount + '');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current');\n\n // == autoplayInit ==\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n if (autoplayButton) {\n setAttrs(autoplayButton, {'data-action': txt});\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '' + autoplayHtmlStrings[0] + txt + autoplayHtmlStrings[1] + autoplayText[0] + '');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n }\n\n // add event\n if (autoplayButton) {\n addEvents(autoplayButton, {'click': toggleAutoplay});\n }\n\n if (autoplay) {\n startAutoplay();\n if (autoplayHoverPause) { addEvents(container, hoverEvents); }\n if (autoplayResetOnVisibility) { addEvents(container, visibilityEvent); }\n }\n }\n\n // == navInit ==\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount;\n // customized nav\n // will not hide the navs in case they're thumbnails\n if (navContainer) {\n setAttrs(navContainer, {'aria-label': 'Carousel Pagination'});\n navItems = navContainer.children;\n forEach(navItems, function(item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId,\n });\n });\n\n // generated nav\n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '';\n }\n navHtml = '' + navHtml + '';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility();\n\n // add transition\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n\n setAttrs(navItems[navCurrentIndex], {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass);\n\n // add events\n addEvents(navContainer, navEvents);\n }\n\n\n\n // == controlsInit ==\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '' + controlsText[0] + '' + controlsText[1] + '');\n\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1',\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs(prevButton, {'data-controls' : 'prev'});\n setAttrs(nextButton, {'data-controls' : 'next'});\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n\n updateControlsStatus();\n\n // add events\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n }\n\n // hide tools if needed\n disableUI();\n }\n\n function initEvents () {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n\n if (touch) { addEvents(container, touchEvents, options.preventScrollOnTouch); }\n if (mouseDrag) { addEvents(container, dragEvents); }\n if (arrowKeys) { addEvents(doc, docmentKeydownEvent); }\n\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {'resize': onResize});\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) { doAutoHeight(); }\n }\n\n doLazyLoad();\n if (disable) { disableSlider(); } else if (freeze) { freezeSlider(); }\n\n events.on('indexChanged', additionalUpdates);\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n if (typeof onInit === 'function') { onInit(info()); }\n isOn = true;\n }\n\n function destroy () {\n // sheet\n sheet.disabled = true;\n if (sheet.ownerNode) { sheet.ownerNode.remove(); }\n\n // remove win event listeners\n removeEvents(win, {'resize': onResize});\n\n // arrowKeys, controls, nav\n if (arrowKeys) { removeEvents(doc, docmentKeydownEvent); }\n if (controlsContainer) { removeEvents(controlsContainer, controlsEvents); }\n if (navContainer) { removeEvents(navContainer, navEvents); }\n\n // autoplay\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n if (autoplayButton) { removeEvents(autoplayButton, {'click': toggleAutoplay}); }\n if (autoplay) { clearInterval(autoplayTimer); }\n\n // container\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n if (touch) { removeEvents(container, touchEvents); }\n if (mouseDrag) { removeEvents(container, dragEvents); }\n\n // cache Object values in options && reset HTML\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n\n tnsList.forEach(function(item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (typeof el === 'object' && el) {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n });\n\n\n // reset variables\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null;\n // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') { this[a] = null; }\n }\n isOn = false;\n }\n\n// === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n function onResize (e) {\n raf(function(){ resizeTasks(getEvent(e)); });\n }\n\n function resizeTasks (e) {\n if (!isOn) { return; }\n if (nested === 'outer') { events.emit('outerResized', info(e)); }\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone;\n // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n if (bpChanged) { events.emit('newBreakpointStart', info(e)); }\n }\n\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n }\n // update options\n resetVariblesWhenDisable(disable);\n\n viewport = getViewportWidth(); // <= edgePadding, gutter\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n needContainerTransform = true;\n }\n }\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) { indexMax = getIndexMax(); } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n updateIndex();\n }\n }\n\n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n if (!autoplay) { autoplayHoverPause = autoplayResetOnVisibility = false; }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ?\n addEvents(doc, docmentKeydownEvent) :\n removeEvents(doc, docmentKeydownEvent);\n }\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n if (nav !== navTem) {\n if (nav) {\n showElement(navContainer);\n updateNavVisibility();\n } else {\n hideElement(navContainer)\n }\n }\n if (touch !== touchTem) {\n touch ?\n addEvents(container, touchEvents, options.preventScrollOnTouch) :\n removeEvents(container, touchEvents);\n }\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ?\n addEvents(container, dragEvents) :\n removeEvents(container, dragEvents);\n }\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) { showElement(autoplayButton); }\n if (!animating && !autoplayUserPaused) { startAutoplay(); }\n } else {\n if (autoplayButton) { hideElement(autoplayButton); }\n if (animating) { stopAutoplay(); }\n }\n }\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ?\n addEvents(container, hoverEvents) :\n removeEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ?\n addEvents(doc, visibilityEvent) :\n removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) { needContainerTransform = true; }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) { innerWrapper.style.height = ''; }\n }\n\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) { needContainerTransform = true; }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n if (indChanged) {\n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) { additionalUpdates(); }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) { updateGallerySlidePositions(); }\n\n if (!disable && !freeze) {\n // non-mediaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = getSlideWidthStyle(fixedWidth, gutter, items) +\n getSlideGutterStyle(gutter);\n\n // remove the last line and\n // add new styles\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // auto height\n if (autoHeight) { doAutoHeight(); }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) { events.emit('newBreakpointEnd', info(e)); }\n }\n\n\n\n\n\n // === INITIALIZATION FUNCTIONS === //\n function getFreeze () {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n\n return width <= vp;\n }\n\n function setBreakpointZone () {\n breakpointZone = 0;\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n if (windowWidth >= bp) { breakpointZone = bp; }\n }\n }\n\n // (slideBy, indexMin, indexMax) => index\n var updateIndex = (function () {\n return loop ?\n carousel ?\n // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n\n leftEdge += slideBy;\n rightEdge -= slideBy;\n\n // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter)%(fixedWidth + gutter)) { rightEdge -= 1; }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } :\n // loop + gallery\n function() {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) { index -= slideCount; }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) { index += slideCount; }\n }\n } :\n // non-loop\n function() {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n })();\n\n function disableUI () {\n if (!autoplay && autoplayButton) { hideElement(autoplayButton); }\n if (!nav && navContainer) { hideElement(navContainer); }\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n\n function enableUI () {\n if (autoplay && autoplayButton) { showElement(autoplayButton); }\n if (nav && navContainer) { showElement(navContainer); }\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n }\n }\n\n function freezeSlider () {\n if (frozen) { return; }\n\n // remove edge padding from inner wrapper\n if (edgePadding) { innerWrapper.style.margin = '0px'; }\n\n // add class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { addClass(slideItems[i], str); }\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n disableUI();\n\n frozen = true;\n }\n\n function unfreezeSlider () {\n if (!frozen) { return; }\n\n // restore edge padding for inner wrapper\n // for mordern browsers\n if (edgePadding && CSSMQ) { innerWrapper.style.margin = ''; }\n\n // remove class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { removeClass(slideItems[i], str); }\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n enableUI();\n\n frozen = false;\n }\n\n function disableSlider () {\n if (disabled) { return; }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { hideElement(slideItems[j]); }\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // vertical slider\n if (!horizontal || !carousel) { removeAttrs(innerWrapper, ['style']); }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // update tools\n disableUI();\n\n disabled = true;\n }\n\n function enableSlider () {\n if (!disabled) { return; }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { showElement(slideItems[j]); }\n showElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n }\n\n // update tools\n enableUI();\n\n disabled = false;\n }\n\n function updateLiveRegion () {\n var str = getLiveRegionStr();\n if (liveregionCurrent.innerHTML !== str) { liveregionCurrent.innerHTML = str; }\n }\n\n function getLiveRegionStr () {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end;\n }\n\n function getVisibleSlideRange (val) {\n if (val == null) { val = getContainerTransformValue(); }\n var start = index, end, rangestart, rangeend;\n\n // get range start, range end for autoWidth and fixedWidth\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = - (parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n }\n\n // get start, end\n // - check auto width\n if (autoWidth) {\n slidePositions.forEach(function(point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) { start = i; }\n if (rangeend - point >= 0.5) { end = i; }\n }\n });\n\n // - check percentage width, fixed width\n } else {\n\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n if (center || edgePadding) {\n start = Math.floor(rangestart/cell);\n end = Math.ceil(rangeend/cell - 1);\n } else {\n end = start + Math.ceil(viewport/cell) - 1;\n }\n\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n\n return [start, end];\n }\n\n function doLazyLoad () {\n if (lazyload && !disable) {\n var arg = getVisibleSlideRange();\n arg.push(lazyloadSelector);\n\n getImageArray.apply(null, arg).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n eve[TRANSITIONEND] = function (e) { e.stopPropagation(); };\n addEvents(img, eve);\n\n addEvents(img, imgEvents);\n\n // update src\n img.src = getAttr(img, 'data-src');\n\n // update srcset\n var srcset = getAttr(img, 'data-srcset');\n if (srcset) { img.srcset = srcset; }\n\n addClass(img, 'loading');\n }\n });\n }\n }\n\n function onImgLoaded (e) {\n imgLoaded(getTarget(e));\n }\n\n function onImgFailed (e) {\n imgFailed(getTarget(e));\n }\n\n function imgLoaded (img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n\n function imgFailed (img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n\n function imgCompleted (img) {\n addClass(img, imgCompleteClass);\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray (start, end, imgSelector) {\n var imgs = [];\n if (!imgSelector) { imgSelector = 'img'; }\n\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll(imgSelector), function (img) { imgs.push(img); });\n start++;\n }\n\n return imgs;\n }\n\n // check if all visible images are loaded\n // and update container height if it's done\n function doAutoHeight () {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function(){ imgsLoadedCheck(imgs, updateInnerWrapperHeight); });\n }\n\n function imgsLoadedCheck (imgs, cb) {\n // execute callback function if all images are complete\n if (imgsComplete) { return cb(); }\n\n // check image classes\n imgs.forEach(function (img, index) {\n if (!lazyload && img.complete) { imgCompleted(img); } // Check image.complete\n if (hasClass(img, imgCompleteClass)) { imgs.splice(index, 1); }\n });\n\n // execute callback function if selected images are all complete\n if (!imgs.length) { return cb(); }\n\n // otherwise execute this functiona again\n raf(function(){ imgsLoadedCheck(imgs, cb); });\n }\n\n function additionalUpdates () {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n\n\n function update_carousel_transition_duration () {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n\n function getMaxSlideHeight (slideStart, slideRange) {\n var heights = [];\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n\n return Math.max.apply(null, heights);\n }\n\n // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n function updateInnerWrapperHeight () {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) { wp.style.height = maxHeight + 'px'; }\n }\n\n // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n function setSlidePositions () {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n\n forEach(slideItems, function(item, i) {\n // skip the first slide\n if (i) { slidePositions.push(item.getBoundingClientRect()[attr] - base); }\n // add the end edge\n if (i === slideCountNew - 1) { slidePositions.push(item.getBoundingClientRect()[attr2] - base); }\n });\n }\n\n // update slide\n function updateSlideStatus () {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n\n forEach(slideItems, function(item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n }\n // hide slides\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n }\n\n // gallery: update slide position\n function updateGallerySlidePositions () {\n var l = index + Math.min(slideCount, items);\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n }\n\n // remove outlet animation\n removeClass(item, animateOut);\n }\n\n // removing '.tns-moving'\n setTimeout(function() {\n forEach(slideItems, function(el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n }\n\n // set tabindex on Nav\n function updateNavStatus () {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n\n setAttrs(navCurrent, {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n\n function getLowerCaseNodeName (el) {\n return el.nodeName.toLowerCase();\n }\n\n function isButton (el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n\n function isAriaDisabled (el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n\n function disEnableElement (isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n }\n\n // set 'disabled' to true on controls when reach the edges\n function updateControlsStatus () {\n if (!controls || rewind || loop) { return; }\n\n var prevDisabled = (prevIsButton) ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = (nextIsButton) ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = (index <= indexMin) ? true : false,\n disableNext = (!rewind && index >= indexMax) ? true : false;\n\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n }\n\n // set duration\n function resetDuration (el, str) {\n if (TRANSITIONDURATION) { el.style[TRANSITIONDURATION] = str; }\n }\n\n function getSliderWidth () {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap (num) {\n if (num == null) { num = index; }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? ((viewport - gap) - (slidePositions[num + 1] - slidePositions[num] - gutter))/2 :\n fixedWidth ? (viewport - fixedWidth) / 2 :\n (items - 1) / 2;\n }\n\n function getRightBoundary () {\n var gap = edgePadding ? gutter : 0,\n result = (viewport + gap) - getSliderWidth();\n\n if (center && !loop) {\n result = fixedWidth ? - (fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() :\n getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n if (result > 0) { result = 0; }\n\n return result;\n }\n\n function getContainerTransformValue (num) {\n if (num == null) { num = index; }\n\n var val;\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = - (fixedWidth + gutter) * num;\n if (center) { val += getCenterGap(); }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n if (center) { num -= getCenterGap(); }\n val = - num * 100 / denominator;\n }\n } else {\n val = - slidePositions[num];\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) { val = Math.max(val, rightBoundary); }\n\n val += (horizontal && !autoWidth && !fixedWidth) ? '%' : 'px';\n\n return val;\n }\n\n function doContainerTransformSilent (val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n\n function doContainerTransform (val) {\n if (val == null) { val = getContainerTransformValue(); }\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide (number, classOut, classIn, isOut) {\n var l = number + items;\n if (!loop) { l = Math.min(l, slideCountNew); }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i];\n\n // set item positions\n if (!isOut) { item.style.left = (i - index) * 100 / items + '%'; }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n removeClass(item, classOut);\n addClass(item, classIn);\n\n if (isOut) { slideItemsOut.push(item); }\n }\n }\n\n // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n var transformCore = (function () {\n return carousel ?\n function () {\n resetDuration(container, '');\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or\n // zero duration for all browsers\n doContainerTransform();\n // run fallback function manually\n // when duration is 0 / container is hidden\n if (!speed || !isVisible(container)) { onTransitionEnd(); }\n\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n\n if (!horizontal) { updateContentWrapperHeight(); }\n } :\n function () {\n slideItemsOut = [];\n\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn);\n\n // run fallback function manually\n // when transition or animation not supported / duration is 0\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) { onTransitionEnd(); }\n };\n })();\n\n function render (e, sliderMoved) {\n if (updateIndexBeforeTransform) { updateIndex(); }\n\n // render when slider was moved (touch or drag) even though index may not change\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n if (autoHeight) { doAutoHeight(); }\n\n // pause autoplay when click or keydown from user\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) { stopAutoplay(); }\n\n running = true;\n transformCore();\n }\n }\n\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n function strTrans (str) {\n return str.toLowerCase().replace(/-/g, '');\n }\n\n // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n function onTransitionEnd (event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i];\n // set item positions\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) {\n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event'\n * have to check event first, otherwise event.target will cause an error\n * => or 'gallery' mode:\n * + event target is slide item\n * => or 'carousel' mode:\n * + event target is container,\n * + event.property is the same with transform attribute\n */\n if (!event ||\n !carousel && event.target.parentNode === container ||\n event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n\n if (!updateIndexBeforeTransform) {\n var indexTem = index;\n updateIndex();\n if (index !== indexTem) {\n events.emit('indexChanged', info());\n\n doContainerTransformSilent();\n }\n }\n\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n running = false;\n indexCached = index;\n }\n }\n\n }\n\n // # ACTIONS\n function goTo (targetIndex, e) {\n if (freeze) { return; }\n\n // prev slideBy\n if (targetIndex === 'prev') {\n onControlsClick(e, -1);\n\n // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1);\n\n // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n var absIndex = getAbsIndex(),\n indexGap = 0;\n\n if (targetIndex === 'first') {\n indexGap = - absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') { targetIndex = parseInt(targetIndex); }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) { targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex)); }\n\n indexGap = targetIndex - absIndex;\n }\n }\n\n // gallery: make sure new page won't overlap with current page\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += (index + indexGap - slideCount) >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n\n index += indexGap;\n\n // make sure index is in range\n if (carousel && loop) {\n if (index < indexMin) { index += slideCount; }\n if (index > indexMax) { index -= slideCount; }\n }\n\n // if index is changed, start rendering\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n\n }\n }\n\n // on controls click\n function onControlsClick (e, dir) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n var passEventObject;\n\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) { target = target.parentNode; }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n\n if (dir) {\n index += slideBy * dir;\n if (autoWidth) { index = Math.floor(index); }\n // pass e when click control buttons or keydown\n render((passEventObject || (e && e.type === 'keydown')) ? e : null);\n }\n }\n\n // on nav click\n function onNavClick (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n e = getEvent(e);\n var target = getTarget(e), navIndex;\n\n // find the clicked nav item\n while (target !== navContainer && !hasAttr(target, 'data-nav')) { target = target.parentNode; }\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n\n if (navCurrentIndex === navIndex) {\n if (animating) { stopAutoplay(); }\n navClicked = -1; // reset navClicked\n }\n }\n }\n\n // autoplay functions\n function setAutoplayTimer () {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n\n animating = true;\n }\n\n function stopAutoplayTimer () {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton (action, txt) {\n setAttrs(autoplayButton, {'data-action': action});\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay () {\n setAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('stop', autoplayText[1]); }\n }\n\n function stopAutoplay () {\n stopAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('start', autoplayText[0]); }\n }\n\n // programaitcally play/pause the slider\n function play () {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n function pause () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n\n function toggleAutoplay () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function onVisibilityChange () {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n\n function mouseoverPause () {\n if (animating) {\n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n\n function mouseoutRestart () {\n if (autoplayHoverPaused) {\n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n }\n\n // keydown events on document\n function onDocumentKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n }\n\n // on key control\n function onControlsKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) { onControlsClick(e, -1); }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n }\n\n // set focus\n function setFocus (el) {\n el.focus();\n }\n\n // on key nav\n function onNavKeydown (e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n if (!hasAttr(curElement, 'data-nav')) { return; }\n\n // var code = e.keyCode,\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) { setFocus(navItems[navIndex - 1]); }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) { setFocus(navItems[navIndex + 1]); }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n\n function getEvent (e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n function getTarget (e) {\n return e.target || win.event.srcElement;\n }\n\n function isTouchEvent (e) {\n return e.type.indexOf('touch') >= 0;\n }\n\n function preventDefaultBehavior (e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n\n function getMoveDirectionExpected () {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n\n function onPanStart (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n if (autoplay && animating) { stopAutoplayTimer(); }\n\n panStart = true;\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n\n function onPanMove (e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n\n if (carousel) {\n if (!rafIndex) { rafIndex = raf(function(){ panUpdate(e); }); }\n } else {\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) { preventScroll = true; }\n }\n\n if ((typeof e.cancelable !== 'boolean' || e.cancelable) && preventScroll) {\n e.preventDefault();\n }\n }\n }\n\n function panUpdate (e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n caf(rafIndex);\n if (panStart) { rafIndex = raf(function(){ panUpdate(e); }); }\n\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) { preventScroll = true; }\n\n try {\n if (e.type) { events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e)); }\n } catch(err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew): dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n\n function onPanEnd (e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n if (carousel) { resetDuration(container, ''); }\n panStart = false;\n\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {'click': function preventClick (e) {\n preventDefaultBehavior(e);\n removeEvents(target, {'click': preventClick});\n }});\n }\n\n if (carousel) {\n rafIndex = raf(function() {\n if (horizontal && !autoWidth) {\n var indexMoved = - dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n index += indexMoved;\n } else {\n var moved = - (translateInit + dist);\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n if (moved > slidePositions[i] && dist < 0) { index += 1; }\n i++;\n }\n }\n }\n\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n }\n\n // reset\n if (options.preventScrollOnTouch === 'auto') { preventScroll = false; }\n if (swipeAngle) { moveDirectionExpected = '?'; }\n if (autoplay && !animating) { setAutoplayTimer(); }\n }\n\n // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n function updateContentWrapperHeight () {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n\n function getPages () {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n function updateNavVisibility () {\n if (!nav || navAsThumbnails) { return; }\n\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n\n while (min < max) {\n fn(navItems[min]);\n min++;\n }\n\n // cache pages\n pagesCached = pages;\n }\n }\n\n function info (e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {},\n };\n }\n\n return {\n version: '2.9.4',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function() {\n return tns(extend(options, optionsElements));\n }\n };\n};\n","import {\r\n disablePageScroll,\r\n enablePageScroll,\r\n clearQueueScrollLocks,\r\n} from 'scroll-lock';\r\n\r\nlet header;\r\nlet timeOutDropdownId;\r\nconst HEADER_DROPDOWN_DURATION_MS = 500;\r\nconst DESKTOP_MIN_WIDTH = 768;\r\nconst SUB_NAV_ACCORDION_DELAY_MS = 100;\r\n\r\nexport default function Navigation() {\r\n initNav();\r\n}\r\n\r\nfunction initNav() {\r\n header = document.querySelector('.header');\r\n if (!header) return;\r\n\r\n if (header.classList.contains('header--sticky')) {\r\n stickyHeader();\r\n window.onscroll = stickyHeader;\r\n }\r\n\r\n controlNavListeners();\r\n window.addEventListener('resize', controlNavListeners);\r\n}\r\n\r\nfunction onOpenMenuClick() {\r\n header.classList.toggle('opened');\r\n const isOpened = header.classList.contains('opened');\r\n const scrollableElement = header.querySelector('.scrollable-element');\r\n isOpened\r\n ? disablePageScroll(scrollableElement)\r\n : enablePageScroll(scrollableElement);\r\n}\r\n\r\nfunction stickyHeader() {\r\n isSticky()\r\n ? header.classList.add('sticky')\r\n : header.classList.remove('sticky');\r\n}\r\n\r\nfunction isSticky() {\r\n return window.pageYOffset > header.offsetTop;\r\n}\r\n\r\nfunction onItemMouseenter(evt) {\r\n const subMenu = evt.target.parentNode.querySelector(\r\n '.header__sub-cta-wrapper'\r\n );\r\n if (!subMenu) return;\r\n\r\n header\r\n .querySelectorAll('.header__sub-cta-wrapper.active')\r\n .forEach((activeItem) => {\r\n activeItem.classList.remove('active');\r\n clearTimeout(timeOutDropdownId);\r\n });\r\n\r\n subMenu.classList.add('active');\r\n disablePageScroll();\r\n\r\n subMenu.addEventListener('mouseenter', () => {\r\n if (timeOutDropdownId) {\r\n clearTimeout(timeOutDropdownId);\r\n timeOutDropdownId = null;\r\n }\r\n });\r\n\r\n subMenu.addEventListener('mouseleave', () => {\r\n setDropdownTimeOut(subMenu);\r\n });\r\n}\r\n\r\nfunction onItemMouseleave(evt) {\r\n const subMenu = evt.target.parentNode.querySelector(\r\n '.header__sub-cta-wrapper'\r\n );\r\n if (!subMenu) return;\r\n setDropdownTimeOut(subMenu);\r\n}\r\n\r\nfunction setDropdownTimeOut(item) {\r\n timeOutDropdownId = setTimeout(() => {\r\n item.classList.remove('active');\r\n clearQueueScrollLocks();\r\n enablePageScroll();\r\n }, HEADER_DROPDOWN_DURATION_MS);\r\n}\r\n\r\nfunction isDesktop() {\r\n return window.innerWidth > DESKTOP_MIN_WIDTH;\r\n}\r\n\r\nfunction controlDesktopListeners() {\r\n const navItems = header.querySelectorAll('.header__nav-item a');\r\n if (isDesktop()) {\r\n navItems.forEach((item) => {\r\n item.addEventListener('mouseenter', onItemMouseenter);\r\n item.addEventListener('mouseleave', onItemMouseleave);\r\n });\r\n } else {\r\n navItems.forEach((item) => {\r\n item.removeEventListener('mouseenter', onItemMouseenter);\r\n item.removeEventListener('mouseleave', onItemMouseleave);\r\n });\r\n }\r\n}\r\n\r\nfunction onSubNavClick(evt) {\r\n const subNavItem = evt.target;\r\n const subNavList = subNavItem.querySelector('.header__sub-nav-wrapper');\r\n subNavItem.classList.toggle('active');\r\n\r\n const isActive = subNavItem.classList.contains('active');\r\n setTimeout(() => {\r\n if (isActive) {\r\n subNavList.style.maxHeight = subNavList.scrollHeight + 'px';\r\n } else {\r\n subNavList.style.maxHeight = null;\r\n }\r\n }, SUB_NAV_ACCORDION_DELAY_MS);\r\n}\r\n\r\nfunction controlMobileListeners() {\r\n const mobileOpenButton = header.querySelector('.header__open-menu-button');\r\n const navItemsWithSub = header.querySelectorAll(\r\n '.header__nav-item--sub-nav'\r\n );\r\n if (!mobileOpenButton || !navItemsWithSub) return;\r\n\r\n if (!isDesktop()) {\r\n mobileOpenButton.addEventListener('click', onOpenMenuClick);\r\n navItemsWithSub.forEach((item) => {\r\n item.addEventListener('click', onSubNavClick);\r\n });\r\n } else {\r\n mobileOpenButton.removeEventListener('click', onOpenMenuClick);\r\n navItemsWithSub.forEach((item) => {\r\n item.removeEventListener('click', onSubNavClick);\r\n });\r\n }\r\n}\r\n\r\nfunction controlNavListeners() {\r\n controlDesktopListeners();\r\n controlMobileListeners();\r\n}\r\n","// get css-calc \n// @return - false | calc | -webkit-calc | -moz-calc\n// @usage - var calc = getCalc(); \nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function calc() {\n var doc = document, \n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'), \n result = false;\n\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n if (div.offsetWidth === 100) { \n result = val.replace(str, ''); \n break;\n }\n }\n } catch (e) {}\n \n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return result;\n}","// get subpixel support value\n// @return - boolean\nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n\n return supported;\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function mediaquerySupport () {\n if (window.matchMedia || window.msMatchMedia) {\n return true;\n }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return position === \"absolute\";\n}\n","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function has3DTransforms(tf){\n if (!tf) { return false; }\n if (!window.getComputedStyle) { return false; }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n el = doc.createElement('p'),\n has3d,\n cssTF = tf.length > 9 ? '-' + tf.slice(0, -9).toLowerCase() + '-' : '';\n\n cssTF += 'transform';\n\n // Add it to the body to get the computed style\n body.insertBefore(el, null);\n\n el.style[tf] = 'translate3d(1px,1px,1px)';\n has3d = window.getComputedStyle(el).getPropertyValue(cssTF);\n\n body.fake ? resetFakeBody(body, docOverflow) : el.remove();\n\n return (has3d !== undefined && has3d.length > 0 && has3d !== \"none\");\n}\n","export function getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n \n return 'tns' + window.tnsId;\n}","// create and append style sheet\nexport function createStyleSheet (media, nonce) {\n // Create the